Есть ли способ настроить Ubuntu для установки разрешения монитора «первой попытки» по умолчанию всякий раз, когда подключен (или два) монитор. Независимо от того, какие графические карты или графический драйвер используются.
Например, когда я подключаю монитор HDMI, поддерживающий 1920x1080, Ubuntu хорошо воспроизводится, автоматически устанавливая разрешение экрана FullHD. Это хорошо.
Но мне нужно простое разрешение 1024x768 по HDMI. Чтобы решить эту проблему, я могу легко перейти к настройкам системы - отобразить и настроить ее, ubuntu также запомнит мои настройки. Или с помощью команды xrandr.
Но каждый раз, когда я меняю монитор, мне нужно переходить к настройкам системы (или снова запускать другую команду xrandr).
Итак, есть ли способ сообщить ubuntu, что-то вроде
«для каждого подключенного монитора, независимо от того, подключен ли он через D-SUB или HDMI или что-то еще, попробуйте проверить, поддерживает ли он 1024x768, и если это так, используйте это разрешение "
Я имею в виду
Но я до сих пор не знаю, как их реализовать.
В качестве информации система настроена на использование lightdm, если это имеет значение. Я читал о xrandr, monitors.xml, но все еще не могу найти решения. Заранее спасибо.
Однажды в 5 секунд, фоновый сценарий ниже ищет новые экраны, которые будут соединены.
Если это происходит, это пытается установить разрешение на то, что Вы устанавливаете в главном разделе сценария (см.: Как использовать).
Уведомление показывает, был ли creen успешно установлен:
Если команда для установки сбоев разрешения это показывает уведомление:
#!/usr/bin/env python3
import subprocess
import time
# --- set your main screen below, since you probably want to set it differently
main_screen = "DVI-I-1"
# --- set the tried resolution below
res = "200x300"
#---
screens1 = [main_screen]
def screeens():
[l.split()[0] for l in subprocess.check_output("xrandr")\
.decode("utf-8").splitlines() if " connected" in l]
while True:
time.sleep(5)
screens2 = [l.split()[0] for l in subprocess.check_output("xrandr").decode("utf-8")\
.splitlines() if " connected" in l]
new = [scr for scr in screens2 if not scr in screens1]
for scr in new:
try:
subprocess.check_call(["xrandr", "--auto", "--output", scr, "--mode", res])
# small break to give the screens time to adapt
time.sleep(5)
subprocess.Popen(["notify-send", "successfully set "+scr+" to "+res])
except subprocess.CalledProcessError:
subprocess.Popen(["notify-send", "failed to set resolution of "+scr+" to "+res])
screens1 = screens2
set_screens.py
Набор в главном разделе сценария:
разрешение Вы хотите судиться на новых экранах.
# --- set your main screen below, since you probably want to set it differently
main_screen = "DVI-I-1"
# --- set the tried resolution below
res = "200X300"
#---
Тестовый прогон сценарий командой (от терминала):
python /path/to/set_screens.py
Если все хорошо работает, добавьте его для Запущения Приложений:
/bin/bash -c "sleep 15 && python3 /path/to/set_screens.py"
sleep 15
важно в команде запуска, особенно если экраны secundary возможно присоединяются. Сценарий повредится, если рабочий стол еще не будет полностью загружен, если он начинает работать.
Если сценарий хорошо работает от терминала, но повреждается как команда sartup, играйте немного с sleep 15
.
Если Вы не хотите исключать свой основной экран из попытки установить разрешение, изменить строку:
screens1 = [main_screen]
в:
screens1 = []
Если Вы не должны запускать фоновый скрипт, то не делайте. Если это добавляет важную функциональность и/или экономит Вам время, я не вижу оснований не к однако, если:
и
В этом случае, проверка xrandr
однажды в пять секунд ничего не значит для Вашей системы.
Я создал несколько настольных ярлыков для достижения этого вида вещи на моем ноутбуке. Они
Кошка $ LowRes.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_GB]=gnome-panel-launcher
Name[en_GB]=LowRes
Exec=xrandr -s 8
Comment[en_GB]=1368x768
Name=LowResDisplay
Comment=1368x768
Icon=gnome-panel-launcher
и
кошка HighRes.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_GB]=gnome-panel-launcher
Name[en_GB]=HighRes
Exec=xrandr -s 4
Comment[en_GB]=1600x900
Name=HighResDisplay
Comment=1600x900
Icon=gnome-panel-launcher
Возможно, что-то подобное могло бы быть полезно для Вас.
Я создал сценарий для одного из моих мониторов и выполнил его, поскольку я подключаю монитор. Таким образом, можно сделать подобные различные сценарии для различных типов монитора и выполнить каждого согласно требованию.
#!/bin/bash
sudo xrandr --addmode VGA-0 1440x900_60.00
sudo xrandr --newmode Modeline "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync
Создайте свой Modeline для Вашего монитора со следующим
cvt 1440x900 60
горизонтальные пиксели x вертикальный pixesl refreshrate