[Linux] 使用 wmctrl 指令,列出現有的視窗並關閉

[Linux] 使用 wmctrl 指令,列出現有的視窗並關閉

今天有個需求,想要在 Linux 上找到 Chrome 的視窗把它關掉。

當然在 GUI 上,手動可以直接關,

但要怎麼自動化做這件事呢?

 

一個方法是直接去 ps 列出所有的 process,

再 kill 掉 chrome 相關的,

不過如果是希望對「視窗」下手關閉的話,硬砍 process 不太符合需求…

 

找了一下,用 wmctrl 這個命令列工具可以達到需求。

執行 wmctrl -l 可以列出目前所有的視窗~

而因為我是透過 SSH 執行指令,

因此要加上 DISPLAY=:0 來指定 wmctrl 將視窗顯示在遠端 Linux 機器上的第 0 號顯示器上:

testuser@localhost ~ $ DISPLAY=:0 wmctrl -l

0x0200000a  0 localhost Desktop
0x03600006  0 localhost Terminal
0x02a000c5  0 localhost EPH 的程式日記 - Google Chrome

 

如上例中所示,目前有三個視窗,

而 Chrome 的視窗就是 0x02a000c5 這個視窗~

要關閉視窗的話,可以用 wmctrl -c 這個指令,

搭配 -i 選項,就可以輸入 0x02a000c5 這個數值 (來代表那個視窗):

DISPLAY=:0 wmctrl -i -c 0x02a000c5

 

執行後,再列出目前的視窗,

果然已經沒有 Chrome 囉~

testuser@localhost ~ $ DISPLAY=:0 wmctrl -l

0x0200000a  0 localhost Desktop
0x03600006  0 localhost Terminal

 

參考資料:

How can I get a list of all open windows in the command line? – Ask Ubuntu

shell – What is DISPLAY=:0? – Unix & Linux Stack Exchange

(本頁面已被瀏覽過 11 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料