Как восстановить настройки монитора по умолчанию через терминал?

32

У меня есть каверзная проблема с несколькими мониторами в KDE (Kubuntu). У меня есть ноутбук, который дома подключен к двум мониторам - VGA и HDMI. Это работает только тогда, когда встроенный дисплей ноутбука отключен (по крайней мере, мне так сказали).

Проблема в том, что теперь я забрал ноутбук и загрузил его без подключения внешних мониторов. Система помнит, что встроенный дисплей был отключен, поэтому он отключает его, даже если он является единственным подключенным монитором. Очевидно, это делает ноутбук довольно непригодным для использования. Переключение на терминал через Ctrl+ Alt+ F#работает, могу войти; даже гость работает нормально.

Вопрос в том, как (пере) установить настройки монитора учетной записи через терминалы, поскольку я не могу использовать графический интерфейс?

Благодарность

Мартин Мелка
источник
3
Связанный вопрос с недавним ответом, xrandrкоторый может быть полезным.
2
Это помогло, когда я смог использовать консоль на втором мониторе, xrandr смог установить мои настройки. Однако, когда я могу использовать только терминал без графического интерфейса, xrandr говорит, что он не может открыть дисплей, так что это довольно бесполезно.
Мартин Мелка
Как вы отключили встроенный дисплей ноутбука?
сумасшедший о Natty
Я не знаю, есть ли какое-то существенное отличие от KDE, но в стандартном Ubuntu он прекрасно работает (внутренний монитор отключен через графический интерфейс, крышка ноутбука закрыта, а ноутбук удобно установлен на док-станции).
сумасшедший о Natty
1
Вы имеете в виду, что я должен устанавливать настройки каждый раз, когда использую ноутбук с внешними мониторами и без них? Если так, то это отстой. Во всяком случае, мне нужно знать, как это сделать через tty
Martin Melka

Ответы:

9

Хороший вопрос. Немного сложно ответить, но вот попытка.

Основной ответ

На самом деле в 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и б) сделать скрипт, подключенный к панели запуска, который настраивает ваши двойные внешние дисплеи. Таким образом, вы выйдете из системы, и все вернется в нормальное состояние, вы войдете в свой ноутбук, нажмете на панель запуска для отображения информации и получите удовольствие от жизни.

Больше информации

  1. Возможно, вы захотите посмотреть, sudo dpkg-reconfigure -phigh xserver-xorgкак сбросить сервер xserver или (возможно, лучше посмотреть ответ, предложенный Мик в комментариях).

  2. Парень из SuSE написал хорошую статью о X.

  3. В раскрытом багрепорте кто-то утверждает:

    Администраторы могут удалить сценарии в /etc/X11/Xreset.d/ для запуска после выхода пользователя из системы.

  4. Это содержимое файла:

Вы можете найти его в своей собственной системе.

#!/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:
don.joey
источник
Интересный. Хотя скрипт сброса ничего не делает. Я прогнал его через tty, перезагрузил компьютер, но все было так же. То же самое с положить его в папку: | Я тоже пытался вводить команды xrandr, но безрезультатно
Мартин Мелка
Сценарий сброса выполняет все, что находится в каталоге Xreset.d.
don.joey
1
Правильно. Сначала это не сработало, потому что я забыл добавить разрешение исполняемого файла в сценарий. Теперь это работает как шарм. Спасибо. Одно небольшое замечание, однако. Если я уложу ноутбук в режим сна и отключу мониторы во время этого, я не выйду из системы, и экран не будет сброшен. Есть ли способ выйти из себя через tty? Я попытался войти как тот же пользователь, который использует X, но logoffтолько вышел из системы из tty, а не из X.
Martin Melka
Привет Мартин. Я рад, что ты получил это на работу! Вы пробовали что-то подобное gnome-session-quit? Источник: askubuntu.com/questions/15795/...
don.joey
17

Всякий раз, когда я укладываю свой ноутбук Lubuntu в режим сна, когда он отображается исключительно на моем телевизоре, и просыпаюсь после его отключения, я получаю черный экран, потому что назначено неправильное разрешение. Та же проблема, что и у вас, мне нужно установить разрешение с виртуального терминала TTY1, которого я могу достичь с помощью Ctrl-alt-F1, но xrandr, похоже, не работает. Я пролистал страницы результатов поиска Google, прежде чем нашел решение, поэтому решил поделиться.

Ключевым моментом является то, что xrandr, очевидно, работает только на текущем фокусном дисплее. Таким образом, перед командой xrandr вы должны связать команду sleep, чтобы дать вам время переключиться обратно на X-сервер с помощью Ctlr-alt-F7, чтобы команда выполнялась там. В противном случае вы получите ошибку, как xrandr: Configure crtc 0 failed.

  1. Откройте виртуальный терминал с помощью Ctrl-alt-F1 и войдите в систему.

Чтобы получить имена подключенных экранов (и при условии, что ваш X-сервер работает :0):

  1. $xrandr -d :0

Чтобы изменить настройки дисплея:

  1. $sleep 5; xrandr --output LVDS1 --auto -d :0

Замените LVDS1 на вывод, который вы хотите изменить, и --auto на любые параметры xrandr, которые вы хотите использовать.

  1. Переключитесь на X-сервер с помощью Ctrl-alt-F7 до того, как истечет время ожидания, установленное в приведенной выше команде.

