替代iStat Menu的开源免费软件BitBar

安装运行

BitBar 开源在 GitHub - matryer/bitbar,我们可以直接到其 Release 页面 下载安装 macOS 版本的 BitBar。使用 Homebrew 的同学当然可以用下面的命令安装 BitBar:

brew cask install bitbar

安装成功之后,我们首次运行 BitBar 时,BitBar 会要求我们指定一个「插件目录」,这里我们需要记住这一目录的位置,之后会频繁用到。在正式开始安装插件、编写脚本之前,我们先来聊聊 BitBar 在华丽的外观背后,是如何具体运作的。

工作原理

纵观 BitBar 的工作原理,我们可以发现:实际上 BitBar 就是一个为监控系统执行的程序提供一个方便的输出环境。前面提到的 BitBar 的「插件」安装目录(文件夹),其实际上就是所有 BitBar 需要执行的程序的本体所在。在实际工作中,BitBar 正是从这一目录下寻找可执行的程序,定时执行相应的程序,并根据程序输出将结果显示在我们 macOS 的菜单栏之中。

替代iStat Menu的开源免费软件BitBar_第1张图片BitBar 底层工作原理

我们用一个简单的例子来解释这一相对抽象的过程 —— 显示当前系统日期。

日期在 macOS 上可以用简单的命令 date 来获取,打开终端(Terminal.app),输入 date 并回车,即可得到当前的系统时间、星期、日期、时区等等信息。这里,命令 date 就是我们「系统监控」的程序本体,其类似 Mon Feb 3 00:54:14 CST 2020 的输出即为我们 BitBar 接收的脚本输出,最终 BitBar 即会将这一结果显示于 macOS 菜单栏上面,作为查看日期的「小工具」。

替代iStat Menu的开源免费软件BitBar_第2张图片使用命令 date 获取当前系统日期

当然,一个命令远远不够,我们需要将命令放在一个文件中,定义其运行方法,从而告诉 BitBar:每隔一段时间,用「这个方法」执行「这个文件」,就可以得到当前系统日期啦。我们在刚刚给 BitBar 指定的「插件」安装目录下创建一个名称为 date.1s.sh 的文件。这里,识别文件名就是 BitBar 设置程序运行方式的第一步。文件名中:

  • date 即为文件的宽泛名称,程序的标识符
  • 1s 表示每隔 1s 执行一次本程序
  • sh 为文件后缀,这里表示此程序为一个 Shell 脚本程序,可以用 Bash 来运行

各个项目之间用 . 拼接起来,成为一个以 {文件名}.{执行频率}.{扩展名} 为格式的完整文件名。我们打开这一文件,向其中填写如下的内容:

#!/bin/bash
date

之后,如果我们保存文件,并重新加载 BitBar,那么不出意外我们就可以看到 BitBar 的一个菜单栏项目开始生效:日期、星期、时间正确显示并每隔 1s 刷新一次。

替代iStat Menu的开源免费软件BitBar_第3张图片BitBar 每秒执行一次命令获取当前时间

我们看一下刚刚输入文件的内容:文件分为两行,第一行 #!/bin/bash 在程序界被称为 Shebang —— 表示程序执行方式,这里即为用 /bin/bash <文件名称> 的命令执行程序;第二行 date 即为执行程序输出结果的「命令」—— 获取当前日期,就在这里我们会获取到当前系统时间的输出,并将结果传递给 BitBar 显示于菜单栏上。我们的第一个最为简单的 BitBar 小插件就算完成啦。✌️

当然,BitBar 可实现的功能比上面这一例子要多得多,我们不仅可以简单绘制用户界面、提供自定义执行脚本、实现网络请求,还可以直接下载安装其他用户编写完好的 BitBar 插件。BitBar 的插件库非常丰富,我们直接访问其 官方网站,在侧边栏即可选择不同的插件分类,我们找到选好的插件,点击 + Add to BitBar 即可直接安装到我们本机的 BitBar,之后经过一些调整(比如安装插件的依赖、填写必要的 API 参数等),我们刷新 BitBar 即可直接使用相应的插件。

替代iStat Menu的开源免费软件BitBar_第4张图片在 BitBar 官网下载安装插件

用插件全面监控系统,还有更多功能

除了实现类似 iStat Menu 的系统监控功能,BitBar 还有像汇率换算、查看任务等许多实用插件。接下来就介绍几款好用的插件给你。

武汉疫情监控

在今年武汉新型肺炎爆发后,有国内开发者通过新浪接口提供的国家卫健委统计的全国数据,开发了 BitBar 的疫情监控插件。插件默认会显示国内患病人数最多五个省份的数据,数据每十秒刷新一次,你也可以根据需求自行修改刷新时间等参数。

你可以在插件的 GitHub 页面 查看更多细节,并下载插件。

替代iStat Menu的开源免费软件BitBar_第5张图片

检测上传、下载速度

