在xsession的开始或结束时运行脚本

时间:2016-06-11 17:08:47

标签: linuxmint

我试图在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

1 个答案:

答案 0 :(得分:1)

第1步。

一个。启用并启动acpi服务。

湾运行acpi_listen命令,尝试通过各种方法使计算机进入睡眠状态(按下电源按钮,关闭盖子等)。

℃。当您执行上述操作时,找出触发的事件。就我而言,他们是:button/lid LID closebutton/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步。分享并享受。