123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- Техническое описание программы acpi_menu
- Команда для компиляции: gcc -o mAcpi mAcpi.c -lncursesw
- Эта программа на языке C использует библиотеку ncurses для создания интерактивного меню в терминале, предоставляющего информацию о утилите `acpi` в Linux. Она отображает список опций и описаний, связанных с `acpi`, с поддержкой навигации и выбора пунктов. Ниже приведено подробное описание её функциональности:
- 1. **Компиляция и зависимости**:
- - Для компиляции требуется библиотека `ncursesw` (широкие символы для поддержки UTF-8).
- - Команда: `gcc -o acpi_menu acpi_menu.c -lncursesw`.
- 2. **Инициализация**:
- - Устанавливает локаль `ru_RU.UTF-8` для поддержки русского языка.
- - Инициализирует ncurses (`initscr`), проверяет поддержку цветов и отключает эхо ввода, активирует клавиши управления (стрелки).
- - Скрывает курсор и устанавливает обработчик SIGINT для корректного завершения (`cleanup`).
- 3. **Цветовые пары**:
- - Определяет 6 цветовых пар:
- - 1: Чёрный текст на жёлтом фоне (рамки, выделение).
- - 2: Жёлтый текст на чёрном фоне (заголовки, линии).
- - 3: Голубой текст (для "Git").
- - 4: Зелёный текст (пункты меню).
- - 5: Белый текст (основной текст).
- - 6: Тёмно-белый текст (дополнительный).
- 4. **Меню**:
- - Содержит 19 пунктов, включая "Установка", "Краткий обзор", "Описание", "Автор", опции `acpi` (например, `-b --battery`, `-t --thermal`), "Git" и "Exit".
- - Пункты хранятся в массиве `items` как широкие строки (`wchar_t`) для поддержки UTF-8.
- 5. **Интерфейс (`draw_menu`)**:
- - Рисует рамку с одинарными линиями (80 столбцов, 31 строка) с жёлтыми краями.
- - Добавляет горизонтальные разделители на строках 3, 5, 10, 25.
- - Заголовок "*** acpi ***" (жирный белый), подзаголовок "Shows battery status and other ACPI information" (тусклый).
- - Подсказка навигации ("↑ Up ─ ↓ Down ─ ↵ Select Enter") внизу жёлтым цветом.
- 6. **Отображение пунктов (`print_menu_items`)**:
- - Пункты меню выводятся на заданных строках (6–9, 12–24, 26, 28).
- - Выбранный пункт выделяется чёрным текстом на жёлтом фоне.
- - Остальные пункты — зелёным текстом, с выравниванием описания и опции.
- 7. **Навигация и выбор**:
- - Стрелки вверх/вниз изменяют `selected` (циклически от 0 до 18).
- - Enter (код 10) очищает экран и показывает информацию о выбранном пункте:
- - "Установка": "Утилита предустановлена."
- - "Краткий обзор": "acpi [options]".
- - "Описание": Информация о выводе ACPI из файловой системы.
- - "Автор": Сведения об авторах и лицензии GNU GPL.
- - Опции `acpi`: Краткие описания и команды (например, `acpi -b`, `acpi --battery`).
- - "Git": Пустой список репозиториев (заглушка).
- - "Exit": Завершает программу.
- - После вывода появляется кнопка "ENTER = Main Menu" для возврата.
- 8. **Завершение (`cleanup`)**:
- - Вызывается при SIGINT или выборе "Exit", завершает ncurses (`endwin`) и выходит.
- 9. **Особенности**:
- - Поддержка русского языка через UTF-8 и `ncursesw`.
- - Цветовое выделение для улучшения читаемости.
- - Интерактивная навигация с помощью стрелок и Enter.
- 10. **Использование**:
- - После компиляции запустите: `./acpi_menu`.
- - Навигация: стрелки вверх/вниз, выбор — Enter, выход — выбор "Exit" или `Ctrl+C`.
- Программа предназначена для пользователей Linux, желающих изучить возможности `acpi` через удобный текстовый интерфейс с поддержкой русского языка.
|