Sway (Español)

From ArchWiki
Esta traducción de Sway fue revisada el 2024-06-03. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Sway (proveniente de S'irCmpwn's Way'land compositor [1]) es un compositor para Wayland (Español) diseñado para ser totalmente compatible con i3. Según el sitio web oficial:

Sway es un compositor de Wayland en mosaico y un reemplazo directo del gestor de ventanas i3 para X11. Funciona con su configuración existente de i3 y soporta la mayoría de las características de i3, además de algunas adicionales.

Si le interesan los efectos visuales llamativos consulte swayfxAUR, un fork de sway.

Instalación

Sway puede ser instalado con el paquete sway. La versión de desarrollo se puede instalar con sway-gitAUR. Se aconseja actualizar siempre wlroots cuando se actualice sway, debido a que ambos paquetes dependen uno del otro.

Nota: Los drivers gráficos propietarios no están soportados], incluyendo NVIDIA. Después de la versión 495 del controlador de NVIDIA, sway funciona si activa kernel mode setting y ejecuta sway con --unsupported-gpu.

También se recomienda instalar swaylock, swayidle y swaybg para bloquear la pantalla, configurar un gestor de inactividad y establecer fondos de pantalla respectivamente. Igualmente puede encontrar las versiones de desarrollo de estos paquetes en el AUR, como swaylock-gitAUR, swayidle-gitAUR y swaybg-gitAUR. Estos ofrecen las últimas funciones y actualizaciones de sus respectivos repositorios Git de los proyectos.

El lanzador de aplicaciones por defecto es wmenu (aunque la configuración por defecto aún utiliza dmenu_path con dmenu) y el emulador de terminal por defecto es foot. Antes de iniciar sway se aconseja instalar estos paquetes o establecer un nuevo lanzador y terminal en el archivo de configuración. Para más versiones de programas compatibles con i3 se recomienda consultar la guía de migración en la wiki de sway.

Inicio

Antes de que Sway pueda iniciarse, este necesita acceder a tus dispositivos de hardware como el teclado, el ratón y la tarjeta gráfica. El conjunto de estos dispositivos de hardware se llama seat, como se menciona en sd-login(3).

En Arch Linux, Sway puede obtener acceso a seat utilizando

Si polkit ya está instalado en su sistema, Sway debería obtener automáticamente el acceso a seat.

Alternativamente, si polkit no está instalado en su sistema y quiere usar seatd en su lugar, deberá agregarse al grupo de usuarios seat y active seatd.service, vuelve a iniciar la sesión y elige uno de los siguientes métodos para iniciar Sway.

Manualmente

Para iniciar Sway, ejecute sway en la consola.

Automáticamente al ingresar a una TTY

