Строка внизу терминала Claude Code показывает модель, ветку и проценты контекста. Я на неё смотрю сотни раз в день, пока агент думает. В какой-то момент стало жалко: такое внимание, а тратится на информацию, нужную дай бог раз в час. Заменил их на билеты ПДД и очередь непрочитанных статей. Ниже, как это устроено и что ещё туда кладут люди.

В CLI у Клода есть строка состояния внизу. Она настраивается в settings.json:  в нем указываешь любой скрипт, и что он напечатал, то и висит внизу.

В итоге, пока агент думает, кодит и нейрослопит, глаз задерживается на экране терминала. Я не считал, сколько раз, но взгляд падает именно на строку состояния. И каждый раз я читаю одно и то же: фэйбл · slave_branch_name · 43%. Информация нужная, но не настолько, чтобы перечитывать её как бегущую строку в новостях(хотя думаю и ее можно пустить). Раньше, пока компилилось, дрались на стульях. Теперь залипаем на контекстное окно.

Но раз всё ничего не попишешь, можно положить туда что-нибудь полезнее. Об этом и статья.

Что туда уже кладут

Первое, что я сделал, полез смотреть, кто что придумал. Ожидал увидеть сплошные счётчики токенов и долларов. О них в основном и пишут, но есть варианты поинтереснее.

  • Помодоро-таймер. Проект claudoro: таймер живёт прямо в строке состояния, стартуется командой из Claude Code, тикает, пока ты работаешь.

  • Тамагочи. Питомец, который сидит внизу терминала и меняет настроение в зависимости от того, что делает Claude. Попросил поправить опечатку, а он полез рефакторить весь модуль? Питомец злится. Есть минимум два таких проекта, один заявлен как «behavioral enforcement с котиком».

  • Кот с репликами. catcode: ASCII-кот, фразы к которому генерирует Haiku по настроению твоего последнего сообщения.

  • Spotify. Что сейчас играет, чтобы не переключаться в плеер.

  • Погода, следующая встреча, мониторинг своих VPS. Один автор на Хабре засунул туда RAM и диск трёх серверов.

В общем, то, ради чего обычно переключаешь окно, можно повесить на строку, на которую и так смотришь. А раз смотришь, туда же можно положить что-то фановое или полезное.

Пример 1: билеты ПДД

Мне надо выучить правила. Учебников с билетами полно, приложений ещё больше, но открывать их я, конечно же, не буду. Благо терминал уже открыт.

Дальше всё просто: нужен банк вопросов в открытом виде, на GitHub такой есть, JSON на каждый билет. Скрипт один раз скачивает их, выкидывает вопросы с картинками (в строке терминала картинку не покажешь) и слишком длинные, которые не влезают в три строки. После фильтра остаётся 190 текстовых, почти четверть.

Дальше самое простое: на каждый refresh статус-лайна скрипт берёт текущее время в секундах, делит на 90 и по остатку выбирает вопрос. Первые 60 секунд слота показывает вопрос с вариантами, последние 30 показывает правильный ответ и пояснение из билета. Никакого состояния и файлов «что уже показывал». Можно сделать, но по мне лишнее, хотя никто не мешает запариться.

🚦 [4/6] Какое расстояние должно быть обеспечено между буксирующим
и буксируемым при буксировке на жёсткой сцепке?
   1) Не более 4 м
   2) От 4 до 6 м
   3) От 6 до 8 м

Через минуту:

🚦 [4/6] Какое расстояние должно быть обеспечено между буксирующим
и буксируемым при буксировке на жёсткой сцепке?
✅ 1) Не более 4 м
   2) От 4 до 6 м
   3) От 6 до 8 м
💡 Пункт 20.3 ПДД

Чтобы вопросы не шли подряд по билетам, номер слота умножается на простое число и берётся по модулю размера банка. Дёшево и выглядит как перемешивание.

Всё это работает в любом терминале: вопрос висит, через минуту приходит ответ. А дальше необязательная надстройка. Каждый вариант печатается ссылкой со своей схемой pdd:вопрос/вариант. Если терминал умеет отдавать клик по ссылке внешней команде (у меня Alacritty, там это секция hints в конфиге; Kitty и WezTerm тоже так могут), клик ловит крошечный скрипт и пишет ответ в лог. Отсюда счёт [4/6] в начале строки и ❌ у варианта, на котором промахнулся. Без обработчика варианты остаются обычным текстом, ничего не ломается.

Результат норм. Усилий ноль: пока агент дочитывает файлы, глаз цепляется за вопрос, и ты его решаешь.

Вариантов иного использования бесконечно много: от выучивания иностранных слов до запуска Doom в статус-лайне (такого не нашел, но явно вопрос времени).

Пример 2: очередь чтения

Вторая строка решает другую потребность:  читать сохраненки, на которые я обычно забивал. У меня для этого полноценный телеграм-бот, который присылает вечером подборку и напоминает, пока не откроешь.

У бота есть API, которое отдаёт сегодняшний дайджест. Скрипт раз в 10 минут забирает список, кладёт в кэш и тем же приёмом со слотами крутит заголовки по одному. Заголовок печатается как кликабельная ссылка через OSC 8, это escape-последовательность, которую понимают iTerm2, Kitty, WezTerm, Alacritty, Ghostty и остальные современные терминалы (штатный Terminal.app на macOS не в их числе, там заголовок будет просто текстом). Клик по заголовку открывает статью в браузере и заодно засчитывает прочтение в самом боте, потому что ссылка идёт через его редирект.

📚 4/4 · Готовимся к интервью в топовые компании: бесплатный роадмап по CS ↗ · ~1 мин

Получается, что статья/видос/пост, который я сам же и сохранил, попадается мне на глаза каждые полторы минуты, пока я жду ответа модели. Уровень назойливости регулируется длиной слота.

Что важно не сломать

Статус-лайн перерисовывается часто, иногда несколько раз в секунду. Поэтому скрипт не должен ходить в сеть на каждый вызов. Всё через кэш на диске, сеть трогается по таймеру и с таймаутом в две секунды. Если сеть упала, скрипт просто помечает кэш свежим и живёт на старых данных ещё десять минут, вместо того чтобы вешать интерфейс.

Второе: ширина. Строка обрезается по COLUMNS, иначе заголовок статьи на 140 символов уедет за край и сломает разметку. 

Третье: Если у тебя уже есть свой статус-лайн (у меня claude-hud), не надо ничего переписывать. Свой скрипт просто дописывает пару строк к чужому выводу.

Как повторить за 10 минут

Самый ленивый путь: команда /statusline в Claude Code принимает описание словами. Пишешь «покажи мне вопрос из этого JSON, меняй раз в 90 секунд, на последних 30 секундах показывай ответ», кидаешь ему файл с вопросами, и он сам напишет скрипт и пропишет его в настройки. Я так и начинал, потом руками довёл.

Если хочется готовый bash, мой скрипт с обоими блоками лежит на GitHub: https://github.com/Hakoba/claude-statusline-quiz. Он на bash, curl и jq, других зависимостей нет, ПДД-банк скачивается одной командой update-pdd, а свой банк подкладывается обычным JSON.

Идея переносится на что угодно текстовое: слова языка, который учишь, вопросы к собесу, определения из книжки, которую читаешь. Нужен лишь JSON с вопросами и ответами и полторы минуты на слот.

Конец

Собственно глянул бы что в статус лайн кладёте вы, особенно если это не проценты контекста.

Скрипт и инструкция по подключению: useopora.com/statusline