Вопрос Как иметь другой фон для каждой рабочей области в MATE


Я знаю, что на это был дан ответ, но это решение не работает на Ubuntu MATE. В любом случае, чтобы добиться этого на MATE?

Вывод wmctrl -d:

$ wmctrl -d
0  * DG: 1366x768  VP: 0,0  WA: 0,25 1366x719  Workspace 1
1  - DG: 1366x768  VP: N/A  WA: 0,25 1366x719  Workspace 2
2  - DG: 1366x768  VP: N/A  WA: 0,25 1366x719  Workspace 3
3  - DG: 1366x768  VP: N/A  WA: 0,25 1366x719  Workspace 4

Вывод $ echo $DESKTOP_SESSION:

$ echo $DESKTOP_SESSION
mate

Исходное решение, которое я пробовал, и это не помогло мне:
Возможно ли иметь другой фон для каждой рабочей области?


5
2017-08-10 19:36


происхождения


Добавьте ссылку на решение, которое не работает, чтобы показать, что вы пробовали. - simlev
Я мог бы отредактировать этот askubuntu.com/questions/305468/... (launchpad.net/~vlijm/+archive/ubuntu/wswitcher) для работы с помощником, но, пожалуйста, добавьте вывод wmctrl -d  на ваш вопрос, чтобы убедиться, что помощник обрабатывает рабочие пространства (я не запускаю Mate). В настоящее время приложение работает для Unity и Budgie. - Jacob Vlijm
@JacobVlijm Я добавил результат - Hershey Gamer
@simlev Я добавил ссылку - Hershey Gamer
Круто! это означает, что код просто нуждается в крошечном редактировании. Я забыл одно: не могли бы вы также опубликовать точный выход echo $DESKTOP_SESSION? - Jacob Vlijm


ответы:


Хотя я не мог проверить это, из-за того, что у меня нет Mate avaialble atm, смотря на вывод wmctrl -d, и учитывая тот факт, что обои на Mate, очевидно, установлены с одинаковыми gsettings я не вижу причин, почему это не должно работать.

Сценарий

Скрипт ниже - отредактированная версия вот этот, и вид экзерпата одного Я нажал на Launchpad, Как бы то ни было, это не сработает для Mate, так как я добавил сеансовую проверку в этом, для Unity или Budgie.

Если вы можете подтвердить, что скрипт ниже работает над Mate, я, вероятно, отредактирую версию ppa, чтобы включить Mate.

Сценарий

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

try:
    os.mkdir(os.path.join(os.environ["HOME"], ".config/wswitcher"))
except FileExistsError:
    pass

workspace_data = os.environ["HOME"]+"/.config/wswitcher/wallpaper_data_"
key = [
    "gsettings get ",
    "gsettings set ",
    "org.gnome.desktop.background picture-uri",
    ]

def getwall():
    return subprocess.check_output(
        ["/bin/bash", "-c", key[0]+key[2]]
        ).decode("utf-8").strip()

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

def current_ws():
    # get the current workspace
    wsdata = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").splitlines()
    return [l.split()[0] for l in wsdata if "*" in l][0]

def wswitcher(curr_ws1, currwall1):
    while True:
        time.sleep(1)
        currwall2 = getwall()
        curr_ws2 = current_ws()
        datafile = workspace_data+curr_ws2
        if curr_ws2 == curr_ws1:
            if currwall2 != currwall1:
                open(datafile, "wt").write(currwall2)
        else:
            if not os.path.exists(datafile):
                open(datafile, "wt").write(currwall2)
            else:
                curr_set = open(datafile).read()
                command = key[1]+key[2]+' "'+str(curr_set)+'"'
                subprocess.Popen(["/bin/bash", "-c", command])
        curr_ws1 = curr_ws2
        currwall1 = getwall()

curr_ws1 = current_ws(); currwall1 = getwall()
wswitcher(curr_ws1, currwall1)

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

  1. Скопируйте сценарий в пустой файл
  2. Сохраните его как wallswitcher.py
  3. Протестируйте его командой:

    python3 /path/to/wallswitcher.py
    
  4. Затем просто начните настраивать обои, как показано на рисунке. Вот,
  5. Если все работает нормально, добавьте его в приложения для запуска:

    /bin/bash -c "sleep 10 && /path/to/wallswitcher.py
    

1
2017-08-12 19:59





Решение, предложенное Якобом Влаймом, отлично работает на моей Мате, при условии, что я изменю org.gnome.desktop.background picture-uri в org.mate.background picture-filename в скрипте (информация найдена Вот).


1
2018-06-01 09:54