ตำแหน่งที่พื้นที่ทำงานส่วนกลางในการเข้าสู่ระบบ


12

ฉันได้ตั้งค่าตัวสลับพื้นที่ทำงาน 3x3 และฉันต้องการให้ตำแหน่งของฉันอยู่ตรงกลางโดยค่าเริ่มต้น เป็นไปได้ไหม?

คำตอบ:


7

wmctrlขอขอบคุณที่มาร์โกผมได้คิดหาวิธีใช้

เนื่องจากพื้นที่ทำงาน Compiz เป็นวิวพอร์ตจริงของเดสก์ท็อปเดียวดังนั้นโซลูชันคือการย้ายวิวพอร์ตปัจจุบันให้ครอบคลุมพื้นที่กึ่งกลางของเดสก์ท็อป

ก่อนอื่นให้โทรwmctrl -dเพื่อรับข้อมูลเดสก์ท็อปปัจจุบัน:

read desktop_id _ast \
    DG_ geometry \
    VP_ viewport \
    WA_ wa_off wa_size \
    title \
    < <(LANG=C wmctrl -d | grep '*')

geom_w=${geometry%x*}
geom_h=${geometry#*x}

# The workarea size isn't accurate, because the top/bottom panel is excluded. 
viewport_w=${wa_size%x*}
viewport_h=${wa_size#*x}

rows=$((geom_w / viewport_w))
cols=$((geom_h / viewport_h))

# Fix the viewport size
viewport_w=$((geom_w / rows))
viewport_h=$((geom_h / cols))

จากนั้นคำนวณต้นกำเนิดของวิวพอร์ตส่วนกลาง:

center_row=$((rows / 2))
center_col=$((cols / 2))

center_x=$((center_col * viewport_w))
center_y=$((center_row * viewport_h))

center_viewport=$center_x,$center_y

และย้ายวิวพอร์ตไปที่นั่น:

wmctrl -o $center_viewport

6

ใช่: ติดตั้งwmctrl

sudo apt-get install wmctrl

และสร้างไฟล์~/.config/autostart/wmctrl.desktopด้วยดังต่อไปนี้:

[Desktop Entry]
Name=Desktop Switcher
Exec=/usr/bin/wmctrl -s 4
Type=Application

1
คอมแพคมีเดสก์ท็อปเดียวเท่านั้น แต่wmctrlสามารถสลับวิวพอร์ตภายในเดสก์ท็อปได้ ดูคำตอบของฉันด้านล่าง
XièJìléi

2
  1. ก่อนอื่นดาวน์โหลดสคริปต์ข้อความแสดงแทนตัวช่วยนี้เพื่อควบคุม compiz จากบรรทัดคำสั่ง บันทึกไว้compiz-send.pyในโฟลเดอร์บ้านของคุณ
  2. รันคำสั่งpython compiz-send.py vpswitch switch_to_5_keyเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้อง ควรสลับคุณไปที่เวิร์กสเปซกลาง
  3. หากใช้งานได้ให้สร้างไฟล์ที่เรียกว่า.switch_to_center_workspace.shในโฟลเดอร์บ้านของคุณและวางไฟล์ต่อไปนี้ไว้ภายใน:

    #!/bin/bash
    sleep 5 && python /home/user/compiz-send.py vpswitch switch_to_5_key
    

    แทนที่userด้วยชื่อผู้ใช้ของคุณ

  4. เปิดการใช้งานเริ่มต้นระบบ -> Preferences -> การประยุกต์ใช้งานเริ่มต้น

  5. คลิกเพิ่มและในคำสั่ง:/home/user/.switch_to_center_workspace.shใส่รายการ ใส่สิ่งที่คุณต้องการในชื่อ:และหมายเหตุ:รายการ

  6. ออกจากระบบและเข้าสู่ระบบอีกครั้งและตรวจสอบว่ามันใช้งานได้


น่าเสียดายที่สคริปต์ใช้งานไม่ได้dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "activate" with signature "si" on interface "org.freedesktop.compiz" doesn't exist
XièJìléi

@ 谢继雷เปลี่ยนsleep 5ส่วนของสคริปต์เป็นจำนวนที่สูงกว่าsleep 10เพื่อให้แน่ใจว่า compiz กำลังทำงานอยู่เมื่อสคริปต์ทำงาน คุณกำลังใช้งาน compiz ใช่ไหม
อิสยาห์

ฉันพยายามเรียกใช้สคริปต์ใน gnome-terminal และรับข้อยกเว้น ฉันใช้คอมพิซ 0.8.6
XièJìléi

ในสคริปต์มีการกล่าวถึงวิธีการเซ็นชื่อ "si" ไม่มีอยู่ดังนั้นฉันจึงเดาว่าอาร์กิวเมนต์ (สตริง, int) ที่ส่งไปยัง activate () อาจไม่ถูกต้อง ..
XièJìléi

2

ฉันจะถามคำถามที่คล้ายกัน แต่สำหรับพื้นที่ทำงานแนวนอน 3 แห่งและฉันก็กำลังเรียกใช้ compiz และwmctrl -dเอาต์พุต (ต่อเวิร์กสเปซ) มีลักษณะดังนี้:

  • ที่พื้นที่ทำงาน 1: 0 * DG: 4098x768 VP: 0,0 WA: 0,24 1366x744 Workspace 1
  • ที่พื้นที่ทำงาน 2: 0 * DG: 4098x768 VP: 1366,0 WA: 0,24 1366x744 Workspace 1
  • ที่พื้นที่ทำงาน 3: 0 * DG: 4098x768 VP: 2732,0 WA: 0,24 1366x744 Workspace 1

กว่าที่ฉันใช้wmctrl -o 1366,0( ค่าVP ) เพื่อทำให้ศูนย์เป็นพื้นที่ทำงานเริ่มต้นของฉันเมื่อเริ่มต้น อาจไม่ทำงานสำหรับทุกคน แต่ในกรณี;)


คำสั่งที่ฉันใช้ใน "ระบบ -> การตั้งค่า -> แอปพลิเคชันเริ่มต้น":sh -c "sleep 2;/usr/bin/wmctrl -o 1366,0
wik

... คุณอาจต้องปรับค่าการนอนหลับเช่นลอง 10, 15 เป็นต้น
wik

ขอบคุณสำหรับบันทึกนี้ - ขอโทษฉันไม่ได้อ่านมันก่อนที่จะอ่านคำตอบของคุณ :)
sdaau

