Obtenha inredients de receita:
sudo apt-get install xautolock slock
- xautolock - executa um bloqueio após um período de inatividade.
- slock - bloqueia a tela com uma interface de usuário apenas preta, digite a senha e pressione Enter.
experimente o comando para bloquear a sessão primeiro e veja se você gosta dela:
slock
Isso pode ser ligado ao menu Awesome modificando sua configuração:
# make awesome config dir:
mkdir -p ~/.config/awesome
# copy default config file to your home folder:
cp /etc/xdg/awesome/rc.lua ~/.config/awesome
# edit the custom config:
nano ~/.config/awesome/rc.lua
Encontre onde o mymainmenu está sendo construído e ajuste-o. Minha seção agora se parece com isso (observe a linha "Bloquear"):
lockscreen = function() awful.util.spawn("slock") end
mymainmenu = awful.menu({ items = {
{ "Lock", lockscreen },
{ "Awesome", myawesomemenu, beautiful.awesome_icon },
{ "Debian", debian.menu.Debian_menu.Debian },
{ "Guest", terminal .. " -e /usr/bin/dm-tool switch-to-guest" },
{ "Greet", terminal .. " -e /usr/bin/dm-tool switch-to-greeter" },
{ "Logout", awesome.quit },
}
})
E crie um atalho Meta + Escape para ele também. Originalmente Escape é obrigado a marcar o histórico. Eu não uso esse recurso embora.
-- it was:
-- awful.key({ modkey, }, "Escape", awful.tag.history.restore),
awful.key({ modkey, }, "Escape", lockscreen ),
Depois vem o bloqueio automático. Eu criei um arquivo executável para ter certeza de que o xautolock só é executado uma vez por sessão:
# make a bin folder if not present:
mkdir -p ~/bin/
# make the file, set permissions and edit:
touch ~/bin/session-daemon
chmod ug+x ~/bin/session-daemon
nano ~/bin/session-daemon
Eu usei uma variável de ambiente "XDG_SEAT" que é definida pelo DM para distinguir sessões e armazenar um PID e um log do comando. Só é executado se não estiver em execução:
#!/bin/bash
if [ "$#" == "0" ] ;
then
echo "Session daemon missing command" >&2
echo "USAGE: $0 command [args...]"
echo "Executes given command with args only once per XDG seat (session)."
echo "Keeps PID and log of the executed command."
exit 1
fi
COMMAND=$1
shift
NAME="${COMMAND##*/}"
PIDFILE=~/.cache/session-daemon/$NAME-$XDG_SEAT.pid
LOGFILE=~/.cache/session-daemon/$NAME-$XDG_SEAT.log
PID=""
PIDDIR="${PIDFILE%/*}"
LOGDIR="${LOGFILE%/*}"
mkdir -p $PIDDIR
if [ $? -ne 0 ];
then
echo "Session daemon PIDDIR not there: $PIDDIR" >&2
exit 2
fi
mkdir -p $LOGDIR
if [ $? -ne 0 ];
then
echo "Session daemon LOGDIR not there: $LOGDIR" >&2
exit 2
fi
if [ -e "$PIDFILE" ] ;
then
echo "Session daemon '$NAME' PIDFILE found: $PIDFILE"
PID='cat "$PIDFILE"'
echo "Session daemon '$NAME' PID found: $PID"
else
echo "Session daemon '$NAME' PIDFILE NOT found: $PIDFILE"
fi
if [ "$PID" ] && kill -0 "$PID" 2>/dev/null ;
then
echo "Session daemon '$NAME' was already running with PID $PID" >&2
exit 3
fi
echo "Session daemon running $COMMAND $* > $LOGFILE 2>&1"
$COMMAND $* > "$LOGFILE" 2>&1 &
PID=$!
ERR=$?
sleep 1
if [ "$PID" ] && [ $ERR == 0 ] && kill -0 "$PID" 2>/dev/null;
then
echo -n $PID > "$PIDFILE"
echo "Session daemon '$NAME' started with PID $PID"
else
echo "Session daemon '$NAME' did not start or finished early. PID: $PID, ERR: $ERR" >&2
cat "$LOGFILE" >&2
exit 4
fi
Esse script do daemon de sessão será usado pela sessão xautolock:
# make the file, set permissions and edit:
touch ~/bin/xautolock-session
chmod ug+x ~/bin/xautolock-session
nano ~/bin/xautolock-session
conteúdo da sessão xautolock:
#!/bin/bash
session-daemon xautolock -locker slock -time 5 -detectsleep -secure -corners "-00+"
Isso será executado pelo Awesome no reinício. Edite a configuração Awesome novamente:
nano ~/.config/awesome/rc.lua
Adicione essa linha na parte inferior:
awful.util.spawn_with_shell("~/bin/xautolock-session")
Agora, quando você sair e entrar novamente, sua sessão será bloqueada automaticamente após 5 minutos.
Nota: Poderíamos usar dm-tool lock
também, mas há um bug esquisito que realmente quebra a idéia: O bloqueio pode ser contornado ao mudar para o console