调用 ACPI/D-bus 运行 ruby 脚本
Posted
技术标签:
【中文标题】调用 ACPI/D-bus 运行 ruby 脚本【英文标题】:Invoke ACPI/D-bus to run ruby script 【发布时间】:2014-10-01 18:33:21 【问题描述】:如果后台进程检测到我的笔记本电脑盖合上,我正在创建一个个人应用程序来向我的手机发送短信。
我研究过,有几种方法可以做到这一点:
ACPI - 它侦听事件(笔记本电脑盖关闭)并运行 bash 脚本。但是我不确定如何让它运行一个 ruby 脚本。
D-bus - 允许桌面应用程序和内核之间进行通信,但我必须先创建一个桌面应用程序,这有点矫枉过正。
我是系统编程的新手,这个项目只是测试系统编程水域的一种方式。因此,我上面的描述可能不准确。
如果你们对如何实现这个应用程序的功能有任何想法 - 当笔记本电脑盖合上时向指定的电话号码发送短信 - 我全神贯注。
【问题讨论】:
【参考方案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
,在基于 systemd 的发行版上是 sudo systemctl restart acpid.service
。
【讨论】:
以上是关于调用 ACPI/D-bus 运行 ruby 脚本的主要内容,如果未能解决你的问题,请参考以下文章