mirror of
https://github.com/SeCherkasov/util-linux-cal.git
synced 2026-03-30 16:01:50 +03:00
7.4 KiB
7.4 KiB
cal
Календарь для терминала — переписанная на Rust версия утилиты cal из util-linux.
Возможности
- Гибкое отображение: один месяц, три месяца, год, произвольное количество месяцев
- Неделя с понедельника или воскресенья:
-m(ISO) или-s(US) - Номера недель:
-wс выбором системы нумерации (--week-type isoилиus) - Юлианские дни:
-jпоказывает день года вместо даты - Вертикальный режим:
-vдля компактного отображения дней по колонкам - Кастомизация реформы:
--reform 1752|gregorian|iso|julianдля разных календарных систем - Подсветка сегодня: инверсия цвета для текущего дня
- Подсветка выходных и праздников: цвета для субботы, воскресенья и официальных праздников
- Плагины: динамическая загрузка плагинов для подсветки праздников через API
Установка
cargo build --release
Бинарный файл появится в target/release/cal.
Сборка с плагинами
Плагин подсветки праздников собирается в workspace:
cargo build --release --workspace
Плагин libholiday_highlighter.so будет в target/release/.
Команды
Базовое использование
| Команда | Описание |
|---|---|
cal |
Текущий месяц |
cal 2026 |
Весь 2026 год |
cal 2 2026 |
Февраль 2026 |
cal 15 9 2026 |
Сентябрь 2026 с выделением 15 числа |
cal декабрь 2025 |
Декабрь 2025 (поддержка названий месяцев) |
Режимы отображения
| Команда | Описание |
|---|---|
cal -y |
Весь год (12 месяцев) |
cal -Y |
Следующие 12 месяцев от текущего |
cal -3 |
Три месяца: предыдущий, текущий, следующий |
cal -n 6 |
Показать 6 месяцев |
cal --span -n 12 |
12 месяцев с центрированием на текущем |
Формат вывода
| Команда | Описание |
|---|---|
cal -v |
Вертикальный режим (дни в колонках) |
cal -j |
Юлианские дни (день года 1-365/366) |
cal -w |
С номерами недель |
cal --week-type us |
Недели по US стандарту (с воскресенья) |
cal -c 2 |
Принудительно 2 колонки для мульти-месячного режима |
cal -c auto |
Автоподбор колонок по ширине терминала |
Календарные опции
| Команда | Описание |
|---|---|
cal -m |
Неделя с понедельника (ISO, по умолчанию) |
cal -s |
Неделя с воскресенья (US стиль) |
cal --reform 1752 |
Реформа 1752 года (пропуск 3-13 сентября в Великобритании) |
cal --reform gregorian |
Всегда григорианский календарь |
cal --reform julian |
Всегда юлианский календарь |
cal --iso |
ISO 8601 (алиас для --reform iso) |
Вывод и цвета
| Команда | Описание |
|---|---|
cal --color |
Отключить цвета (монохромный вывод) |
cal -H |
Подсветка праздников через isdayoff.ru API (требует плагин) |
Комбинированные примеры
# Год с номерами недель и праздниками
cal -y -w -H
# Три месяца вертикально с праздниками
cal -3 -v -H
# 6 месяцев в 2 колонки
cal -n 6 -c 2
# Февраль 2026 с юлианскими днями
cal -j 2 2026
# Следующие 12 месяцев с центрированием
cal --span -Y
Плагины
Holiday Highlighter
Плагин для подсветки официальных праздников через API isdayoff.ru.
Поддерживаемые страны
| Код | Страна | Локали |
|---|---|---|
| RU | Россия | ru_RU, ru_BY, ru_KZ, ru_UZ, ru_LV |
| BY | Беларусь | be_BY, ru_BY |
| KZ | Казахстан | kk_KZ, ru_KZ |
| US | США | en_US, en |
| UZ | Узбекистан | uz_UZ, ru_UZ |
| TR | Турция | tr_TR |
| LV | Латвия | lv_LV, ru_LV |
Страна определяется автоматически по LC_ALL, LC_TIME или LANG.
Типы дней
| Код | Значение | Цвет |
|---|---|---|
| 0 | Рабочий день | — |
| 1 | Выходной | Красный |
| 2 | Сокращённый день | Бирюзовый |
| 8 | Официальный праздник | Красный |
Установка плагина
После сборки workspace плагин находится в target/release/libholiday_highlighter.so.
Для системной установки:
# Локально для пользователя
mkdir -p ~/.local/lib/cal/plugins
cp target/release/libholiday_highlighter.so ~/.local/lib/cal/plugins/
# Системно (требует root)
sudo mkdir -p /usr/lib/cal/plugins
sudo cp target/release/libholiday_highlighter.so /usr/lib/cal/plugins/
API
Плагин использует isdayoff.ru API:
GET /api/getdata?year=YYYY&month=MM&pre=1— данные за месяцGET /api/getdata?year=YYYY&pre=1— данные за год
Параметр pre=1 включает информацию о предпраздничных сокращённых днях.
Переменные окружения
| Переменная | Описание |
|---|---|
LC_ALL |
Приоритетная локаль для названий месяцев и дней |
LC_TIME |
Локаль для форматирования дат |
LANG |
Резервная локаль |
CAL_TEST_TIME |
Фиксированная дата для тестирования (формат YYYY-MM-DD) |
Локализация
Поддерживаются названия месяцев на русском и английском:
cal январь 2026
cal February 2026
cal 1 2026
Дни недели сокращаются до 2 символов согласно локали:
- ru_RU: Пн, Вт, Ср, Чт, Пт, Сб, Вс
- en_US: Mo, Tu, We, Th, Fr, Sa, Su
Отличия от util-linux cal
- Поддержка вертикального режима (
-v) - Динамические плагины
- Автоматическое определение локали
- Гибкая настройка календарной реформы
- Цветовой вывод с подсветкой сегодня/выходных/праздников