Gibt es eine Möglichkeit, über die Befehlszeile zu erkennen, in welchem ​​Arbeitsbereich Sie sich gerade befinden?


12

Ich versuche herauszufinden, wie die Arbeitsbereichsnummer aus einem Terminalskript in gnome abgerufen werden kann. Irgendwelche Ideen?

Antworten:


13

Wenn Sie Compiz nicht verwenden, können Sie xdotool verwenden Installieren Sie xdotool .

Beispiel:

xdotool get_desktop

Dies wird zurückgegeben, 0wenn es vom ersten Arbeitsbereich ausgeführt wird, 1wenn es vom zweiten ausgeführt wird usw.


7

Ein alter und beantworteter Thread, aber ich war kurz nach der gleichen Info. Sie können dies mit Standard-xorg-Tools tun mit:

xprop -root -notype _NET_CURRENT_DESKTOP

6

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 0und die Anzahl der Arbeitsbereiche aus.

So sieht die Aufzählung aus:

+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+

Sie müssen xdotool installieren, damitInstallieren Sie xdotool dies funktioniert, falls compiz deaktiviert ist.


Vielen Dank. Ich musste "--replace" aus dem compiz_running-Test entfernen und schien auch den falschen Wert für vsize (1 vs 2) zu erhalten, wenn ich dies auf Precise 12.04 ausführte, obwohl ccsm General Options angab, dass meine Desktop-Größe / vertikale virtuelle Größe ist 2.
Nealmcb

3

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

0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.