i3 (Português) - ArchWiki

Jump to content

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

Artigos relacionados

- Comparação de gerenciadores de janela tiling
- Gerenciador de janela

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: O pacote i3-wm entra em conflito com o pacote i3-gaps (um fork do i3 com gaps e outros recursos) e por padrão i3-gaps será instalado.

## 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 i3 reference card e Using 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 Configuring 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` em `~/.config/i3/config` arquivo. Por exemplo:

    exec terminator

Como alternativa, 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 Configuring 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

#### 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

Para suporte a ícones na barra de título instale i3-wm-iconpatchAUR. Você também pode usar um conjunto de fontes que suporta ícones.

- 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.

  http://kageurufu.net/icons.pdf || ttf-font-iconsAUR.

- ttf-ionicons — A fonte de ícone premium para o Ionic Framework.

  https://ionicframework.com/docs/ionicons/ || ttf-ionicons.

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

### 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 dos repositórios oficiais.

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, no entanto, isso pode ser feito com os seguintes comandos:

       $ 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/bash
    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/bash

    # 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.

E, 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 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 Power management#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 Power management#Suspend/resume service files. 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]

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:

    $ i3-swallow mpv video.mp4

### 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 comporte como a 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 autotilingAUR 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 Depuração - Obtendo Rastros#Geral.

### 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 `--no-startup-id` parâmetro, por exemplo:

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

Para desativar esta animação globalmente, veja Cursor themes#Create links to missing cursors.

### 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 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

- Site oficial
- Funtoo:I3 Tiling Window Manager
- Código-fonte do i3
- i3-extras - Coleção de scripts e patches
- i3ipc-glib - Uma bibilioteca para extensões do i3
- i3ipc-ruby - Uma biblioteca melhorada para extensões do i3 em Ruby
- j4tools - Ferramentas não oficiais projetadas para funcionar com i3

Fóruns do Arch Linux

- The i3 thread - Uma discussão geral sobre o i3
- i3 desktop screenshots and config sharing

Screencasts

- i3 window manager v4.1 screencast
- i3 window manager v4.1X screencasts

Categories:

- Tiling WMs (Português)
- Dynamic WMs (Português)

Hidden category:

- Pages with missing package links