Antworten:
Wenn Sie Compiz nicht verwenden, können Sie xdotool verwenden .
Beispiel:
xdotool get_desktop
Dies wird zurückgegeben, 0
wenn es vom ersten Arbeitsbereich ausgeführt wird, 1
wenn es vom zweiten ausgeführt wird usw.
Wenn Sie sind Compiz verwendet, wird dies ein wenig schwieriger.
edit: das funktioniert jetzt sowohl mit als auch ohne compiz, endlich ...
Ich habe dazu ein "kleines" Python-Skript geschrieben:
#!/usr/bin/python
from subprocess import Popen, PIPE
getoutput = lambda x: Popen(x, stdout=PIPE).communicate()[0]
compiz_running = list(i for i in getoutput(("ps", "-aef", )).split("\n")
if "compiz --replace" in i and not "grep" in i) != []
if compiz_running:
# get the position of the current workspace
ws = list(int(i.strip(",")) for i in getoutput(("xprop", "-root",
"-notype", "_NET_DESKTOP_VIEWPORT", )).split()[-2:])
# get the number of horizontal and vertical workspaces
hsize = int(getoutput(("gconftool",
"--get", "/apps/compiz/general/screen0/options/hsize", )))
vsize = int(getoutput(("gconftool",
"--get", "/apps/compiz/general/screen0/options/vsize", )))
# get the dimentions of a single workspace
x, y = list(int(i) for i in getoutput(("xwininfo", "-root",
"-stats", )).split("geometry ")[1].split("+")[0].split("x"))
# enumerate workspaces
workspaces, n = [], 0
for j in range(vsize):
for i in range(hsize):
workspaces.append([n, [x*i, y*j, ], ])
n += 1
print list(i for i in workspaces if i[1] == ws)[0][0]
# if compiz is not running
else: # this code via @DoR
print getoutput(("xdotool", "get_desktop", )).strip()
Speichern Sie dies irgendwo und markieren Sie es als ausführbar. Dies gibt nur eine Zahl zwischen 0
und die Anzahl der Arbeitsbereiche aus.
So sieht die Aufzählung aus:
+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+
Sie müssen xdotool installieren, damit dies funktioniert, falls compiz deaktiviert ist.
Ohne etwas zu installieren und wenn Sie Metacity verwenden, können Sie Folgendes verwenden:
python -c "import wnck; s=wnck.screen_get_default(); s.force_update(); w=s.get_active_workspace(); w_num=w.get_number(); print(w_num);" 2>/dev/null
Es scheint, dass mit Unity die akzeptierte Antwort
xdotool get_desktop_viewport
funktioniert nicht - es wird immer 0 zurückgegeben. Ich denke, der Bildschirm ist als ein wirklich großes Ansichtsfenster konfiguriert, von dem nur ein Teil sichtbar ist. Die Alternative ist etwas schwierig, da Sie die Größe Ihres Arbeitsbereichs kennen müssen. Dh:
xdotool get_desktop_viewport
gibt so etwas wie "1600 0" zurück, wenn Sie sich im oberen rechten Arbeitsbereich befinden. Die erste Zahl ist wahrscheinlich die Breite der größten Anzeige, die Sie haben.