De forma similar al servidor gráfico X, Sway puede iniciar automáticamente al agregar el siguiente código en su archivo de inicio de la shell (véase Command-line shell (Español)#Intérprete de línea de órdenes de inicio de sesión):

if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
  exec sway
fi

Para más detalles, consulte Xinit (Español)#Inicio automático de X al inicio de sesión

Desde un gestor de pantallas

Nota: Sway no soporta gestores de pantallas oficilamente. [2]

La sesión de sway se encuentra en /usr/share/wayland-sessions/sway.desktop. Esta es reconocida automáticamente por gestores de pantalla modernos como GDM y SDDM.

Se puede iniciar sway como servicio de usuario de systemd a través del gestor de pantallas.

También puede usar un gestor de sesiones de consola, consulte Display manager (Español)#Consola.

Configuración

Si usted ya usa i3, es posible copiar el archivo de configuración existente a ~/.config/sway/config y que este funcione de forma inmediata en sway. De otra forma, copie el archivo de configuración muestra ubicado en /etc/sway/config a ~/.config/sway/config. Consulte sway(5) para conocer más de la configuración.

Nota: Se espera que la configuración de usuario contenga include /etc/sway/config.d/* para poder aplicar fragmentos de configuración de archivos drop-in. El paquete sway proporciona el archivo drop-in 50-systemd-user.conf, que importa varias variables de entorno en la sesión de usuario de systemd y dbus. Esto es necesario para varias aplicaciones como xdg-desktop-portal-wlr.

Mapa de teclado

Por defecto, sway inicia con la distribución de teclado US QWERTY. Para configurar por dispositivo de entrada:

~/.config/sway/config
input * {
    xkb_layout "us,de,ru"
    xkb_variant "colemak,,typewriter"
    xkb_options "grp:win_space_toggle"
}

input <identifier> xkb_model "pc101"

Para más detalles véase xkeyboard-config(7) y sway-input(5).

El mapa de teclado también puede ser configurado usando variables de entorno (XKB_DEFAULT_LAYOUT, XKB_DEFAULT_VARIANT, etc.) al iniciar sway. Las opciones de configuración se priorizan ante las variables de ambiente.

Tasa y retardo tipográfico

Para modificar la tasa y retardo tipográfico, agregue las siguientes lineas a la sección input de configuración:

~/.config/sway/config
input <identifier> repeat_delay 300
input <identifier> repeat_rate 30

Barra de estado

Sway incluye una barra de estado, swaybar, que se ejecuta en un ambiente de Wayland (Español) puro. swaybar puede ejecutar un script o algún otro programa para mostrar información en la barra de estado. Consulte sway-bar(5) y swaybar-protocol(7) para más detalles.

Tip: waybar es una barra de estado alternativa a la de defecto (swaybar).

Instalar i3status es una opción para tener una barra de estado práctica por defecto en Wayland. Agregue el siguiente segmento de código al final de su archivo de configuración de sway:

~/.config/sway/config
bar {
    status_command i3status
}

Para habilitar los colores en la salida de i3status necesitará modificar el siguiente segmento en la configuración de i3status:

~/.config/i3status/config
general {
    colors = true
    interval = 5
}

Outputs

El comando output de sway permite configurar detalladamente diferentes salidas de pantalla (outputs en inglés). Esto incluye ajustes como el fondo de pantalla, factor de escala, posición, entre otros. Usted puede combinar múltiples comandos en una sola linea, de acuerdo a sus necesidades.

~/.config/sway/config
output HDMI-A-1 mode 1920x1080 pos 1920 0 bg ~/wallpaper.png stretch

Podemos referirnos a una salida de pantalla en específico utilizando sus nombres designados, también podemos referirnos a cualquier salida con "*", o mediante el uso de nombres específicos de las pantallas (usualmente una cadena de caracteres que consiste del nombre de la empresa, modelo y número de serie). Por ejemplo:

~/.config/sway/config
output "Alguna Compañía ABC123 0x00000000" pos 1920 0

Se puede obtener una lista de los nombres de las salidas e información adicional con la orden:

$ swaymsg -t get_outputs

Para conocer más acerca de las opciones de configuración, consulte sway-output(5).

Fondo de pantalla

La visualización de un fondo de pantalla en sway es gestionada por un programa dedicado. El ejemplo más simple es swaybg, que sway puede gestionar directamente. El paquete swaybg debe ser instalado para poder ejecutar la orden output ... bg.

La siguiente linea configura una imagen como fondo en todas las pantallas (output aplicará el comando a todas las pantallas "*"), esta puede ser colocada en cualquier parte del archivo de configuración:

~/.config/sway/config
output "*" bg /ruta/a/imagen fill

No olvide reemplazar /ruta/a/imagen con la ruta de una imagen existente.

Puede usar colores sin transparencias como fondo:

output * bg #000000 color

Consulte la wiki de Sway para utilidades y herramientas adicionales de administración de fondo de pantalla.

HiDPI

Configure el factor de escala de pantallas con el comando output en su archivo de configuración. El factor de escala puede ser fraccional, aunque este suele ser un factor de 2 para pantallas HiDPI.

~/.config/sway/config
output <nombre> scale <factor>

Puede encontrar el nombre de la pantalla con ejecutando el comando:

$ swaymsg -t get_outputs


Dispositivos de entrada

Es posible modificar individualmente la configuracion de los dispositivos de entrada. Por ejemplo, para activar "toque para hacer clic" y desplazamiento natural en todos los touchpads:

~/.config/sway/config
input type:touchpad {
    tap enabled
    natural_scroll enabled
}

Para configurar un touchpad específico, use swaymsg -t get_inputs para obtener el identificador del dispositivo deseado y reemplácelo por type:touchpad.

Nota: La salida del comando swaymsg -t get_inputs puede contener caracteres "\" para escapar símbolos como "/" (por ejemplo, "2:14:ETPS\/2_Elantech_Touchpad"). Estos caracteres necesitan ser eliminados.

Puede encontrar más documentación en sway-input(5) y configuración adicional como perfiles de aceleración o cómo desactivar la entrada de dispositivos.

Asignación de pantallas táctiles

Los objetivos entradas táctiles de las pantallas táctiles usadas en entornos multipantalla pueden ser asignados a una sola pantalla.

~/.config/sway/config
set $display1       "Dell Inc. DELL P2414H VHVTW542165L"
set $display2       "Dell Inc. DELL P2418HT MYDM775F152L"
set $display2-touch "8146:24835:Melfas_LGD_AIT_Touch_Controller"
	
input $display2-touch map_to_output $display2

Atajos de teclado personalizados

Las teclas especiales en su teclado pueden ser utilizadas para ejecutar órdenes, por ejemplo, para controlar el volumen, brillo del monitor o reproductores de música:

~/.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 bemenu-run

Para más detalles y programas adicionales véase:

Para permitir que un atajo de teclado se pueda ejecutar mientras que la pantalla está bloqueada, agregue el parámetro --locked a bindsym.

bindsym --locked XF86AudioPlay exec playerctl play-pause
Sugerencia: wev es una herramienta que proveé funciones similares a xorg-xev en Wayland.
Nota: Systemd administra algunas teclas especiales como la tecla de encendido, así como eventos, por ejemplo cuando se abre o cierra la tapa del equipo portátil. Existe la posibilidad de que estos interfieran con los configurados en Sway. Vea loginctl(1) y logind.conf(5) para detalles de cómo configurarlos en systemd (Español).

Indicadores gráficos de la barra de estado

A menudo es deseable que el porcentaje actual de algún valor, como el brillo o el volumen, sea indicado por una barra gráfica cuando se ajusta. Una opción para proporcionar esto en Sway es wob (o wob-gitAUR), que proporciona un subconjunto de funciones de la popular herramienta xobAUR pero como una utilidad nativa de Wayland que implementa el protocolo layer-shell. Consulte el sitio web del proyecto para ver ejemplos de uso.

Vista general de los espacios de trabajo

Si usa un gran número de espacios de trabajo con varias ventanas y le es difícil recordar la ubicación de estos, entonces sovAUR puede ser de ayuda. Es una ventana superpuesta (overlay) que muestra los esquemas de los espacios de trabajo, para hacer su navegación más sencilla. Muestra los nombres de los programas y ventanas, además soporta configuraciones de múltiples pantallas. Consulte la página del proyecto para más información.

Idle

Sway tiene un demonio de inactividad (idle) llamado swayidle que administra la inactividad de las sesiones. Existen muchas formas de iniciar y configurar el demonio. La más sencilla es usar el archivo de configuración de sway. swayidle acepta múltiples argumentos para configurar eventos como timeout (es decir, periodo de inactividad), resume (al reanudar de suspensión), before-sleep, etc. Consulte swayidle(1) para más conocer detalles de los eventos. Es posible asignar una acción a un evento. Para asignar múltiples acciones a un evento sólo repita el accionador (trigger).

La siguientes lineas indican a swayidle bloquear la pantalla después de 30 minutos de inactividad y apagar la pantalla cinco segundos después del bloqueo:

~/.config/sway/config
exec swayidle -w \
	timeout 1800 'swaylock -f' \
	timeout 1805 'swaymsg "output * dpms off"' \
	resume 'swaymsg "output * dpms on"'

Para apagar una pantalla bloqueada con más anticipación, como después de 10 segundos, filtre con grep el proceso del bloqueo de pantalla de la lista de procesos y ejecute swaymsg "output * dpms off" de la siguiente forma:

timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi'

Para suspender y pausar medios de reproducción, anteceda las siguientes instrucciones al comando swayidle:

before-sleep 'playerctl pause; swaylock'
Nota: Systemd también administra algunos eventos de inactividad, estos pueden entrar en conflicto con los configurados en sway. Véase loginctl(1) y logind.conf(5) para detalles en cómo configuralos.

Si no desea que swaylock se active mientras se reproducen vídeos en Firefox, Chrome o VLC puede usar idlehack-gitAUR para escuchar las peticiones de inhibición del dbus e invocar swayidle-inhibit. Programas como Firefox, Chrome y VLC emiten estos eventos para evitar que el sistema quede inactivo.

Ventanas flotantes

Para habilitar ventanas flotantes o asignaciones de modos, abra la aplicación y use los atributos app_ip, class, instance y title para habilitarla. El siguiente comando listará las propiedades de todas las ventanas abiertas.

$ swaymsg -t get_tree

Para obtener app_id de todas las ventanas abiertas escriba:

$ swaymsg -t get_tree | grep "app_id"

Y para el app_id de la ventana enfocada:

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

Las ventanas de X11 no cuentan con app_id. Sin embargo, puede usar atributos como class, window_type, window_role y/o instance para obtenerlas. Busque en la salida del comando swaymsg -t get_tree y configure reglas específicas para esas ventanas.

~/.config/sway/config
for_window [app_id="galculator"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_role="dialog"] floating enable
assign [class="firefox"] -> 3
assign [class="^Urxvt$" instance="^htop$"] -> 9

Este proceso es similar a usar xorg-xprop para conocer los atributos class o wm_name en X11.

Al usar múltiples pantallas algunas ventanas flotantes pueden incrementar su tamaño más allá de una pantalla. Este comando centra y redimensiona la ventana flotantes al 80% del tamaño de la pantalla actual:

$ swaymsg move position center; swaymsg resize set 80ppt 80ppt

Portapapeles

This article or section is a candidate for merging with Clipboard.

Notes: No es específico a Sway. (Discuss in Talk:Sway (Español))

Por defecto, el portapapeles es vaciado cuando una ventana se cierra. Este comportamiento puede ser sorpresivo.

Un "gestor de portapapeles" debe de ser instalado para que el contenido copiado se comparta entre las ventanas.

Un ejemplo de un gestor de portapapeles diseñado para waylando es clipman, el cual puede ser instalado con el paquete clipmanAUR or clipman-gitAUR.

Para iniciar clipman simultáneamente a Sway, agregue la siguiente línea a su archivo de configuración:

~/.config/sway/config
exec wl-paste -t text --watch clipman store --no-persist

Xresources

Copie ~/.Xresources a ~/.Xdefaults para usarlos en Sway.

Xwayland

Consulte Wayland (Español)#Xwayland para más detalles y un resumen de los paquetes disponibles.

Xwayland se encuentra habilitado por defecto.

Si desea deshabilitarlo y ejecutar una sesión de Wayland "pura", modifique su archivos de configuración con los siguientes valores:

~/.config/sway/config
xwayland disable

Para identificar qué ventanas están utilizando Xwayland, agregue la siguiente linea:

~/.config/sway/config
for_window [shell="xwayland"] title_format "[Xwayland] %title"
Nota: Algunos programas requieren variables de ambiente especiales u opciones de configuración para ejecutarse de forma nativa en Wayland, otros programas (incluyendo la mayoría de aplicaciones propietarias) no son compatibles con Wayland en los absoluto. Por el momento se recomienda mantener Xwayland para usar de aplicaciones no compatibles.

Usar otro renderizador de wlroots

Es posible usar otro renderizador de wlroots al asignar la variable de ambiente WLR_RENDERER. La lista de renderizadores disponibles está en la documentación de wlroots.

Inicio automático

Consulte i3#Autostart y modifique el nombre del archivo de configuración acorde al de sway.

Consejos y trucos

Habilita BloqMayus/BloqNum al inicio

Sway desactiva las teclas BloqMayus (CapsLock) y BloqNum (NumLock) al iniciar. Para que sean activadas al inicio, modifique las configuraciones de entrada xkb_capslock y/o xkb_numlock a enable para sus teclados. Por ejemplo, para aplicarlo en todos los teclados, incluya las siguientes lineas en su configuración:

~/.config/sway/config
input type:keyboard xkb_capslock enabled
input type:keyboard xkb_numlock enabled

En cualquier caso, BloqMayus y BloqNum pueden ser alternadas al presionar las teclas correspondientes en el teclado.

Nota: Habilitar esta configuración usando el identificador wildcard puede causar errores en Firefox al recargar el archivo de configuración: Bugzilla 1652820. Intente especificar el teclado en su lugar.

Distribución de teclado actual

La distribución de teclado actual puede ser obtenida de la siguiente forma, donde kbd_identifier debe de ser reemplazado por el identificador del teclado actual:

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

Tecla de composición

Para configurar PrintScreen (tecla de imprimir pantalla) como tecla de composición:

$ swaymsg 'input * xkb_options compose:prsc'

Las combinaciones disponibles para asignar a la tecla de composición se muestran en Xorg/Keyboard configuration#Configuring compose key. Estas incluso pueden ser configuradas en el archivo XCompose. Es necesario reiniciar las aplicaciones para que lo cambios se vean reflejados.

This article or section needs expansion.

Reason: Explique qué significa el siguiente consejo (por qué es útil). (Discuss in Talk:Sway (Español))

Puede buscar nombres de teclas en /usr/include/X11/keysymdef.h, o usar algún depurador como xev(1): xkbcli-interactive-wayland(1) (en /usr/lib/xkbcommon/).

Alternar iluminación

Para apagar (y encender) su pantalla con una tecla (por ejemplo, Pause), agregue el siguiente scrip a su archivo de configuración de Sway:

#!/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

O use la opción toggle directamente, puede que deba especificar una pantalla específica si tiene múltiples pantallas:

$ swaymsg "output nombre_pantalla dpms toggle"

Capturar y compartir pantalla

Véase Screen capture#Wayland.

Ajuste de temperatura de color

Véase Backlight#Wayland.

Controlar swaynag con el teclado

Swaynag es el programa de avisos incluido por defecto en sway, este sólo permite interacciones con el ratón. Un programa como swaynagmodeAUR puede ser usado para permitir la interacción a través del teclado.

Swaynagmode funciona ejecutando swaynag primero, luego escucha por señales que activan aciones, como seleccionar el siguiente botón, ignorar el prompt o aceptar el botón seleccionado. Estas señales son enviadas lanzando otra instancia del script swaynagmode con argumentos de control, como swaynagmode --select right o swaynagmode --confirm.

Swaynagmode activa por defecto el modo sway nag al iniciar seguido de default al finalizar. Esto permite definir atajos de teclado fácilmente en su archivo de configuración:

~/.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
  }
}

Tome en cuenta que desde la versión 1.2 de sway, los nombres de los modos diferencian entre mayúsculas y minúsculas (case-sensitive)

Puede configurar sway para que use swaynagmode con el comando de configuración swaynag_command swaynagmode.

Cambiar el tema y tamaño del cursor

Para modificar el tamaño y tema del cursor:

~/.config/sway/config
seat seat0 xcursor_theme my_cursor_theme my_cursor_size

Donde my_cursor_theme puede asignarse o ser reemplazado por un valor específico como default, Adwaita o Simple-and-Soft, y my_cursor_size con valores como 48.

Para ver los valores ejecute echo $XCURSOR_SIZE y echo $XCURSOR_THEME.

Puede que necesite reiniciar las aplicaciones para ver reflejado el cambio.

Nota: Wayland usa cursores del cliente (client-side en inglés). Por lo que es posible que algunas aplicaciones no evalúen los valores de $XCURSOR_SIZE y $XCURSOR_THEME.

Administrar demonios de Sway con systemd

Systemd provee graphical-session.target, la cual es una unidad de usuario de systemd que es activada cuando una sesión grafica es ejecutada, ya sea en Xorg o Wayland. Los servicios de usuario que deben de ejecutarse en todos los entornos gráficos pueden vincularse a este target. También permite que el target de un gestor de ventanas en particular sea vinculado a graphical-session.target para iniciar y detener servicio que deberían de iniciar sólo al usar ese gestor de ventanas. Véase systemd.special(7).

Algunos usuarios quizá quieran iniciar algunos servicios/demonios (como swayidle o kanshi) sólo cuando el gestor de ventanas es Sway, y finalizar estos servicios cuando Sway se detiene. Además, usuarios que ejecuten systemd-oomd.service(8) puede que necesiten cgroups separados, para que un servicio no consuma toda la memoria y detenga la sesión de Sway (Consulte el reporte del bug de Fedora).

Algunas o todas estas funciones las proveen los paquetes de Sway en Arch. Por ejemplo, el paquete sway incluye el archivo sway-session.target, tanto sway como sway-gitAUR proveen el archivo 50-systemd-user.conf (véase #Configuración).

Si usted busca usar su propio método o un paquete específico como sway-systemd-gitAUR o sway-services-gitAUR para proveer dichas funciones, considere eliminar los archivos que brindan la misma funcionalidad.

Estas funciones pueden brindarse mediante un método propio al crear un sway-session.target dejando los demonios/servicios necesitado por sway-session.target. Este target de systemd debería de ser un target de usuario (véase systemd/User). Por ejemplo:

~/.config/systemd/user/sway-session.target
[Unit]
Description=Sway compositor session
Documentation=man:systemd.special
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target

Luego agregue la siguiente linea al archivo de configuración de Sway (por ejemplo, agregue al final de ~/.config/sway/config, o en un nuevo archivo en /etc/sway/config.d/):

~/.config/sway/config
...
...
...
exec_always "systemctl --user start sway-session.target"

Con la linea anterior en el archivo de configuración, cuando Sway inicie también se activa sway-session.target.

Finalmente, enlace los servicios necesitados a sway-session.target. Por ejemplo, agregue kanshi (o el servicio kanshi-gitAUR):

~/.config/systemd/user/kanshi.service
[Unit]
Description=Dynamic output configuration for Wayland compositors
Documentation=https://sr.ht/~emersion/kanshi
BindsTo=sway-session.target

[Service]
Type=simple
ExecStart=/usr/bin/kanshi

[Install]
WantedBy=sway-session.target

Cuando esta unidad de usuario sea activada, sólo se iniciará cuando Sway se ejecuta y se detendrá cuando Sway no se ejecute.

La creación e importación del archivo sway-session.target al entorno puede ser lograda al instalar sway-systemd-gitAUR. Además de separar los servicios en cgroups, sway-systemd también coloca cada aplicación gráfica (GUI) en su propio cgroup. Esto habilita la limitación de recursos por cgroup en aplicaciones individuales. Consulte README de sway-systemd.

Cambiar la resolución de pantalla después del inicio

Puede utilizar la aplicaciones gráficas como wdisplaysAUR, swayrandrAUR o el programa de línea de comandos wlr-randr para cambiar la resolución, rotar, asignar un factor de escala y ordenar otras pantallas.

Crear salidas de video headless

Para crear salidas de video que no estén vinculadas a una interfaz de video física, HEADLESS-1, HEADLESS-2, etc.:

$ swaymsg create_output

Mostrar una descripción de la salida de video:

$ swaymsg -pt get_outputs | grep -A 10 HEADLESS

Para configurar la nueva salida de video use el comando output, por ejemplo:

~/.config/sway/config
output HEADLESS-1 {
pos 1920,0
mode 1280x720@75Hz
}

Cambiar la tecla modificadora a BloqMayus y mantener Super

Para cambiar la tecla modificadora a BloqMayus y mantener la tecla Super funcionando en un teclado con distribución estadounidense, creé el archivo ~/.config/xkb/symbols/custom con los siguientes contenidos:

~/.config/xkb/symbols/custom
xkb_symbols "basic" {
    include "us"
    name[Group1]= "English (US Custom)";
    key <CAPS> { [ Hyper_L ] };
    modifier_map Mod4 { Hyper_L };
    key <LWIN> { [ Super_L ] };
    modifier_map Mod5 { Super_L };
};

Para otros lenguajes edite la segunda y tercera línea. Luego agregue esta disposición de teclado en su archivo de configuración de sway, preferentemente al inicio del archivo.

~/.config/sway/config
input * xkb_layout custom
set $mod Mod4
set $super Mod5

Troubleshooting

Lanzadores de aplicaciones

Sugerencia: La wiki de sway también tiene una lista de lanzadores de aplicaciones conocidos.

dmenu y rofi funcionan relativamente bien en Sway, sin embargo, estos se ejecutan bajo Xwayland, lo que puede ocasionar que dejen de responder si el cursor se mueve a una ventana nativa de Wayland. Esto se debe a que los clientes/ventanas de Wayland no tienen acceso a los dispositivos de entrada a menos que tengan enfoque de la pantalla. El servidor Xwayland es un cliente del compositor de Wayland, por lo que unos de los clientes de Xwayland debe estar enfocado para que tenga acceso a la entrada del usuario. Sin embargo, cuando un cliente está enfocado puede recolectar la entrada y hacerla disponible a todos los clientes de Xwayland a través del protocolo X11. Por esta razón, mover el cursor a una ventana de Xwayland y presionar la tecla Esc debería corregir el problema, también ejecutar pkill ayuda.

bemenu es un reemplazo de dmenu nativo de Wayland. Opcionalmente puede ser usado con j4-dmenu-desktop para proveer una solución nativa de Wayland para lanzar archivos de escritorio (desktop files) (como i3-dmenu-desktop):

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

Necesitará configurar la variable de entorno BEMENU_BACKEND a "wayland" si decide no desactivar Xwayland.

También puede crear su propio lanzador de aplicaciones usando una terminal flotante ejecutando fzf como se discute en este issue de GitHub.

Igualmente el binario krunner del paquete plasma-workspace puede servir como un lanzador, ofreciendo soporte para Xwayland y Wayland nativo.

rofi-wayland es un fork de rofi que se ejecuta en Wayland y tiene una bandera -x11 por si es necesario utilizarlo en una sesión de X11.

wofi es un lanzador de comandos, que provee algunas características de rofi bajo Wayland. Sin embargo, rofi carece de un modo SSH y modo "alternar ventana". Está basado en la biblioteca wlroots y usa GTK3 para el renderizado. Funciona bastante bien en sway.

fuzzel es otro lanzador de aplicaciones para compositores de Wayland basados en wlroots, es muy parecido al modo drun de rofi.

Virtualización

Sway funciona con VirtualBox (Español) y VMware ESXi.

Para que Sway funcione en QEMU (Español), este debe de iniciarse con la bandera -vga qxl. Véase también QEMU#qxl.

No es posible iniciar Sway desde una tty

Para ESXi necesita habilitar el soporte 3D en el menú Hardware Configuration > Video card settings. Véase VMware#Enable 3D graphics on Intel, Optimus and AMD para más detalles.

El cursor no es visible

Cuando ciertos controladores gráficos están en uso (como los controladores gráficos VMSVGA o NVIDIA), el cursor se vuelve invisible. Esto puede ser arreglado usando software de cursores, como se menciona en [3]:

$ export WLR_NO_HARDWARE_CURSORS=1

El socket de Sway no es detectado

Al invocar swaymsg con algún argumento, como swaymsg -t get_outputs, puede devolver un mensaje de error:

sway socket not detected.
ERROR: Unable to connect to

cuando se ejecuta el comando dentro de un multiplexador de terminal (como GNU Screen or tmux). Esto significa que swaymsg no pudo conectarse al socket designado en SWAYSOCK.

Para conocer el valor actual de SWAYSOCK escriba:

$ env | grep -F "SWAYSOCK"
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock

Una forma de solucionar este problema es intentar conectarse a un socked del proceso de ejecución de sway:

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

Para evitar ese error simplemente ejecute el comando fuera de un multiplexador.

Falló la conexión al servidor Wayland

Tmux crea variables de entorno locales para cada sesión (para visualizarlas escriba: tmux show-environment). Debido a esto, si intenta volver a conectarse a una sesión previa de tmux usando tmux-resurrect o tmux-continuum, o si su servidor de tmux inicia antes que sway, entonces las variables de entorno estarán desactualizadas.

Puede usar update-environment en .tmux.conf para indicarle a tmux que actualice las variables cuando se reconecta a la sesión:

set-option -g update-environment "DISPLAY WAYLAND_DISPLAY SWAYSOCK SSH_AUTH_SOCK"

No fue posible recuperar la ruta del socket

Al solicitar mensajes desde una tty con swaymsg -t puede devolver el siguiente mensaje:

Unable to retrieve socket path

La variable de entorno SWAYSOCK se asigna después de iniciar Sway, por esta razón la solución es ejecutar swaymsg -t [message] en una terminal dentro de Sway.

Atajos de teclado y distribuciones de teclado

Por defecto si usa mas de una distribución de teclado, por ejemplo input * xkb_layout "us,ru", los atajos de teclado pueden fallar cuando cambia a una distribución de teclado secundaria.

Gracias a https://github.com/swaywm/sway/pull/3058, sólo necesita agregar la bandera --to-code a lineas con el comando bindsym como:

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

Alternativamente puede crear la variable set $mybind bindsym --to-code y reemplazar todas las ocurrencias de bindsym con $mybind de esta forma: $mybind $mod+w accion

Aplicaciones en Java

Algunas aplicaciones desarrolladas en Java mostrarán una ventana en blanco cuando inician, por ejemplo cualquier editor de JetBrains como IntelliJ, CLion, or PyCharm. Para evitar esto, la aplicación debe de ser iniciada con la variable de entorno _JAVA_AWT_WM_NONREPARENTING asignada a 1.

En caso de iniciar la aplicación usando lanzadores de aplicaciones como rofi o dmenu se recomienda modificar el archivo de aplicación como se muestra en Desktop entries#Modify environment variables.

Algunos errores han sido corregidos en OpenJDK 11 y Sway 1.5. Sin embargo, ciertas aplicaciones requieren configuración adicional para funcionar correctamente con versiones más recientes de OpenJDK, por ejemplo, en el caso de Android Studio se debe asignar la variable STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/. [4]

El JRE tiene una lista de gestores de ventanas conocidos, en la cual Sway no se encuentra. Si experimenta paneles grises, menús mal ubicados o ventanas con dimensiones incorrectas, consulte Java#Impersonate another window manager (en inglés).

Desplazamiento en el borde

Si usar la rueda de desplazamiento del ratón (scroll) en el borde de una aplicación provoca un fallo en sway, puede usar border none para el app_id correspondiente (por ejemplo, Firefox).

Program cannot open display

Si al iniciar un programa se muestra el mensaje de error "cannot open display", es posible que el programa funcione sólo bajo X11. Usted puede usar Xwayland para ejecutar programas de X11 en Wayland, consulte #Xwayland para más detalles.

El ratón no funciona en aplicaciones de WINE

Cuando ejecuta programas WINE espera que exista una pantalla principal sea asignada, esto puede causar errores (como clics que no son registrados) debido a que no existe el concepto de una pantalla principal en Wayland. Para evitar esto, agregue esta linea a su configuración de Sway para asignar una pantalla principal que sea usada por Xwayland mediante xrandr:

~/.config/sway/config
...
exec_always xrandr --output XWAYLAND0 --primary
...

El desplazamiento (offset) de la posición de pantalla debe de ser 0,0 para que esto funcione, debido a un bug [5] en sway.

Tome en cuenta que XWAYLAND0 (o cualquier nombre de pantalla de XWAYLAND) puede no representar su pantalla y sea susceptible a cambiar en diferentes sesiones. En su lugar, especifique la primer pantalla XWAYLAND usando la siguiente linea:

exec_always xrandr --output $(xrandr | grep -m 1 XWAYLAND | awk '{print $1;}') --primary

Quizá necesite modificar estas instrucciones a sus necesidades. Para identificar los nombres asignados a las pantallas use el comando xrandr sin argumentos.

Nota: Xwayland reconocerá cualquier pantalla conectada recientemente (incluyendo pantallas apagadas y encendidas) como nuevas pantallas. Si esto sucede su "pantalla primaria" ya no será considerada primaria.

Flickering en videojuegos con GPUs de NVIDIA

Aunque los controladores gráficos propietarios como NVIDIA no cuentan con soporte oficial, es posible usarlos incluyendo para videojuegos. Al hacer uso de ellos usted puede encontrar flickering (parpadeo) en la parte superior de la pantalla, que puede ser arreglado al reemplazar wlroots con wlroots-nvidiaAUR, o compilando manualmente su propia versión con el parche.

Véase también