例如,罗菲以_NET_WM_WINDOW_TYPE_NORMAL的身份运行(或者,正如我从代码中理解的那样,它是从父窗口继承的),但我希望它是_NET_WM_WINDOW_TYPE_POPUP_MENU,以便在i3 & picom吐露中做一些更通用的事情,而不是匹配它的类名。
我知道我可以xprop -set,但是如果匹配了它的类,我应该如何/在哪里这样做呢?或者这是一种完全的滥用,我应该采取不同的做法吗?
发布于 2023-05-26 10:57:28
在与Emanuele Torre(emanuele6)就矩阵/IRC频道进行了交谈之后,他提供了以下解决方案:
rofi -show &
rofi_pid=$! rofi_wid=$(xdo id -mp "$rofi_pid") &&
xprop -id "$rofi_wid" \
-f _NET_WM_WINDOW_TYPE 32a \
-set _NET_WM_WINDOW_TYPE _NET_WM_WINDOW_TYPE_POPUP_MENU引用emanuele6:
所以基本上是主管罗菲.&是你的罗菲命令rofi_pid=$!是新的rofi进程rofi_wid=$(xdo id -mp "$rofi_pid")的pid等待,直到存在一个带有该_NET_WM_PID的窗口,然后输出它的wid,最后将该原子设置为您想要的。
这确实设置了_NET_WM_WINDOW_TYPE,但是(至少对我来说) picom不会应用动画(不确定窗口是否已经映射)。
另一种选择是使用罗菲标志-normal-window
我在rofi ... -normal-window中使用bspwm,所以在external_rules中设置了:
# rofi set _NET_WM_WINDOW_TYPE
# bspwm doesn't manage these windows because rofi overrides redirect by default
case "$class" in
(*Rofi*)
#echo "manage=off" #this will break rofi focus don't use this
echo "layer=above"
echo "focus=on"
echo "state=floating"
xprop -id "$wid" \
-f _NET_WM_WINDOW_TYPE 32a \
-set _NET_WM_WINDOW_TYPE _NET_WM_WINDOW_TYPE_POPUP_MENU
;;
esachttps://unix.stackexchange.com/questions/614479
复制相似问题