Я потратил некоторое время на настройку правильных настроек для нескольких мониторов. Они работают нормально, когда я вхожу в систему, но не работают на экране входа в систему или для других пользователей.
Как установить глобальные настройки отображения для всех пользователей и экрана входа в систему?
решение1
В зависимости от того, как настроена ваша система, это может быть так же просто, как копирование monitors.xml
файлаот правильно настроенного пользователявсем пользователям:
Чтобы проверить это для одного пользователя:
cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/
затем выйдите из TestUserесли вы уже вошли в систему, войдите снова и проверьте, все ли правильно.
Команда для всех пользователей:
cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done
Команда для экрана входа:
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/
Командадля всех будущих пользователей¹:
sudo mkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
Примечание¹:Все пользователи, которых вы создадите в будущем
решение2
Чтобы настроить конфигурацию экранадля каждого пользователя при входе в систему(это не изменит конфигурацию на экране входа в систему), вы можете создать .desktop
файл в/etc/xdg/autostart
Как это сделать
узнайте имя экрана, который вы хотите повернуть, запустив
xrandr
. Он выведет несколько строк, среди которых несколько строк, выглядящих как:VGA-0 connected
Это даст вам информацию о названиях подключенных экранов.
- Выберите тот, который вы хотите повернуть, в моем примере ниже
VGA-0
Создайте лаунчер с помощью (например)
gedit
:sudo -i gedit /etc/xdg/autostart/set_screens.desktop
Вставьте текст ниже в файл:
[Desktop Entry] Name=set_screens Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left" Type=Application
заменить в строке:
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
Строка:
VGA-0
по имени вашего (повернутого) экрана.
Важные заметки
В линии
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
Я включил
sleep 10
. Это потому, что иногдаxrandr
команды прерываются, если они выполняются слишком рано, до того, как рабочий стол "закончит" загрузку. Возможно, вам нужно увеличить break, или вы можете попробовать не включать его. В команде, как она есть, экран поворачивается через 10 секунд после входа в системулюбойпользователь.Команда:
xrandr --output VGA-0 --rotate left
поворачивает экран влево, нет необходимости говорить, что если вам нужен другой тип поворота, вы можете выбрать либо
left
,right
,normal
,inverted
(см. такжездесь).
Объяснение
Вы можете запускать команды при запуске (фактически при входе в систему), поместив .desktop
файл (запуск) в ~/.config/autostart
. Это запустит запуск только для одного пользователя. Если вы сделаете то же самое, но поместите запуск в /etc/xdg/autostart
, команда будет выполняться всякий раз,любойпользователь входит в систему, если только конкретный пользователь не отключит для себя средство запуска в Dash > Автозагрузка приложений
Кроме того, вы можете просто скопировать локальный ~/.config/monitors.xml
файл, чтобы /var/lib/lightdm/monitors.xml
настройки также работали на экране входа в систему.
По моему мнению, сочетание этого и решения выше (пусковая установка в /etc/xdg
) является самым простым решением для достижения именно того, что вы хотите как для экрана входа, так и для (любого) пользователя. Кроме того, решение пусковой установки в /etc/xdg
(очень) легко отменить или изменить, если вам понадобится сделать другую настройку, без редактирования множества файлов на уровне (каждого) пользователя, поскольку и настройки пользователя, и экран входа управляются для всех пользователей одновременно в двух простых файлах.
решение3
Просто хотел добавить комментарий для тех, кто сталкивается с похожей проблемой. Я застрял с разрешением своего старого монитора (1280x1024) каждый раз, когда я вхожу в систему, но экран входа и вход в качестве гостя используют правильное разрешение по умолчанию 1680x1050.
За последние четыре месяца я прочитал много постов в поисках ответа, читаяxorg.conf, monitors.xml, lightdmиxrandrи другие предложения - но некоторые изменения конфигурации сложны и несут в себе риск полной поломки дисплея, поэтому в итоге я использовал графический интерфейс для ручного изменения настроек монитора при каждом входе в систему.
Сегодня я выполнил grep для старого разрешения в моей папке .config.
grep -HrnIF '1280' .config | less
Первым результатом был файл ~/.config/autostart/xrandr.desktop, содержащий это,
Exec=xrandr -s 1280x1024 -r 75
так что я просто переместил файл оттуда. И бинго, я вхожу и получаю разрешение по умолчанию 1680x1050.
Мне потребовалось несколько часов на поиски, но я не смог найти достаточно точного ответа, поэтому пишу здесь, возможно, это будет кому-то полезно.
решение4
Вы можете захотеть что-то добавить к /etc/lightdm/lightdm.conf
. Здесь мы создаем скрипт, который использует xrandr
команду для настройки вашего дисплея(ов). Вы можете использовать какой-нибудь графический инструмент RandR, чтобы создать команду для вас, например arandr
. В моем случае скрипт будет выглядеть так:
#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off
Вы можете поместить этот скрипт в /usr/share
или куда хотите. Ваш скрипт может выглядеть гораздо менее сложным, так как он предназначен для сложной конфигурации с двумя мониторами. Затем добавьте что-то вроде:
session-setup-script=/usr/share/mycustomxrandr.sh
и:
display-setup-script=/usr/share/mycustomxrandr.sh
Убедитесь, что файл является исполняемым, поэтому:
chmod a+x mycustomxrandr.sh
Будет session-setup-script
установлен дисплей дляпослевы входите в систему через LightDM, и display-setup-script
измените отображение экрана входа.