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-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 . 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 no console do Linux.
Por um gerenciador de login
A sessão do sway está localizada em , 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 tenha sido configurada. Veja para informações sobre a configuração.
Teclado
Por padrão, sway inicia com o teclado US QWERTY. Para configuração por :
Mais detalhes estão disponíveis em e .
O teclado pode também ser configurado usando variáveis de ambiente (, , etc.) quando iniciar o , 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 :
~/.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 para detalhes.
Instalar o programa é 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:
Se você quer que o i3status tenha saída colorida, você pode ajustar da seguinte maneira a configuração dele:
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.
Papel de parede
Desde a versão 1.1.1 o gerenciamento de papel de parede do projeto SwayWM foi movido para , que é necessário para executar o comando .
Esta linha, que pode ser adicionada ao final da sua configuração do sway, define o papel de parede em todas as telas ( 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 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 :
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, ) e isto precisa ser removido.
Mais documentação e opções como perfis de aceleração podem ser encontradas em .
HiDPI
Configure o fator de escala das suas telas com o comando 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:
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 (alternativamente ), que oferece um subconjunto da funcionalidade da popular ferramenta do X 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: , , instance
e . O seguinte comando irá listar as propriedades de todas as janelas abertas.
$ swaymsg -t get_tree
Para conseguir o de todas as janelas abertas, use:
$ swaymsg -t get_tree | grep "app_id"
Para conseguir o da janela atualmente focada, use:
$ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'
Se o for nulo para algumas janelas, você pode usar os atributos 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.
É similar ao uso do para descobrir o ou no X11.
Xresources
Copie para 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 .
Se você quer desabilitar XWayland totalmente e executar uma sessão Wayland "pura", desinstale o pacote e defina a seguinte opção na configuração:
Dicas e truques
Iniciar automaticamente após login
Para rodar sway no tty1 ao logar com teclado padrão US, edite:
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:
Layout atual do teclado
O layout do teclado atual pode ser descoberto com o comando a seguir, onde 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, ), crie um atalho na sua 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 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 ou .
Swaynagmode por padrão aciona o modo do sway nag
ao inicializar, seguido por na saída. Isto facilita a definição de atalhos na sua configuração do sway:
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:
Onde pode ser definido ou trocado por um valor específico como , ou , e um valor como .
Você pode inspecionar os seus valores com echo $XCURSOR_SIZE
e .
Você precisa reiniciar o programa para ver as mudanças.
Solução de problemas
Lançadores de aplicativos
i3-dmenu-desktop, dmenu, e 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 resolve também.
é 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 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 provido pelo pacote também serve como um lançador, oferece suporte a XWayland e Wayland nativo.
rofi-lbonn-wayland-gitAUR é um fork do que funciona no Wayland e também tem uma opção caso você precise executá-lo na sessão X11.
é 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 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 ):
$ export WLR_NO_HARDWARE_CURSORS=1
Sway socket não detectado
Usando um argumento do , como , 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 não pôde se conectar ao socket provido pelo .
Para ver qual o atual valor do , digite:
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 no tty pode retornar a seguinte mensagem:
Unable to retrieve socket path
A variável de ambiente é configurada depois do lançamento do Sway, então uma resolução para este erro é solicitar 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 a linhas do bindsym
como esta:
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 configurada para 1.
Se você rodar o programa por um lançador como 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 .
Rolar na borda
Se usar a roda de rolagem do mouse na borda de um aplicativo, você poderá usar para o (por exemplo, Firefox).