From cab7699711979c82242cf201f773082137286515 Mon Sep 17 00:00:00 2001 From: Gabriel Brown Date: Fri, 21 Aug 2026 16:10:32 -0400 Subject: [PATCH] Start the text expander that was only ever installed espanso-wayland was installed and its config linked, and then nothing anywhere launched it -- the RPM ships no unit, autostart.lua started every session daemon except this one, and the seed machine only worked because the service had once been registered by hand. change-settings now runs `espanso service register` (upstream's own mechanism, and unlike hypridle it conflicts with nothing GNOME runs), and autostart.lua starts the unit so the first Hyprland login after a fresh install expands text rather than the second. --- config/dot/hypr/autostart.lua | 8 ++++++++ setup/scripts/change-settings | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/config/dot/hypr/autostart.lua b/config/dot/hypr/autostart.lua index ace3516..bdf8426 100644 --- a/config/dot/hypr/autostart.lua +++ b/config/dot/hypr/autostart.lua @@ -39,6 +39,14 @@ hl.on("hyprland.start", function() -- prompt if Panama's ever fails to come up. hl.exec_cmd("systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user start panama-polkit-agent.service hyprpaper.service vicinae.service hypridle.service") + -- Text expansion. change-settings runs `espanso service register`, which + -- writes and enables espanso's own user unit; the explicit start makes the + -- first Hyprland login after a fresh install work rather than the second. + -- Started on its own line: unlike the units above it carries no + -- ConditionEnvironment, and a missing unit (espanso not yet registered) + -- must not muddy the start of the four that lock and wallpaper depend on. + hl.exec_cmd("systemctl --user start espanso.service") + -- The shell: bar, dock, overview, quick settings, notifications, capture. -- No systemd unit ships with quickshell, so it runs as a compositor child. hl.exec_cmd("quickshell --daemonize") diff --git a/setup/scripts/change-settings b/setup/scripts/change-settings index a8fe18e..056aa13 100755 --- a/setup/scripts/change-settings +++ b/setup/scripts/change-settings @@ -1,5 +1,10 @@ #!/usr/bin/env bash +# Strict: the copy over / below is the one thing this stage exists to do, and +# without set -e its failure fell through to guarded no-ops and exited 0 -- +# a failed stage the installer's summary could never see. +set -euo pipefail + # --- Helper functions --- log() { echo -e "\033[1;34m[INFO]\033[0m $*"; } exists() { command -v "$1" >/dev/null 2>&1; } @@ -61,6 +66,18 @@ echo -e "\n--- Hyprland session services ---" # PartOf=graphical-session.target. log "Hyprland services are started per-session by hypr/autostart.lua, not enabled globally" +# espanso is the exception to the rule above: text expansion is wanted under +# any compositor and conflicts with nothing GNOME runs, and upstream's own +# mechanism is a registered user unit. The RPM ships no unit -- without this, +# the package installs, the config links, and no trigger ever fires. +# `service register` writes and enables the unit and is idempotent on re-runs; +# autostart.lua also starts it so the first Hyprland login after a fresh +# install expands text without waiting for the next one. +if exists espanso && ! systemctl --user cat espanso.service >/dev/null 2>&1; then + log "Registering the espanso text-expansion service" + espanso service register >/dev/null 2>&1 || log "Could not register espanso" +fi + # Notification daemons must NOT be installed: mako, dunst and swaync all # register Name=org.freedesktop.Notifications for D-Bus activation, which races # Quickshell's own notification server at login. Whoever wins keeps the name.