Answers:
安装xdotool
,然后运行
xdotool getwindowfocus getwindowname
例如,它将给出在Firefox中打开的当前网页:
linux - Detecting currently active window - Super User - Mozilla Firefox
wmctrl
,则可以执行以下操作:wmctrl -i -r `xdotool getwindowfocus` -e 0,10,10,-1,-1
,其中-i
告诉wmctrl期望窗口ID而不是窗口标题。
这是更直接的方法,仅使用xprop
和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
它将打印该窗口的名称。
$ 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)
这对我有用:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME
给出:
WM_NAME(STRING) = "~"
因此,也许您会做些麻烦来获得名称本身:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | sed -e 's/.*"\(.*\)".*/\1/'
给出:
~
这是我当前关注的窗口名称,全部都是它自己。
或者,避免使用稍微不那么丑陋的sed:
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | awk -F '"' '{print $2}'
xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | cut -d '"' -f 2