Vou passar aqui duas dicas, simples e bem úteis para o i3wm.
1) Layout atual na polybar ou i3blocks
Alguns ambientes como dwm, bspwm ou o qtile, é possível exibir no painel/barra o layout atual das janelas. No i3 isso é possível com o i3blocks ou a polybar.
Já vi algumas pessoas reclamando de o i3 ficar com uma das bordas diferente, para exibir a indicação do split. Esse script permite deixar todas as bordas da mesma cor (se você quiser, claro), afinal a indicação sempre vai estar visível direto na polybar ou no i3blocks.
Além, obviamente, da polybar ou do i3blocks, o script tem como dependência o pacote jq.
sudo apt install jq
sudo pacman -S jq
sudo dnf install jq
Crie um script com o seguinte conteúdo (o meu eu nomeie como i3layout.sh)
#!/usr/bin/env bash
case $(i3-msg -t get_tree | jq --raw-output 'recurse(.nodes[]; .nodes !=null) | select(.nodes[].focused).layout') in
splith) echo "[h]" ;;
splitv) echo "[v]" ;;
tabbed) echo "[t]" ;;
stacked) echo "[s]" ;;
esac
Lembrando que o script tem que ter permissão de execução. Para isso
sudo chmod +x i3layout.sh
E, aonde temos os colchetes com uma letra dentro, é o que será exibido no painel. Se não gostar da forma que deixei, troque para o que quiser, texto, ícones etc. As letras indicam, respectivamente, horizontal, vertical, tabbed e stacking.
Se for utilizar na polybar adicione o seguinte modulo ao seu arquivo de configuração
[module/i3layout]
type = custom/script
exec = ~/.config/polybar/i3-layout.sh
interval = 1
format = <label>
format-background = #3F3F3F
format-foreground = #DFAF8F
format-padding = 1
Depois é só adicionar o novo modulo na posição do painel que quiser. No mais é só editar as opções, como as cores, o tempo de intervalo de atualização etc. Simples, fácil e rápido.
Se estiver usando o i3blocks, crie o mesmo script e coloque dentro da sua pasta do i3blocks (normalmente em ~/.config/i3blocks). E adicione dentro do seu config o seguinte conteúdo
[i3layout]
color=#DCDCDC
command=~/.config/i3blocks/i3layout.sh
interval=1
Como no modulo da polybar, modifique o que quiser, cor, intervalo etc.
Para quem estiver com dúvidas de como usar o i3blocks, veja o seguinte tópico.
2) Toggle gaps
Não é mais necessário usar a opção mode para isso. Na versão 4.22 temos novas opções na documentação que permitem essa funcionalidade com apenas um comando.
bindsym $mod+shift+equal gaps inner all toggle 6, gaps outer all toggle 2
No exemplo acima é o meu config. Para seu uso, apenas troque os valores dos inner e outer gaps e o atalho para os de sua preferência.
Antes da fusão do i3wm com o i3gaps, eu via muita gente (eu também cheguei a usar assim), essa função da seguinte forma
set $mode_gaps Toggle gaps: (+) on (-) off
bindsym $mod+g mode "toggle_gaps"
mode "toggle_gaps" {
bindsym KP_Add mode "default", gaps inner all set 6, gaps outer all set 2
bindsym KP_Subtract mode "default", gaps inner all set 0, gaps outer all set 0
bindsym Return mode "default"
bindsym Escape mode "default"
}
Basicamente, é essa função. Ela permite “ativar” um novo modo através de um atalho. Se reparar na função que postei acima, ao usar o atalho super+g eu entro no “modo gaps” e dentro dele eu posso usar as teclas mais (+) ou menos (-) para exibir ou esconder os gaps. Para sair uso a tecla esc. Essa função de exibir ou esconder os gaps com as teclas mais/menos só funciona dentro dessa função/modo. É como funciona a opção padrão de resize do i3wm, por exemplo.
Edit: esqueci de colocar imagens. Seguem duas da polybar (no i3blocks fica igual). Repare que na após a última área de trabalha aberta (a número 8), tem o ícone indicando qual é o layout atual.