Sway (Español)

Esta traducción de
Sway
fue revisada el
2024-06-03
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Window manager (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
swayfx
AUR
, un fork de sway.
Instalación
Sway puede ser
instalado
con el paquete
sway
. La versión de desarrollo se puede instalar con
sway-git
AUR
. 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-git
AUR
,
swayidle-git
AUR
y
swaybg-git
AUR
. 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
[
enlace roto
: replaced by
wlroots0.18
]
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:
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
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-git
AUR
), que proporciona un subconjunto de funciones de la popular herramienta
xob
AUR
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
sov
AUR
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-git
AUR
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
clipman
AUR
or
clipman-git
AUR
.
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 script 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
swaynagmode
AUR
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-git
AUR
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-git
AUR
o
sway-services-git
AUR
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-git
AUR
):
~/.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-git
AUR
. 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
wdisplays
,
swayrandr-git
AUR
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
[
enlace roto
: replaced by
rofi
]
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
[
enlace roto
: replaced by
wlroots0.18
]
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
[
enlace roto
: replaced by
wlroots0.18
]
con
wlroots-nvidia
AUR
, o compilando manualmente su propia versión con el parche.
Véase también
Proyecto en GitHub
Wiki de Sway mantenida por usuarios
Sitio web
Anuncio de lanzamiento de Sway 1.0