The desktop-entry cache lived in $XDG_CACHE_HOME/wldash/desktop.json. On an NFS-shared home that is a remote read and write on every start (unless the session happens to export a machine-local XDG_CACHE_HOME), and it went stale whenever a package was installed until someone ran --desktop-refresh. Scanning the applications directories takes a few milliseconds over local /usr/share and already happened on a background thread, so the cache bought nothing: drop it, along with simd-json and the serde derives on Desktop. --desktop-refresh stays as a no-op so old key bindings keep working. Calculator history and the prompt saved on Escape are state, not cache: they move to $XDG_STATE_HOME/wldash (~/.local/state), written only on Enter/Escape, and the old cache location is still read as a fallback. With the serde derives gone, two Desktop fields were unused; use them: Type=Link entries now open their URL with xdg-open, and Terminal=true entries run under $TERMINAL -e when it is set. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
Changelog
Unreleased
- No more desktop-file cache: wldash scanned
~/.cache/wldash/desktop.json(on NFS for shared homes, and stale after every package install) and needed a manual--desktop-refresh. Desktop files are now scanned on a background thread at every start, a few milliseconds over local/usr/share.--desktop-refreshis a no-op kept for key bindings;simd-jsonis gone. - Calculator history and the Escape-saved prompt moved from
$XDG_CACHE_HOME/wldashto$XDG_STATE_HOME/wldash(~/.local/state), where small roaming state belongs; old files are still read. - Launcher:
Type=Linkentries open their URL withxdg-open;Terminal=trueentries run inside$TERMINAL -ewhen that variable is set.
0.4.0 (2026-10-03)
First release of the project.uhhm.no fork, packaged for the [uhhm] Arch registry. Numbering: upstream's old code base was tagged up to v0.3.0 and the rewrite called itself 0.2.0; this fork continues above both so pacman sees a monotonic version.
- Launcher: the prompt cursor was a byte offset in some places and a grapheme index in others, so typing æøå and then End or another key crashed wldash. The cursor is grapheme-based everywhere, Up stops at the last row, mouse selection can't underflow, and all desktop Exec field codes (
%i,%c,%k,%%, ...) are stripped. - No more aborting on machines without a backlight, battery or PulseAudio:
/sys/class/backlightitself was taken for a device, UPower's always-present DisplayDevice for a battery, and a failed audio connection panicked a thread (fatal withpanic = "abort"). - Redraws:
Geometry::expandcomputed the damage height from the wrong field; buffer refcounts no longer underflow;wl_shm_pools are destroyed on resize. - Input: a key-repeat rate of 0 divided by zero; Escape is now seen by the launcher first so the prompt is saved for Ctrl+R; the first layer-surface configure always lays out.
- Config:
/etc/wldash/config.ymltakes precedence over~/.config/wldash/config.ymlwhen present (machine-local layout on NFS-shared homes);--configoverrides both. Errors print one line and exit 1 instead of panicking. - Housekeeping:
memmap→memmap2, unusedshlexdropped, zero rustc/clippy warnings, rustfmt applied, unit tests for the prompt, Exec parsing and geometry.
0.2.0
Upstream (kennylevinsen/wldash) rewrite, the state this fork started from.