Должен быть лучший способ сделать это. Но это работает.

Первоначальный источник решения: http://www.lgqyc.com/server-14-04-3-lts-display-orientation/

Проверьте этот комментарий для возможного улучшения моего решения (не проверял сам).

Габриэль Морен
источник
Это был единственный ответ, который работал для меня. Сумасшедшее совпадение, у 3-летней темы единственный рабочий ответ был представлен 11 часов назад :). РЕДАКТИРОВАТЬ: о, хватит, ровно 3 года назад. Странно ...
Адам Плохер
Вау. Это сводит меня с ума целую вечность. Ваш ответ кажется смешным (спать? Правда?), Но это работает, так что спасибо!
Тайлер
6
Оказывается, есть немного лучший способ сделать это: chvt 7; xrandr --output LVDS1 --auto -d :0. CHVT 7 переключается на VT7 для вас, поэтому вам не нужно спать / Ctrl-Alt-F7. Может потребоваться sleep 5между chvtи xrandrвызовами, но даже в этом случае он сохраняет ручные нажатия клавиша.
Тайлер
Один из вариантов - создать .xsessionrcисполняемый файл в вашем домашнем каталоге и включить команду xrandr --autoдля принудительной автоматической перенастройки всех дисплеев при каждом входе в систему.
Микко Ранталайнен,
16

Команда xrandr -s 0должна сбросить ваши показы в терминале. Больше можно найти на следующем сайте или man xrandrв терминале.

https://linuxacademy.com/blog/linux/solution-resetting-your-screen-resolution-with-xrandr/

Miguel
источник
Добро пожаловать в Спросите Ubuntu! Хотя это отвечает на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Гунтберт
4
Да, это работает. Другие ответы слишком раздуты, сложны или неэффективны. Также может быть полезно отметить, что если у вас черный экран (и вы ничего не видите), вы можете открыть свой терминал с помощью горячих клавиш и вслепую набрать «xrandr -s 0». Вот что я сделал :)
kodeart
Обратите внимание, что в настройках с двумя мониторами эта команда может деактивировать второй монитор, а не устанавливать для обоих мониторов разрешение по умолчанию.
Дариен
В моей системе команда отключает оба внешних монитора, но также сбрасывает их конфигурацию по умолчанию, что исправляет обнаружение VGA DCC, которое время от времени прерывается. После этого мне просто нужно снова включить экраны и переместить их с помощью инструмента «Дисплеи». Это не идеально, но это очень работоспособно и лучше, чем мое предыдущее решение, которое состояло в том, чтобы несколько раз приостанавливать и пробуждать компьютер, пока он не перезагрузит порт VGA.
Guss
4

ты пробовал (что-то вроде)

DISPLAY=:0 xrandr --output LVDS1 --auto

от другого tty(например, tty1),

через который вы можете получить доступ Ctrl Alt F1и переключиться обратно (стандартная графика) tty7 с помощью Ctrl Alt F7?

сумасшедший о натти
источник
1
Это дает мне xrandr: Configure crtc 1 failedпри попытке --output HDMI1 --off. --auto ничего не говорит, пока я не выключу его вручную. Затем --auto выбрасывает ту же ошибку
Мартин Мелка
нужно будет расследовать более внимательно; Я уверен, что это сработает, в конце концов ...
Nutty о Natty
2

Одна вещь, которую я еще не упомянул, но что может быть критическим: если бы вы использовали ноутбук Thinkpad , решение было бы простым: Fn+ F7. Если вы используете ноутбук другого производителя, то, по всей вероятности, будет какая-то другая клавиша типа Fn, которая будет переключать выходы дисплея / экрана (например, проектор, внешний монитор, внутренний дисплей; зеркало, вкл / выкл, и тому подобное) вниз на уровне BIOS (я бы предположил - Edit : см. Как работают клавиши Fn? для более подробной информации об этом).

Так что в Linux, так сказать, не нужно ничего переустанавливать.

сумасшедший о натти
источник
1
У меня есть IdeaPad, но клавиши Fn + не работают (единственное, что делает, это Sleep)
Martin Melka
Моя догадка: продолжай в том же духе! У меня нет времени , чтобы тщательно исследовать себя в настоящее время , хотя и есть хороший шанс , что я мог бы сделать некоторые оптимизации в этой области на моем IBM Thinkpad X41, но -для , что это worth- большинство клавиш Fn сделать работу на моей системе (как на мой Ноутбук, как и на моей внешней клавиатуре «thinkvantage» sk-8855): в программном центре Ubuntu (или синаптическом) на первый взгляд, по крайней мере, установлена эта штука tp-smapi-dkms 0.41-1 . Поэтому вы можете попробовать установить его, изучить его и / или аналогичные альтернативы, которые сделают ваши клавиши Fn наконец-то живыми!
Сумасшедший о Natty
также проверьте tpctl.sourceforge.net
сумасшедший о natty
Трудно поверить, но это было так. Переключатель отображает - Fn+ F8на Dell Latitude. После снятия с док-станции он иногда не включал встроенный дисплей. (Я использую только внешний VGA-дисплей с док-станцией.) Попытка переключить дисплей выглядела бессмысленной, но она включила встроенный дисплей.
Фердинанд Прантл