我有一个设置鼠标偏好的脚本,它被放置在启动应用程序。它在启动时运行,但当盖子关闭或计算机手动进入挂起状态(实际上是一样的)时,设置会被删除。我有它,所以 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