我使用 archlinux 和 compton。
我在维基百科上读到了这个:
使用以下选项从 compton 中排除所有没有名称的窗口:
$ compton <other arguments> --focus-exclude "! name~="
但这是行不通的。它给了我错误消息:
Pattern "!name~=" pos 8: 无效的模式类型。
我使用了两个我想要列入排除列表的程序。一个是“dmenu”,一个是“i3lock”,并且希望将其排除。我执行xwininfo
来获取id:
xwininfo: Window id: 0x3e00003 "i3lock"
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 3840
Height: 1080
Depth: 24
Visual: 0x23
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: ForgetGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: yes
Corners: +0+0 -0+0 -0-0 +0-0
-geometry 3840x1080+0+0
不幸的是,id 发生了变化,所以我无法使用它。而且使用"class_g = 'i3lock'",
也不起作用。
有任何想法吗?
我还尝试了 archwiki 中关于 dmenu 的其他示例,但这对我来说也不起作用。但尽管如此,i3lock 对我来说更为重要。
谢谢。
答案1
您必须使用xprop -id 0x3e00003
来获取该窗口的所有原子。对于 dmenu 它将是:
WM_CLASS(STRING) = "dmenu", "Dmenu"
以下内容CONDITION
与该原子匹配:
"class_g *?= 'dmenu'"
您可以使用多个条件:
"class_g *?= 'dmenu' && class_g *?= 'i3lock'"
但是我没有找到 wm 类或 i3lock 的任何其他原子。看来 i3lock 没有获取 windowid。所以我建议围绕 i3lock 编写一个小包装脚本:
#!/bin/sh
killall compton
i3lock -n <other arguments>
compton -b <other arguments>