# Sway (Português)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de Sway. Data da última tradução: 2020-09-13. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Artigos relacionados

- Gerenciador de janela

sway é um compositor para Wayland feito para ser totalmente compatível com o i3. De acordo com o site oficial:

  Sway é um compositor dinâmico para Wayland e possui configuração compatível com o gerenciador de janelas i3 para X11. Funciona com sua existente configuração do i3 e suporta a maioria de suas funcionalidades, além de extras.

## Instalação

sway pode ser instalado com o pacote sway. A versão de desenvolvimento pode ser instalada usando wlroots-gitAUR e sway-gitAUR. É aconselhável sempre atualizar o wlroots quando você atualiza o sway, devido a forte dependência.

Você pode instalar também swaylock e swayidle para bloqueio de tela e gerenciador de inatividade.

O lançador de aplicativos padrão é o dmenu e o terminal padrão é o alacritty. Antes de executar sway é recomendado instalar ambos ou definir um novo lançador e terminal na configuração.

## Iniciando

### Manualmente

Para iniciar o Sway, simplesmente execute `sway` no console do Linux.

### Por um gerenciador de login

Nota: Sway não suporta gerenciadores de login oficialmente.[1]

A sessão do sway está localizada em `/usr/share/wayland-sessions/sway.desktop`, ela é automaticamente reconhecida por qualquer gerenciador de login moderno como GDM e SDDM.

É também possível rodar sway como um serviço de usuário do systemd através do gerenciador de login.

Você também pode usar gerenciador de login somente texto, veja Gerenciadores de exibição#Console.

## Configuração

Se você já usa o i3, então copie sua configuração para `~/.config/sway/config` e deve funcionar sem problemas. Caso contrário, copie o arquivo de exemplo da configuração para `~/.config/sway/config`. Ele está localizado em `/etc/sway/config`, a menos que a flag `DFALLBACK_CONFIG_DIR` tenha sido configurada. Veja sway(5) para informações sobre a configuração.

### Teclado

Por padrão, sway inicia com o teclado US QWERTY. Para configuração por `input`:

    ~/.config/sway/config

    input * {
        xkb_layout "us,de,ru"
        xkb_variant "colemak,,typewriter"
        xkb_options "grp:win_space_toggle"
    }

    input <identificador> xkb_model "pc101"

Mais detalhes estão disponíveis em xkeyboard-config(7) e sway-input(5).

O teclado pode também ser configurado usando variáveis de ambiente (`XKB_DEFAULT_LAYOUT`, `XKB_DEFAULT_VARIANT`, etc.) quando iniciar o `sway`, suas opções de configuração tem precedência sobre váriaveis de ambiente.

### Atraso e taxa de digitação

Para mudar o atraso e taxa de digitação você pode adicionar as seguintes linhas para sua seção `input`:

    ~/.config/sway/config

    input <identifier> repeat_delay 300
    input <identifier> repeat_rate 30

### Barra de status

sway vem com uma barra de status padrão na forma de swaybar que é executada em um ambiente Wayland puro. swaybar pode chamar um script ou outro programa para mostrar informações na barra de status. Veja sway-bar(5) e swaybar-protocol(7) para detalhes.

Instalar o programa i3status é uma maneira simples de conseguir uma barra de status prática e padrão sob o Wayland. Tudo que se tem a fazer é adicionar o seguinte trecho no final da sua configuração do sway:

    ~/.config/sway/config

    bar {
        status_command i3status
    }

Se você quer que o i3status tenha saída colorida, você pode ajustar da seguinte maneira a configuração dele:

    ~/.config/i3status/config

    general {
        colors = true
        interval = 5
    }

Em ambos os exemplos, os arquivos de configuração instalados a nível de sistema foram copiados para o diretório do usuário e então modificados.

Dica: waybar é uma alternativa a barra de status incluída no sway (swaybar).

### Papel de parede

Desde a versão 1.1.1 o gerenciamento de papel de parede do projeto SwayWM foi movido para swaybg, que é necessário para executar o comando `output`.

Esta linha, que pode ser adicionada ao final da sua configuração do sway, define o papel de parede em todas as telas (`output` seleciona todos com nome `"*"`):

    ~/.config/sway/config

    output "*" bg /caminho/para/arquivo fill

Você tem que mudar o nome do arquivo e caminho de acordo com seu papel de parede.

Você pode usar o azoteAUR como um frontend GTK3 para swaybg.

