2010-01-24 18 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

相关问题