Não consigo mudar o leiaute do teclado de "en" para "br-abnt2" no arch Linux com wayland

Eu transicionei do mint para o arch para testar o hyprland, e acabei baixando também gnome e kde caso nn me adaptasse, no setup do arch-install escolhi o leiaute do teclado “us”, pois era esse tipo de teclado que eu estava usando.

Acabei trocando para um teclado “br-abnt2”, e olhando na archwiki segui o tutorial da pagina " Linux console/Keyboard configuration" como mudar de leiaute. usando “localectl set-keymap --no-convert br-abnt2” troquei o leiaute e o status mudou para:

System Locale: LANG=en_US.UTF-8
VC Keymap: br-abnt2
X11 Layout: us
X11 Model: pc105+inet
X11 Options: terminate:ctrl_alt_bksp

mas nada mudou, procurei um pouco mais na archwiki e achei a pagina “Xorg/Keyboard configuration” (essa pagina nn tem tradução para português), lancei o comando de status “setxkbmap -print -verbose 10” e a resposta: “WARNING: Running setxkbmap against an Xwayland server”

Eu estava usando plasma então troquei para o GNOME (Xorg) e lancei o comando novamente e funcionou, então lancei o comando para alterar o comando “setxkbmap -model abnt2 -layout br -variant abnt2” E funcionou imediatamente no terminal, lancei o comando de status denovo e de veio a resposta de br-abnt2 correta. Entretanto quando mudei de novo para o plasma novamente estava com o leiaute “us”, imaginei que poderia ser por alguma configuracao do plasma ou por conta do wayland, então mudei para o hyprland para testar e realmente essa “solução” so funciona no xorg e no momento que eu dou log-out ela volta pro leiaute us.

então finalmente minha pergunta, como eu altero a leiaute do teclado geral no sistema para todas as interface, protocolos, e servidor grafico tanto wayland quanto xorg?

O Wayland, por ser “apenas” um protocolo de comunicação entre servidores gráficos e não um servidor gráfico por si só, não implementa configurações do teclado, essas configurações ficam a critério paralelo do protocolo. Ou seja, cabe à implementação resolver os casos de input. O xorg é diferente, por ser menos modular e oferecer mais funções que o servidor gráfico, oferece opções de input próprias. Isso traz benefícios e malefícios (um, do topo da minha cabeça, é que todas as aplicações podem “escutar” o input do usuário, mesmo com a janela minimizada, por exemplo. Coisa que não acontece no protocolo Wayland).

O localectl é uma ferramenta do systemd usada para definir configurações regionais do sistema, incluindo layout de teclado. Ele é útil para ajustar o mapa de teclas no console virtual (TTY) e também para sessões Xorg, mas não afeta diretamente ambientes Wayland, já que, nesse caso, o compositor é quem decide como tratar o input.

Portanto, tratando-se de Wayland, não existe uma configuração única a nível de sistema que seja aplicada automaticamente a todos os ambientes gráficos. Essa configuração fica a critério do ambiente de desktop ou da implementação (no caso o Hyprland) e, portanto, basta editar o arquivo hyprland.conf, presente no diretório ~/.config/hypr/.

A linha que se deve editar é a que inicia com input, e alterar kb_layout = us para kb_layout = br, além de kb_variant para kb_variant = abnt2.

Segue minha configuração para ilustrar:

input {
    kb_layout = br
    kb_variant = abnt2
    kb_model =
    kb_options = 
    kb_rules =

    follow_mouse = 1
    numlock_by_default = true
    touchpad {
        natural_scroll = no
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

Deve funcionar por aí. Abraço.

  • Instale o dconf-editor se você ainda não o tiver: sudo apt install dconf-editor.
  • Abra o dconf-editor: dconf-editor.
  • Navegue até org.gnome.desktop.input-sources.
  • Edite o valor de sources adicionando [('xkb', 'br'), ('xkb', 'br+abnt2')].

Boa sorte