มีวิธีตรวจจับเวิร์กสเปซใดที่คุณอยู่ในปัจจุบันจากบรรทัดคำสั่งหรือไม่


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 ถูกปิดการใช้งาน


ขอบคุณ ฉันต้องลบ "- แทนที่" จากการทดสอบ compiz_running และดูเหมือนว่าจะได้รับค่าที่ผิดสำหรับ vsize (1 vs 2) เมื่อใช้งานบน Precise 12.04 แม้ว่าตัวเลือกทั่วไป ccsm กล่าวว่าขนาดเดสก์ทอป / แนวตั้งเสมือนของฉันเป็นขนาด 2.
nealmcb

3

โดยไม่ต้องติดตั้งอะไรเลยและหากคุณใช้ metacity คุณสามารถใช้สิ่งนี้:

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

ดูเหมือนว่าด้วย Unity คำตอบที่ยอมรับ

 xdotool get_desktop_viewport

ไม่ทำงาน - ส่งคืน 0 เสมอฉันเดาว่าหน้าจอได้รับการกำหนดค่าเป็นวิวพอร์ตที่ใหญ่มากซึ่งมองเห็นเพียงบางส่วนเท่านั้น ทางเลือกค่อนข้างยุ่งยากเนื่องจากคุณต้องทราบขนาดของพื้นที่ทำงานของคุณ เช่น:

 xdotool get_desktop_viewport

จะส่งคืนบางสิ่งเช่น "1600 0" หากคุณอยู่ในพื้นที่ทำงานด้านบนขวา หมายเลขแรกน่าจะเป็นความกว้างของจอแสดงผลที่ใหญ่ที่สุดที่คุณมี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.