Somente requer senha ao acordar da suspensão quando suspensa por 10 minutos

11

Eu geralmente quero que meu laptop seja bloqueado quando estiver suspenso, mas não quando eu o suspendo, porque há um caso de uso no qual digitar minha senha depois que meu laptop acordou da suspensão é bastante complicado. Um bom compromisso é exigir apenas a senha de login se o laptop foi suspenso há mais de 10 minutos. Como faço isso?

Eu uso o Ubuntu 16.04 com o Unity.

    
por UTF-8 26.04.2017 / 16:05

3 respostas

7

Crie um arquivo em /lib/systemd/system-sleep/ , chamado por exemplo: lightdm :

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

torna este arquivo executável:

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

Toda vez que você "suspender" ou "retomar" o seu Ubuntu, este script será executado.

Abra-o usando o editor de texto desejado, por exemplo: sudo nano /lib/systemd/system-sleep/lightdm , cole as linhas nele e salve-o:

#!/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

O que isso faz?

Quando você está colocando o seu Ubuntu no modo "sleep", este script salvará os timestamps atuais e, ao retomar o sistema, ele verificará os timestamps antigos com o atual, se o diferente for mais que "600" segundos (10 Minuets) vai mostrar-lhe "lightdm" tela de bloqueio caso contrário, não faz nada.

Para o último passo:

abrir "configurações do sistema" - > "Brilho e bloqueio". Desativar pedindo senha depois de acordar de suspensão, porque deixamos de lidar com a tela de bloqueio para o script.

Após a reinicialização ou desligamento, você ainda precisará digitar sua senha.

    
por Ravexina 15.06.2017 / 14:22
0

Adicione um script em /lib/systemd/system-sleep/ para desbloquear sua sessão se o sistema foi suspenso por um curto período de tempo:

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

Com este conteúdo:

#!/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
    
por lemonsqueeze 15.06.2017 / 14:14
-2

Eu posso te ajudar com isso. Primeiro, vá para as configurações. Selecione esta configuração:

Haveráummenususpensoquedizqueatelaédesativada.

Depoisdeclicarnomenususpenso,altereasduasconfiguraçõesparaqueelasfiquemassim:

    
por BJsgoodlife 15.06.2017 / 12:50