经过一定时间后,Ubuntu将锁定屏幕的应用程序


10

是否有适用于Ubuntu的应用程序,它将在定义的时间(例如30分钟)后锁定计算机。对于孩子们来说,我需要它来限制他们看动画片的时间。例如,观看30分钟,然后PC锁定,要求父母将其解锁。

对于Windows,我使用了Eyes Relax应用程序,它显示黑屏和绿色进度条(剩余时间可解锁PC),并且需要输入密码才能覆盖锁定。


只是好奇以下任何答案是否对您有用?
WinEunuuchs2Unix

如果有机会,我会测试它们并标记答案
Dmitriy

我刚刚发现了类似的问题和答案,可能是使用1)的askubuntu.com/questions/715721/... 2)askubuntu.com/questions/68918/...和3)askubuntu.com/questions/696620/...
WinEunuuchs2Unix

Answers:


15

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(2017年1月20日):修订版以消除以前的脚本代码。如果先前版本已在运行并终止,请添加信息消息。

编辑4(2017年2月4日):循环运行多个倒数,而无需重新单击桌面图标。例如,洗衣之夜-漂洗周期(织物柔软剂)16分钟,装载烘干机13分钟,取出烘干机58分钟。

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

编辑6(2017年8月7日):更改/tmp/工作文件~/.以支持网络上的多个用户。

编辑:请注意,该脚本取决于ogg123来播放提醒声音。该程序是Universe存储库中vorbis-tool软件包的一部分。此处显示的脚本还尝试使用此处找到hotplugtv脚本。

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

编辑9(2018年2月19日):修复了动画丢失\旋转披萨“ |,/,─,\”序列中的的情况。

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

打开Terminal使用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 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。左键单击一次即可使其聚焦。将鼠标悬停在顶部菜单栏上,直到出现“文件编辑...”菜单,请使用:

  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拖到桌面上。

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

计时器运行后,再次双击它,第一个运行的副本被“杀死”。现在,您可以开始新的屏幕锁定倒计时,或者单击Cancel无倒计时。

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

锁屏计时器运行时,它会记录文件中剩余的分钟数~/.lock-screen-timer-remaining。您可以使用watch命令查看此文件,或将其显示在Ubuntu的系统托盘/应用程序指示栏上,如该答案的顶部所示。要在通知区域中显示剩余时间,请遵循以下问答中的说明:(BASH可以在系统托盘中显示为应用程序指示符吗?)。


kids-tv-timer 1提供kids-tv-timer:找不到命令。有没有办法在桌面或任务栏中创建快捷方式?只需单击它并激活应用程序?
德米特里(Dmitriy)

该文件在那里,如果我双击它,它将在gedit中打开。我已经执行了所有命令
-Dmitriy

我将最后一行更改为~/kids-tv-timer 1。抱歉,前面缺少路径。试试看
WinEunuuchs2Unix

是的,那有帮助。但是您没有回答第二个问题吗?:)
Dmitriy

@geotavros位于视频上方的进度显示将需要sleepkids-tv-timerbash脚本中使用的命令完全不同的方法。可以创建一个循环,在该循环中,每分钟会弹出一个持续约10秒钟的通知气泡,显示“剩余29分钟”,然后是“剩余28分钟”,依此类推。但是,要覆盖,您仍然必须中断视频,终止kids-tv-timer并重新分配时间。让时间到期,登录并重新启动几乎要容易得多kids-tv-timer
WinEunuuchs2Unix

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.