i3 (Português)

From ArchWiki

Status de tradução: Esse artigo é uma tradução de i3. Data da última tradução: 2023-01-03. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

i3 é um gerenciador de janela tiling dinâmico inspirado no wmii que visa principalmente a desenvolvedores e usuários avançados.

Os objetivos estabelecidos para o i3 incluem documentação clara, suporte adequado a vários monitores, uma estrutura em árvore para janelas e modos diferentes, como no vim.

Instalação

O i3 pode ser instalado com o pacote i3-wm.

O i3 é um grupo de pacotes e também está disponível. Inclui o gerenciador de janelas, um programa bloqueador de tela e dois programas que escrevem uma linha de status para o i3bar através da sua saída (stdout).

Nota: i3-gaps (um fork do i3 com gaps e outros recursos) foi recentemente incorporado ao i3-wm e, como tal, não está mais disponível. Em vez disso, instale o pacote i3-wm.

Iniciando

Pelo tty

Execute i3 com xinit.

Gerenciador de exibição

i3-wm inclui um arquivo i3.desktop no Xsession que o inicia. i3-with-shmlog.desktop habilita logs (útil para depuração). i3-gnomeAUR integra o i3 ao GNOME.

Uso

Veja a documentação oficial para mais informações, principalmente o Guia do usuário i3.

Atalhos

No i3, os comandos são chamados com uma chave modificadora, referida como $mod. Isto é Alt (Mod1) por padrão, com Super (Mod4) sendo uma alternativa popular. Super é a tecla geralmente representada em um teclado como um ícone do Windows ou em um teclado da Apple como uma tecla de comando.

Veja a Carta de referência do i3 e Usando o i3 para as configurações padrão. Veja Keyboard bindings para adição de novos atalhos.

Usuários de layouts de teclado que não sejam Qwerty podem querer contornar o "assistente de configuração" como Descrito abaixo.

Se alternar entre vários gerenciadores de janelas ou ambientes de desktop, considere usar sxhkd ou outro programa que não depende do ambiente para gerenciar atalhos. Mais informações podem ser encontradas em Atalhos de teclado#Xorg.

Contêineres e layouts

O i3 gerencia janelas em uma estrutura de árvore, com contêineres como blocos de construção. Essa estrutura se ramifica com divisões horizontais ou verticais. Os contêineres são lado a lado por padrão, mas podem ser definidos como tabbed or stacking layouts, bem como flutuante (como para janelas de diálogo). Janelas flutuantes estão sempre no topo.

Veja i3 Tree e Containers and the tree data structure para detalhes.

Iniciador de aplicativos

O i3 usa dmenu como iniciador de aplicativos, associado por padrão a $mod+d. Como é uma dependência opcional dmenu deve primeiro ser instalado antes que esta funcionalidade possa ser usada.

O pacote i3-wm contém i3-dmenu-desktop, Perl wrapper para dmenu que usa entradas de desktop para criar uma lista de todos os aplicativos instalados. Como alternativa, o pacote j4-dmenu-desktop-gitAUR pode ser usado.

rofi é um popular substituto do dmenu, além de também listar entradas desktop.

KRunner como iniciador de aplicativos no KDE Plasma/i3

É possível ter executar o i3 junto com o KDE Plasma como visto aqui: KDE#Usar um gerenciador de janela diferente

Ao executar o Plasma com KDEWM=/usr/bin/i3, pode-se definir o KRunner como lançador de aplicativos alternativo com $mod+d adicionando o seguinte na configuração do i3 :

~/.config/i3/config
set $menu --no-startup-id qdbus org.kde.krunner /App display
bindsym $mod+d exec $menu

Configuração

Veja Configurando o i3 para detalhes. O restante deste artigo pressupõe que o arquivo de configuração do i3 está na pasta ~/.config/.

Assistente de configuração e layouts de teclado alternativos

