1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- Техническое описание скрипта мониторинга батареи
- Этот Bash-скрипт предоставляет интерактивный интерфейс в терминале для мониторинга состояния батареи, температуры и охлаждения в системах Linux с использованием утилиты `acpi`. Он отображает данные в реальном времени в эстетичной двойной рамке с цветовым кодированием и полосами прогресса, обновляясь каждые 60 секунд (настраиваемый интервал). Ниже приведено подробное описание его функциональности:
- 1. **Инициализация и настройка**:
- - Проверяет наличие утилиты `acpi` и выводит инструкцию по установке (`sudo apt install acpi`), если она отсутствует.
- - Очищает терминал и скрывает курсор (функция `clear_box`) с использованием ANSI-кодов.
- - Устанавливает ловушку (`trap`) для восстановления курсора и очистки экрана при прерывании (`Ctrl+C`, SIGINT).
- - Задаёт интервал обновления по умолчанию в 60 секунд (переменная `interval`).
- 2. **Основной макет отображения (`double_line_box`)**:
- - Создаёт рамку с двойными линиями (42 строки, 83 столбца) с использованием Unicode-символов (╔, ═, ║ и т.д.).
- - Цвет фона динамически меняется в зависимости от уровня заряда батареи:
- - 100%: Жёлтый (43)
- - 96–99%: Синий (44)
- - 92–95%: Фиолетовый (45)
- - 84–91%: Красный (41)
- - Ниже 84%: Жёлтый (43)
- - Включает горизонтальные разделители для структурирования данных.
- 3. **Секции информации**:
- - **Заголовок (`title_box`)**: Анимированно отображает текст "*** Linux OS acpi The state of the battery ***" с задержкой 0.01 секунды.
- - **Инструкция (`ifo_box`)**: Указывает "Click 'Ctrl+C' for exit" для выхода.
- - **Версия ACPI (`acpi_box`)**: Показывает версию утилиты `acpi` (например, "1.7").
- - **Интервал обновления (`update_box`)**: Отображает текущий интервал обновления (например, "01 minutes 00 seconds").
- - **Обнаружение батареи (`bat_box`)**: Указывает статус батареи ("Detected" или "Undetected") с зелёным или красным цветом.
- - **Состояние батареи (`line_box`)**: Показывает состояние батареи ("Charging", "Discharging", "Full" или "Unknown") с цветовым выделением.
- - **Оставшееся время (`time_box`)**: Отображает оставшееся время работы батареи (например, "02:30:00" или "N/A").
- - **Уровень заряда (`battery_progress_bar`)**: Рисует полосу прогресса из 50 символов (▓ для заполненной части, ░ для пустой) с процентом заряда.
- - **Скорость разряда (`check_battery_rate`)**: Указывает "Rate information unavailable", если данные недоступны.
- - **Состояние адаптера (`get_adapter_status`)**: Показывает состояние питания (например, "Adapter 0: on-line").
- - **Температура (`get_thermal1_status`, `get_thermal2_status`)**: Отображает температуры Thermal 0 и Thermal 1 (например, "45.0 degrees C").
- - **Охлаждение (`get_cooling`)**: Перечисляет состояния устройств охлаждения (например, "Cooling 0: Processor 0 of 10") с префиксом "Battery" для первой строки.
- - **Здоровье батареи (`get_battery_health`)**: Показывает проектную ёмкость, последнюю полную ёмкость, текущий процент и износ батареи (например, "Design capacity: 5000 mAh", "Battery wear: 15%").
- - **Полоса здоровья (`progress_bar`)**: Визуализирует здоровье батареи в виде полосы прогресса из 50 символов с процентом.
- 4. **Система предупреждений (`alert_line_box`, `alert_info`)**:
- - Отображает рамку с текстом "The computer is about to shut down!" с анимацией (задержка 0.1 секунды).
- - Цвет фона: Красный (41) при уровне заряда ≤91%, чёрный (40) при >91%.
- 5. **Управление питанием**:
- - Проверяет уровень заряда каждые `interval` секунд (по умолчанию 60).
- - При уровне заряда ≤84% (переменная `THRESHOLD`) немедленно выключает систему командой `shutdown now`.
- 6. **Ключевые особенности**:
- - Цветовое кодирование: зелёный для нормального состояния, красный для ошибок или критических уровней, жёлтый для текста и рамок.
- - Прогресс-бары для уровня заряда и здоровья батареи (50 символов, с округлением вверх).
- - Анимация текста для заголовка и предупреждений.
- - Настраиваемый интервал обновления через переменную `interval`.
- 7. **Зависимости**:
- - Требуется утилита `acpi` для получения данных о батарее, адаптере, температуре и охлаждении.
- - Использует стандартные инструменты: `awk`, `grep`, `tr`, `sleep`, `tput`.
- 8. **Использование**:
- - Запуск: `./имя_скрипта.sh` в терминале.
- - Выход: `Ctrl+C` для завершения с восстановлением терминала.
- Этот скрипт идеально подходит для пользователей Linux, которым нужен детализированный и визуально привлекательный мониторинг состояния батареи с функцией автоматического выключения при низком заряде.
- notabug: https://notabug.org/Grannik/bAcpi
- gitea: https://demo.gitea.com/Grannik/bAcpi
- gogs: https://try.gogs.io/Grannik5/bAcpi
|