Commit Graph
4472 Commits
Author SHA1 Message Date
Peter Fern 60a8310002 feat(dank16): Support full matugen color format output (#3148) 2026-08-23 00:24:17 -04:00
purian23 c57fd7aad1 refactor(Dank Island): update hover delay property defaults
- fix volume pills while notifications are live
2026-08-22 23:58:43 -04:00
purian23 4447d77ba6 feat(Dank Island): add new island bar instance 2026-08-22 22:06:13 -04:00
bbedward f89b21a0ef inputs: consistent usage of Dank* variants, bump qml-common with blink
timeout
2026-08-22 11:53:20 -04:00
bbedward 4a021a73bf fix(shell): re-commit layer surfaces on screen reconnect instead of rebuilding bars 2026-08-22 11:12:47 -04:00
Connor Welsh b482e9b898 test(plugins): isolate git config in the real git client test (#3144) 2026-08-21 22:50:18 -04:00
Connor Welsh 26fb129887 fix(tailscale): back off when the IPN bus read fails (#3142) 2026-08-21 22:45:30 -04:00
Connor Welsh 92d3550dc4 deps: bump tailscale.com to v1.102.0 (#3143) 2026-08-21 22:42:48 -04:00
bbedward c6083d6177 colorpicker: add popout variant for bar widget 2026-08-21 20:24:36 -04:00
bbedward 45cd00bed3 perf(dms): cut daemon idle RAM, threads, and goroutines. Add DMS_PPROF
for performance profiling
2026-08-21 20:24:36 -04:00
bbedward 523e0232d2 keybinds: use dms screenshot in binds configurator 2026-08-21 20:24:36 -04:00
0xNA d22dae1494 feat(wallpaper): add folder-based wallpaper selection and shuffle (#2990)
* feat(wallpaper): add folder-based wallpaper selection and shuffle

* fix(wallpaper): bump 'dank-qml-common' and handle single-wallpaper folders

* fix(wallpaper): address review feedback for folder selection

* fix(wallpaper): persist folder selection across restarts

* fix(wallpaper): pick first wallpaper on folder select and persist folder path

* fix: resolve wallpaper cycling folder persistence issues
2026-08-21 19:09:13 -04:00
Huỳnh Thiện Lộc a669253c58 feat(bar): add focused window details popout (#3139)
* feat(bar): add focused window details popout

* fix(bar): address focused window review

* fix(bar): resolve focused window pid by identity

* fix(bar): refine focused window translations
2026-08-21 14:54:58 -04:00
Huỳnh Thiện Lộcandbbedward 124578b695 fix(screenshot): support multi-monitor region capture (#3132)
* fix(screenshot): support multi-monitor region capture

* fix(screenshot): skip disjoint output overlays

* fix(screenshot): address multi-monitor review

* fix(screenshot): handle cross-output review

* fix(screenshot): snap cross-output selection to one device grid

---------

Co-authored-by: bbedward <[email protected]>
2026-08-21 14:46:36 -04:00
bbedward 3630b46ee3 perf(shell): cut idle RAM by a lot
wallpaper: drop redundant FBOs

startup: create QtMultimedia players lazily on-demand instead of at
startup

launcher: fixed animated images in plugins that use them

dms: set MALLOC_CONF=thp:never,narenas:4,dirty_decay_ms:3000 for
quickshell when unset. jemalloc extets no longer round up to 2 MB
huge  pages

Worth keeping an eye on any potential regressions people encounter
2026-08-21 14:12:39 -04:00
Huỳnh Thiện Lộc 20aafebd87 feat(settings): search runtime plugins (#3136)
* feat(settings): search runtime plugins

* fix(settings): handle plugin search metadata
2026-08-21 11:01:28 -04:00
bbedward 90c5f65b0f fix(workspaces/hyprland): recover workspace mapping on monitor hotplug
fixes #3133
2026-08-21 10:17:26 -04:00
bbedward 589737e318 fix(shell): recover bar surfaces on screen removal and geometry change
fixes #3135
2026-08-21 10:11:11 -04:00
Bernardo Gomes 2f4afeb889 fix(doctor): explain Qt private API mismatch (#3131) 2026-08-20 22:10:07 -04:00
bbedward e6a5fae190 perf(colorpicker): incremental magnifier redraws, frame-paced commits 2026-08-20 19:17:25 -04:00
bbedward 52244c01f7 core: bump go-runewidth to 0.0.28
startup regression has been fixed upstream so dont need to pin the
downgrade anymore
2026-08-20 18:50:17 -04:00
bbedward 44bae0934d perf(cli): lazily init chroma registries
related #3056
2026-08-20 18:47:29 -04:00
bbedward c90b0cddab perf(screenshot): frame-paced, incremental region selector
related #3056
2026-08-20 17:33:35 -04:00
bbedward 486febd4ce perf(screenshot): encode PNG straight from the capture buffer
related #3056
2026-08-20 15:55:03 -04:00
bbedward 47fe1eb512 fix(keybinds): record Shift+digit from the physical key
fixes #3120
2026-08-20 15:03:56 -04:00
bbedward 6a0197d252 fix(accounts): stage profile icon through /tmp before SetIconFile
fixes #3130
2026-08-20 14:59:29 -04:00
bbedward 7f7155b5d5 systemd/dms: add TimeoutStartSec to dms.service
fixes #3125
port 1.5
2026-08-20 14:57:51 -04:00
bbedward 9b04b47e98 notifications: add DnD bypass option globally and per-app
fixes #2870
closes #3016
2026-08-20 14:29:39 -04:00
Callum Wong c694d9938c feat(audio): add output port selection (#2779)
* feat(audio): add output port selection

* fix(audio): handle onShowPortSelector in AudioOutputDetail

* i18n: add translator context for all audio port selector strings

* fix(audio): set isLoading = false in the callback of refreshSinkPorts

* chore: remove unused property in AudioPortSelector

* fix(audio): parse availability correctly from `pactl list sinks`

* fix(audio): address output port review feedback
2026-08-20 13:40:48 -04:00
Kilian Mio b6436196be fix(display): enforce at least one real monitor in profile application (#3106)
ensureEnabledOutput previously checked if ANY output was enabled,
including virtual fallback outputs. A profile with eDP-1 disabled and
FALLBACK enabled was treated as valid, causing the only real monitor
to be turned off during hotplug transitions.

Now ensureEnabledOutput only considers outputs with make+model (real
monitors) when checking for enabled outputs. When all real outputs are
disabled, it enables the first real one. When no real outputs exist in
the profile at all, applyConfigEntry writes an empty config and lets
the compositor handle fallback via its built-in default rules.

Fixes the case where unplugging an external monitor leaves the laptop
display disabled because a stale FALLBACK auto-profile was applied.
2026-08-20 13:07:36 -04:00
fluxwrk 0253f9daa5 fix: update mango named scratchpad keybind (#3118) 2026-08-20 13:06:42 -04:00
Marco MacrìandMark2Mac 521b56f1e1 fix(session): persist the idle inhibitor across shell restarts (#3123)
The idle inhibitor ("Keep Awake") lives only in memory: SessionService holds it
as a plain `property bool idleInhibited: false` and nothing ever writes it out.
Every restart of the shell silently clears it — the user's explicit choice is
dropped with no message and no trace, and the pill just disappears from the bar.

Restarting is not an edge case. `dms restart` is a first-class CLI command, and
the unit shipped in this repo (assets/systemd/dms.service) sets
`Restart=on-failure` with `TimeoutStopSec=10`, so a shell that is slow to stop
is killed and brought back automatically. Each of those paths turns Keep Awake
off without saying so.

Every other Control Center toggle already survives a restart. Measured on
upstream master, over the state read by Modules/ControlCenter/Components/
DragDropGrid.qml and its neighbours:

  doNotDisturb             in SessionSpec: yes
  isLightMode              in SessionSpec: yes
  nightModeEnabled         in SessionSpec: yes
  wallpaperCyclingEnabled  in SessionSpec: yes
  idleInhibited            in SessionSpec: NO

So this follows the doNotDisturb idiom exactly rather than inventing a
mechanism: one spec entry, one property, one setter that saves.

Restore happens through two entry points because the singletons are lazily
created and their order is not fixed: `onLoaded` covers "service instantiated
before the session file is read", `Component.onCompleted` covers the opposite.
enableIdleInhibit() is idempotent, so whichever runs second is a no-op.

The default stays false and SessionStore.toJson omits defaults, so an untouched
session.json gains no new key.

Related: #1483 asks for a configurable timer. The field added here is the same
shape doNotDisturb uses with doNotDisturbUntil, so a later `idleInhibitedUntil`
slots in beside it without another migration.

Co-authored-by: Mark2Mac <[email protected]>
2026-08-20 13:06:26 -04:00
Scott McKendry 0daf24095c fix(plugin): support for symlinked configs (#3090) 2026-08-20 12:36:08 -04:00
Sunlight 7ebe072255 feat(resize-api): add runtime resize functionality for desktop widgets (#3114)
It would be nice to see it documented in the plugin development guide: https://danklinux.com/docs/dankmaterialshell/plugin-development#desktop-plugins
2026-08-20 12:34:25 -04:00
bbedward 7028ea323d ci: add R2 prune job 2026-08-20 12:30:06 -04:00
bbedward 4147d81f01 ci: make review do new comments 2026-08-20 12:28:36 -04:00
Huỳnh Thiện Lộc 0d2215e18c fix(displays): restore scale after revert (#3124) 2026-08-20 12:28:01 -04:00
Huỳnh Thiện Lộc f6259d0ff7 fix(dankbar): consume empty-area right clicks (#3127)
* fix(dankbar): consume empty-area right clicks

* fix(dankbar): preserve click-through reveal
2026-08-20 12:27:06 -04:00
bbedward d10ca38651 ci: add pr write to review action 2026-08-20 10:28:57 -04:00
bbedward 148d8440ec ci: add claude-review CI 2026-08-20 10:19:45 -04:00
bbedward c67450cd2e perf(screenshot): parallel PNG encoder, 4x faster captures
Replace image/png with a hand-rolled writer over klauspost/compress

related #3056
2026-08-20 10:19:38 -04:00
Huỳnh Thiện Lộc 754ebab48d fix(launcher): clip tile labels to rounded corners (#3126) 2026-08-20 08:46:25 -04:00
Huỳnh Thiện Lộc fde8bb6487 feat(battery): show estimated end time (#3117) 2026-08-19 20:44:58 -04:00
bbedward afe0dbb104 CONTRIBUTING: document to not update translation files 2026-08-19 16:25:42 -04:00
bbedward 396d490979 feat(screenshot+colorpicker): support 10-bit colors via
wp_color_manager_v1

Also fix a bunch of unrelated go vet issues
2026-08-19 14:34:56 -04:00
dms-ci[bot] 8bebd68068 nix: update vendorHash for go.mod changes 2026-08-19 16:05:57 +00:00
Connor Welshandbbedward 101841585f fix(dgop): stop the process list opening blank (#3108)
* fix(dgop): merge child processes by default

* fix(dgop): show the process list on first open

parseData threw away the first processes payload and waited 1s for a
second, on the grounds that the first carries no CPU deltas. That holds
for the cpu module, whose prime stays, but the processes sample is
usable as it arrives, so the wait only left the list blank.

* fix(dgop): refetch when the module set changes mid-request

updateAllStats returned early while a request was in flight, and that
request was built from the modules as they stood when it went out.
Opening the process list during the bar's periodic poll got back a
response with no process data, then a full updateInterval of waiting.
Queue a refetch and reissue when the response lands.

* fix(dgop): clear pendingUpdate when no request is sent

* fix(dgop): prime the queued refetch so the cpu cursor spans an interval

* core: bump dgop version

---------

Co-authored-by: bbedward <[email protected]>
2026-08-19 12:03:41 -04:00
bbedward c30ee19ec6 ci: fix caching 2026-08-19 11:59:56 -04:00
bbedward e78951d3c3 plugins/i18n: create mechanism for plugins to define their own
translations. Introduce I18n.trFor() function

fixes #2593
2026-08-19 11:52:32 -04:00
Huỳnh Thiện Lộc 161c597c55 fix(settings): restore control center menu (#3113) 2026-08-19 11:45:06 -04:00