0

เพิ่งทราบสั้น ๆ - ฉันใช้ Natty และด้วยคำตอบของ @ 谢继雷ฉันสังเกตเห็นว่ามีการรายงานต่อไปนี้โดยการย้ายเทอร์มินัลในแต่ละพื้นที่ทำงานใน Unity:

$ wmctrl -d
# top left
0  * DG: 2048x1200  VP: 0,0  WA: 0,24 1024x576  Workspace 1
# bottom left
0  * DG: 2048x1200  VP: 0,600  WA: 0,24 1024x576  Workspace 1
# top right
0  * DG: 2048x1200  VP: 1024,0  WA: 0,24 1024x576  Workspace 1
# bottom right 
0  * DG: 2048x1200  VP: 1024,600  WA: 0,24 1024x576  Workspace 1

... นั่นคือพวกเขาไม่ได้แยกเดสก์ท็อปหรือพื้นที่ทำงาน - แค่เปลี่ยนวิวพอร์ต!

ดังนั้นหากต้องการเปลี่ยนระหว่างวิวพอร์ตทั้งสี่เพียงแค่เรียกwmctrl -oคำสั่งโดยตรงด้วยVPค่าที่ระบุไว้ด้านบนเช่น:

wmctrl -o 0,0
wmctrl -o 0,600
wmctrl -o 1024,0
wmctrl -o 1024,600

แก้ไข: อัพขออภัยเพิ่งเห็นว่านี่เป็นเช่นเดียวกับคำตอบของ @ wik - รวม / ลบตามความเหมาะสม ..

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