A config carrying a !backlight widget on a machine with nothing under
/sys/class/backlight (a laptop config on a desktop) hit
expect("did not find backlight device") in Backlight::new, which with
panic = "abort" killed wldash before a window appeared.
The device path is now Option<PathBuf>. A missing device, or a
configured `device` name that does not exist, prints one line on stderr
and leaves the widget in place so layout indices stay aligned: it
renders empty, skips sysfs reads and writes, and ignores clicks.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
wldash
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
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
- Checkout:
git clone https://project.uhhm.no/bl/wldash - Build:
cargo build --release - Put somewhere:
cp target/release/wldash /usr/local/bin/wldash - 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.
Fonts are named (sans, monospace, or any fontconfig name) and resolved through fontconfig on the machine wldash runs on. font_paths in the config can pin a name to a file; if that file does not exist on the current machine, wldash says so on stderr and falls back to fontconfig rather than failing, so one config can roam between hosts with different font package layouts.
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.
