Skip to content
This repository was archived by the owner on Oct 3, 2026. It is now read-only.
kittyandrewPublic archive

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

59 Commits

Folders and files

Repository files navigation

waybap

Important

Archived on Oct 3, 2026; no longer maintained. waybap existed to feed Waybar, and its only user replaced Waybar with a Quickshell sidebar. That bar fetches the same weather, crypto, sensor and Claude usage data itself, in QML, so it needs no separate daemon or local HTTP hop. The trigger was Waybar's workspace buttons, which stopped working under Hyprland's Lua config with no released fix. The code stays here for reference.

A small Rust daemon that provides weather, crypto, hardware sensor, and AI usage data for Waybar custom modules. It fetches data from Open-Meteo, CoinGecko, Linux hwmon/nvidia-smi, and Claude/Codex usage APIs on a schedule, caches it locally, and serves parsed Pango markup JSON over HTTP.

Usage

# Start the daemon (default: 127.0.0.1:6969)
waybap serve

# Start on a custom address
waybap serve 127.0.0.1:6963

# Test a module without starting the daemon
waybap test weather
waybap test crypto
waybap test sensors
waybap test usage

# Test parsing against cached data (no network)
waybap test weather --cache

NixOS / Home Manager

Add waybap as a flake input:

# flake.nix
inputs.waybap.url = "github:kittyandrew/waybap";

Setup

Install the package and start it yourself (e.g. via Hyprland's exec-once):

environment.systemPackages = [
  inputs.waybap.packages.${pkgs.stdenv.hostPlatform.system}.default
];
wayland.windowManager.hyprland.settings.exec-once = [
  "waybap serve 127.0.0.1:6963"
];

Waybar config

Point your Waybar custom modules at the API:

# waybar config
"custom/weather" = {
  format = "{}";
  tooltip = true;
  interval = 10;
  exec = "curl -s http://127.0.0.1:6963/api/weather";
  return-type = "json";
};
"custom/crypto" = {
  format = "{}";
  tooltip = true;
  interval = 10;
  exec = "curl -s http://127.0.0.1:6963/api/crypto";
  return-type = "json";
};
"custom/sensors" = {
  format = "{}";
  tooltip = true;
  interval = 1;
  exec = "curl -s http://127.0.0.1:6963/api/sensors";
  return-type = "json";
};
"custom/usage" = {
  format = "{}";
  tooltip = true;
  interval = 10;
  exec = "curl -s http://127.0.0.1:6963/api/usage";
  return-type = "json";
};

API

Endpoint Description Refresh interval
GET /api/weather Weather forecast (Open-Meteo) 10 min
GET /api/crypto Top 10 crypto by market cap (CoinGecko) 15 min
GET /api/sensors Hardware temperatures (hwmon + nvidia-smi) 1 sec
GET /api/usage Claude + Codex rate-limit usage 2 min

All endpoints return {"text": "...", "tooltip": "..."} with Pango markup, compatible with Waybar's return-type = "json".

Building from source

# With Nix
nix build
nix build .#waybap

# With Cargo
cargo build --release

Checks

nix develop -c actionlint
nix develop -c zizmor .github/workflows
nix develop -c alejandra -c .
nix develop -c deadnix flake.nix
nix flake check --print-build-logs
nix build .#waybap --print-build-logs
nix develop -c cargo fmt --check
nix develop -c cargo clippy --all-targets --all-features -- -D warnings
nix develop -c cargo test --all-targets --all-features --locked
nix develop -c cargo build --all-targets --all-features --locked

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages