Commit graph

75 commits

Author SHA1 Message Date
84c6795fd6 Ensure MauiKit4plugin builds with alakarte; fix app icon resource path 2026-03-24 11:36:07 +01:00
a0b9ea1832 Integrate MauiKit4/MauiMan4 as submodules, rewrite UI to MAUIkit console shell
- Add MauiMan4 + MauiKit4 submodules pinned at v4.0.2
- Wire both into CMake via CMAKE_FIND_PACKAGE_REDIRECTS_DIR build-tree stub
- Create MauiMan4 header shim for build-tree include layout
- Undefine QT_NO_CAST/QT_NO_FOREACH/QT_NO_KEYWORDS for MauiKit4 targets
- Link alakarte against MauiKit4
- Rewrite Main.qml: Maui.ApplicationWindow, dark console shell, blurred
  game backdrop, category rail, search bar, bottom gamepad hint bar
- Rewrite GameCard.qml: cover-art card with scale+glow focus effects
- Rewrite LibraryView.qml: Maui.GridBrowser with gamepad D-pad navigation
- New ConsoleCategoryRail.qml: horizontal pill category nav with L1/R1
- New ConsoleGameDetail.qml: cinematic full-screen game detail overlay
  with cover art, action buttons, fade-in animation, gamepad hints
2026-03-24 11:35:59 +01:00
e592e7b093 Add Plasma tray, notification inhibition, session control, and flatpak runner
Expand TrayController with daemon health polling every 10 seconds via
D-Bus Ping calls to org.kde.GameCenter1, org.kde.ALaKarte.Runner1, and
org.kde.ALaKarte.Input1. Add menu actions to toggle console behaviors,
notification mirroring, and to restart each daemon via systemctl --user.

Add NotificationInhibitor, owned by App, which calls
org.freedesktop.Notifications Inhibit/UnInhibit on the session bus
whenever the consoleBehaviors config setting changes. The cookie is
released on application quit.

Add consoleBehaviors and mirrorNotifications properties to Config with
KConfig persistence under the [Console] group.

Ship org.kde.alakarte.notifyrc defining GameLaunched, GameExited, and
LaunchFailed notification events so Plasma attributes them correctly in
the notification history.

Extend RunnerManagerDaemon::ResolveLaunch with a flatpak runner branch
that constructs a flatpak run command, translates environment overrides
to --env= arguments, and respects flatpakAppId, flatpakBranch,
flatpakArch, and flatpakArgs from the launch spec.

Add activate_session, switch_to_vt, and terminate_session actions to
the gamecenter KAuth helper and its polkit policy. Each action calls
the corresponding method on org.freedesktop.login1 over the system bus.

Add CouchSidebar.qml, a horizontal source tab bar shown in couch mode
above the library view, exposing the same sourceSelected, settingsRequested,
importRequested, and aboutRequested signals as SidebarView.

Fix duplicate adaptiveFocusRingWidth property in GameCard.qml.
2026-03-22 16:53:09 +01:00
d254b272fe src: migrate InputServiceClient to generated Input1 proxy 2026-02-15 15:11:08 +01:00
a893d4fd71 cmake: generate Input1 proxy for main app 2026-02-15 15:11:01 +01:00
47cab1cbe5 inputd: export Input1 via generated adaptor 2026-02-15 14:46:51 +01:00
c58801828c cmake: enable Input1 DBusTools codegen 2026-02-15 14:46:39 +01:00
1d61f3f84f dbus: add authoritative XML for Input1 2026-02-15 14:46:06 +01:00
16d4129ede runnermanagerclient: use generated Runner1 proxy 2026-02-15 13:57:42 +01:00
4676b1d9a6 gamelauncher: use generated DBus proxies 2026-02-15 13:57:23 +01:00
d94029fbc4 dbus: export daemons via generated adaptors 2026-02-15 13:55:50 +01:00
ed0e6ae181 cmake: enable Qt DBusTools codegen 2026-02-15 13:55:09 +01:00
c0938aa62a dbus: add authoritative XML for GameCenter1/Runner1 2026-02-15 13:54:48 +01:00
9cda4ce476 app/daemons: set standard app metadata 2026-02-15 13:54:08 +01:00
f03eb95b52 gamecenter: refactor ProcessScanner for cancellable single-pass scans
Add ProcessScanner::scan(ScanOptions) for combined env/cmdline/exe matching, extend Match with match-source flags, and make pollUntilFound() cancellation-aware. Update monitored launch matchers to use the new API.
2026-02-14 17:38:28 +01:00
7200ad179c Harden systemd scope cleanup
Tighten transient unit lifecycle handling in GameCenter.

