首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EWMH属性(如_NET_WM_WINDOW_TYPE )设置为用户?

将EWMH属性(如_NET_WM_WINDOW_TYPE )设置为用户?
EN

Unix & Linux用户
提问于 2020-10-14 10:47:58
回答 1查看 293关注 0票数 4

例如,罗菲以_NET_WM_WINDOW_TYPE_NORMAL的身份运行(或者,正如我从代码中理解的那样,它是从父窗口继承的),但我希望它是_NET_WM_WINDOW_TYPE_POPUP_MENU,以便在i3 & picom吐露中做一些更通用的事情,而不是匹配它的类名。

我知道我可以xprop -set,但是如果匹配了它的类,我应该如何/在哪里这样做呢?或者这是一种完全的滥用,我应该采取不同的做法吗?

EN

回答 1

Unix & Linux用户

发布于 2023-05-26 10:57:28

在与Emanuele Torre(emanuele6)就矩阵/IRC频道进行了交谈之后,他提供了以下解决方案:

代码语言:javascript
复制
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中设置了:

代码语言:javascript
复制
# 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
  ;;
esac
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/614479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档