Table of Contents

Layout do teclado no i3

Gerenciador de janelas i3

O i3wm não vem com o Slackware por padrão. Se você deseja instalar este gerenciador de janelas em estilo “mosaico” e extremamente configurável, visite SlackBuilds. Instale também o i3status, que permitirá que você exiba todos os tipos de informações úteis em um painel.

Selecionando um layout de teclado

O i3 não vem com nenhum mecanismo de configuração de teclado embutido. O comando setxkbmap, no entanto, faz o trabalho bem. Se você configurou o layout do teclado em todo o sistema e não precisa alternar entre os layouts, não precisa fazer nada. Se desejar definir o layout apenas para i3, você pode editar seu arquivo .xinitrc . Se você muda um ambiente gráfico frequentemente e não quer que o mapa de teclado seja sobrescrito, você precisa modificar /etc/X11/xinit/xinitrc.i3 .

# nano /etc/X11/xinit/xinitrc.i3

Pouco antes da seção Start i3, você pode especificar o mapa de teclado desejado (por exemplo, gb):

setxkbmap gb

Salve o arquivo e execute (como um usuário padrão) xwmconfig e escolha i3 para copiar o arquivo xinitrc para seu diretório inicial. Se você estiver no X, pode ser necessário reiniciá-lo.

Mudando o layout do teclado

Se você precisar alternar entre layouts diferentes, poderá configurar alguns atalhos de teclado para executar essas funções.

1. Abra o arquivo de configuração i3

 nano ~/.i3/config 

2. Adicione o seguinte (é apenas um exemplo):

Atribua Mod4 à tecla da Microsoft (eu uso muito a tecla da Microsoft para evitar conflitos com as combinações de teclas padrão i3):

set $ms Mod4
bindsym $ms+d exec setxkbmap de
bindsym $ms+g exec setxkbmap gb

Agora MS+D e MS+G me permitem alternar entre os layouts UK (inglês britânico) a GE (alemão).

Se você costuma alternar entre dois layouts de teclado e não precisa exibir o layout atual na barra de status, também pode colocar o seguinte código em seu arquivo ~/.i3 /config:
setxkbmap -layout de,gb
setxkbmap -option 'grp:ctrl_alt_toggle'

Isso permitirá que você alterne entre os dois layouts usando Ctrl + Alt.

Exibindo o Layout Ativo no Painel

O i3status vem com várias funções integradas. Infelizmente, o layout atual do teclado não é um deles. Por esse motivo, você precisa escrever um pequeno script para exibir o layout no painel. A invocação i3status padrão é a seguinte:

bar {
    status_command i3status
}

Aqui, toda a funcionalidade embutida é configurada em ~/.i3status.conf. Queremos adicionar mais algumas funcionalidades e alterando a invocação para:

bar {
    status_command /path/to/your/i3script.sh
}

O conteúdo do arquivo i3script.sh

#!/bin/bash

# shell scipt to prepend i3status with more stuff

i3status --config ~/.i3status.conf | while :
do
        read line
        LG=$(setxkbmap -query | awk '/layout/{print $2}') 
        echo "LG: $LG | $line" || exit 1
done

O exemplo acima exibirá o layout do teclado atual antes das funções padrão do i3status. Obviamente, você pode adicionar muito mais a i3status.

Usando o formato de saída JSON (cores)

O método acima usa o modo de saída mais simples (somente texto). Embora seja mais fácil de usar, não tem suporte para cores. Para isso, você precisará do JSON.

Adicione a seguinte propriedade em seu .i3status.conf

general {
    output_format = i3bar
}

E substitua seu i3script.sh pelo código abaixo. Ele exibe seu idioma padrão em verde (no exemplo, br) e qualquer outro idioma em vermelho.

#!/bin/bash

i3status --config ~/.i3status.conf | while :
do
    read line
    LG=$(setxkbmap -query | awk '/layout/{print $2}')
    if [ $LG == "br" ]
    then
        dat="[{ \"full_text\": \"LANG: $LG\", \"color\":\"#009E00\" },"
    else
        dat="[{ \"full_text\": \"LANG: $LG\", \"color\":\"#C60101\" },"
    fi
    echo "${line/[/$dat}" || exit 1
done

Fontes