- Drop stale unit watcher mappings on PropertiesChanged for removed sessions.
- When stopping a monitored launch due to timeout or attach failure, fall back
  to terminating scope PIDs if StopUnit fails unexpectedly.

This reduces leaked scopes and improves robustness in failure paths.
2026-02-14 16:45:37 +01:00
985f6dac03 Harden transient scope lifecycle
Improve GameCenter daemon handling of systemd transient scopes.

- Watch monitored-launch scopes early and avoid dropping Launching sessions
  when the unit disappears before PIDs are attached.
- Stop leaked scopes on AttachProcessesToUnit failures.
- Make Stop() resilient for recovered sessions by falling back to TERM/KILL
  on scope PIDs when StopUnit fails unexpectedly.
- Only recover scopes that match the expected A-La-Karte description.
2026-02-14 16:16:59 +01:00
d56b91dbd0 gamecenter: harden KAuth helper power profile setting 2026-02-14 14:08:45 +01:00
f3b130008f ui: drop system-bus GameCenter fallback 2026-02-14 14:02:07 +01:00
d4e0326974 gamecenter: move DBus object path to avoid KDBusService conflict 2026-02-14 12:42:18 +01:00
cca49615d6 App: guard individual import tasks during shutdown 2026-02-13 18:55:33 +01:00
4b7655bc6b App: guard importAllGames task during shutdown 2026-02-13 18:30:00 +01:00
058fe8c8e0 gamecenter: bound waitForStarted during direct launch 2026-02-13 14:04:11 +01:00
88db54458e gamecenter: delete detached processes when they finish 2026-02-13 13:47:50 +01:00
6080962cf9 lutris: avoid lingering process on import timeout 2026-02-13 13:40:33 +01:00
2285de6b1e gamecenter: detach running processes on shutdown 2026-02-13 13:36:06 +01:00
144076675c steamgriddb: save covers atomically 2026-02-13 13:20:45 +01:00
a032bec8c4 inputd: save profiles atomically 2026-02-13 13:16:36 +01:00
9160076aa2 runnerd: save registry and profiles atomically 2026-02-13 13:11:49 +01:00
c6f3e645f4 app: save library.json atomically 2026-02-13 13:06:19 +01:00
05ca3de5f5 runner: shutdown spawned runnerd QProcess reliably 2026-02-13 12:52:40 +01:00
ca19e21661 qml: avoid StackView footer anchor conflicts 2026-02-13 12:52:39 +01:00
b1dc8afd48 qml: fix menu popup visible bool binding 2026-02-13 12:52:28 +01:00
e9071c2b86 gamecenter: add KAuth helper for power profiles 2026-02-12 14:51:20 +01:00
9dbff6fdb8 settings: input service + compatibility UI 2026-02-12 14:48:39 +01:00
1e5a86fda8 input: add input service daemon + client 2026-02-12 14:47:50 +01:00
7724205354 runner: add game profile API 2026-02-12 14:44:20 +01:00
27a385e3c3 ui: enforce daemon-only launches 2026-02-12 14:42:22 +01:00
8e77a35f7f krunner: remove unscoped launch fallbacks 2026-02-12 14:36:19 +01:00
fbd9311384 gamecenter: systemd scopes + Stop reliability 2026-02-12 14:34:56 +01:00
c7956eed8b QML: runner inventory, prefix actions, and runner error notifications 2026-02-09 14:03:38 +01:00
4573a3106e GameCenter: integrate Runner1 resolution and improve daemon launch 2026-02-09 14:03:01 +01:00
97d915abc6 GameCenter: install system-bus service + DBus policy 2026-02-09 14:01:56 +01:00
1f1be64c8f Runner: add Runner1 daemon + client 2026-02-09 14:01:15 +01:00
d87c227347 Core: persist per-game runner launch config 2026-02-09 13:58:19 +01:00
ded8ad83da QML: show daemon availability banner
Expose the Game Center daemon availability to the UI and show\nan inline error banner when it is not reachable, with a retry action.
2026-02-06 14:03:22 +01:00
0485954eb8 KRunner: launch via Game Center daemon
Prefer launching through the Game Center DBus daemon and\nfall back to xdg-open for URL-based commands when needed.
2026-02-06 14:02:47 +01:00
fa9c86415f Launcher: use Game Center daemon
Route game launching and running-state tracking through the\nGame Center DBus daemon. This removes the in-process QProcess-based\ntracking in favor of daemon sessions and adds availability checks.
2026-02-06 14:02:24 +01:00
017073c162 Add Game Center daemon target
Build and install the Game Center daemon as a DBus-activated\nuser service. This introduces the new src/gamecenter target and\nwires it into the main build.
2026-02-06 14:01:35 +01:00
55d5a70656 Persist window size across restarts 2026-02-03 11:22:11 +01:00