Scorciatoia per cambiare display


12

Ho 2 schermi sul mio PC: un IDE è aperto a schermo intero in uno schermo e Firefox è aperto a schermo intero in un altro schermo.

Dal momento che utilizzo principalmente la tastiera, è fastidioso dover afferrare il mouse per spostare l'attenzione su Firefox e tornare sempre all'IDE.

Esiste una scorciatoia che potrei usare per spostare lo stato attivo sulla "finestra più grande" sul display 2 se il focus è da qualche parte nel display 1 e viceversa?

Risposte:


11

Oggi ho ricevuto un voto positivo per questa domanda, quindi sto pubblicando la mia soluzione che utilizzo da più di un anno e ne sono abbastanza contento.

Passaggio 1: crea lo script bash (es. Scrivilo ~/swap.she rendilo eseguibile) per impostare lo stato attivo su una finestra che si trova al centro dell'altro display:

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

Passaggio 2: aggiungi una scorciatoia da tastiera per chiamare questo script, ho inserito il mio Super-Tab

Passaggio 3: utilizzare la scorciatoia per cambiare display come un boss


Questo aiuta molto, tuttavia il mouse non viene spostato sull'altra schermata, il che sarebbe fantastico se lo facesse.
Samarth,

2
@samarth Puoi raggiungerlo rimuovendo il mousemove restoreda eval, in modo che sia "eval` xdotool mousemove $ 1 $ 2 getmouselocation --shell` "
Fluffy

Ho provato il passaggio 1, quindi in esecuzione sh swap.sh, ricevo il messaggio di errore: swap.sh: 17: swap.sh: 288: non trovato swap.sh: 20: swap.sh: errore di sintassi: "(" imprevisto , creazione di un testo file con = come titolo e niente Qualche idea? Grazie!
Matifou,

@Matifou provarebash swap.sh
Fluffy

Questo è utile; c'è un modo per rilevare quando un display viene ruotato? Ho il monitor sinistro ruotato (con xrandr --rotate) ma xdotool non usa la rotazione e non so come rilevare. Se il focus è sul display ruotato, devo usare la sequenza di tasti due volte anziché una volta.
GTK

0

Puoi usare AltTabper passare da una finestra all'altra.

AltTabricorda anche le due finestre che hai passato l'ultima volta. Se si passa a una finestra (navigare con i tasti freccia), quindi tornare indietro, basta premere AltTabper passare da una all'altra, senza ulteriore navigazione.


2
Voglio cambiare display nella configurazione a doppio monitor, non in Windows. Ho più applicazioni aperte e non voglio premere alt-tab molte volte finché non raggiungo l'una sull'altro display.
Fluffy,

0

questo repository può aiutarti

https://github.com/Eitol/screen_focus_changer

Posiziona lo script focus_changer.py a sinistra in un posto fisso (/ opt ad esempio) E poi aggiungi il tasto / scorciatoia / tasto di scelta rapida nelle tue impostazioni

python3 /opt/focus_changer.py a sinistra # Focus a sinistra

python3 /opt/focus_changer.py a destra # Focus a destra

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.