Mam 2 ekrany na moim komputerze - IDE jest otwarty na pełnym ekranie na jednym ekranie, a Firefox jest otwarty na pełnym ekranie na innym ekranie.
Ponieważ używam głównie klawiatury, denerwujące jest to, że muszę chwycić mysz, aby cały czas przestawić fokus na Firefox i z powrotem na IDE.
Czy istnieje skrót, za pomocą którego można przełączyć fokus na „największe okno” na wyświetlaczu 2, jeśli fokus jest gdzieś na wyświetlaczu 1 i odwrotnie?
Dzisiaj otrzymałem głos na to pytanie, więc publikuję swoje rozwiązanie, z którego korzystam od ponad roku i jestem z tego całkiem zadowolony.
Krok 1: Utwórz skrypt bash (np. Zapisz go ~/swap.shi wykonaj), aby ustawić fokus w oknie, które znajduje się na środku drugiego ekranu:
#!/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
Krok 2: dodaj skrót klawiaturowy, aby wywołać ten skrypt Super-Tab
Krok 3: użyj skrótu, aby przełączać ekrany jak boss
To bardzo pomaga, jednak mysz nie jest przenoszona na inny ekran, co byłoby wspaniale, gdyby tak było.
samarth,
2
@samarth Możesz to osiągnąć, usuwając mousemove restorez eval, dzięki czemu jest to „eval” xdotool mousemove 1 $ 2 $ getmouselocation --shell` ”
Fluffy
Próbowałem kroku 1, a następnie uruchomiłem sh swap.sh, pojawia się komunikat o błędzie: swap.sh: 17: swap.sh: 288: nie znaleziono swap.sh: 20: swap.sh: Błąd składni: "(" nieoczekiwany , utworzenie tekstu plik z = jako tytuł i nic
Jakiś
@Matifou trybash swap.sh
Fluffy
To jest pomocne; Czy istnieje sposób na wykrycie, kiedy wyświetlacz jest obracany? Mój lewy monitor jest obrócony (z xrandr --rotate), ale xdotool nie używa obrotu i nie wiem, jak to wykryć. Jeśli fokus znajduje się na obróconym wyświetlaczu, muszę użyć klawisza dwa razy zamiast jednego.
GTK,
0
Możesz używać AltTabdo przełączania między oknami.
AltTabpamięta również, które dwa okna ostatnio przełączałeś. Jeśli przełączysz się na jedno okno (nawiguj za pomocą klawiszy strzałek), a następnie przełączysz się z powrotem, wystarczy nacisnąć AltTab, aby przejść między nimi bez dalszej nawigacji.
Chcę przełączać wyświetlacze w konfiguracji z dwoma monitorami, a nie w systemie Windows. Mam otwartych wiele aplikacji i nie chcę naciskać klawisza Alt-Tab wiele razy, dopóki nie dojdę do jednej na drugim ekranie.
Umieszczasz lewy skrypt focus_changer.py w ustalonym miejscu (na przykład / opt), a następnie dodajesz skrót klawiszowy / skrót / skrót klawiszowy w swoich ustawieniach
python3 /opt/focus_changer.py left # Focus to left
python3 /opt/focus_changer.py right # Focus to right
mousemove restore
z eval, dzięki czemu jest to „eval” xdotool mousemove 1 $ 2 $ getmouselocation --shell` ”sh swap.sh
, pojawia się komunikat o błędzie: swap.sh: 17: swap.sh: 288: nie znaleziono swap.sh: 20: swap.sh: Błąd składni: "(" nieoczekiwany , utworzenie tekstu plik z = jako tytuł i nicbash swap.sh
xrandr --rotate
), ale xdotool nie używa obrotu i nie wiem, jak to wykryć. Jeśli fokus znajduje się na obróconym wyświetlaczu, muszę użyć klawisza dwa razy zamiast jednego.Możesz używać AltTabdo przełączania między oknami.
AltTabpamięta również, które dwa okna ostatnio przełączałeś. Jeśli przełączysz się na jedno okno (nawiguj za pomocą klawiszy strzałek), a następnie przełączysz się z powrotem, wystarczy nacisnąć AltTab, aby przejść między nimi bez dalszej nawigacji.
źródło
to repozytorium może ci pomóc
https://github.com/Eitol/screen_focus_changer
Umieszczasz lewy skrypt focus_changer.py w ustalonym miejscu (na przykład / opt), a następnie dodajesz skrót klawiszowy / skrót / skrót klawiszowy w swoich ustawieniach
python3 /opt/focus_changer.py left # Focus to left
python3 /opt/focus_changer.py right # Focus to right
źródło