Skip to content

feat(launcher): add Start-menu popup (MS4 minimal slice)#9

Merged
Charliechen114514 merged 4 commits into
mainfrom
feat/ms4-launcher-popup
Jun 26, 2026
Merged

feat(launcher): add Start-menu popup (MS4 minimal slice)#9
Charliechen114514 merged 4 commits into
mainfrom
feat/ms4-launcher-popup

Conversation

@Charliechen114514

Copy link
Copy Markdown
Member

First slice of MS4 (Start-menu launcher), landed via the new trunk-based flow.

What

  • New leading StartButton on CenteredTaskbar emitting the existing (previously unwired) launcherRequested() signal.
  • AppLauncher: frameless Qt::Popup with a rounded Material SURFACE surface + a centered QGridLayout of LauncherTile entries built from the shared AppEntry list. ESC and outside-click dismiss it.
  • LauncherTile: TaskbarIcon visual language (hover zoom + ripple) with a caption beneath; no running dot.
  • Clicking a tile routes through the same launch path as a taskbar tile click: a shared launch_app(app_id) callable → AppLaunchService::launch + PID capture, so the taskbar running indicator lights for launcher-launched apps too.

Why

The minimal desktop closed-loop already works (taskbar click → launch → window tracking → running indicator), but there was no launcher UI. This adds the missing user-visible Start-menu surface, reusing the existing launch+PID path rather than parallel wiring.

Scope (v1)

In: StartButton, LauncherTile, AppLauncher, CFDesktopEntity wiring, lift app_entry.h to components/, gtest suite (4 cases).
Out (follow-ups): search box, scrollable overflow, MD enter/exit animation, MdElevationController shadow, icon-path pixmaps, Windows-specific defaultApps().

Notes

  • Lifted app_entry.h to desktop/ui/components/ (shared by taskbar + launcher); zero call-site edits (both targets already include the components root).
  • CenteredTaskbar::setApps now clears only a dedicated icon sub-layout — previously it cleared the whole layout, which would have deleted the new start button (a latent bug now fixed).

Verified locally

  • linux_configure.sh + full cmake --build: green
  • app_launcher_test: 4/4 pass (tile count, hidden, ESC, click→appLaunched) headless
  • scripts/doxygen/lint.py: All Doxygen checks passed

Add a Start-menu style app launcher popup, opened from a new leading StartButton on the CenteredTaskbar (emits the existing launcherRequested() signal). The popup shows a centered grid of LauncherTile entries built from the shared AppEntry list; clicking a tile routes through the same launch path as a taskbar tile click (shared launch_app callable -> AppLaunchService::launch + PID capture), so the taskbar running indicator lights for launcher-launched apps too.

- app_entry.h lifted to components/ root (shared by taskbar + launcher)
- CenteredTaskbar: dedicated icon sub-layout (fixes setApps clearing the whole layout); StartButton wired to launcherRequested()
- LauncherTile: TaskbarIcon visual language + caption, no running dot
- AppLauncher: Qt::Popup frameless rounded SURFACE surface, QGridLayout, ESC / outside-click dismiss
- CFDesktopEntity: refactor launch lambda into shared launch_app; wire appLaunched + launcherRequested
- test/desktop/launcher: 4 gtest cases (tile count, hidden, ESC, click->signal)
@Charliechen114514 Charliechen114514 merged commit c20f1d0 into main Jun 26, 2026
6 checks passed
@Charliechen114514 Charliechen114514 deleted the feat/ms4-launcher-popup branch June 26, 2026 05:26
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.

1 participant