Quantcast
Viewing all articles
Browse latest Browse all 14456

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

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

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

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

Image may be NSFW.
Clik here to view.
前后对比

基础使用

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

Image may be NSFW.
Clik here to view.
添加脚本

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

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

配合 iStats 的温度监控

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

Image may be NSFW.
Clik here to view.
效果图

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

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

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

Image may be NSFW.
Clik here to view.

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

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

系统信息

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

  • 五个占用 CPU 最高的程序
Image may be NSFW.
Clik here to view.

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

  • 五个占用内存最高的程序
Image may be NSFW.
Clik here to view.
ps xmo rss=,pmem=,comm= | while read rss pmem comm; ((n++<5)); dosize="$[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
  • 磁盘占用状况
Image may be NSFW.
Clik here to view.
df -Hl | {  read keys;  keys="${keys%% on}";  while read ${keys//%}; do    echo "`basename "$Mounted"` - $Used/$Size ($Capacity)";  done}
  • 网络信息

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

Image may be NSFW.
Clik here to view.
echo -e "Local IP:\c"ipconfig getifaddr en0echo -e "Gateway:\c"netstat -rn | grep default | grep en0 | awk '{print $2}'echo -e "Public IP:\c"curl icanhazip.com

Git 相关

Image may be NSFW.
Clik here to view.
  • 指定 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 脚本之外,我们还可以运行一些其他语言的脚本。只需要在添加脚本时把调用的程序改成对应的可执行文件即可,注意是绝对目录。

Image may be NSFW.
Clik here to view.
  • Python:/usr/bin/python
  • Ruby:/usr/bin/ruby
  • Apple Script:/usr/bin/osascript(Tip:在 Apple Script 中可以使用 log 语句向控制台输出文本)

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

后记

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

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

参考链接


本文题图背景照片作者:@昭和摄影师南田一树


Viewing all articles
Browse latest Browse all 14456

Trending Articles