Skip to main content
Topic: Hyprland no es amigo de SDDM: Procesos xdg duplicados. (Read 1873 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

Hyprland no es amigo de SDDM: Procesos xdg duplicados.

Hola comunidad,

Quisiera compartir con vosotros mi experiencia con Hyprland.

Después de 25 años usando Gnome, cuando me enteré de que iba a aumentar su dependencia con systemd me llevé un "ligero" disgusto... Total que instalé XFCE. Luego descubrí algo llamado Hyprland. Me pudo la curiosidad y me metí en este "nuevo mundo" que, gracias a Gnome 49, he descubierto. Tiene miga la cosa.

El caso es que como DM tenía SDDM.

Al inicar Hyprland y hacer "ps aux | grep xdg" observaba instancias repetidas de los procesos xdg-desktop-portal, xdg-dekstop-gtk y xdg-desktop-hyprland.

Esto no me hacía ni pizca de gracia así que me puse "como un tonto" a indagar. Me ayudé también de chatgpt y gemini (la madre que los parió) que me llevaron por oscuras sendas de scripts que trataban de mantar los dupiclados y reinicar los procesos básicos, modificar archivo .desktop y... No sé qué diablos está haciendo sddm, pero me duplicaba procesos.

Total que seguí indagando, esta vez pasando de chatgpt  y gemini que me tenían harto tras decirme una cosa y la contraria como "solución definitiva".

Consultando diversas fuentes decidí ir a lo mínimo, quitar sddm e instalar greetd. Para ponerlo un poco más bonito instalé también nwg-hello (solo eso, no quiero instalar todo nwg aunque no parece tampoco mala cosa). Por cierto que nwg-hello con mugshot coge la imagen de mi avatar perfectamente.

Tras no hacerle ni caso a la IA, dejé un hyprland.conf bastante sencillo. Y... ¡listo!: Se acabaron los problemas de duplicados de xdg.
❯ ps aux | grep xdg
jopeless  3527  0.1  0.0 548508 17604 ?        Sl   18:50   0:00 /usr/lib/xdg-desktop-portal
jopeless  3544  0.0  0.0 308704  9784 ?        Sl   18:50   0:00 /usr/lib/xdg-permission-store
jopeless  3550  0.0  0.0 548188 10524 ?        Sl   18:50   0:00 /usr/lib/xdg-document-portal
jopeless  3562  0.2  0.0 488624 27524 ?        Sl   18:50   0:00 /usr/lib/xdg-desktop-portal-gtk
jopeless  3589  0.1  0.2 472952 76744 ?        Sl   18:50   0:00 /usr/lib/xdg-desktop-portal-hyprland
jopeless  3914  0.0  0.0   9352  6256 pts/0    S+   18:51   0:00 grep --colour=auto xdg

Aquí os dejo mi hyrpland.conf, sólo el cacho de "autostart.conf" puesto que uso sources para dividir la configuración en archivos más pequeños y manejables:
---------------------------------------------------------------------------------
# Autostart necessary processes (like notifications daemons, status bars, etc.)

# Inicial helpers de xdg. ¡NO, ES UN ERROR! No lanzar nada.
#exec-once = dbus-launch /usr/lib/xdg-desktop-portal
#exec-once = dbus-launch /usr/lib/xdg-desktop-portal-hyprland
#exec-once = dbus-launch /usr/lib/xdg-desktop-portal-gtk

#Forma correcta de iniciar pipewire
exec-once = dbus-launch pipewire
exec-once = dbus-launch wireplumber
exec-once = dbus-launch pipewire-pulse

# Para permitir la elevación de permisos
exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent

# GTK apps: sin botones minimizar/maximizar/cerrar
exec-once = gsettings set org.gnome.desktop.wm.preferences button-layout :

# Activamos hypraper y un script de carga random
exec-once = hyprpaper
exec-once = ~/.config/hypr/scripts/random-wallpaper-hyprland

# Para montar unidades usb
exec-once = udiskie

# waybar que ha de ser lo último en arrancarse.
exec-once = waybar
---------------------------------------------------------------------------------

Como podéis ver aún estoy mejorando (y personalizando) mi sistema. Aprendiendo como los burros, lamentablemente. Pero es que no quiero instalarme ningún conjunto de dotfiles de por ahí.

¿Cuál ha sido tu experiencia? ¿Has conseguido instalar Hyprland con SDDM sin que se te dupliquen los procesos xdg?
Cualquier crítica/observación es bienvenida.
Gracias.

Re: Hyprland no es amigo de SDDM: Procesos xdg duplicados.

Reply #1
Mejorando y simplificando la configuración.
Mi objetivo: Tener XFCE como escritorio base o "estable" e ir aprendiendo Hyrpland.

Error 1: Tener dbus en en runleve default  --> Eliminar esto, es iniciado por demanda.
Error 2: Iniciar pipewire desde la sección de autoexec de Hyprland --> No. a) Instalar pipewire-openrc, wireplumber-openrc y pirewire-pulse-openrc. b) Activarlos en --user:
$doas rc-update add pipewire default --user
$doas rc-update add wireplumber default --user
$doas rc-update add pipewire-pulse-openrc --user
Esto simplifica mucho la sección de autoexec de hpyrland y, además, puedo quitar la basura de poner un delay antes de iniciar waybar.
Veamos la nueva sección (aún incompleta) de la sección de autoexec:
#------------------------------------------------------------------------
# Autostart necessary processes (like notifications daemons, status bars, etc.)

