Files
wldash/README.md
T
Bendik Aagaard LynghaugandClaude Fable 5.1 9953865128 launcher: scan desktop files directly, keep state in XDG_STATE_HOME
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>
2026-10-03 09:33:12 +00:00

83 lines
3.2 KiB
Markdown

# wldash
![screenshot](https://git.sr.ht/~kennylevinsen/wldash/blob/master/assets/screenshot.jpg)
A dashboard/launcher/control-panel thing for Wayland. Requires wlr-layer-shell-unstable-v1.
Consider this alpha-quality: While it works, *everything* is subject to change with a moments notice. You may end up pulling in the latest changes, and *poof*, wldash suddenly turns into an artisan espresso machine.
## Rewrite note
wldash has received a significant rewrite. The old version is available in the wldash1 branch for now.
## This fork
This is a maintained fork of [kennylevinsen/wldash](https://github.com/kennylevinsen/wldash)
living at <https://project.uhhm.no/bl/wldash>. On top of upstream it fixes a number of
crashes (non-ASCII input in the launcher, machines without a backlight, battery or
PulseAudio, key-repeat rate 0, ...), corrects redraw damage tracking, and prefers a
machine-local `/etc/wldash/config.yml` over the per-user config when present, which keeps
per-host layouts apart on NFS-shared homes.
## How to use
1. Checkout: `git clone https://project.uhhm.no/bl/wldash`
2. Build: `cargo build --release`
3. Put somewhere: `cp target/release/wldash /usr/local/bin/wldash`
4. Run: `wldash`
To generate a new default configuration, run `wldash --write-default-config`. To configure, edit `$XDG_CONFIG_HOME/wldash/config.yml` (or if `XDG_CONFIG_HOME` is not set, `~/.config/wldash/config.yml`). If `/etc/wldash/config.yml` exists it takes precedence over the per-user file; `--config FILE` overrides both.
Desktop files are scanned every time wldash starts (on a background thread), so there is no cache to refresh; `--desktop-refresh` is kept as a no-op for old key bindings. Calculator history and the prompt saved on Escape live in `$XDG_STATE_HOME/wldash` (`~/.local/state/wldash`); older installs' files under `~/.cache/wldash` are still read.
For more info, look in `src/config.rs`.
## System dependencies
`dbus`. See https://github.com/diwic/dbus-rs#requirements.
## How to use launcher
The launcher for wldash is built-in, based on https://github.com/kennylevinsen/dot-desktop. Pluggable systems may come back in the future.
The environment variables `XDG_DATA_DIRS` and `XDG_DATA_HOME` are read to find the many `applications` folders that contain `desktop` files.
## Features
### Date and time
In nice, big letters!
### 3 month calendar
Scroll or click on the months to navigate.
### Battery level
Over upower, only visible if upower battery is detected
### Audio volume
Over pulseaudio, only visible if pulseaudio connection is successful. Scroll to adjust volume, right-click to toggle mute.
### Backlight control
Using backlight sys file, only visible of backlight is detected. Scroll to adjust, right-click to toggle between the extreme values.
### Launcher
Loads desktop files from the usual locations.
The launcher also accepts prefix operators to change its mode:
- `!`: Arbitrary command
- `=`: Calculator based on rcalc_lib. See https://docs.rs/rcalc_lib/0.9.3/rcalc_lib/
## Notable missing features:
- Scaling of any kind - all sizes are currently hardcoded in pixels
## How to discuss
Go to #kennylevinsen @ irc.libera.chat to discuss, or use [~kennylevinsen/public-inbox@lists.sr.ht](https://lists.sr.ht/~kennylevinsen/public-inbox).