[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
(本頁面已被瀏覽過 1,884 次)