การผสมคีย์เพื่อสลับระหว่างหน้าต่างของแอปพลิเคชันในวิวพอร์ตทั้งหมด


11

Alt- `ใช้เพื่อสลับระหว่างหน้าต่างของแอปพลิเคชันในวิวพอร์ตปัจจุบันใน Unity

มีคีย์ผสมอื่นที่จะสลับระหว่างหน้าต่างของแอปพลิเคชั่นในวิวพอร์ตทั้งหมดหรือไม่

ฉันไม่ต้องการเปลี่ยนพฤติกรรมเริ่มต้นของAlt- `ซึ่งสลับไปมาระหว่างหน้าต่างของแอปพลิเคชันในวิวพอร์ตปัจจุบัน

ฉันใช้ Ubuntu 14.04 และ Unity


ตามมุมมองคุณหมายถึง Workspace หรือไม่
ทิม

คำตอบ:


7

ด้วยแรงบันดาลใจจากคำตอบของ Pineau ฉันพบเคล็ดลับสกปรกที่จะทำให้เสร็จ: เก็บAlt+ `สำหรับการสลับระหว่างหน้าต่างแอปพลิเคชันในวิวพอร์ตเดียวและ (ตัวอย่าง) Alt+ 1เพื่อสลับระหว่างหน้าต่างแอปพลิเคชันในวิวพอร์ตทั้งหมด

ข้อเสียเล็ก ๆ น้อย ๆ ของเครื่องสำอางก็คือการตอบสนองนั้นมีความแม่นยำน้อยกว่าเล็กน้อยเนื่องจากการตั้งค่าต้องการเสี้ยววินาทีในการเปลี่ยนแปลง อย่างไรก็ตามในทางปฏิบัติคุณแทบจะไม่สังเกตเห็น

  1. ติดตั้งxdotool:

    sudo apt-get install xdotool
    
  2. คัดลอกเอกสารต่อไปนี้ลงในไฟล์เปล่าแล้วบันทึกเป็น switch.sh

    #!/bin/bash
    
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
    sleep 0.2
    xdotool keydown alt key 0x60
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
    sleep 1
    
  3. System Preferences > Keyboard > Shortcuts > Custom Shortcutsตั้งค่าการรวมกันที่สำคัญในการเรียกใช้สคริปต์: ฉันเลือกAlt+ 1เนื่องจากใกล้กับอีกอันหนึ่ง

    ตอนนี้คุณสามารถใช้Alt+ 1เพื่อสลับระหว่างหน้าต่างทั้งหมดของ (ตัวอย่าง) gedit:

    ป้อนคำอธิบายรูปภาพที่นี่

    หรือAlt+ `เพื่อสลับระหว่างหน้าต่าง gedit ของพื้นที่ทำงานที่ถูกต้องเท่านั้น:

    ป้อนคำอธิบายรูปภาพที่นี่

บันทึก:

  1. ในบทที่สำคัญดังกล่าวข้างต้นเป็นชุดที่จะTab key 0x60สิ่งนี้อาจแตกต่างจาก lauyouts อื่น ๆ ในกรณีที่ใช้งานไม่ได้ให้รันในเทอร์มินัลxevแล้วกดจากนั้นกดReturnปุ่มบนแท็บ ในเอาต์พุตให้มองหาสตริงที่เหมือน(keysym 0x60, grave)กัน ค่า keysym คือค่าที่คุณต้องการในบรรทัด (script-):

    xdotool keydown alt key 0x60
    
  2. ค่าของsleep 0.2และsleep 1ทำให้สคริปต์ทำงานได้ดีบนระบบของฉัน แต่อาจมีการปรับให้เหมาะสมสำหรับระบบที่เร็วขึ้น (ลด)

ตัวเลือกเพิ่มเติม

ในทำนองเดียวกันคุณสามารถตั้งค่าการรวมกันที่สำคัญในการสลับระหว่างหน้าต่างโปรแกรมประยุกต์บนviewports ทุกสคริปต์ที่แล้วจะเป็น:

#!/bin/bash

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
sleep 0.2
xdotool keydown alt key 0xff09
dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
sleep 1

หากคุณตั้งค่าตัวอย่างAlt+ Qสำหรับสิ่งนี้คุณมีชุดตัวเลือกทั้งหมดที่ดี:

