O motivo é bastante simples: quando você executa chromium
, ele não retorna até que termine, ou seja, após você fechar o Chromium . Portanto, sleep
e i3-msg
só serão executados depois que a janela já tiver passado.
Para resolver isso, você só precisa iniciar chromium
em segundo plano, isso pode ser feito anexando &
ao comando. O sleep
é necessário, sem que i3-msg
possa ser executado antes que o Chromium tenha inicializado sua janela. Cinco segundos podem ser um pouco longos, mas isso depende da velocidade com que o Chromium abre no seu sistema.
Além disso, sugiro adicionar critérios ao i3-msg
. Dessa forma, ele funciona em qualquer janela do Chromium e não apenas na janela atualmente focada, o que pode não ser a desejada janela do Chromium (obviamente isso pode não ser um comportamento desejado, caso você queira que algumas janelas do Chromium fiquem em tela cheia).
#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen &
sleep 2
i3-msg '[instance="^chromium$"] fullscreen disable'
Como alternativa , se desejar que as janelas do Chromium apareçam sempre na área de trabalho "web", você pode usar as diretivas de configuração assign
e for_window
em < em> i3 configuração para fazer o trabalho:
assign [instance="^chromium$"] web
for_window [instance="^chromium$"] exec "sh -c 'sleep 2; i3-msg \[instance=chromium\] fullscreen disable'"
Com isso, você não precisa mais de um script e toda vez que você executar chromium
i3 irá colocá-lo na "web" e dois segundos depois a janela sairá da tela cheia. Nota: Embora seja teoricamente possível usar fullscreen disable
diretamente com for_window
, ele não funciona com o Chromium porque a janela realmente começa em tela cheia. O Chromium apenas ativa a tela inteira bem rápido; infelizmente i3 é ainda mais rápido ao executar for_window
. Então i3 desativará a tela inteira antes que o Chromium tente ativá-lo. É por isso que o desvio com a execução de sleep
e i3-msg
via exec
é necessário.