在真棒 wm 上更改默认聚焦屏幕

问题描述

我在我的笔记本电脑上有一些 hacky 设置,我使用 optimus-manager 在 X 启动时根据是否连接了外部显示器来配置我的屏幕布局。如果是这样,我只想使用外接显示器而不是笔记本电脑显示器,但由于 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 都会聚焦笔记本电脑显示器屏幕,即使 {{ 1}} 将外部显示器屏幕指定为 xrandr

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

解决方法

您可以在配置中将鼠标光标扭曲到主屏幕:

mouse.screen = screen.primary

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

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

,

应用可能会显示在鼠标当前所在的位置。您可以使用 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