Alt+ ` สลับระหว่างหน้าต่างแอปพลิเคชันปัจจุบันบนวิวพอร์ตปัจจุบัน

Alt+ 1 สลับระหว่างหน้าต่างแอปพลิเคชันปัจจุบันในวิวพอร์ตทั้งหมด

Alt+ Tab สลับระหว่างหน้าต่างแอปพลิเคชันทั้งหมดในวิวพอร์ตปัจจุบัน

Alt+ Q สลับระหว่างหน้าต่างแอปพลิเคชันทั้งหมดในวิวพอร์ตทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่

Alt+ Tab: สลับระหว่างหน้าต่างแอปพลิเคชันทั้งหมดในวิวพอร์ตปัจจุบัน

ป้อนคำอธิบายรูปภาพที่นี่

Alt+ Q: สลับระหว่างหน้าต่างแอปพลิเคชันทั้งหมดในวิวพอร์ตทั้งหมด


5

โซลูชันทั่วไปที่ใช้ wmctrl


ภาพรวม

สคริปต์ต่อไปนี้ควรเข้ากันได้กับเครื่องมือจัดการหน้าต่างที่สอดคล้องกับEWMHทั้งหมด(เช่น xfwm4, openbox, kwin, compiz ... ) มันใช้wmctrlและxpropซึ่งสามารถติดตั้งกับ:

sudo apt-get install x11-utils wmctrl

การติดตั้ง

คัดลอกและบันทึกข้อความต่อไปนี้เป็นsimple-window-switcher:

#!/bin/bash

# based on a script by Robert Steiniger
# (http://lars.st0ne.at/blog/switch%20between%20windows%20within%20the%20same%20application)

Usage="
  Title:        simple-window-switcher 0.1
  Description:  switch between all windows of active application
  Author:       Copyright Glutanimate 2014 (https://github.com/Glutanimate)
  License:      GNU GPLv3
  Usage:        $(basename "$0") [-g|-l|-h]
                -g: global window switching (across all workspaces)
                -l: local window switching (current workspace)
                -h: display this help message

                If no argument is provided window switching will be set to global.
"

while getopts "lgh" OPTIONS; do
  case $OPTIONS in
    l ) Fields="3-4"
        ;;
    g ) Fields="4"
        ;;
    h ) echo "$Usage"
        exit 0
        ;;
   \? ) echo "$Usage"
        exit 1
        ;;
  esac
done

ActiveWinID="$(xprop -root | sed -n 's/_NET_ACTIVE_WINDOW(WINDOW): window id # 0x//p')"
# fields 3-4: <desktop number> <window class>
ActiveWinClass="$(wmctrl -xl | grep "$ActiveWinID" | cut -d" " -f${Fields})"
WindowList="$(wmctrl -xl | grep "$ActiveWinClass" | cut -d" " -f1)"
NextWindow="$(echo "$WindowList" | grep -A1 "$ActiveWinID" | sed -n 2p)"

if [[ -z "$NextWindow" ]]; then
  NextWindow="$(echo $WindowList | head -n 1)"
fi

wmctrl -i -a "$NextWindow"

ทำเครื่องหมายสคริปต์ว่าสามารถทำงานได้และบันทึกทุกที่ที่คุณต้องการ (โดยเฉพาะใน PATH ของคุณเช่น/usr/local/binหรือ~/bin)

การใช้

ใช้เมนูแป้นพิมพ์ลัดของตัวจัดการหน้าต่างเพื่อกำหนดsimple-window-switcherให้ปุ่มลัดที่คุณเลือก คุณสามารถใช้พารามิเตอร์ต่อไปนี้เพื่อควบคุมการทำงานของสคริปต์:

  • -g: การสลับหน้าต่างโกลบอล (ในเวิร์กสเปซทั้งหมด)
  • -l: การสลับหน้าต่างโลคัล (เวิร์กสเปซปัจจุบัน); อาจไม่ทำงานกับ Unity / Compiz (ดูที่ส่วนความคิดเห็นสำหรับข้อมูลเพิ่มเติม)

เรียน @Glutanimate หลังจากนั้น-lเปลี่ยนเป็นหน้าต่างบนพื้นที่ทำงานอื่น
Kadir

@Kadir นั่นแปลก มันไม่ได้อยู่ในระบบของฉัน หากคุณมีเวลาคุณยินดีที่จะโพสต์ผลลัพธ์wmctrl -xlไปยังเว็บไซต์เช่นpastebin.comและเชื่อมโยงที่นี่
Glutanimate

เรียน @Glutanimate นี่คือ: pastebin.com/iJBAZ5a7
Kadir

@Kadir ขอบคุณ! ดูเหมือนว่า Unity / Compiz จะไม่เปิดเผยข้อมูลพื้นที่ทำงานอย่างถูกต้องดังนั้น wmctrl จึงมีปัญหาในการหยิบมันขึ้นมา (นั่นเป็นสาเหตุที่คุณเห็นเลขศูนย์ในคอลัมน์ที่สองนั่นควรเป็นหมายเลขพื้นที่ทำงาน) ไม่ทราบว่าเป็นข้อผิดพลาดหรือได้รับการออกแบบอย่างนั้น ฉันไม่ได้สังเกตสิ่งนี้เพราะฉันใช้ LXDE ฉันจะเพิ่มบันทึกย่อให้กับคำตอบ
Glutanimate

4

เปิด Terminal และพิมพ์คำสั่งต่อไปนี้:

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false

หรือคุณสามารถติดตั้ง Unity Tweak Tool:

sudo apt-get install unity-tweak-tool
unity-tweak-tool

จากนั้นเปิดใช้งานตัวเลือกสลับระหว่างหน้าต่างในพื้นที่ทำงานทั้งหมดในแท็บสลับ:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันต้องการสงวนคุณสมบัติของ Alt-`ซึ่งสลับไปมาระหว่างหน้าต่างของแอปพลิเคชันในวิวพอร์ตปัจจุบัน ฉันต้องการทางลัดอื่นเช่น Ctrl-Alt-`ซึ่งจะสลับไปมาระหว่างหน้าต่างของแอปพลิเคชันในวิวพอร์ตทั้งหมด
Kadir

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