Skip to content

feat(kde): add a native Plasma System Settings page for Gaze - #785

Merged
pranavgundu merged 16 commits into
GunduLabs:mainfrom
onuralpszr:feat/kde-kcm
Oct 14, 2026
Merged

pranavgundu merged 16 commits into
GunduLabs:mainfrom
onuralpszr:feat/kde-kcm

Conversation

@onuralpszr

@onuralpszr onuralpszr commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds a Kirigami page under System Settings, backed by a small C++ plugin (Qt6 and KDE Frameworks 6) that talks to gazed over D-Bus, that lists, adds, renames and deletes faces with a live camera preview, tests authentication, and edits every Gaze setting behind a polkit unlock, with a Restart Service button. The RPM gaze-kde package ships it in place of the gaze-gui launcher, and a Gaze Settings launcher opens it in its own window. Only the RPM package ships the page for now: deb and Arch keep the old Face Unlock entry because their package builds have no KDE Frameworks 6 development files, Flatpak is unchanged because a sandboxed app cannot add a System Settings plugin, and Nix is unchanged because the NixOS module only mirrors the lock screen PAM setup and has no package to carry the page.

Related issues

Closes #343.

Type of change

  • New feature
  • Packaging, install, or uninstall
  • CI or build tooling

Areas touched

  • KDE Plasma integration
  • Packaging, systemd units, or polkit policy
  • Docs

Verification

Required checks. All jobs on this PR are green: Format, Lint, Test, Audit, Build, KDE, GNOME, Nix, and the deb, archlinux, Fedora rpm, openSUSE rpm, srpm and flatpak package jobs. Locally node scripts/test-kde.mjs passes 160 of 160, and the Fedora gaze-kde RPM builds with nfpm.

Tests.

  • Added or updated tests for the changed behavior
  • Not testable in CI without hardware or system services, manual steps are below. The settings logic and the face list model have Qt tests (just test-kcm), and enrollment, Test, unlock and restart need a camera or the running daemon.

Manual verification. Tested on Fedora, Plasma 6.7.5, Intel NPU laptop. Open System Settings, find Gaze under System Administration, unlock with the administrator password, enroll, rename and delete a face, run Test, switch the security level to Custom, change the OpenVINO device between cpu and npu, then press Restart Service. Result: the changes save, the service restarts and the page reloads.

Licensing

  • New files carry the SPDX header used throughout the tree
  • No code was copied from a project whose license is incompatible with GPL-3.0-or-later
  • Any new dependency is license-compatible and I checked it myself, since just audit does not. The only new dependencies are Qt6 and KF6 libraries (LGPL or GPL compatible), linked dynamically from the distro, and there are no new Cargo crates.
  • I agree that my contribution is licensed under GPL-3.0-or-later

Follow-ups and known limitations

This is the first C++ code in the repo, so just fmt-check, just lint and just audit do not cover it, and only the CMake build in the RPM jobs does. The openSUSE package names for the KF6 build dependencies were only confirmed by the CI job, and I did not try a Copr build(Because I build locally so I can repro RPM spec) or a Nix build. deb, Arch, Flatpak and Nix do not get the page yet.

AI disclosure

  • Assisted. AI helped docs prose, certain quick small test and couple of naming. I mostly used a small local LLM to ask certain types and rest of the code written by hand
  • Tools is local llama.cpp + qwen and gemma model to quick check and ask and some better english typing for docs section

Screenshots

Screenshot_20261014_093414 Screenshot_20261014_093446 Screenshot_20261014_093523 Screenshot_20261014_093548 Screenshot_20261014_093602 Screenshot_20261014_093618 Screenshot_20261014_093711 Screenshot_20261014_093737 Screenshot_20261014_093753 Screenshot_20261014_093915

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…tes faces

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…page backend

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…he GNOME page

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…-kde package

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…tings page for RPM packages

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
…n window

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
… the settings

Signed-off-by: Onuralp SEZER <thunderbirdtr@gmail.com>
@onuralpszr

Copy link
Copy Markdown
Contributor Author

Hello @pranavgundu I know that PR is slightly large but I wanted to have complete sense of experience and try to follow GNOME UI as much as possible to making sure they we have same experience and nothing left out. I hope it will be added because this would be huge for KDE side maybe one comment I would see not "system kcm" category but security would be better but I didn't touch it. Anyway if you want to you can do changes as well but generally now have proper Kirigami/KDE based on UI and KCM (system settings plugin) too :)

@pranavgundu

Copy link
Copy Markdown
Member

Can you please follow the PR template?

@onuralpszr

Copy link
Copy Markdown
Contributor Author

Can you please follow the PR template?

Done

@pranavgundu

Copy link
Copy Markdown
Member

Can you fill in the AI disclosure section?

@onuralpszr

Copy link
Copy Markdown
Contributor Author

Can you fill in the AI disclosure section?

I added it.

@pranavgundu
pranavgundu merged commit db11b16 into GunduLabs:main Oct 14, 2026
29 of 30 checks passed
@onuralpszr
onuralpszr deleted the feat/kde-kcm branch October 15, 2026 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Gaze KDE Configuration Module

2 participants