4

我正在使用 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

我错过了什么?

4

1 回答 1

1

更新:检查这个评论,它有在这里工作的代码!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 所做的事情,可能是如果用那个 gist 代码可以工作的话,就像 xprop 不能改变一些东西但可以改变其他东西(比如窗口标题)。因此,它可能更简单,因为那里已经有代码可以更改窗口提示!

于 2020-06-01T18:21:13.443 回答