Quando o i3 é iniciado pela primeira vez, ele oferece a execução do assistente de configuração i3-config-wizard. Essa ferramenta cria ~/.config/i3/config reescrevendo um arquivo de configuração de modelo em /etc/i3/config.keycodes. Faz duas modificações no modelo padrão:

  1. Ele solicita ao usuário que escolha uma chave modificadora padrão, que será adicionada ao modelo como uma única linha, como set $mod Mod1; e
  2. ele substitui todas as linhas bindcode por linhas bindsym correspondentes ao layout de teclado atual do usuário.

Step 2 foi projetado para garantir que os quatro atalhos de navegação, j, k, l e ; em um teclado Qwerty, serão mapeados para as keysyms de teclado com o mesmo local, por exemplo h, t, n, s em um teclado Dvorak. O efeito colateral dessa mágica é que até quinze outras keysyms de teclado podem ser remapeadas de maneira a interromper a mnemônica - de modo que, para um usuário do Dvorak, "reiniciar" esteja associado a $mod1+p ao invés de $mod1+r, "dividir horizontalmente" está associado a $mod1+d ao invés de $mod1+h, e assim por diante.

Portanto, os usuários de layouts de teclado alternativos que desejam atalhos de teclas que correspondam àqueles fornecidos nos tutoriais, podem preferir contornar o "assistente de configuração". Isso pode ser feito apenas copiando /etc/i3/config para dentro do ~/.config/i3/config (ou ~/.i3/config), e editando esse arquivo.

Observe que também é possível uma configuração baseada em código, por exemplo, para usuários que frequentemente alternam entre layouts de teclado, mas desejam que os atalhos do i3 permaneçam os mesmos.

Inicialização automática

Adicione um comando exec no arquivo ~/.config/i3/config para executar um comando na inicialização. Por exemplo:

exec terminator

Usando um comando exec_always garantirá que o comando também seja executado sempre que o i3 for reiniciado.

Alternativamente, você pode usar XDG Autostart.

i3bar

Além de mostrar informações do workspace, o i3bar pode atuar como uma entrada para o i3status ou uma alternativa, como as mencionadas na próxima seção. Por exemplo:

~/.config/i3/config
bar {
    output            LVDS1
    status_command    i3status
    position          top
    mode              hide
    workspace_buttons yes
    tray_output       none

    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

    colors {
        background #000000
        statusline #ffffff

        focused_workspace  #ffffff #285577
        active_workspace   #ffffff #333333
        inactive_workspace #888888 #222222
        urgent_workspace   #ffffff #900000
    }
}

Veja o Configurando o i3bar para detalhes.

Alternativas ao i3bar

Alguns usuários podem preferir painéis como os fornecidos pelas Ambientes de desktop. Isso pode ser realizado dentro do i3 iniciando o aplicativo de painel escolhido durante a inicialização.

Por exemplo, para usar o painel do Xfce (xfce4-panel), adicione a seguinte linha em qualquer lugar ~/.config/i3/config:

exec --no-startup-id xfce4-panel --disable-wm-check

O i3bar pode ser desativado comentando o bar{ } dentro da ~/.config/i3/config, ou definindo um atalho de teclado para alternar a barra:

~/.config/i3/config
# alternador da barra, esconde e mostra
bindsym $mod+m bar mode toggle

Substituições independentes do ambiente de desktop estão listadas abaixo:

  • polybar — Uma ferramenta rápida e fácil de usar para criar barras de status.
https://github.com/jaagr/polybar || polybar
  • excalibar — Barra de status leve e personalizável, escrita em C.
https://github.com/cylgom/excalibar || excalibar-gitAUR

i3status

Copie os arquivos de configuração padrão para o diretório inicial:

$ cp /etc/i3status.conf ~/.config/i3status/config

Nem todos os plug-ins estão definidos na configuração padrão e alguns valores de configuração podem ser inválidos para o seu sistema, portanto, eles precisam ser atualizados de acordo. Veja i3status(1) para detalhes.

Alternativas ao i3status

  • conky — Monitor de sistema altamente extensível. Para uso com o i3bar, veja esse tutorial
