2010-01-24 61 views
3

我想編寫一個打印當前焦點窗口名稱的程序,如果它是gnome終端,則打印出當前gnome-terminal選項卡內的正在運行的程序(用於例如vim,如果一個vim會話正在運行)。如何檢查哪個程序在gnome-terminal中運行

要獲得當前焦點窗口的名字,我用:

xprop -root | grep「_NET_ACTIVE_WINDOW(WINDOW)」

xprop -id 0x220ad5a | grep的 「WM_CLASS(STRING)」

如果當前窗口是一個侏儒末端,這將返回 '的gnome-terminal'。

但是我怎樣才能找到在gnome-terminal內運行的程序(更確切地說:在當前的gnome-terminal標籤中)?我想過使用dbus,但gnome-terminal似乎不支持它。

回答

0

獲取gnome終端PID,並檢查哪些進程將此編號作爲PPID。

我有answered a very similar question幾天前,請參閱此鏈接的詳細信息。

+0

如果gnome終端運行多個選項卡,這可能是多個進程。 – dseifert 2010-01-24 12:13:37

+0

我相信每個選項卡都有自己的PID,因爲它運行一個單獨的shell。 – 2010-01-24 12:22:46

0

謝謝Adam!我快到了。用xprop我可以得到gnome-terminal的PID(6736)。但不幸的是,所有gnome-terminal窗口和標籤只有一個進程。看到這個pstree輸出有兩個打開GNOME終端窗口:

-gnome-terminal(6736)-+-bash(6738)---vim(6780) 

    |     |-bash(7026)---pstree(7045) 

    |     | `-{gnome-terminal}(6740) 

有沒有辦法找出當前打開的gnome-terminal標籤的bash的PID?

+0

不通過ps輸出。你需要以某種方式查詢gnome終端應用程序的信息,但我不知道你會怎麼做。也許檢查源代碼? P.S .:要索取答案的更多詳細信息,請發表評論或答覆或編輯您的問題。添加一個新答案會使答案難以閱讀,因爲答案的順序不一定按時。 – dseifert 2010-01-24 14:15:57

+0

是的。這是運行'ps'命令的人。 – 2010-01-25 08:09:00

+0

@adam::) @dseifert:謝謝你生病檢查本週gnome終端sourecode。 – Funsi 2010-01-25 17:26:16

相關問題