Comportamento inconsistente do wmctrl na maximização do terminal de .bashrc

Comportamento inconsistente do wmctrl na maximização do terminal de .bashrc

Eu tenho isso

wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

dentro do meu .bashrc para maximizar meu terminal ao abrir. O estranho é que parece funcionar apenas aleatoriamente, às vezes resultando em um terminal em tela cheia e às vezes não, sem nenhum padrão discernível. Inserir o comando acima em um terminal já aberto é sempre bem-sucedido.

Devo observar que o comando xdotool windowsize $(xdotool getactivewindow) 100% 100%(deesseresposta), que atinge um efeito semelhante, também causa o mesmo comportamento esporádico quando colocado no meu .bashrc. Novamente, sempre funciona quando executado a partir de um prompt já aberto. Avançar,às vezesquando este comando não funcionar, receberei a seguinte mensagem de erro antes do primeiro prompt:

XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error
There are no windows in the stack
Invalid window '%1'
Invalid argument count, got 3, expected 2
Usage: windowsize [--sync] [--usehints] [window=%1] width height
If no window is given, %1 is used. See WINDOW STACK in xdotool(1)
--usehints  - Use window sizing hints (like font size in terminals)
--sync      - only exit once the window has resized

Isso me faz pensar que todo o erro se concentra em encontrar a janela atualmente ativa.

Estou usando o Mint 19.3 com XFCE4 e meu terminal é urxvt. O que poderia estar causando esse comportamento inconsistente?

Responder1

Isto parece ser umProblema XY. Há uma corrida entre o terminal que está sendo exibido e o script de inicialização do shell tentando localizá-lo e redimensioná-lo. O OP descobriu que a sleep 0.1era suficiente para permitir que a janela fosse encontrada como ativa.

No entanto, a coisa correta a fazer é abrir o terminal com o tamanho inicial correto, em vez de abri-lo com algum tamanho padrão e depois redimensioná-lo. O tamanho inicial pode ser especificado por meio de padrões carregados no servidor X, normalmente com o xdbprograma ou usando o -geometrycomando padrão para o emulador de terminal.

informação relacionada