Как я могу получить уведомление на экране, используя notify-osd, когда я подключаю / отключаю зарядное устройство?
battery
notification
notify-osd
kernel_panic
источник
источник
Ответы:
Переключение между питанием от сети и аккумулятором должно генерировать событие на системной шине D-Bus . Запустите
dbus-monitor --system
и посмотрите, какие события генерируются в вашей системе.Если у вас работает upower , вы получаете более специализированные уведомления от
upower -m
.Вы также можете получить события от
acpi_listen
.Запустите этот скрипт, если вы хотите начать видеть уведомления, или добавьте его в свой сеанс запуска.
источник
DBus
Некоторые люди сообщали, что мое предыдущее решение udev отправляло уведомление слишком много раз, когда был подключен кабель питания. Я не мог воспроизвести это, но я написал этот скрипт на python, чтобы использовать dbus вместо udev. Сохраните его как
.py
файл где-нибудь на жестком диске. Отметьте исполняемый файл, выполнив:и добавьте его в свои приложения запуска, как описано здесь . Этот скрипт требует установки пакета
acpi
.Udev
Немного поэкспериментировав (и немного помог), я смог использовать правило udev для достижения этой цели. Некоторые люди сообщают, что иногда он отправляет уведомление более одного раза, но у меня не было никаких проблем. YMMV.
Создайте скрипт со следующим содержимым:
заменить
some_user
на ваше имя пользователя. Отметьте исполняемый файл, выполнив:заменив
/path/to/script.sh
путь, по которому вы сохранили скрипт.Затем создайте файл с
/etc/udev/rules.d
именем10-power.rules
с содержанием:снова замените
/path/to/script.sh
путь к сценарию, который вы создали ранее.Теперь перезагрузите правила udev, выполнив:
Отключите кабель питания. Вы должны получить уведомление.
источник
XAUTHORITY
некоторые дисплеи, такие как gdm.dbus-monitor
. Смотри мой ответ.Источник скрипта
Получение сценария
Скрипт также добавлен в мой github ; эта версия будет обновлена и разработана чуть больше.
Вы можете получить это, выполнив следующие действия:
sugo apt-get install git
cd /opt
git clone https://github.com/SergKolo/sergrep.git
Сценарий будет в
/opt/sergrep
каталоге с именемnotify_ac_change.sh
Концепция / Дизайн
Ключевые вопросы: «Как мы проверяем наличие адаптера переменного тока?» и "Как мы обнаруживаем изменения?"
Ну, эта проблема давно решена другими разработчиками. Ubuntu поставляется по умолчанию со скриптом on_ac_power , который хранится в
/usr/bin/on_ac_power
. Адаптер питания можно упомянуть в разных подсистемах ядра (ACPI или APM), но этот скрипт упрощает нашу работу - авторы рассмотрели множество возможных вариантов. Он возвращает только состояние выхода, поэтому он подходит для использования вif
операторах.Почему это
on_ac_power
хороший выбор? Потому что он опирается на проверку нескольких подсистем. Он также предоставляет достаточно простую команду для работы - результат либо true, либо false.Таким образом, у нас есть инструмент обнаружения присутствия, но как насчет логики? Нам нужно опросить присутствие и обнаружить изменения в состоянии. Что мы можем сделать, это сохранить состояние выхода
on_ac_power
и постоянно сравнивать текущее состояние с тем, что мы сохранили, как только оно изменится - отправьте уведомление, сохраните статус снова и продолжите сравнение, повторяя цикл. Основная идея - использование флагов.Короче говоря, мы инициализируем снимок состояния, а затем постоянно запрашиваем изменения из снимка; как только произойдет изменение - сообщите и сбросьте снимок.
источник