जवाबों:
यदि आप Compiz का उपयोग नहीं कर रहे हैं, तो आप xdotool का उपयोग कर सकते हैं ।
उदाहरण:
xdotool get_desktop
यह 0
पहले कार्यक्षेत्र से चलाए जाने पर लौटेगा , 1
यदि दूसरे से चलाया जाएगा आदि।
यदि आप कंपीज़ का उपयोग कर रहे हैं , तो यह थोड़ा और मुश्किल होगा।
संपादित करें: यह अब compiz के साथ और बिना दोनों काम करता है, आखिरकार ...
मैंने इसे करने के लिए "लिटिल" पायथन लिपि लिखी:
#!/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()
इसे कहीं सहेजें और इसे निष्पादन योग्य के रूप में चिह्नित करें। यह केवल एक संख्या 0
और कार्यक्षेत्रों की संख्या के बीच आउटपुट देगा ।
इस तरह से गणना की तरह दिखता है:
+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+
आप इस मामले में काम करने के लिए xdotool स्थापित करने के लिए मिल गया है जब तक कि कम्पिज़ अक्षम न हो जाए।
कुछ भी स्थापित किए बिना और यदि आप मेटासिटी का उपयोग कर रहे हैं, तो आप इसका उपयोग कर सकते हैं:
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
ऐसा लगता है कि एकता के साथ, स्वीकृत जवाब
xdotool get_desktop_viewport
काम नहीं करता है - यह हमेशा 0. रिटर्न करता है। मुझे लगता है कि स्क्रीन को वास्तव में बड़े व्यूपोर्ट के रूप में कॉन्फ़िगर किया गया है, जिसमें केवल भाग दिखाई देता है। विकल्प थोड़ा मुश्किल है क्योंकि आपको अपने कार्यक्षेत्र का आकार जानना है। अर्थात:
xdotool get_desktop_viewport
यदि आप ऊपरी दाहिने कार्यक्षेत्र में हैं तो "1600 0" जैसा कुछ वापस करेंगे। पहली संख्या संभवतः आपके पास सबसे बड़े प्रदर्शन की चौड़ाई है।