调用ACPI / D-bus运行ruby脚本

时间:2014-08-08 09:58:43

标签: ruby linux bash dbus acpi

我正在创建一个个人应用程序,如果后台进程检测到笔记本电脑盖关闭,我会向手机发送短信。

我研究过,有几种方法可以做到这一点:

  1. ACPI - 它侦听事件(笔记本电脑盖关闭)并运行bash脚本。但是我不知道如何让它运行ruby脚本。

  2. D-bus - 允许桌面应用程序和内核之间的通信,但我必须先创建一个桌面应用程序,这有点过分。

  3. 我是系统编程的新手,这个项目只是一种测试系统编程水域的方法。因此,我上面的描述可能不准确。

    如果你们有任何想法如何实现这个应用程序的功能 - 当笔记本电脑盖关闭时发送短信到指定的电话号码 - 我都是耳朵。

1 个答案:

答案 0 :(得分:1)

您可以在ACPI事件上运行ruby脚本。

首先使用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