Theme has no fontWeightNormal, so every unselected category tab in the
keybinds cheat sheet assigned undefined to font.weight. QML rejects
that and keeps the last value, so a tab stayed Medium after it was
deselected, and unselected tabs ignored the font weight setting.
Use Theme.fontWeight, the shell's regular weight.
On Hyprland, an island holding keyboard focus runs a focus grab that
only whitelisted the bar window. The full-screen dismiss layer wasn't
on the list, so the first click outside only ended the grab and the
card needed a second click to close. That hit every card that takes
keyboard focus (weather right away, media after a click inside).
Add the dismiss layer to the grab, the way DPopout whitelists its
background window.
* feat(island): add system tray slot and overflow menu to compact home
- Add system tray slot and overflow expander menu in Dynamic Island
- Share tray icon path resolution and DBus context menu fallback in TrayMenuManager
- Support edge-anchored context menu positioning across top, bottom, left, and right
- Lock bottom and edge anchoring in DContextMenu to prevent animation jitter
* fix(island): only instantiate tray menus when tray slot is enabled
* feat(island): expand tray item and caret click area to slot height
* fix(island): use Theme.surfaceTextHover and restore DContextMenu height behavior
* refactor(tray): extract shared TrayMenuContent and TrayOverflowGrid, support tray order and IPC in island
* Revert "refactor(tray): extract shared TrayMenuContent and TrayOverflowGrid, support tray order and IPC in island"
This reverts commit 29888f89cd.
* refactor(tray): use shared TrayMenuManager helpers and TrayItemIcon, support tray order and IPC in island
* refactor(tray): extract shared TrayMenuContent and TrayOverflowGrid
* feat(island): support tray item drag and drop reordering
* fix(island): prevent re-entrant tray drag reordering on model destruction
* fix(tray): remove native submenu anchor hydration to prevent popup stutter
* fix(tray): decouple submenu hydrator from anchor window to avoid stutter
* fix(tray): restore anchor window on submenu hydrator and disable on island
* tray: fix bar overflow surface & reuse max visible items on the island
Qt skips QPA plugins built for a different major.minor without any
visible error. Out-of-tree plugins such as the AUR qt6ct-kde keep the
file in place after a Qt update, so the check reported them as
installed while Qt apps and tray icons lost their theme. Compare the
version in the plugin's .note.qt.metadata ELF note with the installed
Qt and warn on a mismatch.
* feat(bar): support auto-hide for island in overlay mode
* fix(settings): restore selectedIslandDocked scope for overlay islands
* fix(bar): keep edge hover strip while island auto-hide is revealed
* island: open media and the power menu in one step, fix dash edits
- Clicking media on the home face opens the player. Closing a sheet
goes back to the face the user picked, and an opt-in setting
switches to media when playback starts.
- The power menu can open in the island (Super+X, the dock button),
with its own route row in the island settings.
- An island collapses when another popout opens on its screen.
- The widgets page hides the center section the island replaces.
- Dragging or resizing a dashboard card no longer blanks the overview:
Qt hands the committed list over as a non-array, which read as empty.
- The island blur region stays inside the rounded fill.
* fix(island): address review feedback on switching faces by mouse
Opening the player with one click removed the only mouse path from
the home face to the media face. A right-click on the collapsed island
now swaps between the two while media is available.
The swap resizes the island under the pointer, so hover-open stays off
until the pointer leaves. Without a face to swap to, the press is not
accepted and reaches the bar's own right-click action as before.
* notifications: allow extra conditions per rule
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* notifications: add translator context to the rule condition strings
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* don't use deprecated widgets
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: bbedward <[email protected]>
The rename IPC always read the name from NiriService, so on Hyprland the
field opened empty. Hyprland names are stored as "<id> <name>", so the
prefill drops that prefix to keep a second rename from stacking it.