当前位置: 首页 > Linux

“纸糊”语音提醒小助手

时间:2023-04-06 19:15:04 Linux

记得喝水记得动使用cron定时播放语音??,哈哈~btw,我的实验环境是Linuxmint19.生成语音和登录百度账号,在语音播报开放平台生成短语音,重命名保存。例如:xx@xx:~$ll/opt/remindme/total280K-rw-r--r--1rootroot11K17:29xiabandaka.mp3-rw-r--r--1rootroot5.5K17:29shuijiao.mp3-rw-r--r--1rootroot122K17:29penguin.png-rwxr-xr-x1rootroot73817:29notify-send-call-rw-r--r--1根root7.2K17:29jiayou.mp3-rw-r--r--1根root8.3K17:29heshui.mp3-rw-r--r--1根root11K17:29dongyidong.mp3-rwxr-xr-x1rootroot26117:33showtipinstallplayeraptinstallmplayercreatecron#remindmewushui4512***/opt/remindme/showtip“该睡午觉了!”水角>>/home/oliver/bdsay/rmd.log2>&1#remindmejiayou159***/opt/remindme/showtip"你是最棒的,加油!"jiayou>>/home/oliver/bdsay/rmd.log2>&1#remindmeheshui38****/opt/remindme/showtip"该喝水了!"heshui>>/home/oliver/bdsay/rmd.log2>&1#remindmedongyidong45****/opt/remindme/showtip“伸胳膊伸腿,扭脖子扭腰!”dongyidong>>/home/oliver/bdsay/rmd.log2>&1#remindmxiabandaka*/1517-19***/opt/remindme/showtip"马上下班,记得签到!"xiabandaka>>/home/oliver/bdsay/rmd.log2>&1#remindmexiabandakajiaban*/1019-21***/opt/remindme/showtip"记得签到!"xiabandaka>>/home/oliver/bdsay/rmd.log2>&1#remindmeshuijiao*/521-23***/opt/remindme/showtip"你该睡觉了!"shuijiao>>/home/oliver/bdsay/rmd.log2>&1嘿嘿嘿,好激动...脚本实例资源放在/opt/remindme下,showtip:#!/bin/bashhome_remindme=/opt/remindmeecho$home_remindme$home_remindme/notify-send-call$1-i$home_remindme/penguin.png-ucritical/usr/bin/paplay/usr/share/sounds/LinuxMint/stereo/phone-incoming-call.ogg/usr/bin/mplayer-aoalsa$home_remindme/$2.mp3卡死的解释在桌面环境下,打开一个终端,然后使用notify-send是正常的,但是直接在cron下使用notify-send就不行了。你可以简单理解这是因为crontab没有桌面环境。要找到答案,至少得用bing。。。不行就搜英文关键词。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。果然,论坛找到了答案。notify-send通过dbus会话总线进行通信,但cron作业不是任何图形用户会话的一部分;未提供运行要联系的桌面通知程序的任何图形会话的会话总线地址。对于Mint19和Ubuntu18.04,这个iseasilymanvidedthecronjobwiththeDBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id-u)/bus"环境变量,但Mint上实际上不存在该套接字18,据说是Ubuntu16.04。最优方案是通过脚本初始化DBUS_SESSION_BUS_ADDRESS,然后调用notify-send。论坛有人提供了脚本,就是上面引用的notify-send-call,适用于linuxmint18/19。#!/bin/shif[-z"$DBUS_SESSION_BUS_ADDRESS"];那么如果[-z"$LOGNAME"];然后EUID=$(id-u)elseEUID=$(id-u"$LOGNAME")fi[-z$EUID]&&exitif[-S/run/user/$EUID/bus];然后exportDBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$EUID/bus"elseSESSION=$(loginctl-pDisplayshow-user"$LOGNAME"|cut-d=-f2)[-z"$SESSION"]&&退出LEADER=$(loginctl-pLeadershow-session"$SESSION"|cut-d=-f2)[-z$LEADER]&&exitOLDEST=$(pgrep-o-P$LEADER)[-z$OLDEST]&&exitexport$(grep-zDBUS_SESSION_BUS_ADDRESS/proc/$OLDEST/environ)[-z"$DBUS_SESSION_BUS_ADDRESS"]&&exitfifinotify-send"$@"参考文章Linux下防沉迷、防熬夜惊死的代码[Mint18,19]使用来自用户crontab的通知发送

最新推荐
猜你喜欢