क्या यह पता लगाने का एक तरीका है कि आप वर्तमान में कमांड लाइन से किस कार्यक्षेत्र में हैं?


12

मैं यह पता लगाने की कोशिश कर रहा हूं कि गनोम में टर्मिनल स्क्रिप्ट से कार्यक्षेत्र संख्या कैसे प्राप्त करें। कोई विचार?

जवाबों:


13

यदि आप Compiz का उपयोग नहीं कर रहे हैं, तो आप xdotool का उपयोग कर सकते हैं Xdotool स्थापित करें

उदाहरण:

xdotool get_desktop

यह 0पहले कार्यक्षेत्र से चलाए जाने पर लौटेगा , 1यदि दूसरे से चलाया जाएगा आदि।


7

एक पुराना, और उत्तर दिया हुआ धागा, लेकिन मैं उसी जानकारी के बाद था। आप मानक xorg टूल के साथ ऐसा कर सकते हैं:

xprop -root -notype _NET_CURRENT_DESKTOP

6

यदि आप कंपीज़ का उपयोग कर रहे हैं , तो यह थोड़ा और मुश्किल होगा।

संपादित करें: यह अब 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 स्थापित करने के लिए मिल गया है जब तक कि कम्पिज़Xdotool स्थापित करें अक्षम न हो जाए।


धन्यवाद। मुझे compiz_running टेस्ट से "--replace" को हटाना पड़ा, और यह भी गलत लगने लगा कि vscize (1 बनाम 2) के लिए गलत है जब यह Precise 12.04 को चल रहा है, भले ही ccsm जनरल ऑप्शंस ने कहा कि मेरा डेस्कटॉप साइज - वर्टिकल वर्चुअल साइज है 2.
nealmcb

3

कुछ भी स्थापित किए बिना और यदि आप मेटासिटी का उपयोग कर रहे हैं, तो आप इसका उपयोग कर सकते हैं:

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

ऐसा लगता है कि एकता के साथ, स्वीकृत जवाब

 xdotool get_desktop_viewport

काम नहीं करता है - यह हमेशा 0. रिटर्न करता है। मुझे लगता है कि स्क्रीन को वास्तव में बड़े व्यूपोर्ट के रूप में कॉन्फ़िगर किया गया है, जिसमें केवल भाग दिखाई देता है। विकल्प थोड़ा मुश्किल है क्योंकि आपको अपने कार्यक्षेत्र का आकार जानना है। अर्थात:

 xdotool get_desktop_viewport

यदि आप ऊपरी दाहिने कार्यक्षेत्र में हैं तो "1600 0" जैसा कुछ वापस करेंगे। पहली संख्या संभवतः आपके पास सबसे बड़े प्रदर्शन की चौड़ाई है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.