มีวิธีใดบ้างสำหรับสคริปต์ทุบตีในการค้นหาชื่อของพื้นที่ทำงานปัจจุบัน (เดสก์ท็อปเสมือน)?
ดูเหมือนว่าจะมีประโยชน์สำหรับสิ่งต่าง ๆ เช่นการปรับแต่งพฤติกรรมในไฟล์. bashrc ของฉันตามเดสก์ท็อปที่เชลล์สร้างขึ้น
wmctrl -d | grep '*' | sed 's/.* //g'
มีวิธีใดบ้างสำหรับสคริปต์ทุบตีในการค้นหาชื่อของพื้นที่ทำงานปัจจุบัน (เดสก์ท็อปเสมือน)?
ดูเหมือนว่าจะมีประโยชน์สำหรับสิ่งต่าง ๆ เช่นการปรับแต่งพฤติกรรมในไฟล์. bashrc ของฉันตามเดสก์ท็อปที่เชลล์สร้างขึ้น
wmctrl -d | grep '*' | sed 's/.* //g'
คำตอบ:
คุณสามารถทำได้ด้วยwmctrl -d
เพื่อแสดงรายการพื้นที่ทำงานทั้งหมด *
หมายถึงพื้นที่ทำงานปัจจุบัน:
~$ wmctrl -d
0 * DG: 3840x1080 VP: 0,0 WA: 0,25 3840x1055 1
1 - DG: 3840x1080 VP: N/A WA: 0,25 3840x1055 2
2 - DG: 3840x1080 VP: N/A WA: 0,25 3840x1055 3
3 - DG: 3840x1080 VP: N/A WA: 0,25 3840x1055 4
ดังนั้นเพื่อให้ได้กระแสเท่านั้น grep สำหรับ*
:
~$ wmctrl -d | grep -w '*'
0 * DG: 3840x1080 VP: 0,0 WA: 0,25 3840x1055 1
หวังว่านี่จะช่วยได้!
wmctrl -d
wmctrl -d
แต่แล้วพวกเขาก็จะเรียกว่าวิวพอร์ตและไม่เอากลับคืนโดยตรงจาก
หากคุณกำลังใช้Unityวิวพอร์ตปัจจุบันจะไม่สามารถเรียกคืนได้โดยตรงจาก
wmctrl -d
wmctrl -d
ตั้งแต่ความสามัคคีมีวิวพอร์ตที่ไม่ได้ตรวจพบโดยตรง ผลลัพธ์จะแสดงพื้นที่ทำงานเดียวเท่านั้น:
0 * DG: 5040x2100 VP: 1680,1050 WA: 59,24 1621x1026 N/A
xrandr
)5040x2100
คือ นั่นคือวิวเวอร์ 3x2: 5040/1680 = 3 และ 2100/1050 = 21680,1050
( viewport-) ตำแหน่ง (x, y)สคริปต์ด้านล่างคำนวณวิวพอร์ตปัจจุบันจากข้อมูลนี้:
#!/usr/bin/env python3
import subprocess
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current():
# get the resolution (viewport size)
res = get_res()
# read wmctrl -d
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
# get the size of the spanning workspace (all viewports)
dt = [int(n) for n in vp_data[3].split("x")]
# calculate the number of columns
cols = int(dt[0]/res[0])
# calculate the number of rows
rows = int(dt[1]/res[1])
# get the current position in the spanning workspace
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
# current column (readable format)
curr_col = int(curr_vpdata[0]/res[0])
# current row (readable format)
curr_row = int(curr_vpdata[1]/res[1])
# calculate the current viewport
return curr_col+curr_row*cols+1
print(current())
ติดตั้ง wmctrl
sudo apt install wmctrl
เรียกใช้โดยคำสั่ง
python3 /path/to/get_viewport.py
มันจะออก 1, 2, 3 หรืออะไรก็ตามที่วิวพอร์ตปัจจุบันคือ โดยจะนับจำนวนแถว / คอลัมน์ที่การกำหนดค่าวิวพอร์ตของคุณโดยอัตโนมัติ
สคริปต์
xrandr
รวมถึงจอภาพพิเศษที่เป็นไปได้อย่างน้อยใน Gnome shell แต่อาจเป็นใน WM อื่น ๆ ด้วยคุณสามารถถาม Xserver ได้โดยตรง (ถ้าอยู่ใน Wayland ไม่มีความคิด)
[romano:~/tmp] % desktop=$(xprop -root -notype _NET_CURRENT_DESKTOP | perl -pe 's/.*?= (\d+)/$1/')
[romano:~/tmp] % echo $desktop
1
โดยทั่วไปคำสั่งxprop
จะกลับมา
[romano:~/tmp] % xprop -root -notype _NET_CURRENT_DESKTOP
_NET_CURRENT_DESKTOP = 1
จากนั้นคุณสามารถนวดข้อมูลเล็กน้อยเพื่อให้ได้สิ่งที่คุณต้องการ
_NET_DESKTOP_NAMES
เพื่อให้ได้ชื่อที่คุณต้องมองถึงตัวเลขในทรัพย์สิน