Verknüpfung zum Wechseln der Anzeigen


12

Ich habe 2 Displays auf meinem PC - eine IDE ist in einem Display im Vollbildmodus und Firefox in einem anderen Display im Vollbildmodus geöffnet.

Da ich meistens die Tastatur benutze, ist es ärgerlich, die Maus greifen zu müssen, um den Fokus ständig auf Firefox und zurück zur IDE zu schalten.

Gibt es eine Verknüpfung, mit der ich den Fokus auf "größtes Fenster" auf Anzeige 2 schalten könnte, wenn sich der Fokus irgendwo in Anzeige 1 befindet und umgekehrt?

Antworten:


11

Heute habe ich eine positive Bewertung für diese Frage erhalten, daher veröffentliche ich meine Lösung, die ich seit mehr als einem Jahr ständig verwende und mit der ich sehr zufrieden bin.

Schritt 1: Erstellen Sie ein Bash-Skript (z. B. schreiben Sie es ~/swap.shund machen Sie es ausführbar), um den Fokus auf ein Fenster zu setzen, das sich in der Mitte der anderen Anzeige befindet:

#!/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

Schritt 2: Fügen Sie eine Tastenkombination hinzu, um dieses Skript aufzurufen Super-Tab

Schritt 3: Verwenden Sie die Verknüpfung, um Anzeigen wie bei einem Chef zu wechseln


Dies hilft sehr, aber die Maus wird nicht auf den anderen Bildschirm bewegt, was großartig wäre, wenn dies der Fall wäre.
Samarth

2
@samarth Sie können dies erreichen, indem Sie das mousemove restoreaus dem eval entfernen , so dass es "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy

Ich habe Schritt 1 ausprobiert und dann ausgeführt sh swap.sh. Ich erhalte die Fehlermeldung: swap.sh: 17: swap.sh: 288: nicht gefunden swap.sh: 20: swap.sh: Syntaxfehler: "(" unerwartet , Text erstellen Datei mit = als Titel und nichts Irgendeine Idee? Danke!
Matifou

@ Matifou versuchenbash swap.sh
Fluffy

Das ist hilfreich; Gibt es eine Möglichkeit zu erkennen, wann ein Display gedreht wird? Ich habe meinen linken Monitor gedreht (mit xrandr --rotate), aber xdotool verwendet die Drehung nicht und ich weiß nicht, wie ich sie erkennen soll. Wenn der Fokus in der gedrehten Anzeige liegt, muss ich den Tastenanschlag zweimal statt einmal verwenden.
GTK

0

Sie können AltTabzwischen Fenstern wechseln.

AltTabErinnert sich auch daran, zwischen welchen beiden Fenstern Sie zuletzt gewechselt haben. Wenn Sie zu einem Fenster wechseln (mit den Pfeiltasten navigieren) und dann zurückschalten, AltTabkönnen Sie durch einfaches Drücken ohne weitere Navigation zwischen diesen wechseln .


2
Ich möchte die Anzeige im Dual-Monitor-Setup wechseln, nicht in Windows. Ich habe mehrere Anwendungen geöffnet und möchte die Alt-Tab-Taste nicht oft drücken, bis ich die auf dem anderen Display erreiche.
Fluffy

0

Dieses Repository kann Ihnen helfen

https://github.com/Eitol/screen_focus_changer

Sie platzieren das linke Skript focus_changer.py an einer festen Stelle (z. B. / opt) und fügen dann die Tastenkombination / Verknüpfung / Hotkey in Ihren Einstellungen hinzu

python3 /opt/focus_changer.py left # Fokus nach links

python3 /opt/focus_changer.py rechts # Fokus nach rechts

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.