xrandr 启动脚本

xrandr 启动脚本

我正在使用带有 xmonad 的 ubuntu 服务器。我配置了双显示器设置,xrandr但无法让它在启动时运行。我的.xinitrc看起来像这样:

# WM
xmonad

# dual monitor
xrandr --output HDMI1 --auto
xrandr --output VGA1 --auto --left-of HDMI1

设置未应用。我该如何处理?

答案1

ilia choly,看看这个解决方案是否更适合您: 如何强制多台显示器正确调整 LightDM 的分辨率?

它涉及编辑 /etc/lightdm/lightdm.conf 以使登录屏幕(在 Ubuntu 12.04 上测试)调用脚本。该文件最初如下所示:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu

添加以下行使其在登录之前仍然调用给定的脚本:

display-setup-script=/usr/share/lightdmxrandr.sh

另一行让它在登录后调用给定的脚本:

session-setup-script=/usr/share/lightdmxrandr.sh

在此示例中,lightdmxrandr.sh 脚本用于自动识别屏幕和外接显示器(如果有)的分辨率。以下是我的脚本内容(我对上面的脚本做了一些改动)关联):

#!/bin/bash

# connected external output
XCOM0=`xrandr -q | egrep '(HDMI1|VGA1|DP1) connected' | egrep -o '(HDMI1|VGA1|DP1)'`
# command to set external desktop
XCOM1=`xrandr --output LVDS1 --primary --auto --output $XCOM0 --auto --right-of LVDS1`
# command to set normal desktop
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi

exit 0;

将此文件另存为lightdmxrand.sh 设置为可执行文件,如下所示:

$ sudo chmod +x lightdmxrand.sh

将其移动到 /usr/share/ 目录,如下所示:

$ sudo mv lightdmxrand.sh /usr/share/lightdmxrandr.sh

编辑 /etc/lightdm/lightdm.conf,添加给定的行:

display-setup-script=/usr/share/lightdmxrandr.sh

如果您希望此脚本在登录后也运行,请添加:

session-setup-script=/usr/share/lightdmxrandr.sh

希望对你有帮助!

答案2

试试在&后面加上一个 ( ) xmonad。这样它会在后台执行。这样两个xrandr命令就可以执行了。

# dual monitor
xrandr --output HDMI1 --auto
xrandr --output VGA1 --auto --left-of HDMI1

# WM
xmonad

相关内容