Ubuntu 定时锁屏改进

年轻的时候还好,不用休息打CS通宵也没问题,前几年终于受不了,脖子不舒服肩膀不舒服。所以前几年就写了第一个版本的,定时30分钟自动锁屏,然后修改键盘布局不让自己输入密码,达到强制工作30分钟休息3分钟的目的。
昨天把老Ubuntu升级到20.04,还可以吧,其实和18亦相差无几,Thinkpad X1小红点变流畅了。那就顺便修改一下锁屏的功能。

第一个版本是用 /var/log/auth.log 实现,通过检查解锁屏幕时间后的30分钟为关屏幕时间,这样也有不好的地方,灵活性差,导致有时候锁屏的时机不对。比如说,我工作了15分钟,看了一下手机用了1分钟,屏幕自动锁屏了,重新打开,它又重新计时了,但我并没有休息。
新版本改用xprintidle,通过检测鼠标键盘操作,控制了要3分钟以上不操作键盘和鼠标才算是休息,这样就更好了。

当然细节还有很多问题,比如说把手机也锁上。。。边用边想边修改叭。

#!/bin/sh
# Auth: Zagfai
# lock screen and stop workingecho "Started Restme"# config env
export DISPLAY=:0
export XDG_SESSION_TYPE=x11user=$(whoami)fl=$(find /proc -maxdepth 2 -user $user -name environ -print -quit)
i=0
while [ -z $(grep -z DBUS_SESSION_BUS_ADDRESS "$fl" | cut -d= -f2- | tr -d '\000' ) ]
dofl=$(find /proc -maxdepth 2 -user $user -name environ -newer "$fl" -print -quit)if [ "$i" -eq 10 ];thenexit;fisleep 1i="$((i+1))"
doneexport DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS "$fl" | cut -d= -f2-)# check last unlock screen time
# cat /var/log/auth.log | grep unlocked | tail -1 | awk '{print $1, $2, $3}' > /tmp/unlocktime
# cat /tmp/unlocktime
# python3 -c "import sys;import dateutil.parser;import datetime;to_stop=datetime.timedelta(0, 60*36) >= datetime.datetime.now() - dateutil.parser.parse(open('/tmp/unlocktime').read()) > datetime.timedelta(0, 60*35);sys.exit(0 if to_stop else 1)"
# if [ "$?" -ne 0 ];   then exit;  fi# if no idle file create one
if [ ! -f /tmp/user_last_idle_time ]; thenecho "$(date +%s)" > /tmp/user_last_idle_time
fi# set idle if already idle for more than 150 seconds ( more than 3 mins)
idletime=$(( $(xprintidle) / 1000 ))
if [ "$idletime" -gt 150 ];
thenecho "$(date +%s)" > /tmp/user_last_idle_time
fi# more than one night after system suspended
if [ $(( $(date +%s) - $(cat /tmp/user_last_idle_time) )) -gt 10800 ];  # 3 hours
thenecho "$(date +%s)" > /tmp/user_last_idle_time
fi# less then 30 mins, do not dim screen
if [ $(( $(date +%s) - $(cat /tmp/user_last_idle_time) )) -lt 1800 ];
thenexit;
fiecho $(( $(cat /tmp/user_last_idle_time) + 300 )) > /tmp/user_last_idle_time
show loading
(
for i in {1..100};
dosleep 0.28if [ "$i" -eq 1 ];thenwmctrl -i -r $(wmctrl -l | grep 'Session Locking' | awk '{print $1}') -b add,sticky,abovefiif [ "$i" -eq 80 ];thenwmctrl -i -r $(wmctrl -l | grep 'Session Locking' | awk '{print $1}') -b remove,sticky,abovefiecho "$i"
done
) |
zenity --progress \--title="Session Locking" \--text="\n          Have a rest now!   Please ready in 20 seconds.          \n\n" \--auto-close \--auto-kill \--no-cancel \# xdotool key Super+lgnome-screensaver-command -l
# notify-send "Dim Screen"# xmodmap -e "keycode 48 = NoSymbol"
# sleep 180
# xmodmap -e "keycode 48 = apostrophe quotedbl"

