Збереження налаштувань монітора?


16

Чи є спосіб зберегти налаштування монітора? У мене зовнішній монітор на роботі, але кожного ранку мені доводиться підключати його, переставляти вікна так, щоб вони були поруч, щоб бути один на одного. Чи можу я просто зберегти це?

Відповіді:


7

Довга історія (тобто: зробіть те, що пропонує Ніколас Бернаертс , але я шкодую вас докладно): конфігурація моніторів фактично зберігається ~/.config/monitors.xml, але вона не застосовується при запуску / вході.

Кроки для подолання цього:

Увійдіть у систему з неправильною конфігурацією моніторів.

Видалити поточну конфігурацію монітора:

cd .config
mv monitors.xml{,.bak}

Використовуйте програму " Дисплеї", щоб розташувати монітори за вашим бажанням (у мене один бічний монітор повернутий проти годинникової стрілки). розташуйте монітори за своїм бажанням

Після натискання кнопки Застосувати створюється новий monitors.xml.

Тепер завантажте та зробіть виконуваний сценарій та пусковий механізм, які змушують конфігурацію монітора на основі щойно створеного конфігураційного файлу:

$ sudo wget -O /usr/local/sbin/update-monitor-position https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position
$ sudo chmod +x /usr/local/sbin/update-monitor-position
$ sudo wget -O /usr/share/applications/update-monitor-position.desktop https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position.desktop
$ sudo chmod +x /usr/share/applications/update-monitor-position.desktop

У цей момент конфігурацію моніторів можна виправити, запустивши програму оновлення положення монітора .

Якщо ви хочете, щоб це було автоматичним, просто додайте додаток для запуску із такими записами:

  • Ім'я: Update Monitors Position
  • Команда: update-monitor-position 5
  • Коментар: Force monitors position 5 seconds after login

введіть тут опис зображення


1
Чудово, це допомогло. Спасибі! Чи є звіт про помилку для цього?
Ondra Žižka


2
Я думаю, що це найкраща відповідь. Я оновив скрипт для підтримки декількох профілів: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - просто скопіюйте свої monitors.xml у наприклад monitors-office.xml, якщо ви хочете запустити "update-monitor-position office"
relet

vanvugt: "Насправді, давайте використовувати помилку 1292398, оскільки саме це знайде більшість користувачів." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF

5

Конфігурація для всіх ваших моніторів - гарячекатаного підключено чи ні - має бути збережена в $HOME/.config/monitors.xmlв xrandrплагін для gnome-settings-daemon, який є те , що на самому ділі застосовує конфігурацію ви робите в капплете Монітори.

Оскільки здається, що це працює не всім належним чином, десь явно є помилка. Урх.


Так, і як каже Мако, якщо я вимкну комп’ютер і завантажую його назад, він пам’ятає, тільки не тоді, коли він уже включений.
Оскар Годсон

4

Перші три кроки для підключення зовнішнього монітора так, як ви хочете, і четвертий - це збереження налаштувань.

  1. Підключіть зовнішній монітор і перевірте підтримувану роздільну здатність:

    xrandr -q
    
  2. Дайте таку команду (Це відключить монітор вашого ноутбука):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Якщо ви хочете як ноутбук, так і зовнішній:

    xrandr --output LVDS1 --mode yyyyXzzzz --pos 0x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    

    (yyyyXzzzz - роздільна здатність вашого ноутбука.)

    Вищеописана конфігурація буде клонувати ваш екран. Грайте з опцією " --right-of/ --left-of", якщо хочете.

  4. Якщо вам потрібні ці налаштування під час входу, додайте чеки /etc/X11/Xsession.d/45custom_xrandr-settings(можливо, вам потрібно буде створити).

    xrandr |grep VGA1 | grep " connected " | if [ $? -eq 0 ]; then xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal  #Change the way u need ; fi
    

2

В офісі у мене на ноутбуці є 3 монітора та 2 вдома. Два офісні монітори встановлені вертикально, а інші - у нормальній орієнтації.

A. monitors.xml знаходиться у ~ / .config.

  1. Видаліть його
  2. Встановіть дисплей при налаштуванні офісу
  3. Перейменуйте щойно створений "monitors.xml" на "monitors-office.xml".

B. Отримайте скрипт оболонки, "update-monitor-position".

  1. Змініть визначення "MONITOR_XML", "monitors.xml" на "monitors-office.xml".

  2. Збережіть його як "update-monitor-position-office", у виконуваному шляху (/ usr / local / sbin /).

  3. Торкніться дозволу -> виконуваного файлу "Я".

C. Отримайте ярлик на робочому столі, "update-monitor-position.desktop"

  1. Змініть визначення "Exec", "update-monitor-position" на
    "update-monitor-position-office".
  2. Збережіть це як "update-monitor-position-office.desktop"
  3. Торкніться дозволу -> виконуваного файлу "Я".

update-monitor-position-office.desktop:

[Desktop Entry]
Type=Application
Exec=update-monitor-position-office
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Office Monitors Position
Name=Office Monitors Position
Comment[en_US]=Force monitors position from monitor-office.xml
Comment=Force monitors position from monitor-office.xml
Icon=display

Скрипт оболонки, оновлення-монітор-позиція-офіс

