Отключение реконфигурации монитора при закрытии крышки

8

Мне часто приходится переносить свой ноутбук с одного рабочего места на другое. Когда я это делаю, Ubuntu реагирует на два события, изменяя настройки монитора:

  • Снятие / подключение кабеля VGA
  • Закрытие / открытие крышки ноутбука

Хотя отсоединение кабеля VGA дает мне то, что мне нужно (один экран, самое высокое собственное разрешение на внешнем экране, если он подключен; в противном случае самое высокое разрешение на ноутбуке), реакция закрытой / открытой крышки ноутбука не так хороша.

Каждый раз, когда я закрываю или открываю крышку, Ubuntu перенастраивает настройки монитора. Когда я закрываю крышку сейчас ... экран становится черным на несколько секунд и переключается на клонирование с отключенным экраном моего ноутбука. Повторное открытие приводит ... ненадолго к черному экрану, а затем внешний монитор используется в качестве расширения рабочего стола.

Обновление: В последнее время все немного изменилось, теперь поведение более предсказуемо. Закрытие крышки переключается на один дисплей, открытие на двойной экран (не клон). Мой вопрос все еще точен: см. Ниже.

Ubuntu слишком много думает. Мой первый и главный вопрос: есть ли способ позволить Ubuntu игнорировать события закрытия крышки?

В идеале (или когда нет способа решить вышеуказанный вопрос), я бы хотел изменить способ работы с реконфигурацией экрана. Почему Ubuntu переключает конфигурацию экрана между внешним, клонированным и одиночным дисплеем? Разве я не могу просто настроить его так, чтобы он всегда использовал внешний монитор, если он присутствует, в одноэкранном режиме?

Обратите внимание, что подобные вопросы задавались ранее (особенно этот ), но они были закрыты, возможно, неправильно.

Любые идеи очень приветствуются, я не возражаю немного поиграть, чтобы посмотреть, работает ли что-нибудь.

Tomas
источник
Для тех, кто все еще интересуется, вопросы появляются от других людей с похожими проблемами: askubuntu.com/questions/161649/…
Томас
Я заметил, что этот вопрос все еще получает пару просмотров в неделю. Я переключился на Arch Linux некоторое время назад и заметил, что события закрытия крышки по умолчанию полностью игнорируются, даже не видно мерцание экрана. Возможно, более новое ядро ​​Linux устраняет проблемы, описанные в этом вопросе (обе среды рабочего стола, которые я использую, полностью игнорируют крышку, если я им говорю). Если это так, вполне вероятно, что более новые выпуски Ubuntu будут включать / будут включать это исправление.
Томас

Ответы:

7

Есть ли способ позволить Ubuntu игнорировать события закрытия крышки?

События Lid запускаются lidbtnфайлом /etc/acpi/events/, который содержит две активные строки:

событие = кнопка [/] крышка
action = / etc / acpi / lid.sh - закомментируйте это с # в начале

Вы можете игнорировать события открытия / закрытия крышки, закомментировав вторую строку с помощью a, #а затем перезагрузившись.

Я бы хотел изменить то, как он работает с реконфигурацией экрана.

Вы можете посмотреть и попробовать изменить файл /etc/acpi/lid.shи функции / команды, на которые он ссылается.

НО (БОЛЬШАЯ ПРОСМОТР): Если BIOS вашего ноутбука использует закрывающую / открывающуюся крышку для включения / выключения портов внутреннего / внешнего видеовыхода, это выходит за пределы возможностей обработчика событий OS ACPI.

иш
источник
Выглядит интересно, но комментирование 2-й строки не решает мою проблему. Погружение в lid.shфайл предполагает , что ручки переключения с экрана (команды типа xscreensaver-command -unthrottle, xscreensaver-command -deactivate, /usr/share/acpi-support/screenblankи xset dpms force on). Ничего не упоминается о переключении или обнаружении экранов (я ожидал xrandrили что-то для этого). Есть еще советы?
Томас
Временно перейти lidbtnот /etc/acpi/eventsкуда - нибудь еще, скажем ~/. Это помогает?
иш
Ничего не меняет, насколько я могу судить, это имеет тот же эффект, что и оставление файла там. Конечно, попытайтесь перезагрузиться, чтобы убедиться, что изменения вступили в силу.
Томас
@ Томас: см. Правку внизу ответа.
Иш
1
На моей Ubuntu 14.04 у меня нет ни одной, lid.shни a lidbtnв моей системе (поиск производился с помощью locate) Могу ли я создать одну из них, чтобы добавить некоторые функции (я хочу отключить сенсорный экран при закрытии крышки ноутбука )?
rubo77
0

Это поведение является функцией Gnome, и оно контролируется настройкой dconf. Вы можете изменить его с помощью dconf-editorили напрямую с помощью командной строки:

gsettings set org.gnome.settings-daemon.plugins.xrandr default-monitors-setup <value>

В описании сказано следующее:

Резюме: следует ли отключать определенные мониторы после загрузки

«clone» будет отображать одно и то же на всех мониторах, «dock» отключит внутренний монитор, «ничего не делать» будет использовать поведение Xorg по умолчанию (расширение рабочего стола в последних версиях). Значение по умолчанию 'follow-lid' будет выбирать между 'do-nothing' и 'dock' в зависимости от того, открыта или закрыта крышка (соответственно).

Поэтому, если вы хотите использовать только внешний монитор, когда он подключен, используйте dockкак <value>.

Если вы хотите, чтобы оба монитора работали всегда, независимо от того, закрыта ли крышка или нет, используйте do-nothing. (Я часто временно закрывал крышку, чтобы она не светилась в моей темной комнате, я не хотел, чтобы все окна переносились на внешний монитор.)

И, наконец, если вы хотите использовать экран ноутбука, но только когда он открыт, используйте follow-lid. (Вариант использования: количество свободного места на вашем столе может быть разным, и иногда вам приходится устанавливать ноутбук за монитором, а не рядом с ним.)

EvgEnZh
источник
0

Разве я не могу просто настроить его так, чтобы он всегда использовал внешний монитор, если он присутствует, в одноэкранном режиме?

Я могу ответить на эту часть. Я запускаю Ubuntu 17.10 на Wayland. В gnome-control-center -> device -> display, вы можете выбрать single displayтолько с $external_monitorвключенным, затем нажмите «Применить». Это создает $HOME/.confg/monitors.xmlфайл. Файл исправляет расположение дисплея при его $external_monitorподключении и переключается на внутренний монитор после его отключения. Что лучше, вы можете поместить один и тот же monitors.xmlпо прибытии /var/lib/gdm3/.config/, в этом случае то же самое справедливо для GDM тоже.

funicorn
источник