Хочу поделится некоторыми подробностями того что прямо сейчас делаю для PC-BSD, а именно систему управления электропитанием. Планы наполеоновские, как обычно. Кое- что уже сделано и работает.
Надеюсь работа на ноутбуке станет намного более приятной.
Итак...
Предпосылки и хотелки
Ни для кого не секрет что FreeBSD с настройками по умолчанию на ноутбуке мягко скажем не лучшим образом себя чувствует. Тут и регулировка яркости подсветки экрана и отсутствие по умолчанию реакции на закрытие крышки и необходимость запуска powerd для динамического снижения частоты процессора и много чего другого. Был у меня пост на эту тему. Да, все это настраивается. Но через консоль и скриптами. А хочется мышкой.Планируемые функции
Ниже самый полный список моих хотелок. Далеко не все будет сразу. Чего- то вообще, возможно, не будет:- Регулировка яркости подсветки. С поддержкой нескольких подсветок если таковые есть.
- Показ состояния батареи (или батарей если их несколько) с прогнозируемым временем автономной работы.
- Настройка действий при нажатии кнопки питания, кнопки "сон" или закрытии крышки ноутбука. Возможные действия- сон или гибернация (если поддерживается).
- Поддержка настраиваемых профилей. Каждому из состояний (на зарядке, разряжается, низкий заряд батареи) соответствует свой профиль.
- Показ информации об оборудовании (для батареи: емкость, производитель, серийный номер, остаточная емкость).
- Отображение уведомлений о смене состояния электропитания, смене профиля, изменении яркости подсветки и т.д. на выбор в виде всплывающих уведомлений в системном лотке или HUD.
- Интерфейс командной строки. Например у меня клавиши Win+F5 и Win+F6 привязаны на смену подсветки +/-10%. Выглядит команда где- то следующим образом "pwrcli sb +10"
- Показ значения текущего энергопотребления (в милливаттах).
- Сбор и показ статистики энергопотребления.
- Возможность временного отключения USB устройств (например встроенного адаптера Bluetooth или веб камеры), адаптеров WiFi как для текущего состояния так и настройками в профиле.
- Управление процессором (состояния сна, тактовые частоты и т.д.). По сути переписанный powerd с большим количеством настроек.
Из чего состоит управление электропитанием
Системный демон pwrd
Собственно сам демон управления электропитанием. Именно он проделывает всю "черную магию" по настройке подсветки, мониторингу батареи, получению информации от оборудования, выбору того или иного профиля в соответствии с состоянием системы и т.д.Интерфейс командной строки: утилита pwrcli
Минимальный интерфейс командной строки. Позволяет установить значение подсветки (в т.ч. и относительное), сменить текущий профиль, показать информацию об оборудовании и т.д. но не может непосредственно менять профили и настройки.Графический интерфейс: программа pc-power
Визуально на первый взгляд выглядит как иконка батареи в системном лотке. Но позволяет полностью настроить управление электропитанием, изменить текущие значения, изменять профили и настройки. Ну и, само собой, показывает все текущее состояние.Немножко технических подробностей
Я понимаю что педантов и перфекционистов может хватить кондратий, но все таки сознаюсь: все компоненты написаны на Qt. Да, демон тоже. Сразу изложу доводы:- Because I can. Извините, но мне так удобно.
- Конкретно этот демон управления питанием на сервере бессмысленен. Для сервера замечательно подойдет powerd. Соответственно для десктопа наличие в системе Qt5 не есть чем- то из ряда вон выходящим.
Да, везде протокол основанный на json. К стати, можете, скажем, из питона дергать демон или получать уведомления. Все по-пижонски так. Стильно-модно-молодежно.
Текущее состояние
И сразу скриншот:На скриншоте (как раз все что работает):
- Батарейка в системном лотке. Показывает правильный заряд. Показывает состояние внешнего питания.
- Регулировка яркости подсветки
- Состояние батарей (одна, правда, фейковая для проверки)
- Изменение текущего профиля
- Кнопки перехода в режим сна или гибернации
- pwrcli готова на 90%
- Оторажение информации об оборудовании, профилях и энергопотреблении работает в демоне и в pwrcli. В pc-power появится в течении пары дней.
Что нужно доделать перед тем как оно появится в Edge:
- Добавить в pwrd и pc-power возможность изменения настроек, изменения, удаления и добавления профилей (все через RPC)
- Доделать интерфейс pc-power. Пока оно умеет только то что на скрине. Еще много работы.
- Добавить в pc-power отображение уведомлений
- Несколько других мелких изменений и добавлений
- Вылизывание всего
- Написание man руководств для pwrd и pwrcli
- Добавление локализации в pwrcli
В итоге по началу получится штука умеющая настраивать кнопки, крышку ноутбука , устанавливать яркость и показывать текущее состояние в купе с информацие об оборудовании. Дальше изменения буду порциями:
- Добавление отключение USB устройств и WiFi
- Статистика энергопотребления
- Управление процессором
Немає коментарів:
Дописати коментар