bAcpiDescription.txt 7.2 KB

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