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是我瞎掰的……