我试图在x会话结束之前找到一种在睡眠时运行脚本的方法,因为脚本需要一个活动的x会话才能正常执行。将脚本存储在king@death-star /etc/acpi $ cat 01_revert_kb_on_sleep
#!/bin/bash
touch ~/Desktop/touchfile_my_script_acpi
case "$1" in
hibernate|suspend)
sh -c "/home/king/Desktop/Scripts/rotate_desktop normal; /home/king/Desktop/Scripts/misc/my_keyboard on" 2> ~/Desktop/revert_kb_error_log.txt ;;
#thaw|resume)
king@death-star /etc/acpi $ ls
total 1MB
drwxr-xr-x 3 root root 1MB Jun 11 23:36 .
drwxr-xr-x 163 root root 1MB Jun 11 23:41 ..
-rwxr-xr-x 1 root root 1MB Jun 11 23:36 01_revert_kb_on_sleep
king@death-star /etc/acpi $ ps -ef| grep acpid
root 1070 1 0 23:41 ? 00:00:00 acpid -c /etc/acpi/events -s /var/run/acpid.socket
king 3499 2574 0 23:52 pts/2 00:00:00 grep --colour=auto acpid
中不起作用(并返回与不存在的x会话相关的错误)。任何想法放置脚本的想法?
更新以回应评论
let imageNames = [
"Earth1.jpg",
"Earth2.jpg",
// ...
"Earth31.jpg"
]
var images = [UIImage]()
for name in imageNames
{
guard let image = UIImage(named: name) else {
NSLog("Failed to load image \(name)")
continue
}
images.append(image)
}
slideShow1.animationImages = images
答案 0 :(得分:1)
第1步。
一个。启用并启动acpi
服务。
湾运行acpi_listen
命令,尝试通过各种方法使计算机进入睡眠状态(按下电源按钮,关闭盖子等)。
℃。当您执行上述操作时,找出触发的事件。就我而言,他们是:button/lid LID close
和button/sleep SBTN 00000080 00000000
第2步。
一个。使用以下内容创建文件/etc/acpi/events/my_events
:
event=(button/sleep SBTN|button/lid LID close)
action=/etc/acpi/my_script.sh
用您的活动替换event=
行中的事件。
湾使用以下内容创建文件/etc/acpi/my_script.sh
:
#!/bin/sh
/home/king/Desktop/Scripts/rotate_desktop normal
/home/king/Desktop/Scripts/misc/my_keyboard on
NB。您可能需要在脚本之前添加export DISPLAY=:0
才能访问X会话。
NB2:您的脚本将使用root
用户凭据运行。要使用您的用户凭据运行,您可能希望这样做:
sudo -u king /home/king/Desktop/Scripts/rotate_desktop normal
sudo -u king /home/king/Desktop/Scripts/misc/my_keyboard on
℃。使文件/etc/acpi/my_script.sh
可执行:
chmod +x /etc/acpi/my_script.sh
d。重新启动acpi
服务。
第3步。分享并享受。