Today Scripts:打造个性化 Yosemite 通知栏插件

iOS 8 的新一代通知中心自从引入了了 Today Widget 后给了开发者不少扩展产品服务能力的机会,鼎盛时期你可以看到 「Launcher」这样的代表人物出现,其实 Yosemite 也有 Today Widget,那么为什么后者并没有激发开发者太大兴趣呢?Frank 猜测这与 Mac 用户长久以来的使用习惯有很大关系,平时获取系统、软件信息,或是快捷操作都有 Dock,Menubar,哪轮得到你去用双指滑动这么“麻烦”的操作?看来苹果想用 Today Widget 取代 Dashboard 开辟新场子的计划就快落空了。

但 OS X 的 Today Widget 也并不是一无是处,像 iStat Mini 或 Monity 这样的系统信息监控软件就偏好于这里,不过大多数此类软件都收费,如果你想问有没有_免费的解决方案?__ _那我就得恭喜您了,最近,美帝一名程序员就在 Github 公布了一个名为「Today Scripts」的开源软件,可在 Today Widget 中直接执行自定义脚本,显示任何你想设置的系统/第三方程序信息,如果你对 Code 玩的好,什么 MAS 上坑爹的收费软件都是浮云,因为你能比他们玩的更好更全面。从官方提供的脚本来看,可以显示日历,市区,剪切板文本,电池状态,内存分配状态等等。

Today Scripts 的操作方式

首先,我们需要到软件主页下载最新的程序压缩包,解压缩打开,再到调取出通知中心,在「今天」的界面底部点击「编辑」按钮进入 Widget 编辑模式:

在编辑模式下,你会在最右侧的 Widget 项目列表里找到「Scipts」这个选项,点击右侧的绿色加号,将其添加到「今天」列表里,再点击「完成」即可。

添加好「Today Scripts」后,按照下图示,开始加入脚本即可,脚本添加界面中的 「Label」代表脚本名称,「Program」默认,勾选「Run Automatically」和「Show status indicator」可让脚本每次展示的时候自动显示信息,并提供红绿两种颜色的指示灯(分别指示脚本运行是否成功)

Today Scripts 脚本推荐

开发者已总结了一些常用的脚本,就像本文开头的首图一样,你可以看到这些:

显示本月日历

如果你对 Mac 命令行了解够足的话肯定会知道「cal」这个命令,她可以显示当前月份,下面的脚本就用到了「cal」

cal | grep --before-context 6 --after-context 6 --color -e " $(date +%e)" -e "^$(date +%e)"

将脚本填入「Program」下方的文本区,填写好「Label」保存即可,正常的话你会看到 Today View 上显示一个当月的日历,当天日期会被红色高亮。

查看不同时区的时间

Yosemite 虽然提供了世界城市时钟的 Widget,但模拟化表盘的设计看时间不直观,搞个数字会方便许多,脚本如下:

echo "Denver `export TZ='US/Mountain';date +'%-l:%M %p';unset TZ`"
echo "London `export TZ='Europe/London';date +'%-l:%M %p';unset TZ`"
echo "Paris `export TZ='Europe/Paris';date +'%-l:%M %p';unset TZ`"
echo "Mumbai `export TZ='Asia/Kolkata';date +'%-l:%M %p';unset TZ`"
echo "Sydney `export TZ='Australia/Sydney';date +'%-l:%M %p';unset TZ`"

以上的代码格式中如果你想设定目标程序,只需到这里,搞清城市的位置信息,比如「上海」,就是 Asia/Shanghai,把她放入 「export TZ=」后面即可。

显示当前剪切板的文本内容

这个脚本能显示最新的一条剪切板文本内容,命令很简单:

pbpaste

利用 iStats 显示系统信息

本条脚本其实就是直接调用了另外一款开源命令行软件「iStats」显示 Mac 系统信息(CPU温度,风扇转速,电量状态信息等),注意,这款 iStats 与 iStat Menus ,iStat Mini 木有半毛钱关系,纯属赚噱头。

本条脚本命令也很简单:

istats

显示电量状态信息

这条脚本非常实用,基本上你不用再需要其他软件的辅助了,不查充电器状态可显示剩余电量,剩余使用时间,插电下显示已充电量,还需多少时间充满等信息,脚本:

pmset -g batt | { read; read n status; echo "$status"; }

显示占用内存最多的5个程序

这条脚本可以显示占用 RAM 最多的5条应用程序,有了她,还用打开监控器?

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

显示占用 CPU 资源最多的5个程序

像上条一样,这里可以显示占用 CPU 资源最多的5个程序:

ps xro %cpu=,comm= | while read cpu comm; ((i++<5)); do echo $cpu% $(basename "$comm"); done

显示硬盘用量

添加这个脚本可以显示各个硬盘分区容量的占用情况:

df -Hl | {

read keys;

keys=“${keys%% on}“;

while read ${keys//%}; do

echo “basename “$Mounted“ – $Used/$Size ($Capacity)“;

done

}

显示一个网站最新的5篇文章标题

这条脚本可根据设定的 RSS 地址提取最新的5篇网站文章标题,点击脚本标题还可以刷新:(将下列代码里的「RSS_URL_HERE」替换成目标网站的 RSS 地址)

curl “RSS_URL_HERE“ 2>/dev/null |

grep -o “[^<]*“ |

grep -v “FIRST_TITLE_REMOVER“ |

sed -e “s/.\<title>(.)\<\/title>.*/\1/g“ |

nl -n rz -s “ » “ -w 2 |

fold -s -w 80 |

awk ‘!/^[0-9]+\ » / {$0=” “$0}1‘ |

awk ‘/^[0-9]+\ » / {$0=”\n”$0}1‘ |

head -10

结语

看了上面一些脚本案例,就连我自己都对 Today Scripts 这款软件赞不绝口了,不禁让我想起了 Flashlight,可扩展性极强,如果你对脚本程序玩的好,那么 Today Scripts 绝对值得你去尝试,想了解更多的 Today 脚本,你可以看这里