Come avere uno sfondo diverso per ogni area di lavoro in MATE

5

So che a questa domanda è stata data risposta prima, ma quella soluzione non funziona su Ubuntu MATE. Ad ogni modo per ottenere questo risultato su MATE?

Output di 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

Output di $ echo $DESKTOP_SESSION :

$ echo $DESKTOP_SESSION
mate

Soluzione originale che ho provato e che non ha funzionato per me:
È possibile avere uno sfondo diverso per ogni area di lavoro?

    
posta Hershey Gamer 10.08.2017 - 21:36

2 risposte

1

Anche se non ho potuto testarlo, visto che non ho Mate atm atm, guardando l'output di wmctrl -d , e dato il fatto che gli sfondi su Mate sono ovviamente impostati con lo stesso gsettings comando, non vedo ragioni per cui non dovrebbe funzionare.

Lo script

Lo script di seguito è una versione modificata di questo , e una specie di un estratto di quello Ho premuto su Launchpad . Così com'è, quello non funzionerà per Mate, dal momento che ho aggiunto un controllo di sessione in quello, sia per Unity che per Budgie.

Se puoi confermare che lo script qui sotto funziona su Mate, probabilmente modificherò la versione ppa per includere Mate.

Lo script

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

Come usare

  1. Copia lo script in un file vuoto
  2. Salva come wallswitcher.py
  3. Test - eseguilo con il comando:

    python3 /path/to/wallswitcher.py
    
  4. Quindi avvia semplicemente la configurazione dei tuoi sfondi come dimostrato qui .
  5. Se tutto funziona correttamente, aggiungilo alle applicazioni di avvio:

    /bin/bash -c "sleep 10 && /path/to/wallswitcher.py
    
risposta data Jacob Vlijm 12.08.2017 - 21:59
1

La soluzione proposta da Jacob Vlijm funziona perfettamente con il mio Mate, a condizione di modificare org.gnome.desktop.background picture-uri in org.mate.background picture-filename nello script (informazioni trovate qui ).

    
risposta data infisxc 01.06.2018 - 11:54

Leggi altre domande sui tag