Universal Wayland Session Manager (Español)

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-git
AUR
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-git
AUR
, 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'
runapp
AUR
, el cual esta escrito en C++, pero careciendo de algunas funcionalidades.
Ver también
uwsm(1)