Files
statusbar/README.org
T
2026-10-26 22:30:34 +00:00

3.5 KiB

statusbar

statusbar is a status line generator for i3bar.

Every second, it renders configured status blocks in parallel, and prints a status line to standard output.

┃  4.20/16 ┃  96℃  37℃ ┃  52%  49% ┃ / 89%  47% ┃  10.0.1.6/24 ┃  80% ┃  60% ┃  OPEN ┃ 2026-10-26 1/7 43/52 299/365 17:18 UTC

Usage

statusbar [-1]

Flags:

  • -1 — print the status line once and exit

Configuration is read from $XDG_CONFIG_HOME/statusbar/config.json.

Logs are written to $XDG_CACHE_HOME/statusbar/log.

In an i3 configuration:

bar {
    status_command statusbar
}

Blocks

Block Description Source
cpu 1-minute load average and CPU core count /proc/loadavg
datetime Formatted date and time date
disk Filesystem usage for configured mounts df -h
eth Ethernet IPv4 and IPv6 addresses net.InterfaceByName
light Backlight brightness brightnessctl -m
memory RAM and swap usage percentages free -m
mic Default audio source mute state pactl
mlight External monitor brightness (VCP 10) ddcutil
power AC status, battery charge, time left /sys/class/power_supply
temp Hardware sensor temperatures sensors -j
volume Default audio sink mute state and volume pactl
wlan Wi-Fi SSID, IPv4 address, and RSSI iwctl
wwan Cellular modem signal quality and IPs mmcli, net.InterfaceByName

Each block has a 1-second render timeout. If a block fails to render, statusbar logs the error and displays in its place.

Configuration

Example $XDG_CONFIG_HOME/statusbar/config.json:

{
  "separator": "┃",
  "timezone": "UTC",
  "blocks": [
    { "name": "cpu" },
    {
      "name": "temp",
      "temp": {
        "sensors": [
          {
            "label": "",
            "path": ["k10temp-pci-00c3", "Tctl", "temp1_input"]
          },
          {
            "label": "",
            "path": ["nvme-pci-0200", "Composite", "temp1_input"]
          }
        ]
      }
    },
    { "name": "memory" },
    {
      "name": "disk",
      "disk": { "mounts": ["/", "/home"] }
    },
    {
      "name": "eth",
      "eth": { "iface": "eno1" }
    },
    {
      "name": "wlan",
      "wlan": { "iface": "wlan0" }
    },
    { "name": "power" },
    { "name": "light" },
    { "name": "mlight" },
    { "name": "volume" },
    { "name": "mic" },
    {
      "name": "datetime",
      "datetime": {
        "label": "",
        "timezone": "America/New_York",
        "format": "+%Y-%m-%d %H:%M %Z"
      }
    }
  ]
}

Installation

go install code.chimeric.al/dwrz/statusbar/cmd/statusbar@latest