如何将 notify-send 命令与 Calcurse 日历结合使用?

Din*_*ino 6 command-line calendar schedule notify-send

我使用日历和日程安排应用程序calcurse。这是一个很好的命令行程序。

例如,calcurse -a您可以显示当天的事件。

我如何将此信息发送到notify-send,以在桌面上显示通知?

$ calcurse -a | notify-send
Run Code Online (Sandbox Code Playgroud)

不管用 ...

Jac*_*ijm 3

关于 Calcurse

通常,恢复到(非常)基本但完整的功能感觉很奇怪,但在某种程度上令人耳目一新。但不确定我是否会使用它。

尽管 Calcurse 窗口的底部建议使用管道选项,并且Calcurse 的网站提到“用户可配置的通知系统”,但我找不到一种方法来使用它来自动安排所有事件的通知。

在此输入图像描述

同时:事实上,这样的提醒功能将是一个有用的补充。calcurse下面的脚本可以用作显示提醒的插件。希望对你有帮助。

它非常容易使用;只需在后台运行脚本即可。它所做的只是检查今天的事件(每分钟更新两次),并在到期前的任意时间运行通知。

创建提醒需要什么

命令的输出:

calcurse -a 
Run Code Online (Sandbox Code Playgroud)

好像:

calcurse -a 
Run Code Online (Sandbox Code Playgroud)

立即发生的是,计划项目以“-”开头,而全天项目以“*”开头。我们需要做的是创建两组项目(列表):

  • 预定的
  • 那些计划外的

对于第一类,我们需要解析时间,将其转换为我们可以计算的格式,这样我们就可以在n到期前 - 分钟显示提醒。

随后,我们需要“留意时钟”,将(事件的)设定时间与当前时间进行比较。如果两者之间的时间跨度进入设定的警告时间,则只需显示通知即可。
最后,为了防止重复通知,我们需要将该项目添加到“完成”列表中。

此外,该脚本还会清理“完成”列表;如果某个项目不再出现在今天的项目中(无论您删除了该项目还是在会话期间切换了日期),该项目都会自动删除。

结果

启动时(登录)

  • 该脚本连续显示今天的所有项目:

    在此输入图像描述 在此输入图像描述

到期前的任意时间(在本例中为 15 分钟)

  • 脚本会在通知中提醒您:

    在此输入图像描述

剧本

12/29/15:
 * Free today!
 - 12:00 -> ..:..
    See if this script does its job :)
Run Code Online (Sandbox Code Playgroud)

如何使用

  • 将脚本复制到一个空文件中,另存为run_ccursereminders.py
  • 测试 - 使用您希望收到警告的时间(在到期时间之前,以分钟为单位)作为参数来运行它。例如,要在预约前 30 分钟运行提醒:

    python3 /path/to/run_ccursereminders.py 30
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果它如您所愿,请将其添加到启动应用程序:选择 Dash > 启动应用程序 > 添加。添加命令

    /bin/bash -c "sleep 30 && python3 /path/to/run_ccursereminders.py 30"
    
    Run Code Online (Sandbox Code Playgroud)

    其中最后一个30是在约会到期之前警告您的分钟数