Commit Graph
61 Commits
Author SHA1 Message Date
bbedward f9de6b86ea theme: unify every selected list fill on selectedContainer 2026-09-28 16:05:12 -04:00
bbedward 4ca4e2586e cc: change header design and sliders
fixes #3606
2026-09-28 14:26:42 -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
bbedward d5c96a1756 keybinds: resolve the main modifier per compositor and report it on the cheatsheet 2026-09-27 16:19:06 -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
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 09e7ea0221 lyrics: share one mpris controller via LyricsService, accept plain sources 2026-09-26 14:34:32 -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
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
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
bbedward 890166e384 cc: apply some non-compositor blur to details pages based on settings
Can't do real compositor blur since they arent real subsurfaces
2026-09-25 10:27:39 -04:00
bbedward 82fd310732 lyrics: restore loaded lyrics when the media tab is recreated
fixes #3563
2026-09-24 21:25:12 -04:00
bbedward ec6407fb1e cc: drop the detail dialog scroller so pages scroll to their end
fixes #3562
2026-09-24 21:03:26 -04:00
bbedward 8508121f4a bar: open hidden and disabled widgets over ipc
fixes #3550
2026-09-24 14:57:18 -04:00
bbedward 878aa69fac lyrics: keep following through same-song refreshes 2026-09-23 20:16:42 -04:00
bbedward 62098c8add rename test 2026-09-22 22:14:35 -04:00
purian23 edf936973f fix(pointer): update mouse pointer on bar widgets 2026-09-22 21:44:52 -04:00
purian23 a96dea2019 settings: re-org & unify bar sections into updated sub-sections 2026-09-22 20:41:24 -04:00
purian23 7ba4bccf6c feat(dankdot): operation DMS freedom & island anywere modes
- A new minimal and fun island instance (dot) that gets out of your way to be tossed anywhere on your screen
- Dankisland freedom is here too! It can now also be used in anywhere mode and used horizontally or vertically as you see fit!
2026-09-22 20:38:45 -04:00
bbedward 89484b5d85 compositor: initial support for umbriel
tests: remove a lot of them

fixes #3214
2026-09-22 16:43:41 -04:00
bbedward 17d52d3c88 media: rebrand to Bento
popouts: instantly set empty input region on exit
2026-09-22 13:44:12 -04:00
bbedward 4eb163538c media: change player style
theme: restore layer outline option
launcher/theme: tweaks and fix icon service
2026-09-22 09:00:34 -04:00
bbedward 75b8cfff4f i18n: keep translations when the selected locale resolves to the same file
fixes #3508
2026-09-21 20:46:29 -04:00
bbedward a84e84c39b layout: let an overview-only bar share the row of a bar that hides in the overview
fixes #3527
2026-09-21 18:09:25 -04:00
bbedward 8266e078e7 dock: show an overview-only dock on niri again
fixes #3528
2026-09-21 17:09:41 -04:00
bbedward c9032926d7 settings: load all pages asynchronously 2026-09-21 16:47:09 -04:00
bbedward bb20528f68 popouts: grow surfaces at their origin
cc: slide grid with the detail page
settings: tweak appearance header style
settings: tweak sidebar profile style
2026-09-21 15:47:01 -04:00
Matt Jiang cc8a6053c5 feat(mux): add Herdr backend (#3531)
* mux: add herdr backend

* mux: remove herdr service tests

* mux: include herdr in settings subtitle

* mux: add translator context to the multiplexers subtitle

* mux: drive the service from a backend table

Each backend (tmux, zellij, herdr) is one entry in MuxBackends.js with
its commands and parser, so the service no longer branches on muxType
in eight places and the settings dropdown lists the table keys. One
availability check runs for the selected backend and re-runs when the
backend changes. The herdr parser reads the real {sessions:[...]}
shape only.
2026-09-21 15:26:56 -04:00
bbedward a3f1a3d620 feat(bar): add support for fractional sizes, fit to contents 2026-09-21 13:27:14 -04:00
neofion cb037e2543 keyboard layout: add user-editable label overrides for compact mode (#3503)
* keyboard layout: add user-editable label overrides for compact mode

* keyboard layout: add translator context and fix search index for label overrides
2026-09-21 09:36:56 -04:00
bbedward 567c14f6d9 processlist: design changes 2026-09-20 22:40:40 -04:00
bbedward d9d9e6b9cf settings: rebuild wallpaper page around a single hero thumbnail
cc/edit: fix janky resize problems
2026-09-20 20:42:16 -04:00
bbedward 9b6c9a4b36 control center: hold the tile grid height while a tile is dragged or resized
fixes #3515
2026-09-20 19:27:13 -04:00
bbedward 2486adb226 popouts: reserve edit handle padding without fullscreen surfaces
fixes #3512
2026-09-20 17:43:09 -04:00
bbedward b56a53c03a settings: preserve navigation state and add notification test button 2026-09-20 15:28:18 -04:00
purian23 c65cda2273 mango: discover layouts and fix monitor targeting and visibility
Closes #2924
2026-09-20 15:18:54 -04:00
purian23 5409c8738a fix(island): update dash editor clipping the handles 2026-09-19 22:58:00 -04:00
bbedward 19b4593bfe dash: replace the tab bar with an m3 navigation bar and inline edit controls
wallpaper: allow SVG wallpapers, with a workaround for a matugen panic I
encountered on passing it an SVG - fixes #1350
2026-09-19 20:56:05 -04:00
bbedward a5087735b5 theme: add fixed corner radius mode and rescale radius strength 2026-09-19 17:07:37 -04:00
bbedward aea35afdc7 settings: fix gating sound tab on sounds being available, other stuff 2026-09-19 16:22:59 -04:00
bbedward f8f1bfaaaa grids(cc+dash): make edit mode less opinioned, fix some minor bugs
fixes #3490
fixes #3489
2026-09-19 15:49:42 -04:00
purian23 77e60313ef feat(control center): add fractional step sizes to pill widgets 2026-09-19 01:52:24 -04:00
purian23 2447ebec4f fix(bar): refresh frame mode geometry when changing positions 2026-09-18 23:42:02 -04:00
bbedward 10e9c070df settings: frame and island follow the bar 2026-09-18 17:59:06 -04:00
bbedward 7faed137f2 dash/controlCenter: keep the panel size in edit mode and move the resize ring outside 2026-09-18 17:30:18 -04:00
bbedward ed77fea62e fix dankgo ref (i use replace= for local testing and accidentally pushed
it)
2026-09-18 17:18:57 -04:00
purian23 a3a9fe13eb feat(Hyprland): add native special workspace scratchpad support
Closes #1000
2026-09-18 16:21:54 -04:00
bbedward f0040ffcba dash/clock: fix styling when date is enabled
misc other tiny changes to lyrics and a bugfix in CC
2026-09-18 16:12:16 -04:00