ฉันชอบ Alt + ซ้าย/ขวา เพื่อเปลี่ยนแท็บขณะอยู่ในเบราว์เซอร์ แต่เพื่อทำสิ่งที่ทำตามปกติในโปรแกรมอื่นๆเบราว์เซอร์ส่วนใหญ่ไม่อนุญาตให้คุณมีการเชื่อมโยงคีย์แบบกำหนดเอง (พวกเขามักจะใช้ Ctrl + PgUp/PgDn ซึ่งบนแป้นพิมพ์ของฉันคือ Ctrl + Fn + ขึ้น/ลง) ดังนั้นฉันจึงติดอยู่กับวิธีแก้ปัญหาระดับระบบปฏิบัติการ: ผูก Alt + ซ้าย/ สิทธิ์ในการกด Ctrl + PgUp/PgDn หากหน้าต่างปัจจุบันเป็นเบราว์เซอร์และเป็นตัวของตัวเอง ใน X11 ฉันทำสิ่งนี้สำเร็จด้วย AutoKey แต่ฉันต้องการโซลูชันที่ใช้งานได้ใน Wayland ที่นี่ที่ฉันอยู่ คีย์แมป ไม่อนุญาตให้ใช้คำสั่งทุบตี ฮอว์ค อาจใช้งานได้ (ฉันยังไม่ได้ลอง) กม ไม่ยืดหยุ่นเพียงพอกับสคริปต์ Bash พิมพ์ และ ydotool ไม่ได้ผลสำหรับฉัน แต่ evemu-event ทำ (ฉันพบแล้ว ที่นี่) ฉันสามารถรับชื่อหน้าต่างปัจจุบันโดยใช้
โทร gdbus \
--การประชุม \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--เมธอด org.gnome.Shell.Eval "
ทั่วโลก
.get_window_actors()
.map(a=>a.meta_window)
.find(w=>w.has_focus())
.get_wm_class()" \
| ตัด -d'"' -f 2
ที่ฉันค้นพบจาก ที่นี่. นั่นหมายความว่าฉันสามารถสร้างสคริปต์นี้ได้
#!/bin/bash
# setid --fork คำพังเพย-terminal
# ตรวจสอบว่าหน้าต่างปัจจุบันเป็น Google Chrome หรือไม่ (สามารถปรับใช้กับ Firefox ได้)
# และถ้าเป็นเช่นนั้นให้ส่งปุ่ม Ctrl + PgUp (เลื่อนแท็บโฟกัสไปทางซ้ายหนึ่งแท็บ)
# ตั้งใจให้เรียกโดยการจัดการคีย์ (เช่น KMonad) เมื่อกด Alt + Left
# นี่คือวิธีที่ฉันจำลองการกดปุ่ม
# นำมาจากที่นี่: https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland
# ต้องการ sudo apt install evemu-tools
ฟังก์ชัน type_key () {
EVDEVICE=/dev/input/event4
#กดแป้นลงไปตามลำดับ
สำหรับใส่ $@; ทำ
evemu-event $EVDEVICE --type EV_KEY --code KEY_$key --value 1 --sync
เสร็จแล้ว
#ยกกุญแจขึ้นตามลำดับ
สำหรับ (( idx=${#@}; idx>0; idx-- )); ทำ
evemu-event $EVDEVICE --type EV_KEY --code KEY_${!idx} --value 0 --sync
เสร็จแล้ว
}
# ดูที่ https://github.com/sezanzeb/key-mapper ด้วย มันไม่สามารถทำคำสั่งทุบตีได้ แต่อย่างอื่น
#ดูดีสำหรับสิ่งนี้
# ฉันรู้ว่าไม่มีทางได้รับชื่อหน้าต่างใน Wayland โดยทั่วไป ฉันทำได้ถ้าเราอยู่ใน Gnome
# นำมาจากที่นี่: https://unix.stackexchange.com/questions/399753/how-to-get-a-list-of-active-windows-when-using-wayland
WINDOW_CLASS=$(gdbus โทร \
--การประชุม \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--เมธอด org.gnome.Shell.Eval "
ทั่วโลก
.get_window_actors()
.map(a=>a.meta_window)
.find(w=>w.has_focus())
.get_wm_class()" \
| ตัด -d'"' -f 2)
# ใช้ "Google-chrome" สำหรับ Chrome และ "firefox" สำหรับ Firefox
ถ้า [[ "$WINDOW_CLASS" = "gnome-terminal-server" ]] || [[ "$WINDOW_CLASS" = "Google-chrome" ]] || [[ "$WINDOW_CLASS" = "ไฟร์ฟอกซ์" ]]
แล้ว
type_key ขวาCTRL PAGEUP
อื่น
type_key ขวา ซ้าย
ไฟ
# ตรวจสอบตัวจัดการเว็บแอป
# https://ubuntuhandbook.org/index.php/2021/01/install-linux-mints-web-app-manager-ubuntu-20-04/
และใช้การตั้งค่า Gnome -> ทางลัดแป้นพิมพ์ -> ทางลัดที่กำหนดเอง -> + เพื่อผูก Alt + ทางซ้ายกับสคริปต์ด้านบน (ต้องให้สคริปต์เป็น "sudo pass" เมื่อเสร็จแล้ว ที่นี่). อย่างไรก็ตาม แม้ว่าสคริปต์จะสลับแท็บเมื่อเรียกใช้งานจาก Gnome Terminal แต่จะไม่สลับแท็บใน Google Chrome (บางทีนี่อาจเป็นปัญหาของอีมูมูอีเวนต์ บางทีทางเลือกนี้อาจใช้ได้ผล คำอธิบาย?) และจะไม่สลับแท็บเมื่อเรียกโดยใช้ Gnome ตั้งค่าการผูกปุ่มทั่วโลก Alt + Left
มีความคิดเห็นเกี่ยวกับวิธีการทำงานนี้หรือไม่ ฉันต้องการที่จะไม่ต้องติดตั้งโปรแกรมอื่นเช่น KMonad เพื่อให้การเชื่อมโยงทั่วโลกทำงานได้ แต่ขอทานไม่สามารถเป็นผู้เลือกได้ วิธีที่ดีที่สุดคือวิธีส่งการกดแป้นพิมพ์จาก GJS เพื่อให้สามารถทำได้จากสคริปต์ GJS ที่สะอาดทั้งหมด
รุ่นของ Gnome: GNOME Shell 3.38.4
ฉันใช้ Material Shell ในกรณีที่เกี่ยวข้อง