最基本也最简单的系统监控就是对网络速度、带宽的监测。BitBar 插件库中与网络相关的插件有很多,我们可以前往 BitBar Plugins | Network 查看。这里我选择使用 Bandwidth by Ant Cosentino,一个 Shell 脚本实现的网速监控。我们不需要进行特殊的改动,直接安装即可。

替代iStat Menu的开源免费软件BitBar_第6张图片监控上传、下载速度

重新加载脚本之后,我们就可以看到 macOS 菜单栏上显示了我们的上传、下载网速状况,同时,点击菜单项,我们也可以看到本机各个网络端口的具体带宽。

监控 CPU 使用率

监控系统信息怎么可能少了 CPU 使用率的监控,我们可以使用 CPU Usage Graph 来在菜单栏实现一个监视 CPU 使用率,并显示为小图表的工具。这一插件也不需要过多配置,直接安装即可。

替代iStat Menu的开源免费软件BitBar_第7张图片使用 CPU Usage Graph 检测当前系统 CPU 使用率

另外,这一脚本还可以实现监控当前使用 CPU 最多的五个进程,方便我们掌控当前消耗 CPU 最多的软件,好能快速打开 Activity Monitor,及时杀掉资源消耗过高的程序。

监控电池电量、使用循环

我们 macOS 原有的「电池」显示控件只有电量百分比、能耗等的显示,用 BitBar 我们还可以直接将电池的「循环次数」进行显示,并用不同的颜色表示电池的使用状况。

Colorful Battery Indicator:用不同的颜色显示电池信息Colorful Battery Indicator:用不同的颜色显示电池信息

这里我们选择 Colorful Battery Indicator 这一插件,直接安装即可。运行插件之后,我们可以看到 BitBar 控件成功加载,可以直接显示电池的电量与循环次数等信息,比 macOS 原生电量控件的功能多出不少。

替代iStat Menu的开源免费软件BitBar_第8张图片不仅能显示电池电量,还可以估算剩余时间、显示循环次数

监测天气信息

最后,我们来实现相对复杂的天气监控。BitBar 插件库的天气分类非常丰富,不仅拥有普通天气、温度的插件,还能直接检测 AQI 等空气指标。我选择使用 Weather by Daniel Seripap,点击安装即可。这一脚本用 Python 编写,请求的是国外知名天气信息 Dark Sky 的 API。另外,脚本也使用了 OpenCage 的全球经纬度 API,辅助我们将地理位置与经度纬度进行转换。为了让脚本更方便运行,我们需要:

  • 去 Dark Sky 申请一个私有 API Key:前往 Dark Sky API,点击 Try for free 注册账号,并按照说明申请 API Key,之后我们复制 Dark Sky 为我们生成的 Secret Key 留作备用。为了方便称呼,我们用 {DARK_SKY_API_KEY} 代指这一 API Key

替代iStat Menu的开源免费软件BitBar_第9张图片在 Dark Sky 申请 API Key

  • 去 OpenCage 申请一个私有 API Key:前往 OpenCage API,按照步骤注册账户并进入 Dashboard,没有问题的话下方 API Key 处即为我们需要的密钥。我们同样复制这一 API Key 留作备用。为了方便称呼,我们用 {GEO_API_KEY} 代指这一 API Key

替代iStat Menu的开源免费软件BitBar_第10张图片在 OpenCage 申请一个私有 API Key

接下来,我们进入 BitBar 插件目录,打开 weather.15m.py,按照下面的步骤依次将相应的内容进行修改,让脚本使用我们自己的 API Key 进行数据请求:

替代iStat Menu的开源免费软件BitBar_第11张图片修改脚本的 API Key,替换使用我们自己的秘钥进行请求

  • 将 api_key 一行后面单引号里面的内容替换为我们 Dark Sky 的 API Key:{DARK_SKY_API_KEY}
  • 将 geo_api_key 一行后面单引号里的内容替换为我们 OpenCage 的 API Key:{GEO_API_KEY}
  • 将下方 units 后面单引号里添加 si:表示我们使用「公制单位」(也就是摄氏度)

这样设置下来我们就应该可以直接运行脚本了。另外,如果使用之后发现脚本定位速度慢,或者因为是根据 IP 进行地理位置确定导致位置不准确,我们也可以直接手动定义目标城市与其经纬度。脚本文件中定义地理位置的内容位于:

  • manual_city:城市名称
  • manual_latlng:城市所在经纬度

我们可以访问 OpenCage Demo 网站,在下方点击定位获取当前所在位置的经纬度与城市名称,按照上方注释给出的格式依次填写即可。之后,我们重新加载 BitBar,不出意外的话我们就可以正确查看当地天气情况了。

替代iStat Menu的开源免费软件BitBar_第12张图片

Currency Rates:货币汇率

Currency Rates 采用 Python 编写,它可以实时查询货币汇率,然后通过 BitBar 显示在菜单栏中。

替代iStat Menu的开源免费软件BitBar_第13张图片

不过需要注意的是,Currency Rates 的汇率规则是 1 美元兑各币种的汇率,而且默认在菜单栏显示的汇率是 1 美元 USD 兑印度卢比 INR。当然修改成人民币也很简单。我们只要使用「文本编辑」打开插件代码,把 if nValue1 == "INR" 修改为 if nValue1 == "CNY" 即可。

