Frage Wie Sie für jeden Arbeitsbereich in MATE einen anderen Hintergrund haben


Ich weiß, dass dies bereits beantwortet wurde, aber diese Lösung funktioniert nicht auf Ubuntu MATE. Wie auch immer, um dies auf MATE zu erreichen?

Ausgabe von 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

Ausgabe von $ echo $DESKTOP_SESSION:

$ echo $DESKTOP_SESSION
mate

Ursprüngliche Lösung, die ich ausprobiert habe und die für mich nicht funktioniert hat:
Ist es möglich, für jeden Arbeitsbereich einen anderen Hintergrund zu haben?


5
2017-08-10 19:36


Ursprung


Bitte fügen Sie einen Link zu der Lösung hinzu, der nicht funktioniert, um zu zeigen, was Sie ausprobiert haben. - simlev
Ich könnte das hier bearbeiten askubuntu.com/questions/305468/ ... (launchpad.net/~vlijm/+archive/ubuntu/wswitcher) um mit Kumpel zu arbeiten, aber bitte addiere die Ausgabe von wmctrl -d  auf Ihre Frage, um sicherzustellen, wie Kumpel Arbeitsbereiche behandelt (Ich führe Mate nicht). Derzeit funktioniert die Anwendung für Unity und Budgie. - Jacob Vlijm
@JacobVlijm Ich habe die Ausgabe hinzugefügt - Hershey Gamer
@simlev Ich habe den Link hinzugefügt - Hershey Gamer
Cool! Das bedeutet, dass der Code nur eine kleine Bearbeitung benötigt. Ich habe eine Sache vergessen: Könnten Sie auch die genau Ausgabe von echo $DESKTOP_SESSION? - Jacob Vlijm


Antworten:


Obwohl ich es nicht testen konnte, aufgrund der Tatsache, dass ich kein Mate available atm habe, schaue auf den Output von wmctrl -dund angesichts der Tatsache, dass Tapeten auf Mate offensichtlich mit dem gleichen eingestellt sind gsettings Befehl, sehe ich keinen Grund, warum es nicht funktionieren sollte.

Das Skript

Das folgende Skript ist eine bearbeitete Version von dieses, und eine Art von einem Auszug des einen Ich schob nach Launchpad. So wie es ist, wird man für Mate nicht arbeiten, da ich eine Session-Überprüfung für entweder Unity oder Budgie hinzugefügt habe.

Wenn Sie bestätigen können, dass das folgende Skript auf Mate funktioniert, werde ich wahrscheinlich die PPA-Version bearbeiten, um Mate einzuschließen.

Das Skript

#!/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)

Wie benutzt man

  1. Kopieren Sie das Skript in eine leere Datei
  2. Speichere es als wallswitcher.py
  3. Testen Sie es mit dem Befehl:

    python3 /path/to/wallswitcher.py
    
  4. Dann beginnen Sie einfach mit dem Einrichten Ihrer Hintergrundbilder wie gezeigt Hier.
  5. Wenn alles funktioniert, fügen Sie es den Startup-Anwendungen hinzu:

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

1
2017-08-12 19:59





Die von Jacob Vlijm vorgeschlagene Lösung funktioniert gut mit meinem Kumpel, sofern ich mich ändere org.gnome.desktop.background picture-uri zu org.mate.background picture-filename im Skript (Information gefunden Hier).


1
2018-06-01 09:54