`cargo release patch --execute` now does what the last three releases did by hand: bump Cargo.toml/Cargo.lock, rewrite PKGBUILD's pkgver, stamp the "## Unreleased" changelog section with version and date, commit as "release X.Y.Z", tag vX.Y.Z and push commit and tag to the gitea remote (not `origin`, which is the GitHub upstream). The tag then triggers .gitea/workflows/release.yml as before. No crates.io publish. CHANGELOG.md gets a standing "## Unreleased" section to collect entries between releases; README documents the flow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
96 lines
4.5 KiB
Markdown
96 lines
4.5 KiB
Markdown
# 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](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.
|
|
|
|
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
|
|
|
|
## Releasing
|
|
|
|
Releases are cut with [cargo-release](https://github.com/crate-ci/cargo-release) (`cargo install cargo-release`), configured in `release.toml`. Put a line for each change under `## Unreleased` in `CHANGELOG.md` as you go, then on a clean `master`:
|
|
|
|
```
|
|
cargo release patch # dry run: shows the bump, replacements and tag
|
|
cargo release patch --execute # do it (minor/major or an explicit version also work)
|
|
```
|
|
|
|
This bumps `Cargo.toml`, `Cargo.lock` and `PKGBUILD` to the same version, stamps the changelog section with the version and date, commits as `release X.Y.Z`, tags `vX.Y.Z` and pushes commit and tag to the `gitea` remote. The tag triggers `.gitea/workflows/release.yml`, which builds the package per architecture and uploads it to the `[uhhm]` registry. The workflow refuses a tag whose version disagrees with `PKGBUILD` or `Cargo.toml`, which cannot happen when the tag comes from cargo-release.
|
|
|
|
## 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).
|