Posicionamento da janela ao alternar para vários monitores

Posicionamento da janela ao alternar para vários monitores

Suponha que você tenha várias janelas abertas distribuídas em vários monitores. Em seguida, você passa a usar um único monitor (talvez porque tenha removido o laptop da docking station). Todas as suas janelas estão agora em uma tela.

Em seguida, você volta para a configuração de vários monitores. Agora você tem mais espaço na tela, mas todas as suas janelas estão inicialmente empilhadas em um único monitor. Seria bom se suas janelas voltassem para o monitor em que estavam originalmente.

Alguma idéia de como fazer isso acontecer?

Responder1

xdotool

Ideia aproximada, mas você pode conseguir o que deseja criando alguns comandos usandoxdotool. Então você pode executá-los adequadamente quando tiver 1 ou 2 monitores conectados.

Há um bom exemplo de como você pode fazer isso neste artigo intitulado:Xubuntu – movendo janelas entre monitores.

trecho da seção: Movendo a janela ativa para o outro monitor (finalmente!)

Aqui está o que precisamos fazer:

  • Encontre a janela ativa
  • Obtenha seu estado maximizado e lembre-se dele
  • Remover maximização
  • Obtenha sua geometria
  • Calcule a nova posição
  • Mova isso
  • Maximizar com base no estado anterior
  • Levante-o

Aqui está um script que faz isso:

wid=`xdotool getactivewindow`
max_state=`xprop -id $wid _NET_WM_STATE`

wmctrl -ir $wid -b remove,maximized_vert,maximized_horz
eval `xdotool getwindowgeometry --shell $wid`

new_x=1600
if [[ "$X" -ge "$new_x" ]]; then
  new_x=0
fi

xdotool windowmove $wid $new_x $Y
if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then
  wmctrl -ir $wid -b add,maximized_vert,maximized_horz
fi

xdotool windowraise $wid

Método mais interativo

Também encontrei outra abordagem que também a utilizava, xdotoolmas a envolvia em um script de shell que você poderia associar a uma tecla de atalho. Usando este método você poderia selecionar uma janela para que ela fosse levantada e tivesse foco e pressionando a combinação de teclas de atalho, enviaria o aplicativo para outra janela. O artigo é intitulado:Mover janelas entre monitores.

O método fornece o seguinte script windowmove.sh:

#!/bin/bash
if [ $1 -eq 2 ]
then
POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3`
POS2=0
else
POS1=0
POS2=0
fi
/usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2
exit 0

POS1 calcula a largura da sua tela principal usando a saída do xrandr. Se você achar que o script não consegue mover as janelas para a direita, mas pode movê-las para a esquerda, tente substituir essa linha por POS1=1920 e substitua 1920 pela largura em pixels do seu monitor principal.

Em seguida, execute o miniaplicativo Keyboard Bindings:

$ gnome-keybinding-properties

OBSERVAÇÃO:Isso pode ser executado em diferentes locais em diferentes distros por meio da GUI.

Crie 2 atalhos de teclado usando estes 2 lançamentos de aplicativos:

  • comando de ligação nº 1:./Scripts/windowmove.sh 1
  • comando de ligação nº 2:./Scripts/windowmove.sh 2

Responder2

Não há necessidade de xdotool. Você pode gravar todos os locais das janelas e depois restaurá-los com apenas wmctrl:

Registro:wmctrl -lG > ${rcfile}

Lugar:

while read row; do
  IFS=" " read id g x y w h _ <<< ${row}
  wmctrl -ir ${id} -e 0,${x},${y},${w},${h}
done < ${rcfile}

informação relacionada