Sway (Español)
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.
--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
- systemd-logind(8) y polkit, o
- seatd, que se instalará junto a Sway como una dependencia de wlroots
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
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.
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.
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
.
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:
- PulseAudio#Keyboard volume control
- WirePlumber#Keyboard volume control
- Advanced Linux Sound Architecture#Keyboard volume control
- Backlight#Backlight utilities
- MPRIS
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
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'
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
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"
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.
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.
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.
$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
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.
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.