Skip to content

HelpFreedom/dwm-status-bar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dwm-status-bar

Минималистичная строка статуса для оконных менеджеров, которые читают WM_NAME корневого окна (dwm, dwl, ...). Шлёт в xsetroot -name одну строку с погодой, курсами, индексом МосБиржи, лимитами Claude Code, скоростью сети, RAM, CPU, батареей и временем.

Скриншот бара

Пример строки:

[ 17°C ☀️ ] [ ▼ 0.36 Kb/s ][ ▲ 0.23 Kb/s] [IMOEX = 2644.26] [ Cl S:92 W:99 ] [ BTC = 78410 USD ][ USD = 74.80 RUB ] [ RAM: 3.9G/15G ][ CPU: 6% ] [ POW: 100%- ] Вс 03 May 10:33

Что отображается

Блок Источник
Погода openweathermap.org
Скорость сети ▼/▲ ifstat по выбранному интерфейсу
IMOEX MOEX ISS API, тикер IMOEX2 (включает все сессии: основную, утреннюю, вечернюю, выходные)
Лимиты Claude (Cl S:NN W:NN) https://api.anthropic.com/api/oauth/usage через токен Claude Code
BTC Binance public API
USD/RUB ЦБ РФ (cbr.ru)
RAM, CPU free, vmstat
Батарея acpi
Дата/время date (дни недели — на русском через sed)

Зависимости

sudo apt install bash curl jq gawk sed ifstat procps acpi x11-xserver-utils

Для индикатора лимитов Claude нужен установленный Claude Code с активной OAuth-сессией — скрипт читает ~/.claude/.credentials.json.

Установка

git clone <repo-url> ~/dwm-status-bar
chmod +x ~/dwm-status-bar/*.sh

Конфигурация

Все параметры — переменные окружения. Пример обёртки ~/.start-bar.sh:

#!/usr/bin/env bash
export OWM_API_KEY="ваш_openweathermap_ключ"
export OWM_CITY="Minsk"
export IFACE="wlp3s0"            # ваш wifi/eth интерфейс (см. `ip a`)
export CLAUDE_LIMITS_PROXY=""    # SOCKS5 если нужен, например "127.0.0.1:1080"
exec ~/dwm-status-bar/bar.sh

Полный список переменных:

Переменная Назначение Default
OWM_API_KEY Ключ OpenWeatherMap (обязателен для погоды) YOUR_API_KEY_HERE
OWM_CITY Город для погоды London
OWM_UNITS metric / imperial metric
IFACE Имя сетевого интерфейса для счётчиков wlan0
BAR_SLEEP Период перерисовки бара, сек 1
FETCH_SLEEP Период обновления курсов/погоды, сек 60
CLAUDE_SLEEP Период обновления лимитов Claude, сек 120
CLAUDE_CREDENTIALS Путь до credentials.json ~/.claude/.credentials.json
CLAUDE_LIMITS_PROXY SOCKS5 прокси для запроса к api.anthropic.com пусто

Запуск

В .xinitrc/autostart вашего WM:

~/.start-bar.sh &

или прямо:

IFACE=wlp3s0 OWM_API_KEY=... OWM_CITY=Minsk ~/dwm-status-bar/bar.sh &

Использование отдельных скриптов

claude-limits.sh

Можно использовать сам по себе как «сколько лимитов осталось»:

$ ./claude-limits.sh
Session 92%
Weekly  99%

$ ./claude-limits.sh --brief
S:92 W:99

wether.sh

Пишет одну строку вида 17°C ☀️ в /tmp/wether.tmp.

OWM_API_KEY=... OWM_CITY=Berlin ./wether.sh
cat /tmp/wether.tmp

Как это работает

bar.sh запускает три фоновых цикла:

  1. Тяжёлый (раз в FETCH_SLEEP сек) — все HTTP-запросы (курсы, погода, IMOEX), системные данные (батарея, время) и пишет результаты в файлы /tmp/*.tmp.
  2. Лимиты Claude (раз в CLAUDE_SLEEP сек) — отдельно, потому что ходит на свой эндпоинт и реже.
  3. Отрисовка (раз в BAR_SLEEP сек) — читает кэш из /tmp/*.tmp, собирает строку, делает xsetroot -name. Здесь же — счётчики ifstat, vmstat, free.

Такая разводка позволяет оставить отрисовку гладкой даже когда внешние API тормозят.

Заметки

  • Лимиты Claude: эндпоинт /api/oauth/usage не документирован публично, но используется самим Claude Code (см. вкладку /usage в интерактивной сессии). Сам клиент кэширует значение примерно час. Раз в 1–2 минуты — адекватный темп опроса для status bar.
  • Cl S:NN W:NN означает «осталось NN% от Session/Weekly». При ошибке запроса показывается S:?? W:??.
  • IMOEX2 vs IMOEX: первый — «индекс МосБиржи (все сессии)», второй — только основная. Если нужно классическое поведение (значение закрытия предыдущего торгового дня в выходные) — поменяйте IMOEX2.json на IMOEX.json в bar.sh.
  • Дни недели на русском сделаны простым sed-маппингом — не требует установки русской локали (ru_RU.UTF-8).

Лицензия

GNU.

About

DWM/xsetroot status bar: weather, USD/RUB, BTC, IMOEX (all sessions), Claude Code limits, net/RAM/CPU/battery

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages