如何锁定会话从awesome

我希望在Ubuntu 13.10上的Awesome中有一个简单的锁定function,无论是按需还是不活动。

获取食谱成分:

sudo apt-get install xautolock slock 
  • xautolock – 在一段时间不活动后执行锁定器。
  • slock – 用黑色的UI锁定屏幕,键入密码并按Enter键。

尝试命令首先锁定会话,看看你是否喜欢它:

 slock 

这可以通过修改它的配置连接到Awesome菜单:

 # 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 

找到mymainmenu的构建位置并进行调整。 我的部分现在看起来像这样(注意“锁定”行):

 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 }, } }) 

并为它制作Meta + Escape快捷方式。 原来逃生必然会标记历史。 我不使用该function。

 -- it was: -- awful.key({ modkey, }, "Escape", awful.tag.history.restore), awful.key({ modkey, }, "Escape", lockscreen ), 

然后是自动锁定。 我创建了一个可执行文件,以确保xautolock每个会话只执行一次:

 # 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 

我使用了一个环境变量“XDG_SEAT”,它由DM设置来区分会话并存储PID和命令日志。 它仅在未运行时执行:

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

该会话守护程序脚本将由xautolock-session使用:

 # make the file, set permissions and edit: touch ~/bin/xautolock-session chmod ug+x ~/bin/xautolock-session nano ~/bin/xautolock-session 

xautolock-session内容:

 #!/bin/bash session-daemon xautolock -locker slock -time 5 -detectsleep -secure -corners "-00+" 

这将由Awesome在重启时执行。 再次编辑Awesome配置:

 nano ~/.config/awesome/rc.lua 

并在底部添加此行:

 awful.util.spawn_with_shell("~/bin/xautolock-session") 

现在,当您再次注销时,您的会话将在5分钟后自动锁定。

注意:我们也可以使用dm-tool lock ,但是有一个奇怪的错误实际上打破了整个想法: 可以通过切换到控制台来规避锁定