Commit Graph
40 Commits
Author SHA1 Message Date
Marlon Kranz 4693178345 feat(theme): add a selectable source color mode for wallpaper palettes (#3020)
* feat(theme): add a selectable source color mode for wallpaper palettes

DMS always seeds the palette from matugen's most dominant candidate
(--source-color-index 0, hardcoded at both call sites). When a large
muted region outvotes a smaller vivid one, a visibly warm wallpaper
produces a cold palette: one image here goes to #8ad0ee where the warm
subject is at hue 46.

Adds a Source Color setting with seven values. Dominant is the default
and is byte-identical to today. Colorful is computed in Go before
matugen runs: quantize the image (Wu for the starting clusters, then a
weighted k-means in Lab), score the result the way caelestia-cli does,
and hand matugen the resulting hex. Its scoring walks a chroma/tone bar
down from 20 until something clears it, which biases the pick toward a
colorful, well-lit color rather than whichever muted color covers the
most pixels. The remaining five map to matugen's --prefer.

- core/internal/matugen/sourcecolor.go: extraction, scoring, and the
  one helper both matugen call sites now share
- buildOnce resolves the seed once, before the StockColors branch, so
  the dry run and the real run cannot disagree about it
- extraction failure logs a warning and falls through to matugen's own
  extraction; it never fails a theme build
- --prefer arrived in matugen 4.1, so it is gated separately from the
  existing isV4 check; on 4.0.x those five modes degrade to the
  dominant color instead of aborting on an unknown argument
- --source-mode on generate and queue, plus sourceMode on the socket
  handler
- Source Color dropdown in Theme & Colors, defaulting to Dominant

Adds github.com/Nadim147c/material/v3 (Apache-2.0, no dependencies) for
HCT conversions, Wu quantization and the dislike analyzer. Its
QuantizeCelebi is not used: it returns after one unconverged iteration
and its Lab.DistanceSquared is a dot product rather than a distance, so
it collapses most of an image into a single cluster.

* fix(theme): address review feedback on source color mode

Two points from review on #3020.

The quantize comment pointed at a FOLLOWUPS file that does not exist in
this repository. Replaced the reference with the measurement it was
standing in for, so the claim is self-contained.

setMatugenSourceMode called Theme.generateSystemThemesFromCurrentTheme()
directly on top of the regenSystemThemes onChange hook that Spec.set
already dispatches. Both feed a 100ms debounce so it was one generation
either way, but the direct call was redundant and is gone.

* fix(theme): keep {{image}} resolvable in colorful mode

Colorful resolves the seed itself and calls matugen with a hex source, which
leaves matugen's {{image}} unset: the builtin pywalfox template and any user
template using the keyword render the literal string "Null".

Pass the wallpaper path alongside dank16 in --import-json-string, as suggested
in review, so those templates keep working unedited. The path is made absolute
to match what matugen renders for {{image}} in the other modes.

* fix(theme): cut translator terms on the source color dropdown

Per-mode descriptions were seven of the fifteen new terms this branch adds,
and five of them differed by a single adjective. Drop them: the dropdown row
already describes what the setting does, and the docs cover each mode.
2026-09-03 09:07:21 -04:00
bbedward 881cfd2fd3 core: bump dankgo 2026-09-01 20:59:03 -04:00
purian23 c0135b11e5 core: update dankgo dep 2026-09-01 20:10:25 -04:00
bbedward ef63de44b4 core: bump dankgo 2026-09-01 19:24:46 -04:00
bbedward ac46c7dd1b dankinstall: refactor tui package, single-source selection state 2026-08-30 21:13:53 -04:00
purian23 c653378db7 imp(systemd): support successful managed restarts
- Improve overall systemd handling and add further BSD support

Fixes #3193
2026-08-26 23:43:18 -04:00
bbedward 8bff5eb4fc core: use dankgo go-wayland-scanner and update README for proto
generation
2026-08-23 12:51:33 -04:00
Connor Welsh 92d3550dc4 deps: bump tailscale.com to v1.102.0 (#3143) 2026-08-21 22:42:48 -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 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
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 dce1095f8d perf(core): pin go-runewidth to v0.0.25
v0.0.27 builds unicode width LUTs in init() which slows every dms
invocation by ~15ms

Pinning to pre-0.0.27 makes dms ipc invocations  even faster than
invoking the quuickshell binary itself after #3081
2026-08-18 11:49:48 -04:00
bbedward 87dc1b1ff4 core: bump dankgo version 2026-08-12 16:00:00 -04:00
bbedward 6481f61028 core: migrate to wayland client and wlclipboard from dankgo 2026-08-12 15:45:39 -04:00
bbedward da664565b1 dgop: drop dgop as an external dependency and use dgop/gops internally
fixes #3033
2026-08-10 18:29:59 -04:00
bbedward f66693df6b core: bump dankgo 2026-07-30 14:52:14 -04:00
bbedward 2bafc21229 gamma: replace login1 scheduler re-calculation with suspend-aware
boottimer
2026-07-24 10:49:37 -04:00
bbedward e0480bf383 core: bump dankgo 2026-07-21 12:48:32 -04:00
bbedward 0cdb065739 core: migrate to dankgo shared go modules, embed quickshell in DMS
binary to mount at runtime, -c or DMS_SHELL_DIR overrides required to
explicitly override embedded configuration
2026-07-18 14:51:52 -04:00
bbedward f87ad3d2ca core: update dependencies 2026-05-04 13:41:32 -04:00
Giorgio De Traneandbbedward d223a74740 feat(tailscale): add Tailscale control center widget (#1875)
* feat(tailscale): add Tailscale control center widget

Full-stack Tailscale integration for DMS control center:

Backend (Go):
- Event-driven manager via WatchIPNBus (no polling)
- Reconnects with exponential backoff when tailscaled unavailable
- Typed conversion from ipnstate.Status to QML-friendly IPC types
- Testable via tailscaleClient interface with mock watcher
- Manager cleanup in cleanupManagers()
- 19 unit tests

Frontend (QML):
- TailscaleService with WebSocket subscription
- TailscaleWidget with peer list, filter chips, search
- Copy-to-clipboard for IPs and DNS names
- Daemon lifecycle handling (offline/stopped states)

Dependencies:
- Add tailscale.com v1.96.1 (official local API client)
- Bump Go to 1.26.1 (required by tailscale.com)

* cleanups

---------

Co-authored-by: bbedward <[email protected]>
2026-05-04 13:37:25 -04:00
bbedward 24a3cd5a3d core: update go dependencies 2026-04-29 12:40:24 -04:00
Jonas Blochandbbedward b0da45d6d0 Wifi QR code generation (requires testing) (#1794)
* fix: add mockery v2 to nix flake pkgs

* feat: add requests for generating wifi qr codes as png files in /tmp, and to delete them later. only supports NetworkManager backend for now.

* feat: add modal for sharing wifi via qr code and saving the code as png file.

* fix: uncomment QR code file deletion

* network: light refactor and cleanup for QR code generation

---------

Co-authored-by: bbedward <[email protected]>
2026-02-23 10:02:51 -05:00
bbedward 0b33d3f905 miraclewm: add support for Miracle WM 2026-02-16 23:00:25 -05:00
bbedward 7417e26444 core: replace go-localereader directive 2026-02-12 09:48:10 -05:00
bbedward 1cdbd01748 go mod tidy 2026-01-26 16:44:32 -05:00
purian23 3ff00768ac core: dms chroma notepad updates 2026-01-21 11:48:08 -05:00
purian23 a343bc7562 feat: DMS Core Chroma Syntax Highlighter
- Thanks alecthomas for the project
2026-01-21 09:16:58 -05:00
bbedward 162ec909da core/server: add generic dbus service
- Add QML client with subscribe/introspect/getprop/setprop/call
- Add CLI helper `dms notify` that allows async calls with action
  handlers.
2026-01-17 22:04:58 -05:00
bbedward c1fbeb3f5e network: listen to NM Wired interface + use nmcli for route metrics
- Some other misc floating window change, too lazy to separate the
  commit
2026-01-06 16:01:28 -05:00
bbedward 6d62229b5f clipboard: introduce native clipboard, clip-persist, clip-storage functionality 2025-12-11 09:41:07 -05:00
bbedward e5d11ce535 brightness: add udev monitor, bind OSDs to netlink events
fixes #863
2025-12-01 11:54:20 -05:00
bbedward 35e0dc84e8 keybinds: add niri provider 2025-11-30 19:25:48 -05:00
bbedward 16d168c970 core: update deps 2025-11-30 01:05:15 -05:00
bbedward 91891a14ed core/wayland: thread-safety meta fixes + cleanups + hypr workaround
- fork go-wayland/client and modify to make it thread-safe internally
- use sync.Map and atomic values in many places to cut down on mutex
  boilerplate
- do not create extworkspace client unless explicitly requested
2025-11-15 14:41:00 -05:00
bbedward 5685e39631 core: improve evdev capslock detection, wayland context fixes 2025-11-14 12:04:47 -05:00
bbedward 526c4092fd evdev: add evdev monitor for caps lock state 2025-11-13 22:24:27 -05:00
bbedward 6465b11e9b core: ensure all NM tests use mock backend + re-orgs + dep updates 2025-11-13 21:44:03 -05:00
bbedward db584b7897 rename backend to core 2025-11-12 23:12:31 -05:00