如果你觉得 Currency Rates 显示了太多无关紧要的其他币种,可以试试 Currency Tracker,它只显示一种货币的兑换汇率。

Death Timer:距死亡还剩多少天

很多应用都可以帮你预计死亡还剩多少天,Death Timer 把它带到了 Mac 菜单栏上,不过要使用它,还是得先修改下它的代码。

用「文本编辑」打开插件代码,修改 death = datetime(2081, 5,31, 12, 0, 0)和 birth = datetime(1994, 5,31, 12, 0, 0) 中修改你的预测死亡时间和出生时间,之后刷新即可 。如果你不知道预计的死亡时间,开发者建议你去 这个网站 看看。

替代iStat Menu的开源免费软件BitBar_第14张图片

另一个插件 Life Percentage 和 Death Timer,它显示的是人生百分比。Your time on earth 显示的是你出生多少天了,也比较类似。

Moon Phase:显示月相

显示月相 对于一般人来说可能没有什么用,但是它的月相是用 Emoji 显示的,可以给死板的菜单栏增添一些乐趣。

替代iStat Menu的开源免费软件BitBar_第15张图片

另一个 Show emoji 插件更粗暴,它会直接在菜单栏随机显示三个 Emoji。

Smile:适用于 Slack 的 Emoji 代码

Smile 不是在菜单栏显示微笑表情,它的作用有点特殊。我们知道在 Slack 或者 Github 上输入 Emoji 只能点选。Smile 的作用是把 Emoji 图标自动转换为代码,并且拷贝到剪贴板,在 Slack 或 GitHub 里粘贴就行了。

替代iStat Menu的开源免费软件BitBar_第16张图片

Things 3 Today:在菜单栏显示 Things 任务

如果你在用 Things,Things 3 Today 可以在菜单栏显示你今天的任务。它还能直接创建任务、清空废纸篓等等。不过这个插件对中文系统不太支持,你可以把下面代码中的Today 改为 今天

with n from 1 to count of to dos of list "Today"
	set toDo to item n of to dos of list "Today"

替代iStat Menu的开源免费软件BitBar_第17张图片

和 Things 有关的插件还有 Things Doing Now和 Things - View Inbox。

iTunes Now Playing:正在播放

iTunes Now Playing 可以抓取 iTunes 目前正在播放的音乐,在菜单栏显示歌曲名和艺人,点击还能进行切歌和暂停操作,还能显示专辑封面,视觉上比较不错。不过这个插件对中文系统不友好,中文系统用户需要把代码中的 iTunes 改为 音乐 才行。

替代iStat Menu的开源免费软件BitBar_第18张图片

BitBar 中还有 Spotify Now Playing 用来显示 Spotify 的正在播放歌曲。还有其他的操控 iTunes 和 Spotify 播放控制的插件,不再列举。

Battery Dot:显示 Mac、键盘和触控板的电量

Battery Dot 可以在菜单栏显示 MacBook、Apple 的键盘和触控板的电量。显示 Mac 的电量不足为奇,但是能显示键盘和触控板就很方便了。工作的时候键盘和触控板没电那种抓狂的感觉令人印象深刻,有 Battery Dot 应该会好很多。

替代iStat Menu的开源免费软件BitBar_第19张图片

Date Picker:提供多种格式的日期样式

办公写文件时,经常需要在落款处留日期,每次手动输入会比较麻烦。Date Picker 在菜单栏显示了多种样式的日期格式,点击就能拷贝到剪贴板,在写作时就能复制了,非常方便。不过它的默认格式是 2020-02-03,没有包含中文「年月日」的样式。 

替代iStat Menu的开源免费软件BitBar_第20张图片

总结

BitBar 的设计理念实际上非常易懂,这一简单的工作原理为我们提供了一种开源免费的解决方案,让我们能够更有效地利用 macOS 菜单栏来做一些有用、有趣的事情。BitBar 支持运行的程序非常丰富,Bash、Python、Lua、Ruby、JavaScript 等等都有支持。理论上,只要你在 Mac 上面能够运行的脚本,BitBar 就能将其输出显示于 macOS 菜单栏上面。

BitBar 脚本库的生态同样丰富,不仅提供了上面介绍的各项参数的监控功能,还有比如控制音乐播放、查看货币价格涨幅、订阅 Nasa 每日一图 等等各种有趣的小工具。当然,BitBar 使用时还是出现一些问题,比如我发现各个插件之间的相对位置事实上不太好维持,每次重新加载都会凌乱,只能手动给脚本名称前面添加编号来解决。不过,BitBar 的功能还是相当丰富,可以实现以 iStat Menu 为代表的「系统监控」软件所提供的大部分功能,希望丰富自己 macOS 菜单栏功能的同学一定不要错过。

你可以在 这里 下载 BitBar。

你可能感兴趣的:(替代iStat Menu的开源免费软件BitBar)