Settings had a search index and the launcher had script commands, and neither knew about the other: finding a setting meant opening Settings first and searching there. One command per page is now generated from the same sources the in-app search reads -- the sidebar page list, the group routing, and the schema labels -- so a setting searchable inside Settings is searchable from the launcher without a second list to maintain. Generating it surfaced a gap in the in-app search as well. Six pages had no vocabulary at all, because their contents come from the system rather than our schema, so searching "volume" found nothing in Settings either. They now carry entries, which improves both surfaces. The product prefix is dropped from every hand-written command title. The generated ones are qualified "Settings: <page>" instead: a bare page label collides with the feature of the same name, and two commands sharing a title are indistinguishable in a launcher. Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
115 lines
7.0 KiB
Markdown
115 lines
7.0 KiB
Markdown
# Panama desktop parity
|
|
|
|
This is the living inventory for the GNOME-to-Hyprland transition. It records
|
|
real behavior, not a one-for-one count of extensions: an enabled extension with
|
|
no configured action is not treated as missing functionality.
|
|
|
|
Last live audit: 2026-08-17, Fedora 44, Hyprland 0.56.2, Quickshell 0.3.0.
|
|
|
|
## Daily desktop surfaces
|
|
|
|
| Capability | Panama implementation | Status |
|
|
|---|---|---|
|
|
| App launcher and run dialog | Vicinae; Wofi emergency fallback | Live |
|
|
| App grid | Vicinae applications provider | Live |
|
|
| Hidden applications | GNOME App Hider list in Vicinae provider config | Live |
|
|
| Tiling and dynamic workspaces | Hyprland Lua config, Forge keymap preserved | Live |
|
|
| Overview | Continuum filmstrip, large workspace preview, cross-workspace search | Live |
|
|
| Minimize | `SUPER+SHIFT+X` sends to scratchpad; `SUPER+X` restores | Live |
|
|
| Dock | Quickshell dock with GNOME favorites and intellihide | Live |
|
|
| Panel | Workspaces, CPU/RAM/GPU, clock, weather, quiet event capsule, media, clipboard, tray, status | Live |
|
|
| Clipboard history | Vicinae owns capture/storage; Quickshell provides the panel | Live |
|
|
| Notifications | Quickshell server, toasts, grouped history, DND, clear actions | Live |
|
|
| Date menu | Two-column Daybook with Agenda, Ongoing activity, Notifications, month calendar, weather, and media | Live |
|
|
| Ongoing activity | Focus, Caffeine, recording, screen sharing, camera, and microphone state with direct controls | Live |
|
|
| Calendar agenda | Existing GNOME, Google, iCloud, and Nextcloud sources through Evolution Data Server | Live |
|
|
| Control Center | Wi-Fi, Bluetooth, audio input/output, Caffeine, Night Light, Focus, Home Assistant favorites, and KDE Connect phone continuity | Live |
|
|
| Focus sessions | Persistent workspace-bound timer, DND/caffeine coordination, Signal Glass controls | Live |
|
|
| Brightness | Appears only when a backlight device exists | Live, not applicable on this monitor |
|
|
| AppIndicator / tray | Native StatusNotifierItem host and themed menus | Live |
|
|
| Screenshot and recording | Quickshell picker, grim/slurp/satty/wf-recorder | Live |
|
|
| Screen text and code recognition | Local Tesseract/ZBar Read mode, selectable Prism result sheet | Live after package install |
|
|
| Lock, idle, and power | hyprlock, hypridle, login1, Quickshell power menu | Live |
|
|
| Wallpaper | hyprpaper | Live |
|
|
| Keyring and authorization | gnome-keyring and hyprpolkitagent | Live |
|
|
| Portals and screen sharing | xdg-desktop-portal-hyprland plus GTK portal | Live |
|
|
| Removable media | udiskie plus udisks notifications | Live |
|
|
| Autostart apps | Nextcloud, Bitwarden, and RustDesk system service/tray | Live |
|
|
| Printer administration | CUPS with the `system-config-printer` graphical interface | Live |
|
|
| System settings | The Settings app for display policy, appearance, desktop, sound, focus, shortcuts, and services; labeled GNOME hardware/account handoffs | Live |
|
|
| System health and recovery | Settings → System Health, `Check System Health` in Vicinae, a degraded-only bar indicator, redacted reports, and bounded Panama-owned repairs | Live |
|
|
|
|
## System health and recovery
|
|
|
|
Panama stays silent while the desktop is healthy. A compact bar indicator
|
|
appears only for actionable warnings or errors and opens the same **System
|
|
Health** page available from Settings and the Vicinae command **Check
|
|
System Health**. The terminal summary is available with:
|
|
|
|
```bash
|
|
~/.config/quickshell/scripts/panama-doctor --summary
|
|
```
|
|
|
|
The doctor reports authored, redacted observations about Panama-owned services,
|
|
tools, links, and configured integrations. It does not read secrets, clipboard
|
|
or notification contents, calendar events, SSIDs, or device addresses. Repairs
|
|
are a small allow-list: Panama user services, Panama-owned links and launcher
|
|
commands, duplicate Panama Caffeine inhibitors, and a confirmed shell restart.
|
|
They never install packages, invoke `sudo`, delete user data, or rewrite
|
|
arbitrary configuration.
|
|
|
|
Generic Fedora configuration remains with the system tools that own it. The
|
|
final System Health card hands network settings, users, sharing, color
|
|
profiles, and digital wellbeing to their exact GNOME Settings panels rather
|
|
than presenting inert Hyprland controls.
|
|
|
|
## GNOME extension migration
|
|
|
|
| GNOME extension | Result |
|
|
|---|---|
|
|
| Forge | Replaced by Hyprland tiling and the original keymap |
|
|
| Dash to Dock | Replaced by the Quickshell dock |
|
|
| AppIndicator | Replaced by the Quickshell system tray |
|
|
| Clipboard Indicator | Replaced by the bar clipboard panel and Vicinae history |
|
|
| Emoji Copy | Replaced by Vicinae emoji search on `SUPER+.` |
|
|
| Vitals | Replaced by the CPU, memory, and GPU bar readouts |
|
|
| Weather O'Clock | Replaced by bar weather and the date-menu weather card |
|
|
| Caffeine | Replaced by a real logind inhibitor in quick settings |
|
|
| Blur My Shell / Openbar / User Theme | Replaced by the Prism shell and compositor blur |
|
|
| Bluetooth Quick Connect | Replaced by the full Bluetooth picker |
|
|
| Wi-Fi QR | Replaced by an on-demand QR-code sharing flow in Control Center's Wi-Fi panel; the code is generated only while shown and written to tmpfs, never persisted |
|
|
| GSConnect | Replaced by capability-aware KDE Connect phone continuity in Control Center; the paired iPhone exposes file, clipboard, and Ring actions when reachable |
|
|
| Home Assistant | Replaced by secure favorites in Control Center; explicit private environment values take precedence over the existing GNOME extension and Secret Service setup |
|
|
| Custom Hot Corners Extended | No action was configured, so there is no behavior to port |
|
|
| App Hider | Hidden app list is now applied in Vicinae |
|
|
| Allow Locked Remote Desktop | Mutter-specific patch; RustDesk is independent, but lock-screen access needs a real remote test |
|
|
|
|
## System UI still worth adding
|
|
|
|
These are not blockers for normal use, but they are the remaining places where
|
|
a polished general-purpose desktop can go beyond the current shell.
|
|
|
|
1. A real external RustDesk test while hyprlock is active. Local process state
|
|
cannot prove what a remote client sees or whether input is accepted.
|
|
|
|
KDE Connect, the printer UI, Tesseract, and ZBar are installed and remain
|
|
tracked in `setup/packages/hyprland-packages`.
|
|
|
|
## Global menu decision
|
|
|
|
A macOS-style global application menu is not being shipped. Quickshell can
|
|
render a `DBusMenu` that an application already exports, but it does not provide
|
|
an application-menu registrar or a reliable focused-window-to-menu association.
|
|
Hyprland has no cross-toolkit global-menu protocol, and the daily applications
|
|
audited here do not consistently export one: GTK 4/Nautilus and Electron apps
|
|
are the important failures.
|
|
|
|
That would produce a premium-looking empty strip for most windows and a working
|
|
menu for a minority, which is worse than omitting it. Relevant references:
|
|
|
|
- <https://quickshell.org/docs/v0.3.0/types/Quickshell/DBusMenu/>
|
|
- <https://github.com/hyprwm/Hyprland/discussions/1358>
|
|
|
|
A future focused-window menu could expose compositor actions such as float,
|
|
move, fullscreen, and close. It should not be labeled as an application menu.
|