在Ubuntu设定的时间后锁定屏幕的应用程序

是否有Ubuntu的应用程序将在规定的时间(例如30分钟)后锁定计算机。 我需要它让孩子们限制他们观看漫画的时间。 例如30分钟观看然后PC锁需要父母解锁它。

对于Windows我使用了Eyes Relax应用程序,它显示黑屏和绿色进度条(解锁PC的时间)并需要密码来覆盖锁。

2018年6月4日更新

已经创建了一个称为multi-timer优秀程序: 用于同时设置不同警报的计时器

锁屏定时器

systray.gif

创建自己的屏幕锁定计时器而不是第三方应用程序

虽然有第三方应用程序可以执行此操作,但您可以创建自己的应用程序。 步骤摘要:

  • 使用gedit创建脚本lock-screen-timer
  • 将此窗口中的代码复制并粘贴到lock-screen-timer
  • lock-screen-timer标记为可执行文件
  • 测试一下!
  • 配置Nautilus以执行bash脚本
  • 创建桌面快捷方式链接
  • 监控剩余时间

编辑1(2016年11月19日):最终版本。 使用信息和声音在15分钟,10分钟,5分钟,3分钟,2分钟和1分钟时发出迫在眉睫的锁定警告。 使用zenity获取分钟数(默认为30)。

编辑2(2016年11月20日):代码更改以杀死以前的睡眠脚本。

编辑3(1月20,2017):修改杀死以前的脚本代码。 如果以前的版本已在运行并终止,请添加信息消息。

编辑4(2012年2月4日):在循环中运行多次倒计时,而无需重新单击桌面图标。 即洗衣之夜 – 漂洗循环16分钟(织物柔顺剂),13分钟加载烘干机,58分钟取出烘干机。

编辑5(2017年2月11日):将剩余的分钟写入/tmp/lock-screen-timer-remaining 。 这允许其他程序在屏幕锁定之前显示时间量。

编辑6(2012年8月7日):将 /tmp/ work文件更改为~/. 支持网络上的多个用户。

编辑:请注意,脚本依赖于ogg123来播放提醒声音。 该程序是Universe存储库中vorbis-tool包的一部分。 此处提供的脚本也尝试使用此处的hotplugtv脚本。

编辑8(2012年11月12日):添加WSL(Windows 10子系统for Linux)支持。 请注意,您需要添加VcXsrvubuntu-desktopxubuntu-desktop (首选)以在WSL中使用Linux GUI。 Windows 10系统托盘/通知区域剩余时间显示需要补充indicator-sysmonitor在Linux中的function。 未来的powershell.exe脚本计划用于Windows 10通知区域支持。

编辑9(2018年2月19日):修复动画错过了旋转披萨“|,/, – ,\”序列的\。

使用gedit创建脚本lock-screen-timer

使用Ctrl + Alt + T打开Terminal并键入:

 gedit lock-screen-timer 

将代码从下面的窗口复制并粘贴到lock-screen-timer