https://github.com/brndnmtthws/conky || conky
  • i3blocks — Extensível via scripts de shell. Ele pode manipular eventos de clique, interrupções e definição de intervalos de atualização por bloco.
https://github.com/vivien/i3blocks || i3blocks
  • i3pystatus — Barra de status extensível do Python 3 com muitos plugins e opções de configuração por padrão.
https://github.com/enkore/i3pystatus || i3pystatus-gitAUR
  • j4status — Fornece uma linha de status, configurável via plugins e escrita em C. Plugins extras são fornecidos por j4status-plugins-gitAUR.
https://sardemff7.github.io/j4status/ || j4status-gitAUR
  • goi3bar — Substituição do i3status escrita em Go. Arquivo de configuração controlado por vários plugins, opções de simultaneidade e suporte avançado a plugins.
https://github.com/denbeigh2000/goi3bar/ || goi3bar-gitAUR
  • goblocks — Substituição rápida e leve do i3status, escrita em Go.
https://github.com/davidscholberg/goblocks || goblocksAUR
  • bumblebee-status — Gerador de barra de status Python com capacidade de tema.
https://github.com/tobi-wan-kenobi/bumblebee-status || bumblebee-statusAUR
  • ty3status — Substituição do i3status escrita em TypeScript. Construído com suporte de primeira classe para blocos javascript.
https://github.com/mrkmg/ty3status || ty3status-gitAUR
  • i3status-rust — Substituição altamente eficiente e rica em recursos, escrita em Rust. Pode lidar com atualizações push, intervalos de atualização individuais, eventos temáticos e de clique
https://github.com/greshake/i3status-rust || i3status-rust
  • Barista — Barista é um substituto do i3status escrito em Go.
https://github.com/soumya92/barista || not packaged? search in AUR

Wrappers do i3status

  • i3cat — Baseado em go wrapper que pode concatenar entradas de várias fontes externas. Ele pode manipular eventos de clique e encaminhar sinais especificados pelo usuário para seus subprocessos.
https://vincent-petithory.github.io/i3cat/ || i3cat-gitAUR
  • py3status — Um wrapper extensível do i3status escrito em Python.
https://github.com/ultrabug/py3status || py3status
  • YaGoStatus — Mais uma substituição do i3status escrita em Go.
https://github.com/burik666/yagostatus || yagostatus-gitAUR

Fontes icônicas na barra de status

O suporte para fontes icônicas é integrado desde i3 versão 4.20.

  • ttf-font-awesome — Ícones vetoriais escaláveis que podem ser personalizados com CSS. Uma folha de dicas mostra o ponto Unicode para cada glifo.
https://fontawesome.com/ || ttf-font-awesome
  • ttf-font-icons — Mix sem sobreposição e de tamanho consistente de Awesome e Ionicons. Isso também evita pequenas sobreposições entre DejaVu Sans e Awesome.
https://kageurufu.net/icons.pdf || ttf-font-iconsAUR.
  • ttf-ionicons — A fonte de ícone premium para o Ionic Framework.
https://ionicframework.com/docs/ionicons/ || ttf-ioniconsAUR.

Para combinar fontes, defina uma sequência de fallback de fontes no seu arquivo de configuração, separando fontes com , igual a:

~/.config/i3/config
bar {
  ...
  font pango:DejaVu Sans Mono, Icons 8
  ...
}

Em concordância com sintaxe do pango, o tamanho da fonte é especificado apenas uma vez, no final da lista separada por vírgula de famílias de fontes. Definir um tamanho para cada fonte faria com que todos, exceto a última, fossem ignorados.

Adicione ícones às strings de formato em ~/.config/i3status/config usando os números unicode fornecidos nas folhas de dicas acima. O método de entrada varia entre os editores de texto. Por exemplo, para inserir o ícone do "coração" (unicode número f004):

  • em vários editores de texto GUI (por exemplo. gedit, Leafpad) e terminais (por exemplo. GNOME Terminal, xfce4-terminal): Ctrl+Shift+u, f004, Enter
  • no Emacs: C-x, 8, RET, f004, RET
  • no Vim (no modo de inserção): Ctrl+v, uf004
  • no urxvt: enquanto aguarda Ctrl+Shift, digite f004

