Dav*_*ogt 64 linux xorg command-line
linux 命令行工具wmctrl
允许您列出所有窗口或所有桌面等。在桌面列表模式下,当前桌面用星号标记。
我需要一个可以找出当前活动窗口标题的工具。不幸的是,wmctrl
没有一个助手可以做到这一点 - 尽管它知道哪个窗口当前处于活动状态(参见:ACTIVE:
标记)。
是否有另一个命令行工具可以为我提供当前窗口的窗口 ID 和/或窗口标题?
Ski*_*rou 65
安装xdotool
,然后运行
xdotool getwindowfocus getwindowname
Run Code Online (Sandbox Code Playgroud)
它将给出例如在 Firefox 中打开的当前网页:
linux - Detecting currently active window - Super User - Mozilla Firefox
Run Code Online (Sandbox Code Playgroud)
Jim*_*ris 40
这更直接,只使用xprop
and cut
:
xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME
Run Code Online (Sandbox Code Playgroud)
这些命令只是从根窗口和应用程序窗口中提取属性,但根据 Lorenzo von Matterhorn 的要求:
第一的,
xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
Run Code Online (Sandbox Code Playgroud)
_NET_ACTIVE_WINDOW
从根中提取属性,为您提供活动窗口的 XID。该32x '\t$0'
告诉xprop
格式化输出的方式,cut
可以很容易地分析之后。
然后,仅从输出中提取 XID cut -f 2
然后,将 XID 作为参数传递给
xprop -id XID _NET_WM_NAME
Run Code Online (Sandbox Code Playgroud)打印该窗口的名称。
小智 11
$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')
Run Code Online (Sandbox Code Playgroud)
0x03800004 0 16459 xxxxxxxxxx /bin/bash
Run Code Online (Sandbox Code Playgroud)
$ 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)
Run Code Online (Sandbox Code Playgroud)
这对我有用:
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 |
sed -nr 's/.*= "(.*)"$/\1/p'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41041 次 |
最近记录: |