Применить настройки отображения ко всем учетным записям?

14

Я потратил некоторое время на настройку правильных настроек для нескольких мониторов, и это нормально работает, когда я вошел в систему, но это не так на экране входа в систему или для других пользователей.

Как настроить параметры дисплея глобально для всех пользователей и экран входа в систему?

mirams
источник
Как вы это установили? из графического интерфейса или командной строки, и каковы ваши настройки?
Джейкоб Влейм
Я думаю, что с графическим интерфейсом «Screen Display» настройки все равно отображаются. Два монитора, один повернутый.
Мирамс
askubuntu.com/questions/360886/… устанавливает логин как одного пользователя, что полезно. askubuntu.com/questions/372729/…, кажется, обращается к старым настройкам xorg, которые больше не используются в 14.04 (я думаю?). Не могу найти ни одного вопроса или ответа о том, как это сделать 14.04 ...
mirams
Я попробовал этот ответ, экран повернулся для входа в систему правильно, а затем не повернулся для пользователей впоследствии (даже после удаления их локальных monitors.xml)
Mirams
Я немного удивлен вознаграждением, если вы настроите свои мониторы, запустите их, sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/как было предложено ранее, + решение ниже, у вас есть настройки для всех пользователей (включая новых пользователей) в точности так, как вы описали.
Джейкоб Влейм

Ответы:

14

В зависимости от того, как вы настроили свою систему, это может быть так же просто, как копирование 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 mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

Примечание: все пользователи, которых вы будете создавать в будущем

Fabby
источник
1
Я уже предлагал это в комментариях (и в своем ответе ранее, но откат), но OP упомянул, что этого недостаточно. Это работает только для экрана входа в систему :) Это также не работает для новых пользователей, если вы не скопируете их снова этим пользователям.
Якоб Влийм
@JacobVlijm: Прочтите еще раз ... Мой предназначен для экрана входа в систему и для всех пользователей ... : P (оставив его там в качестве комментария под OP, что он не работает, можно предупредить других авторов о том, что все это нужно вводить. в третий раз) > :-)
Fabby
1
Я не предлагал копировать файл всем пользователям из-за этого: мне нужно решение, которое применяет настройки ко всем учетным записям (и будущим), а также делает экран входа в систему правильным. добавление в, /etc/xdg кажется, единственная уловка, которая делает это также для новых пользователей.
Джейкоб Влейм
@JacobVlijm: ах, пропустил это! (Также добавлено решение для этого) ;-)
Fabby
2
Это лучший ответ - он правильно настроил все мониторы и сразу же работает и для гостевого пользователя. В качестве бонуса - есть ли способ также скопировать настройку «Launcher Placement» из графического интерфейса настроек дисплея? На моем пользователе это только на одном мониторе, но на обоих для нового / гостевого пользователя.
Мирамс
3

Чтобы настроить конфигурацию экрана для каждого пользователя при входе в систему (это не изменит конфигурацию на экране входа в систему), вы можете создать .desktopфайл в/etc/xdg/autostart

Как это сделать

  1. узнайте название экрана, который вы хотите повернуть, запустив xrandr. Он выведет несколько строк, среди которых несколько строк выглядят так:

    VGA-0 connected
    

    Это дает вам информацию о названиях подключенных экранов.

  2. Выберите тот, который вы хотите повернуть, в моем примере ниже VGA-0
  3. Создайте панель запуска с (например) 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команды прерываются, если они выполняются слишком рано, до того, как рабочий стол «завершает» загрузку. Возможно, вам нужно увеличить разрыв, или вы можете попытаться пропустить его. В команде, как есть, экран поворачивается через 10 секунд после входа любого пользователя.

  • Команда:

    xrandr --output VGA-0 --rotate left
    

    вращает экран не осталось, нет необходимости говорить , что если вы хотите другой тип вращения, вы можете выбрать left, right, normal, inverted(смотри также здесь) .

объяснение

Вы можете запускать команды при запуске (фактически входить в систему), помещая .desktopфайл (панель запуска) в ~/.config/autostart. Это запустит панель запуска только для одного пользователя. Если вы делаете то же самое, но устанавливаете модуль запуска /etc/xdg/autostart, команда запускается всякий раз, когда любой пользователь входит в систему, если только конкретный пользователь не отключит для него модуль запуска в Dash> Startup Applications

Кроме того , вы можете просто скопировать свой локальный ~/.config/monitors.xmlфайл, чтобы /var/lib/lightdm/monitors.xmlнастройки работали на экране входа в систему.

По моему мнению, комбинация этого и вышеприведенное решение (средство запуска /etc/xdg) - самое простое решение для достижения именно того, что вы хотите как для экрана входа в систему, так и для (любого) пользователя. Кроме того, решение для панели запуска /etc/xdg(очень) легко изменить или изменить в случае, если вам потребуется выполнить другую настройку, не редактируя много файлов на (каждом) уровне пользователя, так как настройки пользователя и экран входа в систему управляются для все пользователи сразу в двух простых файлах.

Якоб Влейм
источник
Это может сработать - изменить настройки через 10 секунд после входа в систему, но я бы предпочел знать, с чего они будут начинаться, и изменить их для всех (и экран входа в систему, который в настоящее время находится в боковом положении).
Мирамс
Зачем кому-то отрицать это?
Потрясающе
2

Просто хотел добавить комментарий для тех, кто сталкивается с подобной проблемой. Я застрял с разрешением моего старого монитора (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.

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

MattB
источник
Добро пожаловать в Спросите Ubuntu. Спасибо, что поделились своими четырьмя месяцами (прошедшим временем) исследований.
WinEunuuchs2Unix
Прочитав это еще раз, я думаю, что, возможно, я создал этот файл xrandr.desktop два года назад, чтобы обойти Ubuntu, всегда по умолчанию с базовыми настройками монитора Goldstar, и это, вероятно, было проблемой совместимости с моей видеокартой.
MattB
0

Вы можете добавить что-то к /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переключает дисплей на экране входа в систему .

nixpower
источник
Было бы здорово, если бы вы могли попробовать это, мне интересно посмотреть, сработает ли это для вас.
nixpower
0

В моей системе (Ubuntu 16.04) экран входа в систему просто не работал cpкак root (используя sudo). Вам также может потребоваться убедиться, что владельцем / группой monitors.xml является lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
Zinsser
источник