Cores sólidas podem ser definidas como a seguir:

    output * bg #000000 solid_color

### Dispositivos de entrada

É possível realizar a configuração de específicos dispositivos de entrada. Por exemplo para habilitar toque-para-clicar e deslize natural para um touchpad, adicione um bloco de `input`:

    ~/.config/sway/config

    input "2:14:ETPS/2_Elantech_Touchpad" {
        tap enabled
        natural_scroll enabled
    }

O identificador do dispositivo pode ser consultado com:

    $ swaymsg -t get_inputs

A saída do comando, algumas vezes tem um "\" para escapar símbolos como "/" (por exemplo, `"2:14:ETPS\/2_Elantech_Touchpad"`) e isto precisa ser removido.

Mais documentação e opções como perfis de aceleração podem ser encontradas em sway-input(5).

### HiDPI

Configure o fator de escala das suas telas com o comando `output` em seu arquivo de configuração. O fator de escala pode ser fracionário, mas é normalmente 2 para telas HiDPI.

    output <nome> scale <fator>

Você pode encontrar o nome da sua tela com o seguinte comando:

    $ swaymsg -t get_outputs

### Atalhos customizados

Teclas especiais no seu teclado podem ser usadas para executar comandos, por exemplo para controlar o volume, o brilho do monitor ou tocadores de mídias:

    ~/.config/sway/config

    bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
    bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
    bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
    bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
    bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
    bindsym XF86MonBrightnessUp exec brightnessctl set +5%
    bindsym XF86AudioPlay exec playerctl play-pause
    bindsym XF86AudioNext exec playerctl next
    bindsym XF86AudioPrev exec playerctl previous

Veja PulseAudio#Keyboard volume control, Advanced Linux Sound Architecture#Keyboard volume control, Backlight#Backlight utilities e MPRIS para detalhes e utilitários alternativos.

Para permitir que um atalho seja executado enquanto a tela está bloqueada, adicione o parâmetro `--locked` para o bindsym.

    bindsym --locked XF86AudioPlay exec playerctl play-pause

#### Barras Indicadoras gráficas

É geralmente desejável ter um nível atual de alguma configuração com valor-porcentagem, como brilho e volume, sendo indicada por uma barra gráfica. Uma boa opção que traz essa facilidade no Sway é o wobAUR (alternativamente wob-gitAUR), que oferece um subconjunto da funcionalidade da popular ferramenta do X xobAUR mas como um utilitário nativo do Wayland implementando o protocolo layer-shell. Veja o site do projeto para exemplos de uso.

### Janelas flutuantes

Para janelas flutuantes ou atribuição de caracteristicas, os seguintes atributos podem estar disponíveis: `app_id`, `class`, `instance` e `title`. O seguinte comando irá listar as propriedades de todas as janelas abertas.

    $ swaymsg -t get_tree

Para conseguir o `app_id` de todas as janelas abertas, use:

    $ swaymsg -t get_tree | grep "app_id"

Para conseguir o `app_id` da janela atualmente focada, use:

    $ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'

Se o `app_id` for nulo para algumas janelas, você pode usar os atributos `class` e/ou o `instance`. Com isso você pode criar regras para seus programas gráficos. Você pode pesquisar a saída e criar regras polidas para suas janelas.

    ~/.config/sway/config

    for_window [app_id="galculator"] floating enable
    assign [class="firefox"] -> 3
    assign [class="^Urxvt$" instance="^htop$"] -> 9

É similar ao uso do xorg-xprop para descobrir o `class` ou `wm_name` no X11.

### Xresources

Copie `~/.Xresources` para `~/.Xdefaults` para usá-lo no Sway.

### XWayland

Se um programa falhar na execução com a mensagem de erro "cannot open display," provavelmente o programa que você está usando depende do X11. Para usar a camada de compatibilidade XWayland para executar programas que dependem do X11, é necessário instalar o pacote xorg-xwayland.

Se você quer desabilitar XWayland totalmente e executar uma sessão Wayland "pura", desinstale o pacote xorg-xwayland e defina a seguinte opção na configuração:

    ~/.config/sway/config

    xwayland disable

Nota: Alguns programas precisam de variáveis de ambiente especiais ou opções de configuração para rodar nativamente em Wayland, e outros programas (incluindo a maioria das aplicações proprietárias) não suportam Wayland. Atualmente é recomendado manter o XWayland ativado para que aplicações antigas possam ser usadas.

## Dicas e truques

### Iniciar automaticamente após login

