如何使用命令行获取正在运行的应用程序列表?

Pan*_*dya 9 gui command-line window

我只想使用命令行列出正在运行的应用程序,例如:Firefox、gedit、Nautilus 等。

注意:我不想列出所有正在运行的进程,只列出正在运行的应用程序(比如手动启动的 GUI)。

TuK*_*Ksn 11

的组合wmctrl,并xprop 提供了许多可能性。

示例 1:

running_gui_apps() {

    # loop through all open windows (ids)
    for win_id in $( wmctrl -l | cut -d' ' -f1 ); do 

        # test if window is a normal window
        if  $( xprop -id $win_id _NET_WM_WINDOW_TYPE | grep -q _NET_WM_WINDOW_TYPE_NORMAL ) ; then 

            echo "$( xprop -id $win_id WM_CLASS | cut -d" " -f4- )"", window id: $win_id"

        fi

    done
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输出可能如下所示:

"Firefox", window id: 0x032000a9
"Gnome-terminal", window id: 0x03a0000c
"Thunar", window id: 0x03600004
"Geany", window id: 0x03c00003
"Thunar", window id: 0x0360223e
"Mousepad", window id: 0x02c00003
"Mousepad", window id: 0x02c00248
"Xfce4-terminal", window id: 0x03e00004
Run Code Online (Sandbox Code Playgroud)

示例 2:

"Firefox", window id: 0x032000a9
"Gnome-terminal", window id: 0x03a0000c
"Thunar", window id: 0x03600004
"Geany", window id: 0x03c00003
"Thunar", window id: 0x0360223e
"Mousepad", window id: 0x02c00003
"Mousepad", window id: 0x02c00248
"Xfce4-terminal", window id: 0x03e00004
Run Code Online (Sandbox Code Playgroud)

输出示例:

Firefox
Geany
Gnome-terminal
Mousepad
Thunar
Xfce4-terminal
Run Code Online (Sandbox Code Playgroud)

您可以将函数添加到您~/.bashrc的脚本文件中或从脚本文件运行它。