让你的 Mac 通知中心变得更实用:Today Scripts

2017-08-02 10:37:54来源:https://sspai.com/post/40169作者:少数派人点击

分享

TodayScripts是一个能够在通知中心运行bash脚本并输出结果的小工具。你可以利用它查看系统信息、性能数据、资源占用,阅读 RSS,管理服务器。只要是能用终端命令输出结果的东西,你都可以用它来实现。而且还是免费的。


想必很多人都用过 iStat menus,因为需要在菜单栏上显示,会占用本来就很挤的菜单栏空间,如果不需要实时监控的话,就可以选择用本工具在通知中心里面做同样的工作。而且,通知中心小工具只有在显示出来的时候才会占用系统资源。


有些同学可能知道,这款软件最初运行在OSX10.10上,少数派曾在2014年末发布过推荐文。由于未知原因,原作者 SamRothCA 没有提供对新系统的适配,导致在OSX10.11更新之后软件报废,后由 lsd 发布了针对10.11的适配版本。进入macOS时代之后,苹果修改了通知中心的设计风格,导致没有适配的Widget显示不协调。于是我自己修改代码对新系统做了适配,现在你已经可以在macOS10.12上正常使用本软件了。





前后对比


基础使用

想要在 Today Scripts 中添加脚本,只要点击右上角的「i」,然后点添加脚本。





添加脚本


上面你可以输入脚本的标题和调用的程序(默认会选择系统当前使用的 shell)。没什么特殊需求的话,在中间的框中输入 bash 脚本之后点击「添加脚本」即可。 注意需要按 Tab 键在文本框之间移动光标。(Shift + Tab 可以反方向移动)


Run automatically:如果取消勾选则不会自动运行脚本。你需要在脚本标题上点击鼠标才会输出结果。可以利用这个选项做一些点击执行的快捷工具。
Show status indicator:一般添加的脚本会在标题左侧显示一个表示运行状态的小灯,取消勾选则不会显示。
配合iStats 的温度监控

想必你已经用过一些温度监控工具了,这里介绍一种结合命令行工具iStats的实现。





首先安装 iStats 。使用 geminstalliStats 直接安装。安装后在终端运行 istats 就可以显示结果。


之后你只需要在 Today Scripts 里面添加一个内容为 /usr/local/bin/istats 的脚本就行了。默认会显示 CPU 温度、风扇状态和电池状态。接下来我会介绍一下自定义显示数据的方法。


在终端输入 istatsscan 检索已有的温度传感器,程序会列出一堆知道干嘛和不知道干嘛的温度信息。





你可以从中选择你需要的加入,用 istats enable xxx 即可。比如我想加入最后一个 AirPort 的温度,就要输入 istatsenable TW0P 。之后你就可以在 ExtraStats 分类下看到刚刚加入的传感器了。


如果你只想在通知中心看到一部分数据,可以在 Today Scripts 中使用例如 /usr/local/bin/istats cpu 、 /usr/local/bin/istats battery 等来限定内容,注意前面必须使用 iStats 的绝对路径,更多命令可以在终端中输入 istats help 来查看。


系统信息

在 Today Scripts 的 wiki 中,作者给出了一些比较好用的小脚本。复制粘贴就好了。


五个占用 CPU 最高的程序



psxro%cpu=,comm=|whilereadcpucomm;((i++<5));doecho$cpu%$(basename"$comm");done


五个占用内存最高的程序



ps xmo rss=,pmem=,comm= | while read rss pmem comm; ((n++<5)); do
size="$[rss/1024]";
short=$[4-${#size}];
size="(${size}M)";
i=0;
while ((i++ < short)); do size=" $size"; done;
pmem="${pmem%%.*}"
if (($pmem >= 20)); then color=$'/e[31m';
elif (($pmem >= 10)); then color=$'/e[33m';
else color=$'/e[32m ';
fi;
echo "$color$pmem% $size $(basename "$comm")"$'/e[0m'"";
done
磁盘占用状况



df -Hl | {
read keys;
keys="${keys%% on}";
while read ${keys//%}; do
echo "`basename "$Mounted"` - $Used/$Size ($Capacity)";
done
}
网络信息

这个脚本我做了一点修改,改进了排版并加入了公网 IP。





echo -e "Local IP:/c"
ipconfig getifaddr en0
echo -e "Gateway:/c"
netstat -rn | grep default | grep en0 | awk '{print $2}'
echo -e "Public IP:/c"
curl icanhazip.com
Git 相关



指定 Repo 的状态
cd ~/path/to/repo && git status --short
带分支信息的指定 Repo 状态
cd ~/path/to/repo && git status --short --branch
指定 Repo 的最后一次提交
cd ~/path/to/repo && git log --abbrev-commit --date=relative -1
Finder 中现在打开的 Repo 信息(感觉这个最实用)
cd "$(osascript -e 'tell application "Finder" to get the POSIX path of (target of front window as alias)')" && git status --short --branch
运行非 Bash 脚本

除了运行默认的 bash 脚本之外,我们还可以运行一些其他语言的脚本。只需要在添加脚本时把调用的程序改成对应的可执行文件即可,注意是绝对目录。





Python:/usr/bin/python
Ruby:/usr/bin/ruby
Apple Script:/usr/bin/osascript(Tip:在 Apple Script 中可以使用 log 语句向控制台输出文本)

是不是可以做的事情更多了?


后记

除了上面介绍的用法,Today Scripts 能干的事情还有很多,各位可以自由发挥想象。通知中心自从进入 Mac 之后使用率就并不高,开发者也较少跟进,这使其进入了一种类似 Dashboard 的尴尬局面。希望这个 App 能拯救你的通知中心。


下载链接: 直接下载 项目页面


参考链接

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台