Especificando a geometria das janelas X nas coordenadas obtidas de wmctrl

9

Na documentação X li que o Width, Height, Xpositione Ypositioncoordenadas deve ser especificado em caracteres do terminal ao usar:

gnome-terminal --geometry=WidthxHeight+Xposition+Yposition

Se eu usar como coordenadas de entrada as que recebo de uma wmctrl -lGsaída (não tenho certeza se wmctrlusa pixels, caracteres de terminal ou algo diferente como unidades geométricas), não obtenho os resultados esperados. Ou seja, as coordenadas geométricas produzidas wmctrl -lGe as que um usuário pode especificar gnome-terminal --geometrysão diferentes.

Existe algo que estou fazendo de errado? Alguma ideia?

obrigado

Amelio Vazquez-Reina
fonte

Respostas:

17

A --geometryopção para gnome-terminalé realmente medida em caracteres, em vez de pixels. Por exemplo, para obter um terminal de 80 colunas com apenas 10 linhas de altura, você pode iniciar gnome-terminalassim:

gnome-terminal --geometry 80x10

O terminal será redimensionado em incrementos do tamanho do caractere da fonte, que ele comunica ao Xserver usando WM_NORMAL_HINTS. Você pode examiná-los usando o xpropcomando Por exemplo, aqui encontro um ID da janela do Terminal e pergunto ao xprop:

$ wmctrl -lG | tail -n1
0x06400021  0 592  314  580  338  myhostname kees@myhostname: ~
$ xprop -id 0x6400021
...
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified minimum size: 48 by 16
        program specified resize increment: 7 by 14
        program specified base size: 20 by 2
        window gravity: NorthWest
...

No caso acima, o tamanho da fonte é de 7 por 14 pixels. Portanto, se eu quisesse um terminal de 70 por 140 pixels, eu poderia rodar gnome-terminal --geometry 10x10(embora seja 20 x 2 pixels maior que o baseado nas decorações do gerenciador de janelas, etc., como visto no "tamanho base específico" acima).

Kees Cook
fonte