{"id":13897582,"url":"https://github.com/Gerschtli/dwm-status","last_synced_at":"2025-07-17T14:32:25.127Z","repository":{"id":30927084,"uuid":"121999147","full_name":"Gerschtli/dwm-status","owner":"Gerschtli","description":"Highly performant and configurable DWM status service","archived":false,"fork":false,"pushed_at":"2025-07-10T01:33:40.000Z","size":756,"stargazers_count":74,"open_issues_count":3,"forks_count":13,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-11T05:39:29.431Z","etag":null,"topics":["dbus","dwm","dwm-status","libnotify","nix","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gerschtli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-02-18T23:07:06.000Z","updated_at":"2025-06-09T22:43:04.000Z","dependencies_parsed_at":"2023-11-21T05:37:12.192Z","dependency_job_id":"bd5be9f7-7eed-4bc6-a605-c41a9404e262","html_url":"https://github.com/Gerschtli/dwm-status","commit_stats":{"total_commits":740,"total_committers":7,"mean_commits":"105.71428571428571","dds":0.1391891891891892,"last_synced_commit":"74f7b5b3a8cbddf6e5eb5f8914dd60f078d19c8f"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/Gerschtli/dwm-status","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gerschtli%2Fdwm-status","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gerschtli%2Fdwm-status/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gerschtli%2Fdwm-status/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gerschtli%2Fdwm-status/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gerschtli","download_url":"https://codeload.github.com/Gerschtli/dwm-status/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gerschtli%2Fdwm-status/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265616814,"owners_count":23798902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbus","dwm","dwm-status","libnotify","nix","rust"],"created_at":"2024-08-06T18:03:42.748Z","updated_at":"2025-07-17T14:32:25.120Z","avatar_url":"https://github.com/Gerschtli.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# dwm-status\n[![Github Workflow](https://github.com/Gerschtli/dwm-status/workflows/Build%20and%20test/badge.svg)](https://github.com/Gerschtli/dwm-status/actions)\n[![Crates.io](https://img.shields.io/crates/v/dwm-status.svg?style=flat-square)](https://crates.io/crates/dwm-status)\n[![The MIT License](https://img.shields.io/badge/license-MIT-orange.svg?style=flat-square)](http://opensource.org/licenses/MIT)\n\nDWM status service which dynamically updates when needed.\nHeavily inspired by [i3status-rust](https://github.com/greshake/i3status-rust).\n\nExample status bar:\n![example-sceenshot](examples/images/preview.png)\n\n## Requirements\n\n`cargo`, `rustc` and `lib{dbus,gdk-pixbuf,notify,x11}-dev` are required to build the binary.\n\n## Build and run\n\n```sh\n$ # dev mode\n$ cargo run -- \u003cconfig-file\u003e [--quiet]\n$ # release mode\n$ cargo build --release\n$ ./target/release/dwm-status \u003cconfig-file\u003e [--quiet]\n```\nOr install globally to `~/.cargo/bin`:\n```sh\n$ cargo install dwm-status\n```\n\n### [Nix](https://nixos.org/nix/) support\n\nBuild as flake:\n```sh\n$ nix build\n```\n\nAnd run:\n```sh\n$ ./result/bin/dwm-status \u003cconfig-file\u003e [--quiet]\n```\n\n## Configuration\n\nThe `config-file` can be a HJSON, JSON, TOML or YAML file. For each possible format a config file filled with the\ndefault values can be found in `examples/default-settings`. The type of file is determined by its suffix.\n\nFor an example how to use icons in the status bar see `examples/icon-settings/nerd-font.toml`. You need to install and\nspecify one of the available [nerd fonts](https://nerdfonts.com) in your `config.h` in `dwm` to use the icons in the\nexample config, e.g.:\n```c\nstatic const char *fonts[] = { \"Ubuntu Mono Nerd Font:size=9\" };\n```\n\n### General options\n\n| name        | default | description                                                             |\n| ----------- | ------- | ----------------------------------------------------------------------- |\n| `debug`     | -       | Deprecated, will be removed in 2.0.0. Log level is now INFO by default. |\n| `order`     | `[]`    | List of enabled features in order.                                      |\n| `separator` | `\" / \"` | Separator string between each feature.                                  |\n\n### Feature: Audio\n\n**Note:** `alsa-utils` are required.\n\nShows status of configured alsa control device. Listens on `alsactl monitor` for changes.\n\n#### Configuration options\n\n| name       | default      | description                                                                     |\n| ---------- | ------------ | ------------------------------------------------------------------------------- |\n| `control`  | `\"Master\"`   | Alsa control device to listen for.                                              |\n| `icons`    | `[]`         | List of icons, which represent different stages relative to the current volume, e.g. `[\"LOW\", \"MIDDLE, \"HIGH\"]`.     |\n| `mute`     | `\"MUTE\"`     | Text representation if muted.                                                   |\n| `template` | `\"S {VOL}%\"` | Text representation if unmuted. (`{VOL}` gets replaced with the current volume, `{ICO}` gets replaced with the icon) |\n\n### Feature: Backlight\n\nShows status of backlight value and watches `/sys/class/backlight` for changes.\n\n#### Configuration options\n\n| name       | default             | description                                                                                                                       |\n|------------|---------------------|-----------------------------------------------------------------------------------------------------------------------------------|\n| `device`   | `\"intel_backlight\"` | Backlight device in `/sys/class/backlight`.                                                                                       |\n| `fallback` | `None`              | If `device` doesn't exist, pattern match (Unix shell style patterns) the first element in `/sys/class/backlight`. e.g. `amdgpu_*` |\n| `icons`    | `[]`                | List of icons, which represent different stages relative to the current value, e.g. `[\"LOW\", \"MIDDLE, \"HIGH\"]`.                   |\n| `template` | `\"L {BL}%\"`         | Text representation. (`{BL}` gets replaced with the current backlight value, `{ICO}` gets replaced with the icon)                 |\n\n### Feature: Battery\n\n**Note:** The `upower` daemon has to be running for receiving DBus messages.\n\nWatches UPower DBus signals for added or removed batteries and changes of battery states.\n\nIf notifier is enabled, currently discharging and the capacity of the fullest battery is under the configured values\nvalue, warning notifications with urgency normal or critical (depending on the configured critical value) are sent.\n\nShows following information per battery:\n\n| status               | example          | notes                        |\n| -------------------- | ---------------- | ---------------------------- |\n| charging             | `▲ 10% (01:23)` | In parentheses time to full  |\n| discharging          | `▼ 50% (02:03)` | In parentheses time to empty |\n\nShows following information as feature block (`ICO` gets replaced with an icon if any are defined):\n\n| battery count | example                       | notes                                    |\n| ------------- | ----------------------------- | ---------------------------------------- |\n| 0             | `NO BATT`                     |                                          |\n| 1             | `▼ ICO 50% (02:03)`           |                                          |\n| 2             | `▼ ICO 50% (02:03) · ICO 50%` | Batteries ordered alphabetically by name |\n\n#### Configuration options\n\n| name                | default              | description                                                |\n| ------------------- | -------------------- | ---------------------------------------------------------- |\n| `charging`          | `\"▲\"`               | Text representation for status charging.                   |\n| `discharging`       | `\"▼\"`               | Text representation for status discharging.                |\n| `enable_notifier`   | `true`               | Whether to enable the notifier.                            |\n| `icons`             | `[]`                 | List of icons, which represent different stages relative to the current battery state, e.g. `[\"LOW\", \"MIDDLE, \"HIGH\"]`. |\n| `no_battery`        | `\"NO BATT\"`          | Text representation if no battery present.                 |\n| `notifier_critical` | `10`                 | Maximum battery value to notify via critical notification. |\n| `notifier_levels`   | `[2, 5, 10, 15, 20]` | Battery values to notify.                                  |\n| `separator`         | `\" · \"`              | Separator string between mutliple battery infos.           |\n\n### Feature: CPU Load\n\nShows CPU load taken from `/proc/loadavg` in configured format and refreshes every `n` seconds.\n\n#### Configuration options\n\n| name              | default                | description                 |\n| ----------------- | ---------------------- | --------------------------- |\n| `template`        | `\"{CL1} {CL5} {CL15}\"` | Text representation. (`{CLx}` gets replaced with the load of last `x` minutes for `x` in `{1, 5, 15}`) |\n| `update_interval` | `20`                   | Update interval in seconds. |\n\n### Feature: Network\n\n**Note:** The commands `ip`, `dig` and `iwgetid` need to be in `PATH`.\n\nShows connected ESSID as well as both public and private IPv4 and IPv6 addresses. Updates get triggered by listening on `ip monitor address link route`.\n\n#### Configuration options\n\n| name       | default                       | description                     |\n| ---------- | ----------------------------- | ------------------------------- |\n| `no_value` | `\"NA\"`                        | Value for not defined elements. |\n| `template` | `\"{LocalIPv4} · {ESSID}\"` | Text representation. Placeholders surrounded by curly braces are `{IPv4}`, `{IPv6}`, `{LocalIPv4}`, `{LocalIPv6}` and `{ESSID}`. |\n\n### Feature: Time\n\nShows time in configured format and refreshes every second or minute.\n\n#### Configuration options\n\n| name             | default             | description                                                          |\n| ---------------- | ------------------- | -------------------------------------------------------------------- |\n| `format`         | `\"%Y-%m-%d %H:%M\"`  | Time format of [chrono crate](https://github.com/chronotope/chrono). |\n| `update_seconds` | `false`             | Whether to update time feature every second or minute, automatically set by parsing `format`. |\n\n## Contributing\n\nYou need `rustup` with nightly toolchain, rustfmt, clippy and `lib{dbus,gdk-pixbuf,notify,x11}-dev`. I recommend the\ninstallation of racer.\n\nIf your are using [nix](https://nixos.org/nix) you can use `shell.nix` for all dependencies except the `rustup`\ntoolchain and components:\n\n```sh\n$ nix-shell\n[nix-shell]$ rustup install nightly\n[nix-shell]$ rustup default nightly\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGerschtli%2Fdwm-status","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGerschtli%2Fdwm-status","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGerschtli%2Fdwm-status/lists"}