Je sais que l'on a déjà répondu à cette question, mais cette solution ne fonctionne pas sous Ubuntu MATE. Quoi qu'il en soit pour y parvenir sur MATE?
Sortie de 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
Sortie de $ echo $DESKTOP_SESSION
:
$ echo $DESKTOP_SESSION
mate
Solution originale que j'ai essayée et qui n'a pas fonctionné pour moi:
Est-il possible d'avoir un arrière-plan différent pour chaque espace de travail?
Bien que je ne puisse pas le tester, étant donné que je n'ai pas Mate disponible dans Mate, je regarde le résultat de wmctrl -d
, et compte tenu du fait que les fonds d'écran sur Mate sont évidemment réglés avec le même gsettings
commande, je ne vois aucune raison pour que cela ne fonctionne pas.
Le script ci-dessous est une version éditée de celui-ci , et un extrait de celui-ci j'ai poussé vers Launchpad . En l'état, celui-ci ne fonctionnera pas pour Mate, car j'ai ajouté une vérification de session dans celui-ci, pour Unity ou Budgie.
Si vous pouvez confirmer que le script ci-dessous fonctionne sur Mate, je modifierai probablement la version de ppa pour inclure 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)
wallswitcher.py
Testez-le avec la commande:
python3 /path/to/wallswitcher.py
Si tout fonctionne bien, ajoutez-le aux applications de démarrage:
/bin/bash -c "sleep 10 && /path/to/wallswitcher.py
La solution proposée par Jacob Vlijm fonctionne bien sur mon compagnon, à condition que je modifie org.gnome.desktop.background picture-uri
en org.mate.background picture-filename
dans le script (informations trouvées ici ).