如何更改X窗口属性

时间:2019-06-12 10:14:54

标签: x11 gnome xlib gdm

我正在使用gdm,我的​​目标是禁用特定X窗口ID上的用户交互。

我尝试使用xprop更改许多X-win属性,例如WM_PROTOCOLS,WM_HINTS,_NET_WM_ALLOWED_ACTIONS。虽然,我成功地更改了属性,但看起来wm忽略了我的更改,而不是采用默认值,或者需要执行xsync(like)步骤来反映这些更改。

按如下所示使用xprop更改WM_HINTS:

xprop -id 0x6a001f9 -format WM_HINTS 32cbcxxiixx -set WM_HINTS 3,False,1,0x0,0x0,0,0,0x0,0x0

xprop -id 0x6a001f9 WM_HINTS的结果[之前]:

WM_HINTS(WM_HINTS):
    Client accepts input or input focus: True
    Initial state is Normal State.

xprop -id 0x6a001f9 WM_HINTS的结果[之后]:

WM_HINTS(CARDINAL):
    Client accepts input or input focus: False
    Initial state is Normal State.

除了属性类型(从WM_HINTS更改为CARDINAL)之外,其他所有内容均与预期相同,但是窗口0x6a001f9仍接收到输入。

xwininfo的输出确认:

xwininfo -id 0x6a001f9 -wm ====>

xwininfo: Window id: 0x6a001f9 "Log Attribute Selection"

  No window manager hints defined
     Window manager hints:
     Displayed on desktop 0
     Process id: (unknown)
     Frame extents: 4, 4, 24, 4

我想念什么?

1 个答案:

答案 0 :(得分:0)

更新:检查此注释,它具有在此处起作用的代码! https://gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d#gistcomment-3331569


不幸的是,我无法发表评论...但这可能会有所帮助(准备就绪的一天)。

我有完全一样的问题:
https://unix.stackexchange.com/questions/590282/how-to-prevent-input-focus-for-a-single-window-in-gnome-shell-window-manager

我测试了您的命令,它给出了相同的结果,窗口提示发生了变化,但是它仍然获得了输入焦点...

我想我们需要删除WM_TAKE_FOCUS协议,但是这样做可能很复杂。

我认为我们可以合力调整此小代码以实现这一目标:
https://gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d
我仍在尝试了解它,以了解在那里需要进行哪些更改。

这可能是我们设法调整代码的唯一答案。

obs .:您对xprop所做的事情可能是,如果使用该要点代码可以正常工作,就好像xprop无法更改某些内容,但可以更改其他内容(如窗口标题)一样。因此,它可能更简单,因为已经有代码可以更改窗口提示!