Para rodar sway no tty1 ao logar com teclado padrão US, edite:

    ~/.bash_profile

    if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
      XKB_DEFAULT_LAYOUT=us exec sway
    fi

Para rodar sway no tty1 ao logar com teclado padrão BR, edite:

    ~/.bash_profile

    if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
      XKB_DEFAULT_LAYOUT=br exec sway
    fi

### Habilitar CapsLock/NumLock

Para habilitar o capslock e/ou numlock adicione as seguintes linhas no seu arquivo de configuração do sway:

    ~/.config/sway/config

    input * xkb_capslock enable
    input * xkb_numlock enable

### Layout atual do teclado

O layout do teclado atual pode ser descoberto com o comando a seguir, onde `identificador_kbd` precisa ser trocado com o identificador do seu teclado:

    $ swaymsg -t get_inputs | jq -r '.[] | select(.identifier == "identificador_kbd") | .xkb_active_layout_name'

### Alternar luz de fundo

Para desligar (e ligar) suas telas com uma tecla (por exemplo, `Pause`), crie um atalho na sua `config` do Sway para o seguinte script:

    #!/bin/sh
    read lcd < /tmp/lcd
        if [ "$lcd" -eq "0" ]; then
            swaymsg "output * dpms on"
            echo 1 > /tmp/lcd
        else
            swaymsg "output * dpms off"
            echo 0 > /tmp/lcd
        fi

### Captura e compartilhamento de tela

Veja Screen capture#Wayland.

### Controle swaynag com o teclado

Swaynag, o programa de aviso/prompt padrão que vem no sway, somente suporta interação do usuário com o mouse. Um programa auxiliar como swaynagmodeAUR pode ser usado para habilitar interação via atalhos do teclado.

Swaynagmode funciona lançando swaynag, e então escutando sinais que podem acionar ações como selecionar o próximo botão, fechar o prompt, ou aceitar o botão selecionado. Estes sinais são enviados ao lançar outra instância do script swaynagmode com controle de argumento, como `swaynagmode --select right` ou `swaynagmode --confirm`.

Swaynagmode por padrão aciona o modo do sway `nag` ao inicializar, seguido por `default` na saída. Isto facilita a definição de atalhos na sua configuração do sway:

    ~/.config/sway/config

    set $nag exec swaynagmode
    mode "nag" {
      bindsym {
        Ctrl+d    mode "default"

        Ctrl+c    $nag --exit
        q         $nag --exit
        Escape    $nag --exit

        Return    $nag --confirm

        Tab       $nag --select prev
        Shift+Tab $nag --select next

        Left      $nag --select next
        Right     $nag --select prev

        Up        $nag --select next
        Down      $nag --select prev
      }
    }

Note que, a partir da versão do sway 1.2, diferencia-se maiúsculo/minúsculo em nomes de modos.

Você pode configurar o sway para usar swaynagmode com o comando de configuração `swaynag_command swaynagmode`.

### Mudar o tema e tamanho do cursor

Para definir temas de cursor e tamanho:

    ~/.config/sway/config

    seat seat0 xcursor_theme tema_do_cursor tamanho_do_cursor

Onde `tema_do_cursor` pode ser definido ou trocado por um valor específico como `default`, `Adwaita` ou `Simple-and-Soft`, e `tamanho_do_cursor` um valor como `48`.

Você pode inspecionar os seus valores com `echo $XCURSOR_SIZE` e `echo $XCURSOR_THEME`.

Você precisa reiniciar o programa para ver as mudanças.

Nota: Wayland usa cursores do programa cliente. É possível que programas não usem os valores do `$XCURSOR_SIZE` e `$XCURSOR_THEME`.

## Solução de problemas

### Lançadores de aplicativos

i3-dmenu-desktop, dmenu, e rofi todos funcionam relativamente bem no Sway, no entanto, rodam sob XWayland e sofrem do mesmo problema, onde eles podem não responder se o cursor é movido para uma janela nativa do Wayland. O motivo para isso acontecer é que clientes/janelas do Wayland não tem acesso a dispositivos de entrada a menos que eles possuam foco na tela. O servidor XWayland é um cliente para o compositor Wayland, então um de seus clientes deve ter foco para ter acesso a entrada do usuario. No entanto, uma vez que um de seus clientes tem foco, pode captar as entradas e fazê-la disponível para todos os clientes XWayland através do protocolo X11. Mover o cursor para uma janela XWayland e pressionar a tecla Escape deve resolver, algumas vezes rodar `pkill` resolve também.

