我试图找出 dwm 在启动后如何决定鼠标光标的初始位置。我查看了 dwm.c 一段时间,但我对 C 和 X11 的了解并不足以解决这个问题。
我想做的是将光标放在我的主显示器上。现在它是在另一台上创建的,导致它最初被选中。当我第一次启动终端或其他东西(使用键盘)时,它在错误的监视器中打开。这是一个小烦恼,但也是学习一些东西的借口:)
我不确定 dwm 是否应该对此负责,或者 xorg 是否应该负责? dwm 是否知道使用 xrandr 设置的主要输出?
更新
我尝试在调用 run() 之前在 dwm.c 中的 main() 中使用 XWarpPointer() 。这样我成功地将指针移到了屏幕中央,但是错了:)
更新2
正如评论中所建议的,我的 xrandr 设置可能有问题。这里是:
xrandr —output DP-0 —rotate left
xrandr —output DP-0 —left-of DP-4
xrandr —output DP-4 —pos 1080x160
xrandr —output DP-4 —primary
编辑:dwm 首先初始化 DP-0(状态栏首先出现)。但是,如果我断开鼠标并重新启动,dwm 会正常运行,并且焦点位于 DP-4 上(尽管 DP-0 首先被初始化)。
更新3
作为测试,我启动了 i3wm 而不是 dwm。指针按预期初始化在屏幕中心 (DP-4),一切正常。
答案1
我在 Ubuntu 20.04 中使用 dwm-6.2 时遇到了完全相同的问题,并通过使用 X11 自动化工具(默认情况下随许多发行版安装)强制鼠标光标移动到所需的显示器来修复该问题。只需将以下行添加到dwm
调用之前启动的脚本中:
xdotool mousemove 2000 200
将这些值替换为适当的 xy 坐标,其中 0 0 位于最左侧屏幕(虚拟屏幕)的左上角。
一个提示man dwm
:
Mod1-, Focus previous screen, if any. Mod1-. Focus next screen, if any. Mod1-Shift-, Send focused window to previous screen, if any. Mod1-Shift-. Send focused window to next screen, if any.
因此,要在监视器之间轻松移动,请使用:
[Alt}+[.]
[Alt]+[,]