Linux 命令列工具wmctrl
可讓您列出所有視窗或所有桌面等。在桌面清單模式下,目前桌面標有星號。
我需要一個可以找出當前活動視窗標題的工具。不幸的是,wmctrl
沒有一個助手可以做到這一點 - 儘管它知道哪個視窗目前處於活動狀態(請參閱:ACTIVE:
標記)。
是否有另一個命令列工具可以為我提供當前視窗的視窗 ID 和/或視窗標題?
答案1
安裝xdotool
,然後運行
xdotool getwindowfocus getwindowname
它將給出例如在 Firefox 中開啟的當前網頁:
linux - Detecting currently active window - Super User - Mozilla Firefox
答案2
這比較直接,只使用xprop
and cut
:
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
這些命令只是從根視窗和應用程式視窗中提取屬性,但根據 Lorenzo von Matterhorn 的請求:
第一的,
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
從根中提取
_NET_ACTIVE_WINDOW
屬性,為您提供活動視窗的 XID。指示以稍後32x '\t$0'
可以輕鬆解析xprop
的方式格式化輸出cut
。然後,從輸出中僅提取 XID
cut -f 2
然後,將 XID 作為參數傳遞給
xprop -id XID _NET_WM_NAME
它會列印該視窗的名稱。
答案3
有,但沒有簡短的答案或解決方案。
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
結果:
0x03800004 0 16459 xxxxxxxxxx /bin/bash
正在使用:
$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
sed 's/^0x/0x0/'); done
0x03800004 0 16459 xxxxxxxxxx /bin/bash
0x020000a4 0 13524 xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)
答案4
相對較短,並正確處理包含引號的視窗名稱:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME |
sed -nr 's/.*= "(.*)"$/\1/p'