Create Desktop Notifications From Stata or ... any Apps !!!

Create Desktop Notifications From Stata or ... any Apps !!!

上一篇文章介绍了从 R 创建桌面通知的方法。这一篇文章中,我将介绍如何从 Stata 或者其它的任何 Apps 中创建桌面通知!

首先我们需要了解 notifier 的工作原理,就 Mac OS 来说,它就是封装了 terminal-notifier 命令。所以我们先探索一下这个命令的使用方法。

安装 terminal-notifier

1
$ brew install terminal-notifier

查看帮助文件

1
$ terminal-notifier -help

sender ID 参数

这个参数是 APP 的 Bundle ID,如何查看呢?

例如我们打开 RStudio.app,找到 Info.plist 文件:

你可以在里面找到这两行:

1
2
<key>CFBundleIdentifier</key>
<string>org.rstudio.RStudio</string>

这个 org.rstudio.RStudio 就是 RStudio 的 Bundle ID 了。再例如我的 Stata15 SE 的:

1
2
<key>CFBundleIdentifier</key>
<string>com.stata.stata15</string>

sound 参数

这个是产生通知提示音乐的,我们可以在系统偏好设置 👉 声音 👉 声音效果 里面找到:

这些就是可以使用的参数了。通常使用 default 即可(我觉得 default 的提示音是最清楚的)。

例如:

1
$ terminal-notifier -message "Stata通知" -title "来自Stata的通知" -sound default -sender "com.stata.stata15"

1
$ terminal-notifier -message "Reeder通知" -title "来自Reeder的通知" -sound default -sender "com.reederapp.rkit2.mac"

创建桌面通知的 Stata 命令

首先我们看一下 terminal-notifier 命令被装在哪了?

1
2
$ which terminal-notifier
/usr/local/bin/terminal-notifier

然后就可以写一个 Stata 命令了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
*! notifier: Create Desktop Notifications from Stata
*! 程振兴
*! 2019-03-21
*! 示例:
*! notifier Hello World!
*! notifier Hello World!, sender(org.rstudio.RStudio)
*! notifier Hello World!, sender(org.rstudio.RStudio) sound(Ping)
capture program drop notifier
program define notifier
version 15.0
syntax [anything(name = notifier)], [TItle(string) SOUND(string) SENDER(string)]
if "`c(os)'" != "MacOSX" {
di as error "Your system isn't MacOSX!"
exit 702
}
if "`sound'" == "" local sound = "default"
if !(inlist("`sound'", "default", "Basso", "Blow", "Bottle", "Frog") | inlist("`sound'", "Funk", "Glass", "Hero", "Morse", "Ping") | inlist("`sound'", "Pop", "Purr", "Sosumi", "Submarine", "Tink")){
di "You choose a wrong sound option, the default is used!"
di "You can set sound option as default/Basso/Blow/Bottle/Frog/Funk/Glass/Hero/Morse/Ping/Pop/Purr/Sosumi/Submarine/Tink."
local sound = "default"
}
if "`title'" == "" local title = "Stata Notification"
if "`notifier'" == "" local notifier = "Your program has just run successfully."
if "`sender'" == "" local sender = "com.stata.stata15"
!/usr/local/bin/terminal-notifier terminal-notifier -message "`notifier'" -title "`title'" -sound "`sound'" -sender "`sender'"
end // end of program notifier

在 Stata 程序中使用

1
2
3
4
5
6
forval i = 1/100{
sleep 100
if `i' == 100{
notifier
}
}

# R

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×