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

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

Дополнительная информация

  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:

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

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

Всякий раз, когда я кладу свой ноутбук 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/

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

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

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

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

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

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

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

Другие вопросы по тегам