Как восстановить настройки монитора по умолчанию через терминал?
У меня есть каверзная проблема с несколькими мониторами в KDE (Kubuntu). У меня есть ноутбук, который дома подключен к двум мониторам — VGA и HDMI. Это работает только тогда, когда встроенный дисплей ноутбука отключен (по крайней мере, мне так сказали).
Проблема в том, что теперь я забрал ноутбук и загрузил его без подключения внешних мониторов. Система помнит, что встроенный дисплей был отключен, поэтому он отключает его, даже если он является единственным подключенным монитором. Очевидно, это делает ноутбук довольно непригодным для использования. Переключение на терминал через Ctrl + Alt + F# работает, могу войти; даже гость работает нормально.
Вопрос в том, как (пере) установить настройки монитора учетной записи через терминалы, поскольку я не могу использовать графический интерфейс?
Это помогло, когда я смог использовать консоль на втором мониторе, xrandr смог установить мои настройки. Однако, когда я могу использовать только терминал без графического интерфейса, xrandr говорит, что он не может открыть дисплей, так что это довольно бесполезно.
Я не знаю, есть ли какое-то существенное отличие от KDE, но в стандартном Ubuntu он прекрасно работает (внутренний монитор отключен через графический интерфейс, крышка ноутбука закрыта, а ноутбук удобно установлен на док-станции).
Вы имеете в виду, что я должен устанавливать настройки каждый раз, когда использую ноутбук с внешними мониторами и без них? Если так, то это отстой. Во всяком случае, мне нужно знать, как это сделать через tty
Хороший вопрос. Немного сложно ответить, но вот попытка.
Основной ответ
На самом деле в X11 есть небольшая возможность сброса . Вы можете найти это в /etc/X11/Xreset . Вы можете использовать каталог Xreset ( Xreset.d ), чтобы вставить скрипт, который запускается автоматически при выходе пользователя из системы. Файл README:
# Scripts in this directory are executed as root when a user log out from # a display manager using /etc/X11/Xreset. # The username of the user logging out is provided in the $USER environment # variable.
Таким образом, вы можете: а) добавить скрипт сброса /etc/X11/Xreset.d и б) сделать скрипт, подключенный к панели запуска, который настраивает ваши двойные внешние дисплеи. Таким образом, вы выйдете из системы, и все вернется в нормальное состояние, вы войдете в свой ноутбук, нажмете на панель запуска для отображения информации и получите удовольствие от жизни.
Больше информации
- Возможно, вы захотите посмотреть, sudo dpkg-reconfigure -phigh xserver-xorg как сбросить сервер xserver или (возможно, лучше посмотреть ответ, предложенный Мик в комментариях).
- Парень из SuSE написал хорошую статью о X.
- В раскрытом багрепорте кто-то утверждает:
Администраторы могут удалить сценарии в /etc/X11/Xreset.d/ для запуска после выхода пользователя из системы.
Вы можете найти его в своей собственной системе.
#!/bin/sh # # /etc/X11/Xreset # # global Xreset file -- for use by display managers # $Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $ set -e PROGNAME=Xreset SYSSESSIONDIR=/etc/X11/Xreset.d if [ ! -d "$SYSSESSIONDIR" ]; then # Nothing to do, exiting exit 0 fi # use run-parts to source every file in the session directory; we source # instead of executing so that the variables and functions defined above # are available to the scripts, and so that they can pass variables to each # other SESSIONFILES=$(run-parts --list $SYSSESSIONDIR) if [ -n "$SESSIONFILES" ]; then set +e for SESSIONFILE in $SESSIONFILES; do . $SESSIONFILE done set -e fi exit 0 # vim:set ai et sts=2 sw=2 tw=80:
Интересный. Хотя скрипт сброса ничего не делает. Я прогнал его через tty, перезагрузил компьютер, но все было так же. То же самое с положить его в папку: | Я тоже пытался вводить команды xrandr, но безрезультатно
Правильно. Сначала это не сработало, потому что я забыл добавить разрешение исполняемого файла в сценарий. Теперь это работает как шарм. Спасибо. Одно небольшое замечание, однако. Если я уложу ноутбук в режим сна и отключу мониторы во время этого, я не выйду из системы, и экран не будет сброшен. Есть ли способ выйти из себя через tty? Я попытался войти как тот же пользователь, который использует X, но logoff только вышел из системы из tty, а не из X.
Привет Мартин. Я рад, что ты получил это на работу! Вы пробовали что-то подобное gnome-session-quit ? Источник: askubuntu.com/questions/15795/.
Всякий раз, когда я укладываю свой ноутбук Lubuntu в режим сна, когда он отображается исключительно на моем телевизоре, и просыпаюсь после его отключения, я получаю черный экран, потому что назначено неправильное разрешение. Та же проблема, что и у вас, мне нужно установить разрешение с виртуального терминала TTY1, которого я могу достичь с помощью Ctrl-alt-F1, но xrandr, похоже, не работает. Я пролистал страницы результатов поиска Google, прежде чем нашел решение, поэтому решил поделиться.
Ключевым моментом является то, что xrandr, очевидно, работает только на текущем фокусном дисплее. Таким образом, перед командой xrandr вы должны связать команду sleep, чтобы дать вам время переключиться обратно на X-сервер с помощью Ctlr-alt-F7, чтобы команда выполнялась там. В противном случае вы получите ошибку, как xrandr: Configure crtc 0 failed .
Чтобы получить имена подключенных экранов (и при условии, что ваш X-сервер работает :0 ):
Чтобы изменить настройки дисплея:
Замените LVDS1 на вывод, который вы хотите изменить, и —auto на любые параметры xrandr, которые вы хотите использовать.
- Переключитесь на X-сервер с помощью Ctrl-alt-F7 до того, как истечет время ожидания, установленное в приведенной выше команде.
Должен быть лучший способ сделать это. Но это работает.
Проверьте этот комментарий для возможного улучшения моего решения (не проверял сам).
Это был единственный ответ, который работал для меня. Сумасшедшее совпадение, у 3-летней темы единственный рабочий ответ был представлен 11 часов назад :). РЕДАКТИРОВАТЬ: о, хватит, ровно 3 года назад. Странно .
Вау. Это сводит меня с ума целую вечность. Ваш ответ кажется смешным (спать? Правда?), Но это работает, так что спасибо!
Оказывается, есть немного лучший способ сделать это: chvt 7; xrandr —output LVDS1 —auto -d :0 . CHVT 7 переключается на VT7 для вас, поэтому вам не нужно спать / Ctrl-Alt-F7. Может потребоваться sleep 5 между chvt и xrandr вызовами, но даже в этом случае он сохраняет ручные нажатия клавиша.
Один из вариантов — создать .xsessionrc исполняемый файл в вашем домашнем каталоге и включить команду xrandr —auto для принудительной автоматической перенастройки всех дисплеев при каждом входе в систему.
Команда xrandr -s 0 должна сбросить ваши показы в терминале. Больше можно найти на следующем сайте или man xrandr в терминале.
Добро пожаловать в Спросите Ubuntu! Хотя это отвечает на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Да, это работает. Другие ответы слишком раздуты, сложны или неэффективны. Также может быть полезно отметить, что если у вас черный экран (и вы ничего не видите), вы можете открыть свой терминал с помощью горячих клавиш и вслепую набрать «xrandr -s 0». Вот что я сделал 🙂
Обратите внимание, что в настройках с двумя мониторами эта команда может деактивировать второй монитор, а не устанавливать для обоих мониторов разрешение по умолчанию.
В моей системе команда отключает оба внешних монитора, но также сбрасывает их конфигурацию по умолчанию, что исправляет обнаружение VGA DCC, которое время от времени прерывается. После этого мне просто нужно снова включить экраны и переместить их с помощью инструмента «Дисплеи». Это не идеально, но это очень работоспособно и лучше, чем мое предыдущее решение, которое состояло в том, чтобы несколько раз приостанавливать и пробуждать компьютер, пока он не перезагрузит порт VGA.
DISPLAY=:0 xrandr --output LVDS1 --auto
от другого tty (например, tty1),
через который вы можете получить доступ Ctrl Alt F1 и переключиться обратно (стандартная графика) tty7 с помощью Ctrl Alt F7 ?
Это дает мне xrandr: Configure crtc 1 failed при попытке —output HDMI1 —off. —auto ничего не говорит, пока я не выключу его вручную. Затем —auto выбрасывает ту же ошибку
Как восстановить настройки монитора по умолчанию через терминал?
У меня есть каверзная проблема с несколькими мониторами в KDE (Kubuntu). У меня есть ноутбук, который дома подключен к двум мониторам — VGA и HDMI. Это работает только тогда, когда встроенный дисплей ноутбука отключен (по крайней мере, мне так сказали).
Проблема в том, что теперь я забрал ноутбук и загрузил его без подключения внешних мониторов. Система помнит, что встроенный дисплей был отключен, поэтому он отключает его, даже если он является единственным подключенным монитором. Очевидно, это делает ноутбук довольно непригодным для использования. Переключение на терминал через Ctrl + Alt + F# работает, я могу войти; даже гость работает нормально.
Вопрос в том, как (пере) установить настройки монитора учетной записи через терминалы, поскольку я не могу использовать графический интерфейс?
5 ответов
Хороший вопрос. Немного сложно ответить, но вот попытка.
Основной ответ
На самом деле в X11 есть небольшая возможность сброса. Вы можете найти его на /etc/X11/Xreset , Вы можете использовать каталог Xreset ( Xreset.d ) вставить скрипт, который запускается автоматически при выходе пользователя из системы. Файл README:
# Scripts in this directory are executed as root when a user log out from # a display manager using /etc/X11/Xreset. # The username of the user logging out is provided in the $USER environment # variable.
Таким образом, вы можете: а) добавить скрипт сброса в /etc/X11/Xreset.d и б) сделать скрипт, подключенный к панели запуска, который настраивает ваши двойные внешние дисплеи. Таким образом, вы выйдете из системы, и все вернется в нормальное состояние, вы войдете в свой ноутбук, нажмете на панель запуска для дисплеев и получите удовольствие от жизни.
Дополнительная информация
- Вы можете посмотреть в sudo dpkg-reconfigure -phigh xserver-xorg для сброса xserver или (вероятно, лучше посмотреть ответ, предложенный Мик в комментариях).
Администраторы могут удалить сценарии в /etc/X11/Xreset.d/ для запуска после выхода пользователя из системы.
Вы можете найти его в своей собственной системе.
#!/bin/sh # # /etc/X11/Xreset # # global Xreset file -- for use by display managers # $Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $ set -e PROGNAME=Xreset SYSSESSIONDIR=/etc/X11/Xreset.d if [ ! -d "$SYSSESSIONDIR" ]; then # Nothing to do, exiting exit 0 fi # use run-parts to source every file in the session directory; we source # instead of executing so that the variables and functions defined above # are available to the scripts, and so that they can pass variables to each # other SESSIONFILES=$(run-parts --list $SYSSESSIONDIR) if [ -n "$SESSIONFILES" ]; then set +e for SESSIONFILE in $SESSIONFILES; do . $SESSIONFILE done set -e fi exit 0 # vim:set ai et sts=2 sw=2 tw=80:
Команда xrandr -s 0 должен сбросить ваши дисплеи в терминале. Больше можно найти на следующем сайте или от man xrandr в терминале.
Всякий раз, когда я кладу свой ноутбук Lubuntu в режим сна, когда он отображается исключительно на моем телевизоре, и просыпаюсь после отключения его от сети, я получаю черный экран, потому что назначено неправильное разрешение. Та же проблема, что и у вас, мне нужно установить разрешение с виртуального терминала TTY1, которого я могу достичь с помощью Ctrl-alt-F1, но xrandr, похоже, не работает. Я пролистал страницы результатов поиска Google, прежде чем нашел решение, поэтому решил поделиться.
Ключевым моментом является то, что xrandr, очевидно, работает только на текущем фокусном дисплее. Таким образом, перед командой xrandr вы должны связать команду sleep, чтобы дать вам время переключиться обратно на X-сервер с помощью Ctlr-alt-F7, чтобы команда выполнялась там. В противном случае вы получите ошибку вроде xrandr: Configure crtc 0 failed ,
Чтобы получить имена подключенных экранов (и при условии, что ваш X-сервер работает на :0 ):
Чтобы изменить настройки дисплея:
Замените LVDS1 на вывод, который вы хотите изменить, и —auto на любые параметры xrandr, которые вы хотите использовать.
- Переключитесь на X-сервер с помощью Ctrl-alt-F7 до того, как истечет время ожидания, установленное в приведенной выше команде.
Должен быть лучший способ сделать это. Но это работает.
Проверьте этот комментарий для возможного улучшения моего решения (не проверял сам).