Как запускать команды xrandr при запуске в Ubuntu
Как я могу запустить следующее xrandr
команда при запуске?
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
4 ответа
Добавление сложных команд в автозагрузку приложений
В общем, вы можете добавлять команды для запуска при входе (входе в систему), выбрав: Dash > Startup Applications > Add. В этом случае у вас есть сложная команда для запуска.
Для этого есть два варианта:
написать отдельный скрипт:
#!/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"
В этом случае, используя
&&
между командами будет запускаться каждая команда, как только (и если) предыдущая будет выполнена успешно, точно так же, как они находятся в отдельных строках.Затем добавьте команду в Startup Applications, как описано выше.
Важное примечание: добавление команд 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
так как он ничего не показывает, но отображает некоторую информацию на вашем экране настройки:)
В соответствии с этим в разделе " Теперь автоматизировать его в разделе входа в систему " я создал собственный скрипт. 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
Создать файл ~/.xprofile
и вставь свои строки в это. Он запускается в начале сеанса X пользователя.
Мне не удалось запустить сценарий в /etc/x11/xsession.d, однако я использовал описанный метод для добавления сценария в запускаемые приложения. Я также на всякий случай добавил в скрипт строку Sleep 15.
Я использовал команду xrandr внутри текстового файла в скрытом каталоге.