是否有适用于 Ubuntu 的应用程序可以在规定的时间(例如 30 分钟)后锁定计算机。我需要它来限制孩子们观看动画片的时间。例如,观看 30 分钟后,PC 就会锁定,需要父母解锁。
对于 Windows,我使用了 Eyes Relax 应用程序,它显示黑屏和绿色进度条(解锁 PC 的剩余时间)并需要密码才能解除锁定。
答案1
2018 年 6 月 4 日更新
multi-timer
已经创建了一个更优越的程序:带闹钟的倒计时器一套
锁屏定时器
创建自己的锁屏计时器,而不是第三方应用程序
虽然有第三方应用程序可以执行此操作,但您可以创建自己的应用程序。步骤摘要:
- 用于
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(2017年1月20日):修改终止前一个脚本的代码。如果前一个版本已经运行并终止,则添加信息消息。
编辑 4 (2017 年 2 月 4 日):循环运行多个倒计时,无需重新单击桌面图标。例如,洗衣之夜 - 漂洗周期(织物柔软剂)16 分钟,装入烘干机 13 分钟,取出烘干机 58 分钟。
编辑 5 (2017 年 2 月 11 日):将剩余分钟数写入
/tmp/lock-screen-timer-remaining
。这允许其他程序显示屏幕锁定前的时间量。
编辑 6 (2017 年 8 月 7 日):/tmp/
将工作文件目录更改为~/.
支持网络上的多个用户。
编辑7: 删除因为ogg123
不再使用。
编辑8(2017年11月12日):添加 WSL(适用于 Linux 的 Windows 10 子系统)支持。请注意,您需要添加VcXsrv
和ubuntu-desktop
或xubuntu-desktop
(首选)才能在 WSL 中使用 Linux GUI。Windows 10 系统托盘/通知区域剩余时间显示需要补充 Linux 中的内容。计划为 Windows 10 通知区域支持提供indicator-sysmonitor
未来脚本。powershell.exe
编辑9(2018年2月19日):\
修复缺少旋转披萨序列的动画|,/,─,\
。
编辑 10 (2021年11月14日):新变量WORK_FILE
设置为~/.lock-screen-timer-remaining
。如果上一个计时器是从命令行运行的,并使用Ctrl+取消,C则$WORK_FILE
在脚本启动时删除。对此答案进行了以下外观更改:
- 清理文本
m
通过在文件名后附加 (medium) 来缩小此帖子中图片的尺寸。- 添加隔离代码块:``` bash- 用于脚本语法高亮显示。
用于gedit
创建脚本lock-screen-timer
打开Terminal
using Ctrl++Alt并T输入:
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 Nov 14, 2021.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
# Remove hotplugtv. Replace ogg with paplay.
# May 30 2018 - Cohesion with multi-timer. New sysmonitor indicator style.
# Nov 13 2021 - Wrap long lines with \ continuation. Shorten comments.
# Nov 14 2021 - Remove ~/.lock-screen-timer-remaining on startup.
# 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 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
# WORK_FILE contains number of minutes remaining until lock screen
WORK_FILE=~/.lock-screen-timer-remaining
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 "$WORK_FILE"
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
# Nov 14 2021 - Remove ~/.lock-screen-timer-remaining on startup. It may
# still exist if <Ctrl>+C was used to kill last instance launched from
# terminal
if [ -f "$WORK_FILE" ]; then
rm "$WORK_FILE"
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" > "$WORK_FILE"
sleep 60
done
rm "$WORK_FILE" # Remove countdown work file
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
粘贴代码。保存文件并退出编辑器并返回命令提示符。CtrlV
标记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
。左键单击一次以使其聚焦。将鼠标悬停在顶部菜单栏上,直到出现“文件编辑...”菜单,使用:
- 点击
Edit
下拉菜单 - 点击
Properties
选项 - 单击
Behavior
选项卡 - 观察下方的单选按钮
Executable Text Files
- 勾选单选按钮
Run executable text files when they are opened
创建桌面快捷方式链接
上一节中的代码lock-screen-timer
仍处于焦点状态。如果没有,请导航到脚本并左键单击一次以使其处于焦点状态。然后使用:
- 右键单击该文件,就会出现上下文菜单选项。
- 从菜单中选择
Make Link
。 - 出现一个名为 的新图标
Link to lock-screen-timer
。 - 左键单击新图标并将其从 Nautilus 拖到桌面。
现在您可以双击桌面快捷方式链接,然后运行脚本。将出现一个对话框来获取分钟数。会出现两个按钮Cancel和OK。如果单击X
关闭窗口,则与选择 相同Cancel。
计时器运行后,您再次双击它,第一个正在运行的副本将被“杀死”。您现在可以开始新的屏幕锁定倒计时,或者单击Cancel以取消倒计时。
在系统托盘/通知区域显示剩余时间
当锁屏计时器运行时,它会将剩余的分钟数记录到文件中~/.lock-screen-timer-remaining
。您可以使用命令查看此文件watch
,也可以将其显示在 Ubuntu 的系统托盘/应用程序指示栏上,如本答案顶部所示。要在通知区域中显示剩余时间,请按照此问答中的说明进行操作:BASH 可以作为应用程序指示器显示在系统托盘中吗?。
答案2
你可能想要使用类似姆卡哈瓦,用于管理网吧。