возможность сохранить текущее разрешение, обои и настольные настройки расположения в гноме 3

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

Я использую гнома 3.18.5 на Ubuntu 16.04. У меня есть Intel HD graphics 530 и Nvidia 960M с версией драйвера 375.39 Nvidia. Я также установил расширение оболочки гнома под названием 'Fix-Multi-Monitors', который действительно фиксировал набор проблем как окна, только перемещающиеся между два из трех мониторов с окном движущиеся ярлыки.

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

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

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

Пути к моим обоям:

/home/olm/Pictures/Wallpapers/3monitorwallpaper.jpg /home/olm/Pictures/Wallpapers/1monitorwallpaper.jpg

1
задан 24 March 2017 в 16:01

2 ответа

1. Сценарий для выполнения команды, если четыре экрана соединены

сценарий ниже, является отредактированной версией этот .

, Что это делает

Однажды в пять секунд, это проверяет количество связанных экранов. Если число изменяется, и , общее количество связанных экранов равняется четырем, оно работает эти xrandr команда, которую мы нашли в комментарии (комментариях).

, Как использовать

  1. Копия сценарий в пустой файл, сохраните его как four_screens.py
  2. Тестовый прогон сценарий от терминала с командой:

    python3 /path/to/four_screens.py
    

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

  3. , Если все хорошо работает, добавьте сценарий для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    python3 /path/to/four_screens.py
    
#!/usr/bin/env python3
import subprocess
import time

#--- set both commands (connect / disconnect) below
connect_command = "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 "\
                  "&& xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 "\
                  "&& xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 "\
                  "&& xrandr --output eDP-1-1 --off"

disconnect_command = ""
#---

while True:
    time.sleep(5)
    try:
        subprocess.Popen(["xrandr"])
    except:
        pass
    else:
        break


# function to get the output of xrandr
def get(cmd): return subprocess.check_output(cmd).decode("utf-8")
# - to count the occurrenc of " connected "
def count_screens(xr): return xr.count(" connected ")
# - to run the connect / disconnect command(s)
def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])

# first count
xr1 = None

while True:
    time.sleep(5)
    # second count
    xr2 = count_screens(get(["xrandr"]))
    # check if there is a change in the screen state
    if xr2 != xr1:
        if xr2 == 4:
            # command to run if connected (two screens)
            run_command(connect_command)
        elif xr2 == 1:
            # command to run if disconnected (one screen)
            # uncomment run_command(disconnect_command) to enable, then also comment out pass
            pass
            # run_command(disconnect_command)
    # set the second count as initial state for the next loop
    xr1 = xr2

Примечания

  1. сценарий является чрезвычайно низким на соке, он не добавляет значимой нагрузки вообще.
  2. В том же сценарии, мы можем выполнить изменение обоев, но сделать так, отправьте (путь к) эти два обоев в Ваш вопрос.

2. С другой стороны, ярлык

, Если бы, по любой причине, Вы предпочли бы не запускать фоновый скрипт, можно выполнить ту же команду через сочетание клавиш:

Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

/bin/bash -c "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 && xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 && xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 && xrandr --output eDP-1-1 --off"
0
ответ дан 8 December 2019 в 06:08

Тем временем я также нашел, что эта удобная команда изменяет обои в гноме.

gsettings set org.gnome.desktop.background picture-uri file:///path/to/wallpaper.jpg

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

0
ответ дан 8 December 2019 в 06:08

Другие вопросы по тегам:

Похожие вопросы: