%global extension_uuid gaze@gundulabs.com Name: gaze-gnome-extension Epoch: 1 Version: 0.2.10 Release: 2.gnome51%{?dist} Summary: GNOME Shell 51 extension for Gaze face authentication License: GPL-3.0-or-later URL: https://gaze.gundulabs.com Source0: %{name}-%{version}.tar.gz BuildArch: noarch BuildRequires: gjs BuildRequires: glib2 BuildRequires: python3 Requires: gaze >= 0.2.10 Requires: gnome-shell >= 51~beta Requires: gnome-shell < 52 Requires(post): dconf Requires(post): glib2 Requires(postun): dconf Requires(postun): glib2 Recommends: policycoreutils %description Gaze integration for GNOME Shell 51. It starts the gdm-face PAM service in lock-screen and GDM authentication flows and integrates confirmation prompts with GNOME Shell and the graphical Polkit agent. %prep %autosetup %build %check python3 -m json.tool extension/metadata.json >/dev/null glib-compile-schemas --strict --dry-run schemas gjs -m tests/policy.test.js sh tests/source-invariants.sh %install extension_dir=%{buildroot}%{_datadir}/gnome-shell/extensions/%{extension_uuid} install -dpm 0755 "$extension_dir/lib" install -pm 0644 extension/extension.js extension/metadata.json extension/prefs.js "$extension_dir/" install -pm 0644 extension/lib/policy.js "$extension_dir/lib/" install -Dpm 0644 schemas/org.gnome.shell.extensions.gaze.gschema.xml \ %{buildroot}%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.gaze.gschema.xml install -Dpm 0644 packaging/gdm/00-gaze-defaults \ %{buildroot}%{_sysconfdir}/dconf/db/gdm.d/00-gaze-defaults install -Dpm 0644 packaging/gdm/profile \ %{buildroot}%{_datadir}/gaze/dconf-profile-gdm install -Dpm 0644 packaging/pam/gdm-face \ %{buildroot}%{_sysconfdir}/pam.d/gdm-face %post profile=%{_sysconfdir}/dconf/profile/gdm template=%{_datadir}/gaze/dconf-profile-gdm insert_profile_db() { db="system-db:$1" after="$2" required="$3" grep -qxF "$db" "$profile" && return 0 if ! grep -qxF "$after" "$profile"; then [ "$required" = required ] || return 0 printf '%s\n' "$db" >>"$profile" return 0 fi tmp="${profile}.gaze-tmp" if awk -v db="$db" -v after="$after" ' { print } $0 == after && !inserted { print db; inserted = 1 } ' "$profile" >"$tmp"; then cat "$tmp" >"$profile" fi rm -f "$tmp" } if [ -f "$template" ]; then if [ ! -f "$profile" ]; then install -dpm 0755 "$(dirname "$profile")" cp -p "$template" "$profile" else insert_profile_db gdm user-db:user required || : if [ -d %{_sysconfdir}/dconf/db/distro.d ]; then insert_profile_db distro system-db:gdm optional || : fi fi fi dconf update >/dev/null 2>&1 || : glib-compile-schemas %{_datadir}/glib-2.0/schemas >/dev/null 2>&1 || : if [ -f %{_datadir}/gaze/gaze-gdm-camera.pp ] && command -v semodule >/dev/null 2>&1; then semodule -i %{_datadir}/gaze/gaze-gdm-camera.pp >/dev/null 2>&1 || : fi %postun case "${1:-0}" in 1|2) ;; *) rm -f %{_sysconfdir}/dconf/db/gdm.d/99-gaze* 2>/dev/null || : ;; esac dconf update >/dev/null 2>&1 || : glib-compile-schemas %{_datadir}/glib-2.0/schemas >/dev/null 2>&1 || : %files %license LICENSE %doc README.md TESTING.md %{_datadir}/gnome-shell/extensions/%{extension_uuid}/ %{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.gaze.gschema.xml %config(noreplace) %{_sysconfdir}/dconf/db/gdm.d/00-gaze-defaults %config(noreplace) %{_sysconfdir}/pam.d/gdm-face %{_datadir}/gaze/dconf-profile-gdm %changelog * Wed Aug 19 2026 Gaze GNOME 51 Maintainers - 1:0.2.10-2.gnome51 - Preserve GNOME Shell 51's native authentication mechanism registry. - Run gdm-face as a background AuthServicesLegacy conversation. * Wed Aug 19 2026 Gaze GNOME 51 Maintainers - 1:0.2.10-1.gnome51 - Port the Gaze authentication extension to GNOME Shell 51.