仅当暂停 10 分钟后唤醒时才需要密码

仅当暂停 10 分钟后唤醒时才需要密码

我通常希望我的笔记本电脑在挂起时被锁定,但在刚挂起时则不希望锁定,因为有一种情况是,在我的笔记本电脑从挂起状态唤醒后输入密码非常麻烦。一个好的折衷方案是,如果笔记本电脑挂起超过 10 分钟,则仅要求输入登录密码。我该怎么做?

我使用带有 Unity 的 Ubuntu 16.04。

答案1

在 内创建一个名为 的文件/lib/systemd/system-sleep/,例如lightdm::

sudo touch /lib/systemd/system-sleep/lightdm

使此文件可执行:

sudo chmod +x /lib/systemd/system-sleep/lightdm

每次您“暂停”或“恢复” Ubuntu 时,该脚本都会运行。

使用所需的文本编辑器打开它,例如:sudo nano /lib/systemd/system-sleep/lightdm,并将以下行粘贴到其中,然后保存:

#!/bin/sh
set -e

case "$1" in
   pre)

    #Store current timestamp (while suspending)
    /bin/echo "$(date +%s)" > /tmp/_suspend 
    ;;

   post)
      #Compute old and current timestamp
      oldts="$(cat /tmp/_suspend)"
      ts="$(date +%s)"

      #Prompt for password if suspended > 10 minutes
      if [ $((ts-oldts)) -ge 600 ];
       then
         export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
         /usr/bin/dm-tool lock
      fi

      /bin/rm /tmp/_suspend
   ;;
esac

它能做什么?

当您将 Ubuntu 置于“睡眠”模式时,此脚本将保存当前时间戳,然后在恢复系统时,它将使用当前时间戳检查旧时间戳,如果差异超过“600”秒(10 分钟),它将向您显示“lightdm”锁定屏幕,否则它什么也不做。

最后一步:

打开“系统设置”->“亮度和锁定”。禁用从挂起唤醒后询问密码,因为我们将锁定屏幕的处理留给了脚本。

在此处输入图片描述

重启或关机后您仍然需要输入密码。

答案2

/lib/systemd/system-sleep/如果系统短时间挂起,请添加脚本来解锁您的会话:

cd /lib/systemd/system-sleep/
sudo touch     unlock_early_suspend
sudo chmod 755 unlock_early_suspend
sudo -H gedit     unlock_early_suspend

包含此内容:

#!/bin/bash
# Don't ask for password on resume if computer has been suspended for a short time

# Max duration of unlocked suspend (seconds)
SUSPEND_GRACE_TIME=600

file_time()      {  stat --format="%Y" "$1";  }

unlock_session()
{
    # Ubuntu 16.04
    sleep 1; loginctl unlock-sessions
}

# Only interested in suspend/resume events here. For hibernate etc tweak this
if [ "$2" != "suspend" ]; then  exit 0;  fi

# Suspend
if [ "$1" = "pre" ]; then  touch /tmp/last_suspend;  fi

# Resume
if [ "$1" = "post" ]; then
    touch /tmp/last_resume
    last_suspend=`file_time /tmp/last_suspend`
    last_resume=`file_time /tmp/last_resume`
    suspend_time=$[$last_resume - $last_suspend]

    if [ "$suspend_time" -le $SUSPEND_GRACE_TIME ]; then
        unlock_session
    fi
fi

答案3

我可以帮你解决这个问题。首先,进入设置。选择此设置:

亮度_锁定(&L)

将会有一个下拉菜单,显示“屏幕关闭”。

屏幕关闭

单击下拉菜单后,更改两个设置,使它们看起来像这样:

锁屏

相关内容