Có thể đặt tên của máy tính để bàn ảo hiện tại thông qua dòng lệnh?


2

Tiện ích wmctrlnày có khả năng liệt kê tên của tất cả các máy tính để bàn ảo:

%  wmctrl -d
0  - DG: 3360x1200  VP: 0,0  WA: 0,0 3360x1199  Mail / Comm
1  * DG: 3360x1200  VP: 0,0  WA: 0,0 3360x1199  Web / Docs
2  - DG: 3360x1200  VP: 0,0  WA: 0,0 3360x1199  A
3  - DG: 3360x1200  VP: 0,0  WA: 0,0 3360x1199  B

Tôi muốn có thể thay đổi, từ dòng lệnh, tên của máy tính để bàn hiện tại sang một cái gì đó khác. Điều này có thể bằng cách sử dụng một số máy nhắn tin, ví dụ, nhưng tôi không thể tìm ra cách thực hiện nó từ dòng lệnh.

Cập nhật: xproptiện ích dường như có thể đặt tên máy tính để bàn, nhưng tôi chưa thể tìm ra định dạng chính xác để làm như vậy:

% xprop -root -f _NET_DESKTOP_NAMES 8s -set _NET_DESKTOP_NAMES asdf
% xprop -root _NET_DESKTOP_NAMES
_NET_DESKTOP_NAMES(UTF8_STRING) = "asdf", "Web / Docs", "A"

Câu trả lời:


2

Tôi đã hack một kịch bản python nhỏ làm điều này, sau khi không tìm thấy bất cứ điều gì khác. Nó yêu cầu xpybutil như một phần phụ thuộc, được thử nghiệm trên Arch Linux hiện tại (2014-03-27).

#!/usr/bin/python2

"Helper for setting current desktop's name"

import sys

from xpybutil import conn, root

import xpybutil.ewmh as ewmh

if len(sys.argv) == 2 and sys.argv[1] == '--help':
    print "Usage: "
    print "   set_desktop_name NAME_OF_NEW_DESKTOP  - sets current desktop name"
    print "   set_desktop_name NR NAME_OF_NEW_DESKTOP - sets name of NRth desktop"

if len(sys.argv) > 2:
    desktop_offset = int(sys.argv[1])
    new_name = sys.argv[2]

else:
    desktop_offset = ewmh.get_current_desktop().reply()
    new_name = sys.argv[1]

current_names = ewmh.get_desktop_names().reply()

current_names[desktop_offset] = new_name

# Not sure why I have to do it twice - somehow
# doesn't work if I only call it once
c = ewmh.set_desktop_names(current_names)
c = ewmh.set_desktop_names(current_names)

Cách sử dụng khá đơn giản:

dv@ankh-morpork ~ % wmctrl -d
0  * DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  MAIL
1  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Project A
2  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Project B
3  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Random Stuff
4  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Music
dv@ankh-morpork ~ % set_desktop_name 3 "Yet another project"
dv@ankh-morpork ~ % wmctrl -d
0  * DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  MAIL
1  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Project A
2  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Project B
3  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Yet another project
4  - DG: 3840x1200  VP: 0,0  WA: 0,24 3840x1176  Music

1

Không có tùy chọn trong wmctrl để làm những gì bạn yêu cầu. Máy tính để bàn ảo không phải là cửa sổ và không thể quản lý wmctrl của tôi. Tùy thuộc vào cách trình quản lý cửa sổ của bạn lưu trữ các giá trị đó, việc sử dụng sedđể đặt các tên đó có thể là chuyện nhỏ . Với Fluxbox, tất cả những gì cần thay đổi là dòng sau (~ / .fluxbox / init):

session.screen0.workspaceNames: internoit,terms,admin,gui,eclipse,droid-ui

Chỉ ra cách WM của bạn đặt tên và thay đổi / đặt giá trị theo cách thủ công.

cập nhật:

Mở hộp

Như đã cáo buộc trước đây, điều này có thể được thực hiện theo hai bước:

  1. chỉnh sửa các giá trị trong cấu hình
  2. buộc OpenBox phải "cấu hình lại"
$ xml ed -N o = "http://openbox.org/3.4/rc" \
    -u '// o: openbox_config / o: máy tính để bàn / o: tên / o: name [1]' \
    -v moo RC.xml

Điều này đặt tên của không gian làm việc đầu tiên thành "moo". tmp / ob.xml đại diện cho ~ RC.xml

$ openbox --reconfigure

Nguyên nhân khiến WM đọc lại các tập tin cấu hình của nó.


Tái bút Tôi thực sự đã không thử điều này, bởi vì xmlstarletlệnh đó hoạt động đủ thú vị và vì tôi tin tưởng trang man openbox.


Tôi đang sử dụng OpenBox, nơi bạn có thể đặt nó trong tệp RC.xml. Đây không phải là điều tôi muốn tuy nhiên - tôi muốn thay đổi nó trong thời gian chạy.
Dave Vogt

thay đổi nó trong thời gian chạy và gọi "cấu hình lại". fluxbox hỗ trợ điều này thông qua fluxbox-remote, idk về openbox.
Ярослав Рахматуллин
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.