Commit Graph
2293 Commits
Author SHA1 Message Date
bbedward 765ffe8564 plugins: hide the list under the detail overlay
plugins: block activation when the startup check cannot run

ref #3626
2026-09-29 16:57:24 -04:00
Mario Mohar 53b8de2714 fix(keybinds): warn when a bind's key sits above the layout's first level (#3591)
A compositor resolves a bind's keysym on the first level of the active
layout. Layouts that put punctuation higher up therefore cannot reach it
at all: de:neo has bracketleft on layer 4 and plain de on AltGr, so
Mod+bracketleft is a bind that can never fire. The editor recorded and
stored it anyway and gave no sign that anything was wrong (#3585).

`dms keybinds keymap` now reports what the seat's xkb keymap puts on the
first level of every physical key, and the editor says so instead of
letting a dead bind through.

The keymap a compositor hands out writes its keysyms as hex, so only the
range the keymap package can name back is usable for the comparison.
That is the ASCII range, which is where the problem lives, and the
command reports the vocabulary alongside the keys so the caller can tell
"the layout cannot reach this" from "we could not name it" and stay
quiet in the second case.
2026-09-29 16:57:13 -04:00
Hatta 3081941592 lock: lock before sleep when the command skips logind (#3587)
* lock: lock before sleep when the command skips logind

Custom hibernate never emits PrepareForSleep, so the session stayed unlocked. Wait for the compositor lock on every sleep path, and release the delay inhibitor if that lock finished first.

* lock: release the sleep inhibitor only after lockerReady

* lock: read the sleep inhibitor under its mutex in the race test
2026-09-29 16:50:13 -04:00
arfan c205358b79 feat(settings-appdefault): add office and archive manager categories (#3580)
Add word processor, spreadsheet, presentation and archive manager
selectors to default apps, fix calendar lookup to query text/calendar
first so Dank Calendar is detected, and expand image mime coverage
with tiff/heic/heif/jxl.
2026-09-29 16:42:49 -04:00
dion 13034cb85c audio: add mono audio toggle with support detection (#3539) 2026-09-29 16:38:22 -04:00
bbedward f482642880 sysupdate: check only on demand, run at low priority, fix the settings page
scrollbar: interface style toggle and no scrollbars in the dash
dash: never allow scrollbars
cc: widget sheet cards, header close button and content-sized dialogs
2026-09-29 16:30:04 -04:00
bbedward aced05157b cc: redesign 7 with a persistent footer and individually tiled buttons 2026-09-29 14:52:40 -04:00
bbedward 2fb0cfee60 delete bad test 2026-09-29 11:24:52 -04:00
bbedward 182e08b1a4 dash: soft primary container, per-widget options and weather tones 2026-09-29 11:22:55 -04:00
bbedward 00952d4d51 settings: window rule editor on the shortcut editor's dialog and cards
fixes #3608
2026-09-29 11:11:23 -04:00
purian23 35faa3130c feat(island): add clipboard support & align launcher sizing options 2026-09-29 03:30:58 -04:00
purian23 97ec64ff97 refactor(cc / blur): restore card background on quick controls & unify blur popouts on Dash/CC 2026-09-29 01:39:58 -04:00
purian23 3fb27d93de fix(hubHint): filter hidden children & test fix 2026-09-28 21:02:59 -04:00
purian23 eda77f7816 feat(settings): dms system software updates & versioning support 2026-09-28 19:45:07 -04:00
bbedward 33bc0a0dff cc: network popup opens at the top
fixes #3605
2026-09-28 16:59:42 -04:00
bbedward e372c48009 settings/cc: network and brightness pages on the shared row pattern
fixes #3602
fixes #3603
fixes #3610
2026-09-28 16:52:51 -04:00
bbedward f9de6b86ea theme: unify every selected list fill on selectedContainer 2026-09-28 16:05:12 -04:00
bbedward ffe2da7e99 avatar: material person glyph instead of an app icon lookup
fixes #3600
2026-09-28 14:43:04 -04:00
bbedward 1142390724 settings: add + item name on every creation fab
settings: stop repeating the page title as the first card label
translations: index untitled cards by their page, not a nested row

fixes #3604
fixes #3609
2026-09-28 14:38:43 -04:00
bbedward 4ca4e2586e cc: change header design and sliders
fixes #3606
2026-09-28 14:26:42 -04:00
bbedward a609b5f999 cc: bg off by default in header 2026-09-27 23:37:09 -04:00
bbedward f6bb4b1727 control center: merge user card and quick actions into one pinned header tile 2026-09-27 23:26:14 -04:00
purian23 64b4d0d235 feat(control center): configurable user card & power control action tiles
- Quick actions are reorderable with button color roles and optional power accents
- Updated dank-qml-common
2026-09-27 20:55:54 -04:00
Feng Yu a4e500bc00 dankbar: bind clickthrough mask regions to section items (#3595) 2026-09-27 18:24:21 -04:00
bbedward d5c96a1756 keybinds: resolve the main modifier per compositor and report it on the cheatsheet 2026-09-27 16:19:06 -04:00
Alexander 734314d09f bar: allow popouts from bars revealed in overview (#3592) 2026-09-27 16:13:03 -04:00
bbedward e4fb86be91 cc: prevent edit mode from leaving screen boundaries 2026-09-27 11:57:53 -04:00
Huỳnh Thiện Lộc 77a6cdfc00 fix(dock): prune orphaned dock surfaces and invalidate frame on deletion (#3577) 2026-09-27 11:50:27 -04:00
Matt Jiang f27627ead2 powermenu: reboot into a chosen EFI boot entry (#3568)
* powermenu: derive shortcuts and extra actions from one source

The power menu matched keys with a switch that repeated the key hints
getPowerActionData already returns, plus a second key list for release.
Look the pressed key up against the hints of the visible actions instead,
so every action with a hint gets its shortcut and the two cannot drift.

Side effects:
- Ctrl+letter no longer triggers actions. Only Ctrl+P was excluded
  before, so Ctrl+R still rebooted. Ctrl combinations are navigation.
- U now triggers switch user when it is shown. Its hint already said U.
- Releasing a letter with no visible action no longer cancels a hold.

SessionService now owns the custom:N action ids as customPowerActions
and extraPowerActions, which the power menu and the launcher both use.
Actions resolve by index into that list instead of slicing the prefix.

* powermenu: add actions that reboot into a chosen efi boot entry

Settings → Power & Sleep gets a "Reboot to another OS" card that lists
the firmware's active EFI entries through efibootmgr. Each saved entry
becomes a "Reboot to <name>" action in the power menu and the launcher,
bound to 1-9 in the order it was added.

Picking one lists the entries again, and stops with a toast if the id no
longer carries the saved label. Otherwise it sets BootNext through pkexec
and reboots through SessionService, so custom reboot commands still apply.

BootEntryService reports why entries are unavailable: not booted in UEFI
mode, efibootmgr missing, or efibootmgr failing with its stderr. Saved
entries stay listed in settings whatever the status, so a synced config
on another machine can still remove them.

efibootmgr parsing and the picker's filtering live in BootEntries.js,
covered by tests/boot-entries.test.mjs.

* powermenu: ignore special keys in action shortcuts
2026-09-27 11:47:05 -04:00
arfan 814620a934 fix(theme): update focus highlight colors for list and quick input components (#3579) 2026-09-27 11:46:44 -04:00
Huỳnh Thiện Lộc 980d37c9da fix(bar): update center section layout synchronously on child size changes (#3588) 2026-09-27 11:45:02 -04:00
Huỳnh Thiện Lộc 0717908d53 fix(island): avoid bottom clipping in media expanded sheet (#3593) 2026-09-27 11:44:08 -04:00
bbedward 4b00c047da launcher: keep the shift+enter paste process alive after the launcher closes
fixes #3586
2026-09-27 11:41:55 -04:00
purian23 5623476126 feat(island): host the island as a widget in any bar configuration
- The island is now a bar widget so any bar can host one alongside the island layout and dot
- Routing got simpler: pick which shortcuts open here, the rest follow the shared rules
- IPC close/hide take down every surface showing the activity
- Qt 6.11 pointer prune workaround so the expanded island stays clickable
2026-09-27 02:02:30 -04:00
bbedward 9dc5b2c5af settings: some loader restructure and restyle keybinds
island: fix satellite opacity and blur
2026-09-26 16:25:34 -04:00
bbedward 09e7ea0221 lyrics: share one mpris controller via LyricsService, accept plain sources 2026-09-26 14:34:32 -04:00
Huỳnh Thiện Lộc 1fc4537894 fix(sysmon): performance tab transparency flicker (#3576)
* fix(sysmon): prevent transparency flicker when switching to performance tab

* fix(sysmon): preload tabs on modal open and ensure immediate floating surface resolution
2026-09-25 22:45:51 -04:00
bbedward e796f9d1ed i18n: sync 2026-09-25 21:33:56 -04:00
bbedward a48f41b749 theme: switch to dankgo material utilities fork
settings: label some non-obvious thing swith more details

fixes #3555
fixes #3553
2026-09-25 21:31:34 -04:00
bbedward 3247476368 settings: rank search results by page level and whole-word matches 2026-09-25 18:54:53 -04:00
bbedward 3b1b63c93f notepad: confirm before loading files over 5 MiB
closes #3574
2026-09-25 18:36:42 -04:00
bbedward c7ab8993e5 media: add empty state and contained lyrics loader 2026-09-25 17:43:41 -04:00
bbedward cc45f8b445 settings: add reusable FAB component and use it in more places 2026-09-25 15:02:45 -04:00
Marcus Ramberg 8da739a3ea feat(cellular): expose signal strength and conn type (#3533)
network manager doesn't expose this so talk to modem manager over dbus
2026-09-25 15:02:23 -04:00
bbedward 3b529b3a97 lyrics: add kugou and YT music providers 2026-09-25 14:02:27 -04:00
LemonMon 60342b7416 fix: stabilize tray item key to prevent position jumps on property changes (#3386)
* fix: keep tray order stable when tooltipTitle changes dynamically

Revert the earlier simplistic key approach: keep getTrayItemKey()
unchanged (id::tooltipTitle) so duplicate-id disambiguation (#1542)
is preserved and persisted id::tooltipTitle entries keep matching.

Instead make persisted-key lookups tolerant of dynamic tooltipTitle:
resolveOrderIndex() in sortByPreferredOrder() does exact match first,
falling back to prefix matching an id::* entry only when the id has a
single instance. findSavedTrayKey()/isTrayIdHidden() replace direct
SessionData.isHiddenTrayId() calls and showTrayId() now receives the
actual saved key.

Prefix fallback is gated by trayItemCountForId() to single-instance
ids only, so multiple items sharing an id always match exactly and
hiding/ordering one never affects the others.

* fix: bail on ambiguous saved tray keys in fallback

* tray: use occurrence index as stable key, add one-time session migration

* tray: pin stable key per item instance so it never flips when siblings come and go

* tray: assign unique per-id sequential keys to avoid collision after sibling exit

* tray: reuse free key slots so a restarted singleton keeps its plain id
2026-09-25 11:10:40 -04:00
Vladimir KosteleiandClaude Opus 5 d7074a53eb fix: fingerprint lid open (#3448)
* lock: keep the fingerprint reader usable across suspend

The reader stopped responding after the lid was closed and opened, after a long
idle period, and after suspend.

The shell held a PAM session for as long as the screen was locked, so a suspend
always landed on a running verify. fprintd then suspends the device under the
verify, pam_fprintd's ReleaseDevice fails with "device is still busy", and the
claim is never released, so every later Claim fails until fprintd restarts. The
reader is now released when the monitors blank and armed again when they come
back, so a suspend has nothing left to wedge.

The PAM profile drops to max-tries=1 and sets an explicit timeout. pam_fprintd
only counts a wrong finger, so one finished session is now one wrong scan and
maxFprintTries means the number of scans it names rather than five times that.
A timeout expiry arrives as PamResult.Error, exactly like a device fault, so a
session that ran at least as long as the configured timeout is treated as a
planned renewal instead of spending the error budget and painting an error.

A suspend that still lands while the screen is on wedges as before. Recovery now
waits out fprintd's idle timeout instead of climbing to it, which brings the
reader back about 37 seconds after resume instead of about 98.

SessionService gains lidOpened from UPower, because logind can ignore the lid on
AC and resume alone is not enough. The lock PAM state machine is fixed alongside:
PamResult.Failed was dropped, a pending retry outlived the contexts that owned
it, and an availability check reset the wrong-scan counter.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q5LQHivuucTLXwLkvZMfcn

* lock: time the fingerprint session from the verify, not the claim

pam_fprintd's timeout runs from the verify, but the session age was measured
from start(), which folds the claim into it. A slow claim plus a verify that
failed before its own timeout could add up past the timeout and be taken for a
planned renewal, skipping the backoff. A session that never reached a verify had
the same problem.

The age now starts at the message pam_fprintd sends when the verify begins, so a
session that never verified can never qualify as an expiry, and a slow claim no
longer ages a fault. The message is translated and quickshell clears it before
completed, so only its timing is used, never its text.

That message arrives after pam_fprintd has already armed its deadline, because
VerifyStart is asynchronous, so the age read here runs short of the real timeout
and a slack makes it up. The bias is deliberate. A fault misread as a timeout
costs one extra retry, while a timeout misread as a fault parks the reader behind
a backoff that grows to a minute, which on an idle lock screen would leave it
unusable most of the time.

Also corrects the comment that claimed a timeout is reported without a message.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q5LQHivuucTLXwLkvZMfcn

---------

Co-authored-by: Claude Opus 5 <[email protected]>
2026-09-25 11:02:51 -04:00
Nat Fletcher 7c2140dd60 theme: add toggle to skip matugen at startup when nothing changed (#3270) 2026-09-25 10:56:20 -04:00
bbedward 3c14a41624 cc: remove slider wheel opt out from details pages 2026-09-25 10:50:31 -04:00
bbedward 361e9da26a matugen: use a contrasting color for vscode light theme constants
fixes #3566
2026-09-25 10:27:39 -04:00