# Para permitir la elevación de permisos
exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent

# GTK apps: sin botones minimizar/maximizar/cerrar
exec-once = gsettings set org.gnome.desktop.wm.preferences button-layout :

# Activamos hypraper y un script de carga random
exec-once = hyprpaper
exec-once = ~/.config/hypr/scripts/random-wallpaper-hyprland

# Para notificaciones (Machaca xfce-notifyd aunque quizá podríamos usar éste sin probelmas)
exec-once = mako

# Para desmontar unidades usb
exec-once = udiskie

# waybar que ha de ser lo último en arrancarse.
exec-once = waybar
#------------------------------------------------------------------------
¡Muchísimo mejor y más sencillo!
Sospecho que la razón por al que me aparecían múltiples procesos xdg podría estar relacionada con todos los servicios dbus que estúpidamente iniciaba.
Como podéis observar, utilizo es script "random-wallpaper-hyprland" para cargar, cada cierto tiempo, un nuevo wallpaper. Éste, sí que necesita un delay para que asegurarnos de que hyprpaper esté activo. De momento no conozco otra forma de hacer esto mejor. Si alguien tiene alguna idea, por favor, compartidla.

Os paso el script "random-wallpaper-hyprland":
!/bin/bash

WALLPAPER_DIR="$HOME/Imágenes/Wallpapers"
# Comprobar si el directorio existe y no está vacío
if [ ! -d "$WALLPAPER_DIR" ] || [ -z "$(ls -A "$WALLPAPER_DIR")" ]; then
    echo "Error: El directorio de wallpapers no existe o está vacío."
    exit 1
fi

# Esperamos a estar seguros de que hyprpaper está activo:
sleep 2
# Cargar un fondo de pantalla inicial aleatorio
select_and_set_wallpaper() {
    local current_wall=$1
    local new_wallpaper

    if [ -z "$current_wall" ]; then
        # Primera ejecución, elige una imagen aleatoria
        new_wallpaper=$(find "$WALLPAPER_DIR" -type f | shuf -n 1)
    else
        # Elige una imagen diferente de la actual
        new_wallpaper=$(find "$WALLPAPER_DIR" -type f ! -name "$(basename "$current_wall")" | shuf -n 1)
    fi

    # Si no se encuentra una nueva imagen, salir.
    if [ -z "$new_wallpaper" ]; then
        echo "Error: No se encontró un nuevo wallpaper."
        exit 1
    fi

    hyprctl hyprpaper preload "$new_wallpaper"
    hyprctl hyprpaper wallpaper ",$new_wallpaper"
   
    # Descargar la imagen anterior si existe
    if [ -n "$current_wall" ]; then
        hyprctl hyprpaper unload "$current_wall"
    fi
}

# Ejecutar el script por primera vez para establecer un fondo al inicio
select_and_set_wallpaper

# Iniciar un bucle para cambiar el fondo cada 1 hora (3600 segundos)
while true; do
    sleep 3600
    current_wall=$(hyprctl hyprpaper listloaded | grep -oP 'Path: \K.*')
    select_and_set_wallpaper "$current_wall"
done


Re: Hyprland no es amigo de SDDM: Procesos xdg duplicados.

Reply #2
CONFIRMADO: Sin problemas con SDDM e Hyprland.
Tras los pasos hechos anteriormente,  sospechando que el problema venía por la mala configuración en la sección autoexec de Hyprland, no se duplican los procesos xdg. Pido disculpas por el "bulo": estoy aprendiendo Hyprland y metí la pata.

Un saludo.