Вызвать шину ACPI/D для запуска сценария ruby

Я создаю личное приложение для отправки SMS на мой телефон, если фоновый процесс обнаружил закрытие крышки моего ноутбука.

Я исследовал, и есть несколько способов сделать это:

  1. ACPI - он прослушивает событие (закрытие крышки ноутбука) и запускает скрипт bash. Однако я не уверен, как заставить его запускать скрипт ruby.

  2. D-bus - обеспечивает связь между настольным приложением и ядром, но сначала мне нужно будет создать настольное приложение, что немного излишне.

Я новичок в системном программировании, этот проект - просто способ проверить основы системного программирования. Следовательно, мое описание выше может быть неточным.

Если у вас, ребята, есть идеи, как добиться функциональности этого приложения - отправка SMS-сообщения на указанный номер телефона, когда крышка ноутбука закрыта - у меня все уши.

1 ответ

Решение

Вы можете запустить скрипт ruby ​​для события ACPI.

Первое использование acpi_listen выяснить, что это за событие с закрывающейся крышкой.

В моем случае это выглядит так:

button/lid LID close

Затем вам нужно создать обработчик событий ACPI (замените vim на ваш любимый текстовый редактор):sudo vim /etc/acpi/events/laptop_lid

event=button/lid LID close
action=/etc/acpi/your_ruby_script.rb

Затем поместите ваш скрипт в /etc/acpi/ и сделать его исполняемым:

sudo cp /path/to/your_ruby_script.rb /etc/acpi/your_ruby_script.rb
sudo chmod +x /etc/acpi/your_ruby_script.rb

Наконец, просто перезапустите демон ACPI. Это зависит от дистрибутива, но на дистрибутивах на основе выскочки это sudo service acpid restart и на системных дистрибутивах это sudo systemctl restart acpid.service,

Другие вопросы по тегам