在 16.04 上从暂停状态登录时专门执行的脚本

在 16.04 上从暂停状态登录时专门执行的脚本

我有一个设置鼠标偏好的脚本,它被放置在启动应用程序。它在启动时运行,但当盖子关闭或计算机手动进入挂起状态(实际上是一样的)时,设置会被删除。我有它,所以 Ubuntu 在从挂起状态返回时需要我的密码,但这种登录似乎与常规登录不同,因为它不执行.profile.bashrc

我尝试放置我的脚本,/lib/systemd/system-sleep/但它在输入密码之前执行,并且似乎xinput命令在唤醒周期的那一刻不起作用,因为更改没有生效。

因此,我要么寻找一种方法让每次挂起也执行锁定或注销循环(因为锁定手动执行.profile),要么找到一种方法在从挂起恢复时专门在密码输入上执行脚本。

答案1

中的脚本/etc/systemd/system-sleep/以 root 身份运行,但 root 未登录X11窗口系统。因此,它需要从登录用户继承配置文件。

eyesome 屏幕亮度和伽马应用程序这对我有用:

#!/bin/bash

export DISPLAY=:0       # For xrandr commands to work.
SpamLength=2            # How long spam lasts (how many seconds to sleep)

WaitForSignOn () {

    # eyesome daemon is loaded during boot. The user name is required
    # for xrandr external monitor brightness and gamma control. We must
    # wait until user signs on to get .Xauthority file settings.

    TotalWait=0

    # Wait for user to sign on then get Xserver access for xrandr calls
    UserName=""
    while [[ $UserName == "" ]]; do

        sleep "$SpamLength"
        TotalWait=$(( TotalWait + SpamLength ))

        # Find UserName currently logged in.
        UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
    done

    logger "Waited $TotalWait seconds for $UserName to login."

    xhost local:root
    export XAUTHORITY="/home/$UserName/.Xauthority"

} # WaitForSignOn

您可以将上述代码复制到脚本的顶部,然后在现有代码前面插入一行:

WaitForSignOn

相关内容