在 awesome wm 上更改默认聚焦屏幕

Changing default focused screen on awesome wm

我在我的笔记本电脑上设置了一些 hacky,我在 X 启动时使用 optimus-manager 根据是否连接了外部显示器来配置我的屏幕布局。如果是,我只想使用外接显示器而不是笔记本显示器,但是由于 NVIDIA 驱动程序的限制,我需要让笔记本显示器保持打开状态,并降低背光亮度.请参阅我的 /etc/optimus-manager/xsetup-hybrid.sh 以了解其工作原理(eDP-1 是我的笔记本电脑屏幕,HDMI-1-0 是我的外接显示器):

#!/bin/sh

# Everything you write here will be executed by the display manager when setting up the login screen in "hybrid" mode.

xrandr --output eDP-1 --mode 1920x1080 --pos 3000x0 --output HDMI-1-0 --primary --mode 2560x1080 --pos 0x0
if [ "$?" -ne "0" ]; then
    echo "Not connected to display, don't dim internal monitor"
    exit 0
fi

echo 0 | tee /sys/class/backlight/intel_backlight/brightness

请注意 eDP-1(膝上型显示器)位于 3000x0。我这样做是为了让屏幕保持足够远的距离,这样我的鼠标就不会意外地从我的外接显示器屏幕进入我的笔记本电脑显示器屏幕。

这工作得很好,但出于某种原因,每次我登录 awesome(或任何时候我用 xrandr 更改屏幕布局),awesome 默认聚焦笔记本电脑显示器屏幕,即使xrandr 指定外接显示器屏幕为 --primary

如何更改此行为,以便在连接了外接显示器时默认聚焦我的外接显示器屏幕,如果未连接则返回到我的笔记本电脑屏幕?

可能是应用程序显示在鼠标当前所在的位置。您可以使用 xdotool 来确保鼠标位于所需的显示器上。

#!/bin/sh

##  executed by display manager during login

if [ "$?" -eq "0" ] ; then
    xrandr --output eDP-1 --mode 1920x1080 --pos 3000x0 --output HDMI-1-0 --primary --mode 2560x1080 --pos 0x0
    echo 0 | tee /sys/class/backlight/intel_backlight/brightness

    ##  sudo apt install xdotool
    ##  x, y  coordinates:  half of 2560x1080, so middle of main screen
    xdotool mousemove 1280 540
else
    ##  external display not plugged in
    xrandr --output eDP-1 --mode 1920x1080 --primary --pos 0x0
fi

您可以将鼠标光标移动到配置中的主屏幕:

mouse.screen = screen.primary

以上内容也可以通过 awesome-client 在已经 运行 很棒的会话中进行测试:awesome-client 'mouse.screen = screen.primary'.

如果想更精确的决定指针坐标(上面用的是屏幕左上角),有mouse.coords({ x = 42, y = 21 }).