如果笔式驱动器连接到系统,我正在编写一个应用程序来控制系统关闭。
当 pendrive 连接时,它将其标识符写入文件。如果 pendrive 断开连接,它会删除文件的标识符,然后,如果文件为空,则删除文件。
然后,我想设置一个 polkit 规则来控制关机,使用这个文件。polkit 规则检测关闭顺序并检查文件是否存在。如果存在,则不允许关闭,否则允许。
我尝试将其设置为这种形式:
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.consolekit.system.stop") ||
action.id.indexOf("org.freedesktop.login1.power-off") == 0)
{
try{
polkit.spawn(["/usr/bin/detect_pendrive.sh", subject.user]);
return polkit.Result.YES;
}catch(error){
return polkit.Result.NO;
}
}
});
polkit 规则使用一个助手,带有一个检查文件是否存在的脚本
detect_pendrive.sh 是这样的:
#!/bin/bash
if ! test -e "/tmp/usbdevinfo"
then
exit 0
else
exit 1
fi
我将规则复制到 /usr/share/polkit-1/rules.d/ 中。但是,当我尝试在连接了 pendrive 的情况下关闭时,系统只是关闭电源并忽略该规则。
我在 Debian GNOME 和 Gentoo Cinnamon 上测试了它
问题可能出在哪里?