Я вообще хочу, чтобы мой ноутбук был заблокирован, когда он был приостановлен, но не тогда, когда я просто приостановил его, потому что есть вариант использования, когда ввод моего пароля после того, как мой ноутбук проснулся от приостановки, довольно громоздкий. Хороший компромисс заключается в том, что требуется только пароль для входа, если ноутбук был приостановлен более 10 минут назад. Как это сделать?
Я использую Ubuntu 16.04 с Unity.
Создайте файл внутри /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, и вставьте в него эти строки, а затем сохраните его:
[ f3]Когда вы вводите свой Ubuntu в режим сна, этот скрипт будет сохранять текущие временные метки, тогда при возобновлении системы он проверяет старые временные метки с текущим, если другое было больше, чем «600» секунд (10 минут), это покажет вам экран блокировки «lightdm», иначе он ничего не сделает.
Для последнего шага:
откройте «системные настройки» -> «Яркость и блокировка».
После перезагрузки или выключения вам все равно нужно ввести свой пароль.
Создайте файл внутри /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», иначе он ничего не сделает.
Для последнего шага:
откройте «системные настройки» -> «Яркость и блокировка».
После перезагрузки или выключения вам все равно нужно ввести свой пароль.
Создайте файл внутри /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», иначе он ничего не сделает.
Для последнего шага:
откройте «системные настройки» -> «Яркость и блокировка».
После перезагрузки или выключения вам все равно нужно ввести свой пароль.
Добавьте сценарий в /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
Я могу помочь вам в этом. Сначала перейдите к настройкам. Выберите этот параметр:
Появится выпадающее меню, в котором говорится, что Экран выключается.
После нажатия на раскрывающемся меню измените обе настройки, чтобы они выглядели следующим образом:
[!d3 ]
Я могу помочь вам в этом. Сначала перейдите к настройкам. Выберите этот параметр:
Появится выпадающее меню, в котором говорится, что Экран выключается.
После нажатия на раскрывающееся меню измените обе настройки, чтобы они выглядели следующим образом:
[!d3]
Добавьте сценарий в /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
Я могу помочь вам в этом. Сначала перейдите к настройкам. Выберите этот параметр:
Появится выпадающее меню, в котором говорится, что Экран выключается.
После нажатия на раскрывающемся меню измените обе настройки, чтобы они выглядели следующим образом:
[!d3]
Добавьте сценарий в /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