如何xrandr
在启动时运行以下命令?
兰德
cvt 1368 768
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode VGA1 1368x768_60.00
xrandr --output VGA1 --mode 1368x768_60.00
答案1
向启动应用程序添加复杂命令
通常,您可以通过选择“Dash”>“启动应用程序”>“添加”来添加在启动(登录)时运行的命令。在本例中,您有一个复杂的命令运行。
有两种方法可以实现此目的:
编写单独的脚本:
#!/bin/bash cvt 1368 768 # xrandr only works in X11 sessions, not Wayland [ "$XDG_SESSION_TYPE" = x11 ] || exit 0 xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync xrandr --addmode VGA1 1368x768_60.00 xrandr --output VGA1 --mode 1368x768_60.00
将脚本复制到一个空文件中,另存为,
set_monitor.sh
并将以下命令添加到启动应用程序中,如上所述。/bin/bash /path/to/set_monitor.sh
将命令链接到一个(非常长的)命令:
/bin/bash -c "cvt 1368 768&&xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"
在这种情况下,
&&
在命令之间使用将使每个命令在前一个命令成功运行后立即运行,就像它们在不同的行上一样。然后将该命令添加到启动应用程序,如上所述。
重要提示:将 xrandr 命令添加到启动应用程序
将命令添加xrandr
到启动项可能比较棘手;如果在桌面完全加载之前运行得太早,它们有时会中断。因此,您可能(可能)需要在命令中添加一个小中断来运行脚本或命令,例如(在最后一种情况下):
/bin/bash -c "sleep 15&&cvt 1368 768&&xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync&&xrandr --addmode VGA1 1368x768_60.00&&xrandr --output VGA1 --mode 1368x768_60.00"
您可能需要稍微玩一下以sleep 15
找到最佳时间。
笔记
我省略了第一行:
xrandr
因为它什么也不做,只是在你的屏幕设置上显示一些信息:)
答案2
根据这在现在登录时自动化部分,我制作了自己的脚本45custom_xrandr-settings
并将其放入/etc/X11/Xsession.d/
。它在 Ubuntu 14.04 LTS 下运行良好。您可以将下面的代码放在case
该部分描述的命令之后。
PRI_OUTPUT="DVI-0";
# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') && #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" && #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;
xrandr --addmode $PRI_OUTPUT $myNewModeName;
我相信以上内容就是您要找的内容。只需运行该命令即可查看可用的输出。xrandr
输出可能是VGA
、、或。VGA-0
DVI-0
TMDS-1
DisplayPort-0
这是我制作的完整脚本。
# To configure xrandr automatically during the first login,
# save this script to your computer as /etc/X11/Xsession.d/45custom_xrandr-settings:
# If an external monitor is connected, place it with xrandr
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"
# More info at http://www.thinkwiki.org/wiki/Xorg_RandR_1.2
PRI_OUTPUT="DVI-0";
SEC_OUTPUT="DisplayPort-0";
SEC_LOCATION="left"; # SEC_LOCATION may be one of: left, right, above, or below
case "$SEC_LOCATION" in
left|LEFT)
SEC_LOCATION="--left-of $PRI_OUTPUT"
;;
right|RIGHT)
SEC_LOCATION="--right-of $PRI_OUTPUT"
;;
top|TOP|above|ABOVE)
SEC_LOCATION="--above $PRI_OUTPUT"
;;
bottom|BOTTOM|below|BELOW)
SEC_LOCATION="--below $PRI_OUTPUT"
;;
*)
SEC_LOCATION="--left-of $PRI_OUTPUT"
;;
esac
# Make and force resolution
myNewMode=$(cvt 1366 768 60 | grep -oP 'Modeline\K.*') && #grep evrything after 'Modline'
myNewModeName=\"$(echo $myNewMode | grep -oP '"\K[^"\047]+(?=["\047])' )\" && #grep everything inside quotes
xrandr --newmode $myNewMode;
sleep 15;
xrandr --addmode $PRI_OUTPUT $myNewModeName;
# Activate secondary out (display port)
xrandr | grep $SEC_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
# xrandr --output $SEC_OUTPUT --auto $SEC_LOCATION
xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --auto $SEC_LOCATION
else
xrandr --output $PRI_OUTPUT --mode $myNewModeName --output $SEC_OUTPUT --off
fi
答案3
创建文件~/.xprofile
并将代码放入其中。它在 X 用户会话开始时运行。
答案4
我无法执行 /etc/x11/xsession.d 中的脚本,但是我使用所述方法将脚本添加到启动应用程序中。我还在脚本中添加了 sleep 15 行以防万一。
我在隐藏目录中的文本文件中使用了 xrandr 命令。