Your agenda in the status bar

Goal: your next events in i3status-rs or Waybar (Omarchy's bar), with nothing but curl.

  1. Make a view for the bar. In the console, create a view like "next 24 hours, max 3 events" and click Create feed URL. Copy the URL.
  2. Try it in a terminal:
    curl https://calfeed.io/v1/feed/<your-slug>.txt
    The .txt ending returns one event per line, already formatted in the view's timezone. Without it you get JSON.
  3. Grab the bar script from the repo's clients/calfeed-bar.sh — it prints the first upcoming event, or Waybar-module JSON with the full list as a tooltip, and degrades to cal: offline instead of breaking your bar.

i3status-rs

[[block]]
block = "custom"
command = "/path/to/calfeed-bar.sh https://calfeed.io/v1/feed/<slug>"
interval = 60

A native calfeed block (no script; colours events by far / upcoming / running; several views with right-click to cycle and left-click to step through events; $titles lists overlapping events as Doctor | School run | +1) lives on the calfeed-block branch of cfsmp3/regolith-i3status-rust until it is upstreamed:

[[block]]
block = "calfeed"
url = "https://calfeed.io/v1/feed/<slug>"

Waybar (Omarchy and any Hyprland setup)

"custom/calfeed": {
  "exec": "/path/to/calfeed-bar.sh https://calfeed.io/v1/feed/<slug> waybar",
  "return-type": "json",
  "interval": 60
}

Add "custom/calfeed" to your modules list. Feeds are cached for 60 seconds, so a 60-second interval is the useful floor.

Locking it down: in the feed's restrictions you can pin the URL to your home IP range or require a secret header — the script works with both (curl -H in a small wrapper).

← all tutorials