Emulador de terminal

Por padrão, ao pressionar $mod+Enter lança o i3-sensible-terminal que é um script que chama um terminal. Veja i3-sensible-terminal(1) para os terminais do pedido são chamados.

Para iniciar um terminal da sua escolha, modifique esta linha em ~/.config/i3/config:

bindsym $mod+Return exec i3-sensible-terminal

Como alternativa, defina a variável de ambiente $TERMINAL.

Desativar clique no título

Adicione bindsym button1 nop para não selecionar uma janela quando você clica em seu quadro de título. Útil se o seu layout padrão estiver com guias e você frequentemente perder as guias do i3 em vez de algo em um aplicativo.

Dicas e truques

Ir para a janela aberta

  • quickswitch-i3 — Utilitário Python para alterar rapidamente e localizar janelas no i3
https://github.com/OliverUv/quickswitch-for-i3/ || quickswitch-i3AUR
  • i3-wm-scripts — Procure e pule para janelas com nomes específicos correspondentes a regexp
https://github.com/yiuin/i3-wm-scripts || not packaged? search in AUR
  • rofi — Pesquise e pule para abrir a janela do scratchpad
https://github.com/davatorium/rofi || rofi
  • i3-easyfocus — Focar e selecionar janelas no i3
https://github.com/cornerman/i3-easyfocus || i3-easyfocus-gitAUR
  • wmfocus — Focar e selecionar janelas no i3 e outros gerenciadores de janelas
https://github.com/svenstaro/wmfocus || wmfocus
  • i3-cycle-focus — Fornece uma funcionalidade Alt+Tab para o i3
https://github.com/acrisci/i3ipc-python/blob/master/examples/i3-cycle-focus.py || not packaged? search in AUR
  • i3-winmotion — Focar e selecionar janelas visíveis em i3
https://github.com/iiKoe/i3-winmotion || not packaged? search in AUR

Ir para a janela urgente

Adicione ao ~/.config/i3/config: [1]

bindsym $mod+x [urgent=latest] focus

Salvar e restaurar o layout da janela

A partir da versão 4.8, o i3 pode salvar e restaurar layouts de workspace. Para fazer isso, são necessários os seguintes pacotes: perl-anyevent-i3 e perl-json-xs.

Nota: Esta seção fornece apenas um tutorial rápido sobre como salvar o layout atual da janela de um único workspace e como restaurá-lo para uso posterior. Consulte a documentação oficial para mais detalhes.

Salvar o layout atual da janela de um único workspace

Para salvar o layout atual da janela, siga estas etapas:

  1. Primeiro, execute vários comandos para abrir janelas em um workspace preferido e redimensione-as, se necessário. Certifique-se de anotar cada comando executado para cada janela.
  2. Agora, em um novo workspace, abra um terminal e execute o seguinte:
    $ i3-save-tree --workspace N > ~/.config/i3/workspace_N.json
    onde N é o número do workspace preferido. Isso salvará o layout atual do workspace N no arquivo ~/.config/i3/workspace_N.json.
  3. O arquivo recém-criado precisa ser editado. Isso pode ser feito automaticamente com o seguinte comando:
    $ sed -i 's|^\(\s*\)// "|\1"|g; /^\s*\/\//d' ~/.config/i3/workspace_N.json

Restaurar o layout da janela do workspace

Há duas maneiras de restaurar o layout de workspace: escrevendo um script ou editando ~/.config/i3/config para carregar automaticamente o layout. Nesta seção, apenas o primeiro caso será considerado, consulte a documentação oficial para o segundo caso.

Para restaurar o layout salvo na seção anterior, escreva um arquivo chamado load_layout.sh com o seguinte conteúdo:

  • As linhas de partida:
