it-swarm.com.de

Wie man einen anderen Hintergrund für jeden Arbeitsbereich in MATE hat

Ich weiß, dass dies bereits beantwortet wurde, aber diese Lösung funktioniert unter Ubuntu MATE nicht. 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 bei mir nicht funktioniert hat:
Kann es für jeden Arbeitsbereich einen anderen Hintergrund geben?

5
Hershey Gamer

Obwohl ich es nicht testen konnte, da ich kein Mate-atm zur Verfügung habe, und die Ausgabe von wmctrl -d betrachte und die Tatsache vorausgesetzt, dass Hintergrundbilder auf Mate offensichtlich mit demselben Befehl gsettings gesetzt sind, habe ich sehe keinen grund warum es nicht funktionieren sollte.

Das Drehbuch

Das folgende Skript ist eine bearbeitete Version von dieses und eine Art Auszug aus dem Ich habe auf Launchpad geschoben . Da ich einen Session-Check für Unity oder Budgie hinzugefügt habe, wird dieser nicht für Mate funktionieren.

Wenn Sie bestätigen können, dass das folgende Skript auf Mate funktioniert, werde ich die ppa-Version wahrscheinlich so bearbeiten, dass sie Mate enthält.

Das Drehbuch

#!/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. Teste es mit dem Befehl:

    python3 /path/to/wallswitcher.py
    
  4. Dann richten Sie einfach Ihre Hintergrundbilder wie gezeigt ein hier .
  5. Wenn alles funktioniert, fügen Sie es zu Startup Applications hinzu:

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

Die von Jacob Vlijm vorgeschlagene Lösung funktioniert auf meinem Mate einwandfrei, vorausgesetzt, ich ändere org.gnome.desktop.background picture-uri in org.mate.background picture-filename im Skript (Informationen gefunden hier ).

1
infisxc