Não é possível desativar a tela cheia do script i3

4

Eu uso uma ligação i3 para executar o script

#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen
sleep 5
i3-msg fullscreen disable

As duas últimas linhas são para desativar a tela cheia (não sei se o sono é necessário). O i3 fullscreen é ativado como um efeito colateral do argumento para o cromo (que se destina a ocultar apenas a barra de endereços, etc.). Mas, por algum motivo, não funciona, a tela cheia não está desativada. Só se eu usar a ligação $ mod + f para alternar a tela cheia manualmente é desativado. Por que o script não consegue fazer isso?

(O motivo pelo qual eu quero desativar a tela cheia é que, quando eu uso o chromium-vim para editar um campo de texto externamente, o gvim não aparece até que a tela cheia seja desativada.)

    
por Toothrot 03.02.2017 / 13:23

1 resposta

1

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.

    
por 05.02.2017 / 22:33

Tags