Name: sl-desktop-utils Version: 1.2.0 Release: 100.1.1%{?dist} Summary: Sl's custom greeter and lock tools for Niri, including idle and sleep services License: LicenseRef-SlsRepo URL: https://slsrepo.com Source0: sl-desktop-utils-sources.tar.gz BuildRequires: gcc BuildRequires: zig >= 0.16.0 BuildRequires: python3 BuildRequires: pkgconf-pkg-config BuildRequires: gtk4-devel BuildRequires: gtk4-layer-shell-devel BuildRequires: json-glib-devel BuildRequires: fontconfig-devel BuildRequires: pam-devel BuildRequires: systemd-rpm-macros Requires: bash Requires: coreutils Requires: grep Requires: util-linux Requires: systemd Requires: greetd Requires: niri Requires: wayidle Requires: gnome-keyring Requires: gtk4 Requires: gtk4-layer-shell Requires: json-glib Requires: fontconfig Requires: pam Requires(post): shadow-utils %description sl-greeter provides the greetd login interface and sl-lock provides the Niri session lock. The package also includes idle, suspend and logind lock integration. %prep %setup -q -c -T tar -xzf %{SOURCE0} %build cd sl-session ./build.sh %install rm -rf %{buildroot} install -Dm755 sl-session/zig-out/bin/sl-session \ %{buildroot}%{_bindir}/sl-session ln -s sl-session %{buildroot}%{_bindir}/sl-lock ln -s sl-session %{buildroot}%{_bindir}/sl-greeter install -d %{buildroot}%{_datadir}/sl-session cp -a sl-session/Assets \ %{buildroot}%{_datadir}/sl-session/ install -Dm755 utils/sl-lock-listener \ %{buildroot}%{_bindir}/sl-lock-listener install -Dm755 utils/sl-idle-lock \ %{buildroot}%{_bindir}/sl-idle-lock install -Dm644 utils/niri-greeter.kdl \ %{buildroot}%{_sysconfdir}/greetd/niri-greeter.kdl install -d -m 755 %{buildroot}%{_sysconfdir}/greetd/sl-greeter install -Dm644 utils/greetd-config.toml \ %{buildroot}%{_datadir}/sl-desktop-utils/greetd-config.toml install -Dm644 utils/sl-sleep-lock.service \ %{buildroot}%{_unitdir}/sl-sleep-lock.service install -Dm644 utils/sl-lock-listener.service \ %{buildroot}%{_userunitdir}/sl-lock-listener.service install -Dm644 utils/greetd-override.conf \ %{buildroot}%{_unitdir}/greetd.service.d/override.conf install -Dm755 utils/10-sl-sleep-lock.sh \ %{buildroot}/usr/lib/elogind/system-sleep/10-sl-sleep-lock.sh install -Dm644 utils/sl-lock-autostart.sh \ %{buildroot}%{_sysconfdir}/profile.d/sl-lock-autostart.sh %post if ! getent passwd greeter >/dev/null 2>&1; then if command -v systemd-sysusers >/dev/null 2>&1 && [ -f /usr/lib/sysusers.d/greetd.conf ]; then systemd-sysusers /usr/lib/sysusers.d/greetd.conf || true fi fi if ! getent group greeter >/dev/null 2>&1; then groupadd -r greeter fi if ! getent passwd greeter >/dev/null 2>&1; then NOLOGIN="$(command -v nologin 2>/dev/null || printf '%s' /bin/false)" useradd -r -M -d /var/lib/greetd -s "$NOLOGIN" -g greeter greeter fi install -Dm644 %{_datadir}/sl-desktop-utils/greetd-config.toml \ %{_sysconfdir}/greetd/config.toml mkdir -p /usr/local/share/backgrounds %{_sysconfdir}/greetd/sl-greeter \ %{_sysconfdir}/greetd/last-session /var/lib/greetd/.config if [ -e /usr/share/backgrounds/default.png ]; then ln -sf /usr/share/backgrounds/default.png \ /usr/local/share/backgrounds/sl-greeter-current-background fi ln -sf /usr/local/share/backgrounds/sl-greeter-current-background \ %{_sysconfdir}/greetd/sl-greeter/current-background if getent passwd greeter >/dev/null 2>&1; then chown -R greeter:greeter /var/lib/greetd chown greeter:greeter %{_sysconfdir}/greetd/last-session chmod 755 %{_sysconfdir}/greetd/last-session fi if [ -f %{_sysconfdir}/pam.d/greetd ] && ! grep -q 'pam_gnome_keyring\.so' %{_sysconfdir}/pam.d/greetd; then echo 'auth optional pam_gnome_keyring.so' >> %{_sysconfdir}/pam.d/greetd echo 'session optional pam_gnome_keyring.so auto_start' >> %{_sysconfdir}/pam.d/greetd fi systemctl daemon-reload || true systemctl enable sl-sleep-lock.service || true systemctl --global disable sl-lock-listener.service >/dev/null 2>&1 || true systemctl --global enable sl-lock-listener.service || true REAL_USER=${SUDO_USER:-$(awk -F ":" '$3 >= 1000 && $3 < 60000 && $6 ~ /^\/home\// {print $1; exit}' /etc/passwd)} if [ -n "$REAL_USER" ] && [ "$REAL_USER" != "root" ]; then USER_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6) if [ -n "$USER_HOME" ] && [ -d "$USER_HOME" ]; then mkdir -p "$USER_HOME/.local/bin" if [ ! -e "$USER_HOME/.local/bin/current-background" ] && [ ! -L "$USER_HOME/.local/bin/current-background" ]; then ln -s /usr/local/share/backgrounds/sl-greeter-current-background \ "$USER_HOME/.local/bin/current-background" fi chown -R "$REAL_USER:$REAL_USER" "$USER_HOME/.local" fi fi %postun if [ $1 -eq 0 ]; then systemctl disable --now sl-sleep-lock.service >/dev/null 2>&1 || true systemctl --global disable sl-lock-listener.service >/dev/null 2>&1 || true systemctl daemon-reload >/dev/null 2>&1 || true fi %files %config(noreplace) %{_sysconfdir}/greetd/niri-greeter.kdl %dir %{_sysconfdir}/greetd/sl-greeter %{_bindir}/sl-session %{_bindir}/sl-lock %{_bindir}/sl-greeter %{_bindir}/sl-lock-listener %{_bindir}/sl-idle-lock %{_datadir}/sl-session/Assets/ %{_datadir}/sl-desktop-utils/greetd-config.toml %{_unitdir}/sl-sleep-lock.service %{_userunitdir}/sl-lock-listener.service %{_unitdir}/greetd.service.d/override.conf /usr/lib/elogind/system-sleep/10-sl-sleep-lock.sh %config(noreplace) %{_sysconfdir}/profile.d/sl-lock-autostart.sh