xprop不止可以读取窗口属性,还能改哦!

方法

xprop -set <prop name> <prop value>

当然,多数prop需要先指定format。

-format <prop name> <format>

其中format以0/8/16/32开头,后面跟一些类型描述。具体参见manpage。比如a表示atom,s表示字符串,u表示utf-8字符串……

样例

修改STATE

xprop -id <window id> -format _NET_WM_STATE 32a -set _NET_WM_STATE <value> 可用value:

  • _NET_WM_STATE_SKIP_TASKBAR 不出现在任务栏

配合xdotool

xdotool有个search功能挺好用。他本来也能set_window只是比较弱。

xdotool search [--name <name>] [--class <class>] [--classname <classname>]

xdotool还有个selectwindow的功能,可以指哪儿打哪儿:

xdotool selectwindow

先xdotool找再xprop改:

xdotool search [args] | xargs -I %i xprop -id %i [cmd]

综合

某些弱智wine窗口不出现在任务栏

Wine程序的class是Wine,classname貌似是执行文件名。

xdotool search --class Wine | xargs -I %i xprop -id %i -format _NET_WM_STATE 32a -set _NET_WM_STATE _NET_WM_STATE_NONE

当然这个_NET_WM_STATE_NONE是我瞎掰的……