Sway (Português)

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
Este artigo ou esta seção precisa de
tradução
.
Notas:
Este artigo está sendo traduzido. (Discuta em
Talk:Sway (Português)#
)
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-git
AUR
e
sway-git
AUR
. É 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
azote
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
wob
(alternativamente
wob-git
AUR
), que oferece um subconjunto da funcionalidade da popular ferramenta do X
xob
AUR
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
swaynagmode
AUR
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-git
AUR
[
link quebrado
: package not found]
é 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-hg
AUR
é 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
[
link quebrado
: replaced by
wlroots0.18
]
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