Sway (Español) - ArchWiki

Jump to content

# 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.

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 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

- 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-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 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 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 wdisplays, swayrandr-gitAUR 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-nvidiaAUR, 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

Category:

- Wayland compositors (Español)

Hidden categories:

- Pages with broken package links
- Pages or sections flagged with Template:Merge
- Pages or sections flagged with Template:Expansion

Sway (Español)
Add topic