Có cách nào để phát hiện không gian làm việc mà bạn hiện đang ở trong dòng lệnh không?


12

Tôi đang cố gắng tìm ra cách lấy số không gian làm việc từ tập lệnh đầu cuối trong gnome. Có ý kiến ​​gì không?

Câu trả lời:


13

Nếu bạn không sử dụng Compiz, bạn có thể sử dụng xdotool Cài đặt xdotool .

Thí dụ:

xdotool get_desktop

Điều này sẽ trở lại 0nếu chạy từ không gian làm việc đầu tiên, 1nếu chạy từ thứ hai, v.v.


7

Một chủ đề cũ và được trả lời, nhưng tôi chỉ sau cùng một thông tin. Bạn có thể làm điều này với các công cụ xorg tiêu chuẩn với:

xprop -root -notype _NET_CURRENT_DESKTOP

6

Nếu bạn đang sử dụng compiz, điều này sẽ khó khăn hơn một chút.

chỉnh sửa: điều này bây giờ hoạt động cả có và không có compiz, cuối cùng ...

Tôi đã viết một kịch bản python "nhỏ" để làm điều đó:

#!/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() 

Lưu cái này ở đâu đó và đánh dấu nó là thực thi. Điều này sẽ chỉ xuất ra một số giữa 0và số lượng không gian làm việc.

Đây là cách liệt kê như thế nào:

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

Bạn đã phải cài đặt xdotool Cài đặt xdotool để nó hoạt động trong trường hợp compiz bị vô hiệu hóa.


Cảm ơn. Tôi đã phải xóa "--replace" khỏi bài kiểm tra compiz_rucky và dường như cũng nhận được giá trị sai cho vsize (1 so với 2) khi chạy phần này trên Chính xác 12.04, mặc dù ccsm Tùy chọn chung cho biết Kích thước màn hình / Kích thước ảo dọc của tôi là 2.
nealmcb

3

Không cần cài đặt bất cứ thứ gì và nếu bạn đang sử dụng độ sáng, bạn có thể sử dụng:

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

Dường như với Unity, câu trả lời được chấp nhận

 xdotool get_desktop_viewport

không hoạt động - nó luôn trả về 0. Tôi đoán màn hình được cấu hình như một khung nhìn thực sự lớn trong đó chỉ có một phần được hiển thị. Thay thế là một chút khó khăn vì bạn phải biết kích thước của không gian làm việc của bạn. I E:

 xdotool get_desktop_viewport

sẽ trả về một cái gì đó như "1600 0" nếu bạn ở không gian làm việc phía trên bên phải. Số đầu tiên có lẽ là chiều rộng của màn hình lớn nhất mà bạn có.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.