bemenu é o substituto nativo do dmenu para Wayland que pode opcionalmente ser combinado com j4-dmenu-desktopAUR para prover um lançador de arquivos desktop nativo do Wayland (como i3-dmenu-desktop faz):

    j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'

Você pode precisar configurar a variavel de ambiente `BEMENU_BACKEND` para "wayland" se você escolhe desabilitar o XWayland.

Você pode combinar seu terminal flutuante com fzf como discutido em uma issue do GitHub.

O binário `krunner` provido pelo pacote plasma-workspace também serve como um lançador, oferece suporte a XWayland e Wayland nativo.

rofi-lbonn-wayland-gitAUR é um fork do rofi que funciona no Wayland e também tem uma opção `-x11` caso você precise executá-lo na sessão X11.

wofi-hgAUR é um lançador de aplicativos, que provê as mesmas funcionalidades do rofi e roda no Wayland. wofi não tem algumas funcionalidades do rofi como modo SSH e um modo de troca de janelas. É baseado na biblioteca wlroots e usa GTK3 para renderização. Funciona bem com o sway.

### Virtualização

Sway funciona no VirtualBox e VMware ESXi.

#### Não consegue iniciar o Sway pelo tty

Para ESXi, você precisa habilitar o suporte a 3D em Hardware Configuration > Video card settings. Veja também VMware#Enable 3D graphics on Intel and Optimus.

#### Cursor invisível

Quando usar o controlador de gráficos VMSVGA, o cursor vai ficar invisível. Para corrigir isto declare a seguinte váriavel de ambiente (como discutido em [2]):

    $ export WLR_NO_HARDWARE_CURSORS=1

### Sway socket não detectado

Usando um argumento do `swaymsg`, como `swaymsg -t get_outputs`, irá algumas vezes retornar a mensagem:

    sway socket not detected.
    ERROR: Unable to connect to

Quando roda dentro de um terminal multiplex (como gnu screen ou tmux). Isto significa que `swaymsg` não pôde se conectar ao socket provido pelo `SWAYSOCK`.

Para ver qual o atual valor do `SWAYSOCK`, digite:

    $ env | fgrep SWAYSOCK
    SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock

Para resolver este problema, você pode tentar definir o socket baseado no atual processo do sway:

    $ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock

Para evitar este erro, rode o comando fora de um multiplex.

### Não foi possível pegar o caminho do socket

Solicitar mensagens do `swaymsg -t` no tty pode retornar a seguinte mensagem:

    Unable to retrieve socket path

A variável de ambiente `SWAYSOCK` é configurada depois do lançamento do Sway, então uma resolução para este erro é solicitar `swaymsg -t [message]` dentro de um terminal no Sway.

### Atalhos e formato do teclado

Por padrão, se voce esta usando mais do que um formato de teclado, exemplo `input * xkb_layout "us,ru"`, atalhos podem se tornar quebrados quando você troca para um teclado secundário.

Graças ao https://github.com/swaywm/sway/pull/3058, tudo que você precisa fazer é adicionar `--to-code` a linhas do `bindsym` como esta:

    bindsym --to-code {
      $mod+$left focus left
      $mod+$down focus down
      $mod+$up focus up
      $mod+$right focus right
    }

### Programas java

Alguns programas baseados no Java irão mostrar uma tela branca quando abertos, por exemplo qualquer editor Intellij. Para solucionar isto, o programa pode ser iniciado com a variável de ambiente `_JAVA_AWT_WM_NONREPARENTING` configurada para 1.

Se você rodar o programa por um lançador como rofi ou dmenu, você pode querer modificar a entrada desktop do aplicativo como descrito em Entradas de desktop#Modificar variáveis de ambiente.

Alguns problemas com aplicações Java foram concertadas no OpenJDK 11 e Sway 1.5. No entanto, certas aplicações precisam de configuração adicional para usar as versões mais novas do OpenJDK, no caso das IDEs JetBrains você deve definir `STUDIO_JDK=/usr/lib/jvm/java-11-openjdk-amd64/`. [3]

### Rolar na borda

Se usar a roda de rolagem do mouse na borda de um aplicativo, você poderá usar `border none` para o `app_id` (por exemplo, Firefox).

## Veja também

- Projeto no GitHub
- Wiki oficial do Sway
- Página git no sr.ht
- Site
- Anunciando o lançamento do sway 1.0

Categories:

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