Estou usando um monitor 21:9 e escrevi um script para colocar/alinhar minhas janelas à esquerda, centro e lado direito do monitor, usando atalhos de teclado:
┌─────────┬─────────┬─────────┐
│ window1 │ window2 │ window3 │
│ left │ centre │ right │
│ aligned │ aligned │ aligned │
└─────────┴─────────┴─────────┘
O script funciona obtendo o nome da janela atualmente em foco:
WINDOW_NAME=$(xdotool getwindowfocus getwindowname)
e alinha a janela usando seu nome de janela:
wmctrl -ir "$WINDOW_NAME" -e 1,$X_OFFSET,$Y_OFFSET,$X_WIDTH,$Y_HEIGHT
O problema é que, ao ter várias janelas abertas com o mesmo nome de janela (por exemplo, 2 navegadores Firefox ou 3 terminais etc.), ele não move a janela em foco atual, mas de todas as janelas com o mesmo nome, aquela que foi aberta a primeira .
Ou seja, digamos que eu abro 3 Terminais, e quero alinhar o Terminal T2, o script irá alinhar T1 e não T2, pois T1 foi aberto primeiro.
Então minha ideia é ao invés de usar os nomes das janelas, usar os IDs do processo (PIDs), pois diferentemente do nome de uma janela, o PID é único. A questão é: É possível trabalhar com o wmctrl
uso de PIDs?
Nas páginas man de wmctrl
eu encontrei a opção -i
que interpreta a variável <WIN>
como um número em vez de um nome de string.
$ man wmctrl
[...]
-e <MVARG>
Resize and move a window that has been specified with a -r
action according to the <MVARG> argument.
[...]
-r <WIN>
Specify a target window for an action.
[...]
-i
Interpret window arguments (<WIN>) as a numeric value rather
than a string name for the window. If the numeric value starts
with the prefix '0x' it is assumed to be a hexadecimal number.
[...]
Eu realmente não entendo o que essa -i
opção significa e pensei que talvez isso significasse que é possível usar o PID em vez do nome da janela:
WINDOW_ID=$(xdotool getactivewindow getwindowpid)
WINDOW_ID=$(printf 0x%x $WINDOW_ID)
wmctrl -ir "$WINDOW_ID" -e 1,$X_OFFSET,$Y_OFFSET,$X_WIDTH,$Y_HEIGHT
Infelizmente, isso não funcionou (nem com decimal, nem como número hexadecimal).
Q1: É possível usar wmctrl
com PIDs em vez de nomes de janela?
Q2: O que a -i
opção realmente significa?