~/load_layout.sh
#!/bin/sh
i3-msg "workspace M; append_layout ~/.config/i3/workspace_N.json"

onde M é o número do workspace na qual você deseja carregar o layout salvo anteriormente e N é o número do workspace salvo na seção anterior.

  • E os comandos usados na seção anterior para obter as janelas preferidas, mas entre parênteses e com um e comercial acrescentado antes dos últimos parênteses.

Por exemplo, se o layout salvo conter três janelas uxterm:

~/load_layout.sh
#!/bin/sh

# Primeiro adicionamos o layout salvo do workspace N para o workspace M
i3-msg "workspace M; append_layout ~/.config/i3/workspace_N.json"

# E finalmente preenchemos os containers com os programas que eles tinham
(uxterm &)
(uxterm &)
(uxterm &)

Em seguida, defina o arquivo como executável. Finalmente, o layout do workspace N pode ser carregado no workspace M executando:

$ ~/load_layout.sh
Dica: Adicionar bindsym $mod+g exec ~/load_layout.sh ao ~/.config/i3/config e reiniciar o i3 vai atribuir o Mod+g para executação do script acima.
Nota: Se o script acima não funcionar corretamente, consulte a documentação oficial. O swallows na seção ~/.config/i3/workspace_N.json precisa ser editado manualmente.

Contêineres do scratchpad

Por padrão, scratchpads contêm apenas uma única janela. No entanto, contêineres também podem ser transformados em um scratchpad.

Crie um novo contêiner (por exemplo, Mod+Enter), divida-o (Mod+v) e crie outro contêiner. Selecione o contêiner pai (Mod+a), divida na direção oposta (Mod+h) e crie um container novamente.

Foque no primeiro contêiner (selecionando o contêiner pai caso necessário), faça a janela flutuar (Mod+Shift+Space) e mova para o scratchpad (Mod+Shift+-). Agora você pode dividir contêineres conforme preferência.

Nota: Os contêineres não podem ser redimensionados individualmente em janelas flutuantes. Redimensione os contêineres antes de tornar as janelas flutuantes.
Dica: Ao usar apenas aplicativos de terminal, considere um multiplexador como tmux.

Veja também [2] para vários scratchpads.

Proteção de tela e gerenciamento de energia

Com o Gestão de energia#xss-lock você pode registrar um bloqueador de tela para o sua sessão do i3. A opção -time com xautolock bloqueia a tela após um determinado período de tempo:

xautolock -time 10 -locker "i3lock -i 'background_image.png'" &

Um arquivo de serviço do systemd pode ser usado para bloquear a tela antes que o sistema seja enviado para o estado de suspensão ou hibernação. Veja Suspender e hibernar#Units do systemd customizáveis. Observe que o i3lock exige que o tipo de serviço seja forking.

Veja também DPMS.

Outra opção é usar xidlehookAUR com betterlockscreenAUR ou outro protetor de tela. xidlehook é um substituto do xautolock escrito em Rust, mas com algumas funcionalidades adicionais. Incluindo a opção para desabilitar o travamento da tela quando o som está tocando ou quando a tela está no modo tela cheia. A opção --timer é dada em segundos:

xidlehook --not-when-audio --not-when-fullscreen --timer 360 "betterlockscreen -l dim" "" &

Desligar, reiniciar e bloquear a tela

Combinações de teclas para desligar, reiniciar e bloquear a tela podem ser adicionadas ao ~/.config/i3/config. O exemplo abaixo supõe que você tenha polkit instalado para permitir que usuários sem privilégios executem comandos de gerenciamento de energia.

set $Locker i3lock && sleep 1