切换回此屏幕并通过突出显示并按Ctrl + C复制以下代码:

 #!/bin/bash # NAME: lock-screen-timer # PATH: $HOME/bin # DESC: Lock screen in x minutes # CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99" # DATE: Created Nov 19, 2016. Last revision May 30, 2018. # UPDT: Updated to support WSL (Windows Subsystem for Linux) # Remove hotplugtv. Replace ogg with paplay. # Cohesion with multi-timer. New sysmonitor indicator style. # NOTE: Time defaults to 30 minutes. # If previous version is sleeping it is killed. # Zenity is used to pop up entry box to get number of minutes. # If zenity is closed with X or Cancel, no screen lock timer is launched. # Pending lock warning displayed on-screen at set intervals. # Write time remaining to ~/.lock-screen-timer-remaining MINUTES="$1" # Optional parameter 1 when invoked from terminal. # if no parameters set default MINUTES to 30 if [ $# == 0 ]; then MINUTES=30 fi DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers. # Check if lock screen timer already running pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$) if [ "$PREVIOUS" != "" ]; then kill "$PREVIOUS" rm ~/.lock-screen-timer-remaining zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated." fi # Running under WSL (Windows Subsystem for Linux)? if cat /proc/version | grep Microsoft; then WSL_running=true else WSL_running=false fi while true ; do # loop until cancel # Get number of minutes until lock from user MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT") RESULT=$? # Zenity return code if [ $RESULT != 0 ]; then break ; # break out of timer lock screen loop and end this script. fi DEFAULT="$MINUTES" # Save deafult for subsequent timers. if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then break ; # zero minutes considered cancel. fi # Loop for X minutes, testing each minute for alert message. (( ++MINUTES )) while (( --MINUTES > 0 )); do case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920) notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ; if [[ $WSL_running == true ]]; then powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();' else paplay /usr/share/sounds/freedesktop/stereo/complete.oga ; fi ;; esac; # Record number of minutes remaining to file other processes can read. echo "Lock screen in: $MINUTES Minutes" > ~/.lock-screen-timer-remaining sleep 60 done rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with if [[ $WSL_running == true ]]; then # Call lock screen for Windows 10 rundll32.exe user32.dll,LockWorkStation else # Call screen saver lock for Ubuntu versions > 14.04. dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock fi done # End of while loop getting minutes to next lock screen exit 0 # Closed dialog box or "Cancel" selected. 

然后切换回空的gedit窗口并使用Ctrl + V粘贴代码。 保存文件并退出编辑器返回到命令提示符。

lock-screen-timer标记为可执行文件

现在我们需要输入以下命令使脚本可执行:

 chmod +x lock-screen-timer 

测试吧!

在从GUI调用脚本之前,我们将从终端调用它,以便我们可以看到是否显示任何错误消息:

 ~/lock-screen-timer 

系统会提示您输入分钟数:

锁屏定时器

设置所需的分钟数,然后单击“确定”以启动计时器。 当剩余15分钟,10分钟,5分钟,3分钟,2分钟和1分钟时,会听到系统声音并出现消息气泡,告知屏幕何时被锁定。 屏幕锁定后,您需要输入密码才能解锁屏幕。

配置Nautilus以执行bash脚本

Nautilus定义当我们在文件显示窗口或桌面上的链接上双击可执行脚本时会发生什么。 正常行为是使用gedit编辑脚本。 我们想要改变这种行为,以便它被执行。

启动Nautilus并导航到包含lock-screen-timer目录。 左键单击一次以使其聚焦。 将鼠标hover在顶部菜单栏上,直到出现“文件编辑…”菜单,使用:

  1. 单击“ Edit下拉菜单
  2. 单击Properties选项
  3. 单击Behavior选项卡
  4. 观察Executable Text Files下的单选选项按钮
  5. 检查单选按钮Run executable text files when they are opened

创建桌面快捷方式链接

从上一节开始, lock-screen-timer仍然具有焦点。 如果没有,请导航到脚本并左键单击一次以使其获得焦点。 然后使用:

  • 右键单击该文件,将出现上下文菜单选项。
  • 从菜单中选择Make Link
  • 出现一个名为Link to lock-screen-timer新图标。
  • 左键单击新图标并将其从Nautilus拖到桌面。

现在,您可以双击桌面快捷方式链接并运行脚本。 将出现一个对话框以获取分钟数。 两个按钮显示取消确定 。 如果单击X关闭窗口,则与选择取消相同。

计时器运行后再次双击它,第一个正在运行的副本被“杀死”。 您现在可以开始新的scren锁倒计时或单击取消进行无倒计时。

显示系统托盘/通知区域中剩余的时间

当锁定屏幕计时器正在运行时,它会记录文件剩余多少分钟~/.lock-screen-timer-remaining 。 您可以使用watch命令查看此文件,或将其显示在Ubuntu的系统托盘/应用程序指示条上,如本答案顶部所示。 要显示通知区域中剩余的时间,请按照此问答中的说明进行操作:( 可以在系统托盘中显示BASH作为应用程序指示器吗? )。

您可能想要使用Mkahawa之类的东西 ,用于管理网吧。