Posicionamento da janela ao alternar para vários monitores

3

Suponha que você tenha várias janelas abertas distribuídas em vários monitores. Então você passa a usar um único monitor (talvez porque você tenha removido seu laptop da estação de ancoragem). Todas as suas janelas estão agora em uma tela.

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

Alguma idéia de como fazer isso acontecer?

    
por user31765 15.10.2013 / 04:49

1 resposta

2

xdotool

Uma ideia difícil, mas você pode conseguir o que deseja criando dois comandos usando xdotool . Então você poderia executá-los de acordo quando tiver 1 ou 2 monitores conectados.

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

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

Veja o que precisamos fazer:

  • Encontrar a janela ativa
  • Obtenha seu estado maximizado e lembre-se
  • Remover a maximização
  • Obtenha sua geometria
  • Calcular a nova posição
  • Mova-se
  • Maximizar com base no estado anterior
  • Aumentar

Este é 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

Eu também encontrei uma outra abordagem que também fez uso de xdotool , mas o envolveu em um shell script que você poderia associar a uma tecla de atalho. Usando esse método, você poderia selecionar uma janela para que ela fosse levantada e tivesse foco e, ao acertar a combinação de teclas de atalho, enviasse o aplicativo para outra janela. O artigo intitula-se: 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 de xrandr. Se você achar que o script não pode mover as janelas corretamente, mas ele 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 applet Ligações de Teclado:

$ gnome-keybinding-properties

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

Crie 2 atalhos de teclado usando esses dois aplicativos:

  • comando da ligação 1: ./Scripts/windowmove.sh 1
  • comando da ligação 2: ./Scripts/windowmove.sh 2
por 15.10.2013 / 05:23