แป้นพิมพ์ลัดเพื่อสลับการแสดงผล


12

ฉันมีจอแสดงผล 2 เครื่องบนพีซีของฉัน - IDE เปิดแบบเต็มหน้าจอในหน้าจอเดียวและ Firefox เปิดแบบเต็มหน้าจอในจอแสดงผลอื่น

เนื่องจากส่วนใหญ่ฉันใช้แป้นพิมพ์มันน่ารำคาญที่ต้องคว้าเมาส์เพื่อสลับโฟกัสไปยัง Firefox และกลับไปเป็น IDE ตลอดเวลา

มีทางลัดที่ฉันสามารถใช้เพื่อสลับโฟกัสไปที่ "หน้าต่างที่ใหญ่ที่สุด" บนจอแสดงผล 2 หรือไม่หากโฟกัสอยู่ที่ไหนสักแห่งในจอแสดงผล 1 และในทางกลับกัน?

คำตอบ:


11

วันนี้ฉันได้ upvote สำหรับคำถามนี้ดังนั้นฉันโพสต์วิธีการแก้ปัญหาของฉันฉันได้ตลอดเวลาที่ใช้มานานกว่าหนึ่งปีและมีความสุขมากกับ

ขั้นตอนที่ 1: สร้างสคริปต์ทุบตี (เช่นเขียน~/swap.shและทำให้ปฏิบัติ) เพื่อตั้งโฟกัสไปที่หน้าต่างที่อยู่ตรงกลางของจอแสดงผลอื่น:

#!/bin/bash

getwindowat() {
    # move mouse to coordinates provided, get window id beneath it, move mouse back
    eval `xdotool mousemove $1 $2 getmouselocation --shell mousemove restore`
    echo $WINDOW
}

# get active app
active=`xdotool getactivewindow`
# get coordinates of an active app
eval `xdotool getwindowgeometry --shell $active`

# if left border of an app is less than display width
# (e.g. one display is 1920px wide, app has x = 200 - means it's 200px to the right from the left border of left monitor
# if it has x = 1920 or more, it's on the right window), it's on screen 0, and we need to focus to screen 1, otherwise to screen 0
(( $X >= $WIDTH )) && focustoscreen=0 || focustoscreen=1;

# get coordinates of the middle of the screen we want to switch
searchx=$[ ($WIDTH / 2) + $focustoscreen * $WIDTH ]
searchy=$[ $HEIGHT / 2 ]

# get window in that position
window=`getwindowat $searchx $searchy`
# activate it
xdotool windowactivate $window

ขั้นตอนที่ 2: เพิ่มแป้นพิมพ์ลัดเพื่อเรียกสคริปต์นี้ฉันใส่ของลงไป Super-Tab

ขั้นตอนที่ 3: ใช้ทางลัดเพื่อสลับการแสดงผลเหมือนเจ้านาย


มันช่วยได้มาก แต่เม้าส์ไม่ได้ถูกย้ายไปที่หน้าจออื่นซึ่งมันจะดีถ้ามันทำ
samarth

2
@ Samarth คุณสามารถทำได้โดยการลบmousemove restoreeval ดังนั้นมันจึงเป็น "Eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy

ฉันลองขั้นตอนที่ 1 จากนั้นเรียกใช้sh swap.shฉันได้รับข้อความแสดงข้อผิดพลาด: swap.sh: 17: swap.sh: 288: ไม่พบ swap.sh: 20: swap.sh: ข้อผิดพลาดทางไวยากรณ์: "(" ไม่คาดคิดการสร้างข้อความ ไฟล์ที่มี = เป็นชื่อและไม่มีความคิดใด ๆ ขอบคุณ!
Matifou

@Matifou ลองbash swap.sh
ปุย

สิ่งนี้มีประโยชน์ มีวิธีในการตรวจจับเมื่อหมุนจอแสดงผลหรือไม่? ฉันหมุนจอภาพด้านซ้ายของฉัน (พร้อมxrandr --rotate) แต่ xdotool ไม่ได้ใช้การหมุนและฉันไม่รู้วิธีตรวจจับ หากโฟกัสอยู่ในจอแสดงผลแบบหมุนฉันต้องใช้การกดแป้นพิมพ์สองครั้งแทนที่จะเป็นหนึ่งครั้ง
GTK

0

คุณสามารถใช้AltTabเพื่อสลับระหว่างหน้าต่าง

AltTabยังจำหน้าต่างสองหน้าต่างที่คุณสลับไปมาระหว่างครั้งล่าสุด หากคุณสลับไปที่หน้าต่างเดียว (นำทางด้วยปุ่มลูกศร) จากนั้นสลับกลับเพียงกดAltTabจะช่วยให้คุณข้ามไปมาได้โดยไม่ต้องใช้การนำทางใด ๆ เพิ่มเติม


2
ฉันต้องการสลับการแสดงผลในการตั้งค่าจอภาพสองจอไม่ใช่หน้าต่าง ฉันเปิดแอปพลิเคชั่นหลายตัวและฉันไม่ต้องการกด alt-tab หลายครั้งจนกระทั่งฉันไปถึงอันที่หนึ่งบนอีกจอหนึ่ง
ปุย

0

ที่เก็บนี้อาจช่วยคุณได้

https://github.com/Eitol/screen_focus_changer

คุณวางสคริปต์ด้านซ้าย focus_changer.py ไว้ในตำแหน่งคงที่ (/ เลือกตัวอย่าง) จากนั้นเพิ่มปุ่มลัด / ปุ่มลัด / ลัดในการตั้งค่าของคุณ

python3 /opt/focus_changer.py left # โฟกัสไปทางซ้าย

python3 /opt/focus_changer.py ขวา # โฟกัสไปทางขวา

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