Jump to content

Universal Wayland Session Manager (Español)

From ArchWiki
Esta traducción de Universal Wayland Session Manager fue revisada el 2025-10-02. Si existen cambios puede actualizarla o avisar al equipo de traducción.

El Gestor de Sesiones Universal para wayland (uwsm) actua como una capa sobre compositores Wayland a través de un conjunto de unidades de systemd al vuelo. Esto provee una gestion robusta de la sesión incluyendo un soporte bidireccional al entorno XDG Autostart, vinculandose con la sesión inciada, y proporcionando un apagado limpio.

Nota Se recomienda encarecidamente dbus-broker como implementación del demonio D-Bus. Entre otros beneficios, reutiliza el entorno de activación de systemd en lugar de tener uno separado. Esto simplifica la gestión del entorno y permite hacer una limpieza apropiada. La implementación de referencia de D-Bus también está soportada, pero no permite restablecer variables, Por lo tanto, se realiza una limpieza óptima estableciéndolos en una cadena vacía. La única manera de limpiar correctamente el entorno independiente del demonio D-Bus de referencia es ejecutar loginctl cease-user "".

Instalación

Instale el paquete uwsm (o uwsm-gitAUR para la última versión en la rama master).

Configuración

Notificación de inicio de servicio y variables establecidas por el compositor

Nota Si los compositores ya establecen WAYLAND_DISPLAY (y otras variables de entorno utiles) en el entorno de activación de systemd, entonces puedes omitir esta seccion y no necesitas usar uwsm finalize.

En orden de encontrar el compositor actual, una aplicación Wayland que corre como un servicio de systemd necesita la variable de entorno WAYLAND_DISPLAY (o DISPLAY si esperan ejecutarse a través de Xwayland). Por lo tanto esta y otras variables de entorno utiles deberían ser puestas en el entorno de activación de systemd/dbus una vez el compositor ha establecido sus valores.

El comando uwsm finalize pone las variables WAYLAND_DISPLAY, DISPLAY listadas en la lista {ic|UWSM_FINALIZE_VARNAMES}} mediante espacios en blanco, en el entorno de activación. Es recomendado ejecutar este comando despues de que el compositor esta listo.

Si otras variables establecidas por los compositories son necesarias en el entorno de activación, pueden ser pasadas como argumentos a uwsm finalize o ser puestas en una lista separada por espacios en blanco UWSM_FINALIZE_VARNAMES. Mirar los ejemplos abajo:

exec uwsm finalize VAR1 VAR2 ...
export UWSM_FINALIZE_VARNAMES=VAR1 VAR2 ...

Variables de entorno

Todas las variables establecidas en ${XDG_CONFIG_HOME}/uwsm/env son obtenidas por uwsm y están disponibles para todos los compositores y las aplicaciones gráficas que se ejecuten dentro de dicha sesión.

Si necesitas que ciertas variables de entorno sean establecidas solo para un compositor (y aplicaciones gráficas en esa sesión gráfica) especifico, entonces ponlas en ${XDG_CONFIG_HOME}/uwsm/env-compositor en su lugar.

Un ejemplo de como se puede ver dicho archivo está abajo:

~/.config/uwsm/env
export KEY1=VAR1
export KEY2=VAR2
export KEY3=VAR3
...

Uso

Inicio

Nota El precargador de entorno ya no usa de fuente el archivo profile de una shell POSIX si el entorno desde el contexto de uwsm start fue usado con exito.

uwsm puede ser usado desde una TTY o un gestor de pantalla.

TTY

Añade en tu archivo ~/.profile:

if uwsm check may-start && uwsm select; then
  exec uwsm start default
fi

Si siempre quieres usar el mismo compositor, entonces puedes usar un archivo ~/.profile en su lugar:

if uwsm check may-start; then
  exec uwsm start compositor.desktop
fi

Display manager

Puedes crear un entrada de escritorio personalizada de sesion la cual inicia tu compositor a través uwsm:

/usr/share/wayland-sessions/my-compositor-uwsm.desktop
[Desktop Entry]
Name=My compositor (with UWSM)
Comment=My cool compositor, UWSM session

# ya sea una linea completa de comando con metadatos y ejecutables
Exec=uwsm start -N "My compositor" -D mycompositor:mylib -C "My cool compositor" -- my-compositor

# o incluso una referencia a otra entrada
Exec=uwsm start -- my-compositor.desktop

DesktopNames=mycompositor;mylib
Type=Application

Finalización de Sesión

Si quieres acabar la actual sesión de uwsm, entonces deberías usar ya sea loginctl terminate-user "" (finaliza la sesión de usuario de forma total) o uwsm stop (ejecuta código después de uwsm start o finaliza la sesión de usuario, si reemplaza la interfaz de incio de sesion).

Nota No uses el mecanismo nativo de salida del compositor o lo mates directamente. Esto forzara la finalización del compositor de forma abrupta para todos los clientes e interferirá con la secuencia de activación ordenada por unidades.

Consejos y trucos

Aplicaciones y autoinicio

Por defecto uwsm lanza los compositores a través de un servicio personalizado de systemd en session.slice. Muchos compositores Wayland te permiten iniciar otras aplicaciones que luego se lanzarian dentro del servicio del compositor, lo que consumiria inutilmente recursos del compositor o incluso interferiria con los sockets de notificaciones.

Para iniciar aplicaciones como unidades de ambito de systemd separadas puedes usar el comando uwsm app, el cual puede lanzar tanto ejecutables

uwsm app -- /my/program/path

como desktop entries

uwsm app -- myprogram.desktop

Por defecto uwsm pone el ambito de las unidades del slice app-graphical.slice. Si quieres ponerlas en background-graphical.slice o en session-graphical.slice,entonces deberias usar las opciones -s b, -s s respectivamente:

uwsm app -s b -- background-app.desktop

Alternativas

En lugar de uwsm app (que ejecuta un script de python), puedes usar alternativas más rapidas:

  • El script uwsm-app de uwsm el cual se comunica con el demonio de aplicaciones de uwsm.
  • app2unit-gitAUR, el cual es un script de shell. Puedes usarlo como reemplazo directo de uwsm app estableciendo la variable de entorno APP2UNIT_SLICES como se describe a continuacion:
    APP2UNIT_SLICES='a=app-graphical.slice b=background-graphical.slice s=session-graphical.slice'
  • runappAUR, el cual esta escrito en C++, pero careciendo de algunas funcionalidades.

Ver también