set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
mode "$mode_system" {
    bindsym l exec --no-startup-id $Locker, mode "default"
    bindsym e exec --no-startup-id i3-msg exit, mode "default"
    bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
    bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
    bindsym r exec --no-startup-id systemctl reboot, mode "default"
    bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"

    # de volta ao normal: Enter ou Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym $mod+Pause mode "$mode_system"

Depois de concluído, você receberá um aviso sempre que pressionar $mod+pause. Para um comportamento mais complexo, use um script separado e consulte-o no modo [3]

Nota:
  • sleep 1 adiciona um pequeno atraso para evitar possíveis condições de corrida com suspensão [4]
  • O argumento -i do systemctl poweroff desliga a máquina mesmo que outros usuários estejam logados (isso requer polkit), ou quando logind presume (erroneamente). [5][link inativo 2024-10-12 ⓘ]

Para uma lista de bloqueadores de tela alternativos, veja List of applications/Security#Screen lockers.

Engolir a janela do terminal

Parecido com o dwm, i3 pode "engolir" (swallow) a janela atual do terminal com a nova janela GUI lançada a partir dele. Isto pode ser feito com o uso do pacote i3-swallow-gitAUR.

Por exemplo, para deixar o mpv engolir o terminal que o abriu:

$ swallow mpv video.mp4

Alternativamente, a ação de enngolir do terminal pode ser simulada usando um container em tabbed ou stacked para ocultar a janela do terminal quando você não estiver usando. No entanto, isso vem com a desvantagem de sempre ter uma lista de janelas na parte superior do contêiner.

Gerenciamento manual de monitores externos

Graças ao xrandr existem várias maneiras de gerenciar facilmente os monitores dos sistemas. O exemplo abaixo o integra no arquivo de configuração do i3, e se comporta como na seção Gerenciamento de energia acima.

Aqui, um laptop com saídas VGA e HDMI usará uma seleção de menu para ativar/desativar:

## Gerenciamento manual de monitores externos
# Defina os atalhos e o que eles fazem
set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF
mode "$mode_display" {
    bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default"
    bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default"
    bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default"
    bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default"

    # de volta ao normal: Enter ou Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
# Declare aqui o atalho para exibir o menu de seleção de exibição
bindsym $mod+x mode "$mode_display"

Qualquer janela que ainda esteja aberta em uma tela desligada retornará automaticamente à tela ativa restante.

A maneira mais simples de determinar os nomes dos seus dispositivos é conectar o dispositivo que você deseja usar e executar:

$ xrandr --query

que produzirá os dispositivos reconhecidos disponíveis e seus nomes no sistema para definir seu arquivo de configuração adequadamente.

Consulte a página página de manual do xrandr para obter a lista completa de opções disponíveis, o userguide do i3 e/ou o FAQ do i3 no reddit para mais informações.

Navegação na web com guias ou empilhadas

Alguns navegadores da Web intencionalmente não implementam guias, pois o gerenciamento de guias é considerado uma tarefa do gerenciador de janelas, não uma tarefa do navegador.

Para deixar o i3 gerenciar seu navegador da web sem guias, neste exemplo para o uzbl, adicione a seguinte linha ao seu ~/.config/i3/config

for_window [class="Uzbl-core"] focus child, layout stacking, focus

Isso é para navegação na Web empilhada, o que significa que as janelas serão mostradas verticalmente. A vantagem sobre a navegação com guias é que os títulos das janelas são totalmente visíveis, mesmo que muitas janelas do navegador estejam abertas.

Se preferir a navegação com guias, com as janelas na direção horizontal ('tabs'), use

for_window [class="Uzbl-core"] focus child, layout tabbed, focus

Variáveis de workspaces

Como os workspaces são definidos várias vezes no i3, atribuir variáveis de workspaces pode ser útil. Por exemplo:

set $WS1 term
set $WS2 web
set $WS3 misc
set $WS4 media
set $WS5 code

Em seguida, substitua os nomes do workspace por suas variáveis correspondentes:

bindsym $mod+1          workspace $WS1
...
bindsym $mod+Shift+1    move container to workspace $WS1

Veja Changing named workspaces para mais informações.

Manuseio correto de diálogos flutuantes

Enquanto o diálogo deve abrir no modo flutuante por padrão [6], muitos ainda abrem no modo lado a lado. Para alterar esse comportamento, verifique a caixa de diálogo WM_WINDOW_ROLE com xorg-xprop e adicione as regras corretas para ~/.i3/config (usando pcre syntax):

for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable

Você também pode usar regras de título e expressões regulares:

for_window [title="Preferences$"] floating enable

ou WM_CLASS:

for_window [class="(?i)mplayer"] floating enable

Velocidade de download/upload da rede na barra de status

Você pode adaptar esse script da upstream. Para isso,

  • renomeie as duas placas de rede de acordo com o seu sistema (use ip addr)
  • encontre-os em /sys/devices substitua-os adequadamente:
$ find /sys/devices -name network_interface
Dica: Use /sys/class/net/interface/statistics/ não depender da localização do PCI.

Agora, basta salvar o script em um local adequado (por exemplo, ~/.config/i3) e aponte seu programa de status para ele.

Alternar automaticamente a orientação de divisão horizontal/vertical da janela

O pacote autotiling pode ser usado para alternar automaticamente a orientação de janela horizontal/vertical, resultando em um comportamento semelhante ao lado a lado em espiral do bspwm. Após a instalação, adicione o seguinte ao seu ~/.config/i3/config e recarregue o i3.

exec_always --no-startup-id autotiling

Solução de problemas

Geral

Em muitos casos, os bugs são corrigidos nas versões de desenvolvimento i3-gitAUR e i3status-gitAUR, e o upstream solicitará a reprodução de erros nesta versão. [7] Veja também Debugging/Getting traces#Compilation options.

Nova instalação exibe apenas texto ilegível

Certifique-se de que você instalou um conjunto de fontes TrueType após a instalação.

Os botões na barra de mensagens do i3 não funcionam

Botões como "Edit config" no i3-nagbar chamam o i3-sensible-terminal, então verifique se o seu emulador de terminal é reconhecido pelo i3.

Linha defeituosa envolve no terminal lado a lado

O i3 v4.3 e versões posteriores ignoram sugestões de incremento de tamanho para janelas lado a lado [8]. Isso pode fazer com que terminais enrolem as linhas prematuramente, entre outros problemas. Como uma solução alternativa, deixe a janela incorreta flutuando antes de colocá-la novamente em mosaico.

O cursor do mouse permanece no modo de espera

Ao iniciar um script ou aplicativo que não suporta notificações de inicialização, o cursor do mouse permanece no modo ocupado/relógio/relógio por 60 segundos.

Para resolver isso para um aplicativo específico, use o parâmetro --no-startup-id, por exemplo:

exec --no-startup-id ~/script
bindsym $mod+d exec --no-startup-id dmenu_run

Para desativar esta animação globalmente, veja Temas de cursor#Crie links para cursores faltando.

Atalhos que não respondem

Algumas ferramentas como o scrot podem não funcionar quando usados com um atalho comum (executado após pressionar a tecla). Nesses casos, execute comandos após o soltar a tecla com o argumento --release [9]:

bindsym --release Print exec --no-startup-id scrot
bindsym --release Shift+Print exec --no-startup-id scrot -s

Tearing

O i3 não implementa adequadamente o buffer duplo [10] portanto, tearing ou tremulações podem ocorrer. Veja picom.

Ícones invisíveis na barra de status

A diretiva tray_output primary pode exigir a configuração de uma saída primária com o xrandr, especificando a saída explicitamente ou simplesmente removendo esta diretiva. [11] Veja xrandr (Português) para detalhes. A configuração padrão criada pelo i3-config-wizard não adiciona mais essa diretiva à configuração do i3 4.12.

Workspace padrão para o Spotify

Para atribuir um workspace padrão para janelas do spotify você não pode usar o comando padrão assign, você deve usar um comando for_window, como

~/.config/i3/config
...
for_window [class="Spotify"] move container to workspace $ws10

Para garantir que for_window não mova a janela se já estiver em $ws10, pode-se usar move --no-auto-back-and-forth.

Veja também

Fóruns do Arch Linux

Screencasts