配置 Nautilus 以执行 bash 脚本

配置 Nautilus 以执行 bash 脚本

是否有适用于 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 子系统)支持。请注意,您需要添加VcXsrvubuntu-desktopxubuntu-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

打开Terminalusing Ctrl++AltT输入:

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

  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 可以作为应用程序指示器显示在系统托盘中吗?

答案2

你可能想要使用类似姆卡哈瓦,用于管理网吧。

相关内容