#!/bin/bash
# -------------------------------------------------
#  Get monitors configuration from monitor.xml and apply it for current user session.
#  In case of multiple definitions in monitor.xml only first one is used.
#
#  See http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost
#  for instructions
#
#  Parameters :
#    $1 : waiting time in sec. before forcing configuration (optional)
#
#  Revision history :
#    19/04/2014, V1.0 - Creation by N. Bernaerts
#    10/07/2014, V1.1 - Wait 5 seconds for X to fully initialize
#    01/09/2014, V1.2 - Correct NULL file bug (thanks to Ivan Harmady) and handle rotation
#    07/10/2014, V1.3 - Add monitors size and rate handling (idea from jescalante)
#    08/10/2014, V1.4 - Handle primary display parameter
#    08/12/2014, V1.5 - Waiting time in seconds becomes a parameter
# -------------------------------------------------

# monitor.xml path
MONITOR_XML="$HOME/.config/monitors-office.xml"

# get number of declared monitors
NUM=$(xmllint --xpath 'count(//monitors/configuration['1']/output)' $MONITOR_XML)

# loop thru declared monitors to create the command line parameters
for (( i=1; i<=$NUM; i++)); do
  # get attributes of current monitor (name and x & y positions)
  NAME=$(xmllint --xpath 'string(//monitors/configuration['1']/output['$i']/@name)' $MONITOR_XML 2>/dev/null)
  POS_X=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/x/text()' $MONITOR_XML 2>/dev/null)
  POS_Y=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/y/text()' $MONITOR_XML 2>/dev/null)
  ROTATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rotation/text()' $MONITOR_XML 2>/dev/null)
  WIDTH=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/width/text()' $MONITOR_XML 2>/dev/null)
  HEIGHT=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/height/text()' $MONITOR_XML 2>/dev/null)
  RATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rate/text()' $MONITOR_XML 2>/dev/null)
  PRIMARY=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/primary/text()' $MONITOR_XML 2>/dev/null)

  # if position is defined for current monitor, add its position and orientation to command line parameters
  [ -n "$POS_X" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--output" "$NAME" "--pos" "${POS_X}x${POS_Y}" "--fbmm" "${WIDTH}x${HEIGHT}" "--rate" "$RATE" "--rotate" "$ROTATE")

  # if monitor is defined as primary, adds it to command line parameters
  [ "$PRIMARY" = "yes" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--primary")
done

# if needed, wait for some seconds (for X to finish initialisation)
[ -n "$1" ] && sleep $1

# position all monitors
xrandr "${PARAM_ARR[@]}"

Гей @jey, ти відповів на це в січні 2018 року. (Поки сценарію Ніколя 4 роки ... ). Чи можу я припустити, що це все ще працює в останній версії Ubuntu 16.x / 18.x? - І: чи є у вас припущення, якщо воно також працює під Ubuntu- MATE ? (Я бачу сказане monitors.xml в моїй системі ...)
Френк Нокк

Френк, моє говорить "16.04.5 LTS". Один момент, після "dist-upgrade", мені довелося пройти процес, а потім перезавантажити. "Налаштування системи -> Дисплеї" працює смішно в моїй системі. Я не в режимі спробувати 18.x. Спасибі,
сойка

1

Ubuntu 12.04 запам’ятовує налаштування монітора з гарячим підключенням. Але вони застосовуються лише при повторному відкритті конфігурації системи> Відображає аплет. Принаймні, це стосується мене, і це, безумовно, помилка.


1

Відповідь Джей ледь не спрацювала для мене, але мені потрібно було зробити ще кілька додаткових кроків. Я б прокоментував його відповідь, але у мене немає репутації.

У файлі оновлення-монітор-позиція-офіс:

  1. Моя версія bash (4.3.48) скаржилася на відсутність місця після "i ++" на лінії 28.
  2. Моя версія xrandr (1.5) не розпізнала параметр "--fbmm" у рядку 40. Мені довелося змінити це на "--mode". Це було важко діагностувати, оскільки xrandr насправді не видав мені помилки, він просто виконував команду, не роблячи нічого.

1

Я вважаю за краще запустити цей скрипт з терміналу, оскільки відкриваю його перший після входу.

Перший логін із поганою конфігурацією - монітори розміщені неправильно:

cd ~/.config
mv ~/.config/monitors.xml{,.bak}

Тепер встановіть монітори з системними налаштуваннями, щоб створити новий ~/.config/monitors.xmlфайл із належними налаштуваннями.

Скопіюйте фіксований сценарій Ніколя Бернартса з мого репортажу: https://raw.githubusercontent.com/alextomko/monitors/master/monitors і поставте його в шлях для запуску з терміналу.

$ ls -l ~/bin
# if you don't have this directory then create it - do not be logged in as root here.

$ mkdir /home/$USER/bin

$ echo $PATH
# should show /home/username/bin if the dir existed or if you had to create.

$ wget -P ~/bin https://raw.githubusercontent.com/alextomko/monitors/master/monitors
$ chmod +x ~/bin/monitors

# Log out, lock, reboot or whatever it takes to make monitor settings lost for you and run the script.
$ monitors

0

Ні, немає ніякого способу збереження конфігурацій на гарячих підключених моніторах. Якщо ви підключаєтесь перед завантаженням, GNOME повинен пам’ятати конфігурацію кожного завантаження на основі кожного пристрою (тобто підключення до монітора на роботі порівняно з домашнім).


Чорт, добре. Чи є стороннє додаток, ніж це можна зробити? Я знаю, що Mac OS X робить це, і Windows 7 (з того, що я намагався з невеликим досвідом роботи з W7).
Оскар Годсон

Конфігурація монітора GNOME повинна зберігати цю інформацію і для гарячих підключених моніторів. Це робить для мене.
RAOF

RAOF: дивно, оскільки дискусія у списку розсилки ubuntu-devel раніше цього тижня заявила, що цього не робить.
maco

конфігурація насправді збережена ~/.config/monitors.xml, але вона не застосовується при запуску
Alessandro Cuttin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.