web-dev-qa-db-ja.com

最近閉じたプログラムを再度開くショートカットはありますか?

私はこれを見つけました KDE Open最近閉じたアプリケーション 質問とそれはまさに私がやりたいことですが、ubuntuにいます。その質問に対する唯一の答えはランチャーの「最近使用した」部分ですが、最近使用したリストにはランチャーにロックされたアプリは含まれていません。

通常、私は端末を通してほとんどのことを実行しますが、ブラウザのようなものはランチャーから実行します。時々私は誤ってそれらを閉じます。

要するに:ほとんどのブラウザがubuntuのプログラムに適用されるタブに対して持っている「ctrl-shift-t」機能が欲しい。

スクリプトの形式で提供された場合、それは問題ありません。 bashスクリプトの作成経験はあまりないので、説明やドキュメントへのリンクを歓迎します。

最近閉じられたプログラムのリストがディスクのどこかに保存されていますか?私はそれがおそらくログであることを知っていますが、それは解析する方法を理解するのは面倒だと思いますか?アプリが閉じられた/開かれた状態と、それらを実行/起動するプログラムへのパスを記録する素敵な小さなログファイルがどこかにあることを願っています。また、ubuntuにそのようなログファイルを作成させたい場合、どうすればいいですか?

2
Mxt

コメントで要求されたとおり、概念的な答え、すぐに使用できるスクリプトはありません。

コンセプトの説明。最後に閉じたアプリケーションを記録する方法


前書き

プロセスとPIDのリストから、どちらがアプリケーションまたは別のプロセスに属するかを判断するのは困難です。ただし、GUIアプリケーションについて言及しているので、windowsをログに記録できます。これにより、最近閉じたアプリケーションを判断するために必要なすべての情報が得られます。

Wmctrlを使用して実行中のGUIアプリケーションをリストする

wmctrl (デフォルトではシステム上にありません)は、現在存在するウィンドウに関する情報を提供できるコマンドラインツールです。コマンド:

wmctrl -lp

次のようなウィンドウリストを生成します。

---
0x02c0000c  0 23772  jacob-System-Product-Name Hud
0x02e0000a -1 23877  jacob-System-Product-Name Desktop
0x0480001d  0 28367  jacob-System-Product-Name Ask Ubuntu General Room | chat.stackexchange.com - Mozilla Firefox
0x05200007  0 26724  jacob-System-Product-Name System Monitor
0x05800084  0 27183  jacob-System-Product-Name *Untitled Document 1 - gedit
---

リストの2番目の列には、現在開いているウィンドウのpidが表示されます。例:2387728367

これらのPIDから、次のコマンドを使用して、ウィンドウを所有するプロセス(アプリケーション)を取得できます。

ps -o cmd= <pid>

例えば。:

$ ps -o cmd= 27183
gedit

その後、必要なのは、数秒の周期でループを実行し、ウィンドウ(=アプリケーション)を所有しているプロセスの(一意の)リストを数秒前のリストと比較することです。プロセスがリストを「残す」場合、それは最後に閉じたウィンドウです。要するに:

(概念)ループの概要(Pythonスタイル)

applications1 = get_applications()
while True:
    time.sleep(3)
    applications2 = get_applications()
    closed = [app for app in applications1 if not app in applications2]
    if closed:
        most_recent = closed[0]
        # store the process in a file, to be available to run as most recently closed
        open(f, "wt").write(most_recent)
    application1 = application2

fは、最新のアプリケーションが書き込まれるファイルへのパスです。その後、別のプロセス/コマンドでファイル内のアプリケーションを起動し、セットアップが完了します。

言語?

ほぼすべてのスクリプト言語でこれを実行できることは間違いありません。私にとって、pythonはこのようなスクリプトを簡単に作成するのにちょうど良いようです...

注意

上記の回路図コードは、たとえばテスト済みのコードではないことに注意してください!

2
Jacob Vlijm