Ubuntu 定时锁屏改进相关推荐

  1. ubuntu修改锁屏密码和root密码

    1.大家用Ubuntu设置密码是会遇到一个痛点,假如设置简单的密码时,会提示让设置更复杂的密码,下面通过一种方法可以设置简单密码. # sudo passwd 用户名 --->输入原来密码 -- ...

  2. ubuntu禁用锁屏

    右上角 --> 系统设置 亮度和锁屏 锁定(关闭)

  3. 儿童玩耍电脑时间限制软件,定时锁屏软件,免费开源

    1. 背景与介绍 孩子一玩电脑就忘记时间,造成游戏过度,眼睛近视,故写了一个软件来限制儿童玩电脑时间(大人也可以用).功能有,设置允许玩耍开始时间和结束时间,允许玩耍时长等,到时间自动关机锁屏等. 2 ...

  4. ubuntu不锁屏设置

    点击右上角的小齿轮->选择System Settings->Brightness&Lock->Turn screen off when inactive for->Ne ...

  5. 定时监控Ubuntu系统HDMI热插拔进行锁屏操作

    目录 一.简介 二.检测HDNI热插拔状态 三.取HDMI状态值 四.编写逻辑判断 五.定时锁屏

  6. ubuntu 18.04取消自动锁屏功能

    有时候几分钟不用Ubuntu,系统就自动锁屏了,这是一种安全措施,防止别人趁你不在时使用你的系统.但对于大部分人而言,这是没有必要的,尤其是Ubuntu虚拟机,里面没啥重要的东西,每次锁屏后需要重新输 ...

  7. linux桌面 仿android,Ubuntu粉丝必备!仿Ubuntu锁屏App体验

    Ubuntu正在造手机的消息相信很多朋友已经知道了,Ubuntu在早些时候也已经放出过适用于Nexus机器的测试版系统,只是完成度并不高,流畅度和功能都难以令人满意.不过这并不妨碍很多人依然深爱着Ub ...

  8. ubuntu锁屏后,字符密码无法输入

    由于学习Linux,于是尝试着在物理机上安装了ubuntu16.04(虽说有点冒失),但是收获也不少,强迫自己用Linux,进步很快, 出现了很多问题,但好在都有前辈的经验可循. 其间遇到一个问题,就 ...

  9. . Ubuntu15.04设置自动锁屏时间

    我们在使用系统过程中会发现,如果我们中途离开位置一会(即不操作电脑一段时间),回来后我们就会发现屏幕已经变黑,即系统被自动锁屏了.这就是Ubuntu系统的定时锁屏功能. 对于那些对系统安全有一定要求的 ...

  10. android h5控制锁屏,WebView播放H5课件时,锁屏解锁后,页面重新绘制的问题

    难题描述:H5页面播放 ,锁屏,解锁后,重新加载了页面,三星不会出现(onpause onstop ,onresume),但在小米.魅族会调用 onpause onstop ondestroy,onr ...

最新文章

  1. jenkins+svn搭建
  2. [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历
  3. linux shell脚本EOF妙用
  4. raster | R语言中的空间栅格对象及其基本处理方法(Ⅲ):切片/掩膜、图层叠加...
  5. hibernate 继承映射(二)
  6. DataGridView下拉框动态赋值以及事件处理
  7. Java中Double除保留后小数位的几种方法
  8. 史上最全的微服务知识科普
  9. 在苹果Mac中的“照片”应用中创建幻灯片放映?
  10. [转]ubuntu 终端常用命令
  11. 2020中国华录杯·数据湖算法大赛—定向算法赛(吸烟打电话检测)baseline-tensorflow2.3-python3.6
  12. 利用网页内容监控来提升网站收录排名
  13. 中小学python编程教学-小学信息技术教学中进行Python 编程语言教学的策略
  14. 山寨手机的操作系统(mtk)简介
  15. 工作9年的程序员几点感受
  16. Jupyter Notebooks学习分享
  17. 当代最值得收藏的画家作品_当代最具收藏价值的画家:许敬如作品欣赏
  18. c语言小学生四则运算出题程序
  19. 无线传感网络在医疗领域的应用
  20. ERP(SAP)基础知识

热门文章

  1. 通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标
  2. 计算机电子书 2018 BiliDrive 备份
  3. 冒险岛062mysql_冒险岛单机版062
  4. c语言ic卡读写软件,IC卡读写工具|ACR122U写卡软件下载 v3.7 免费版_最火软件站
  5. 编码器正反转识别方法
  6. 有一种VR电影比爱情动作片更“爽”
  7. w10计算机字体怎么设置在哪里设置,win10系统电脑字体设置的操作方法
  8. android pickerview 多行,Android PickerView 自定义条件选择器 联动
  9. 数学建模算法与应用学习day4——综合评价与决策方法
  10. 微信小程序使用其他字体