Sway (Português) - ArchWiki

Jump to content
From ArchWiki

A tradução deste artigo ou desta seção não reflete o texto original.

Motivo: Many changes have taken place in the English page since last translation. (Discuta na Talk:Sway (Português)#)
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
    bindsym XF86Search exec $menu

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-desktop 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, Optimus and AMD.

#### 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 | grep -F "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 Desktop entries#Modify environment variables.

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)

Hidden category:

- Pages or sections flagged with Template:Bad translation (Português)