Как делать изменение Ubuntu обоями, когда монитор разъединяется?

У меня есть ноутбук, и большинство времен, я использую его, он подключен к монитору. Но этот монитор имеет другое разрешение, чем экран моего ноутбука, таким образом, фоновое изображение, которое я использую на своем мониторе, не соответствует на моем экране ноутбука. Есть ли какой-либо способ, которым я могу делать изменение Ubuntu обоями, когда мой монитор соединен/разъединен?

2
задан 27 April 2015 в 19:13

1 ответ

Это возьмет фоновый сценарий для отслеживания то, подключен ли второй монитор или нет.

Сценарий ниже проверок каждые пять секунд, если это так, и наборы обои соответственно.
Сценарий также помнит обои набора за два состояния (соединенные/разъединенные) в скрытом файле. Файл автоматически обновляется при изменении обоев для любой из ситуаций.

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

  1. Скопируйте сценарий в пустой файл, сохраните его как change_wallpaper.py
  2. В главном разделе сценария, определенного имя Вашего второго экрана (выполняет команду xrandr из окна терминала, для наблюдения имени экрана в выводе). Я уехал "VGA-0" как пример.
  3. Запустите сценарий с команды (от терминала):

    python3 /path/to/change_wallpaper.py
    
  4. Соедините второй экран, ожидайте несколько секунд и установите обои. (обои должны быть изменены для запоминания этого). Снова ожидайте несколько секунд. Разъедините второй монитор, установите обои для сингла - ситуация с монитором.

Если обои установлены для обеих ситуаций, сценарий должен изменить обои автоматически. При изменении обоев, как обычно, сценарий будет помнить это за соответствующую (соединенную/разъединенную) ситуацию

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

/bin/bash -c "sleep 15&&python3 /path/to/change_wallpaper.py"

Сценарий:

#!/usr/bin/env python3
import subprocess
import os
import time

#--- set the name of your secundary screen below
second = "VGA-0"
#---
# the script uses the key org.gnome.desktop.background picture-uri to set/change the wallpaper
key = ["gsettings get ", "gsettings set ",
    "org.gnome.desktop.background picture-uri"]
# set the name of the wallpaper- datafile(s)    
wallbody = os.environ["HOME"]+"/.wallpaperset"
# define the string to be found (or not) in the output of xrandr
tocheck = second+" connected"

def set_wallpaper(w):
    try:
        cmd = key[1]+key[2]+' "'+open(wallbody+str(w)).read().strip()+'"'
        subprocess.Popen(["/bin/bash", "-c", cmd])
    except FileNotFoundError:
        pass

check = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
# first call of xrandr, and get the current wallpaper
xr1 = tocheck in check("xrandr")
if xr1 == True:
    set_wallpaper(2)
else:
    set_wallpaper(1)
wall1 = check(key[0]+key[2])

while True:
    time.sleep(5)
    # second call of xrandr, and get the current wallpaper
    xr2 = tocheck in check("xrandr")
    wall2 = check(key[0]+key[2])
    # if the second screen either connects or disconnects, change the wallpaper
    if (xr1, xr2).count(True) == 1:
        w = 2 if xr2 == True else 1
        set_wallpaper(w)
    # if wallpaper is changed, remember the new wallpaper
    elif wall2 != wall1:
        w = 2 if xr2 == True else 1
        open(wallbody+str(w), "wt").write(wall2)
    xr1 = xr2
    wall1 = wall2
2
ответ дан 2 December 2019 в 03:54

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

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