我正在使用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
我想念什么?
答案 0 :(得分:0)
更新:检查此注释,它具有在此处起作用的代码! https://gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d#gistcomment-3331569
不幸的是,我无法发表评论...但这可能会有所帮助(准备就绪的一天)。
我测试了您的命令,它给出了相同的结果,窗口提示发生了变化,但是它仍然获得了输入焦点...
我想我们需要删除WM_TAKE_FOCUS协议,但是这样做可能很复杂。
我认为我们可以合力调整此小代码以实现这一目标:
https://gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d
我仍在尝试了解它,以了解在那里需要进行哪些更改。
这可能是我们设法调整代码的唯一答案。
obs .:您对xprop所做的事情可能是,如果使用该要点代码可以正常工作,就好像xprop无法更改某些内容,但可以更改其他内容(如窗口标题)一样。因此,它可能更简单,因为已经有代码可以更改窗口提示!