十分钟让你的mac拥有简洁实用的状态栏
视频详细介绍了 macOS 状态栏定制工具 SketchyBar 的安装与配置,讲解了如何通过 Shell 脚本自定义图标、插件及布局。
UP主: Fireond · 时长: 12:16 · 🔗 B站原视频
标签: macOS · SketchyBar · 效率工具 · 桌面美化 · Shell脚本
SketchyBar 简介与高度可定制性
大家好,今天这期视频我来分享一个 macOS 上的状态栏工具,它的名字叫 SketchyBar。它的样子就是现在我屏幕上面的这一条,我们可以和苹果自带的状态栏对比一下。我觉得它最大的好处就在于可定制性非常高,你想让它的颜色、图案、透明度,包括它上面显示的所有的东西,都是可以自己想怎么样就怎么样的。
安装与配置参考
至于它的安装,大家可以直接看官网主页的教程。配置的话,虽然官方给出了对应的 Documentation,但第一次看可能会觉得有点复杂。在 GitHub 这边,官方也给出了一个 Getting Started,提供了一个非常简单的类似模板的东西,你可以照着学习。并且在 Setup 这里也展示了别人的配置,你也可以把自己的 Setup 上传到这边。我现在的配置基本上就是参考了里面的其中两个,并且融合了我自己的一些想法改成这样子,我也把它传到了我的 Dotfiles 仓库里。这期视频我就来大概讲一讲它的配置过程,配置里面到底有哪些东西。
配置文件结构与 Shell 语法
首先它的主配置文件在这里,就是 .config 文件夹下的 sketchybar 文件夹里的 sketchybarrc 文件。现在这边就是我的配置文件夹,我们可以进来看一下主配置文件 sketchybarrc。它的配置语言使用的是 Shell,虽然可能大部分人不是很熟悉它的语法,但既然有 ChatGPT,语法不清楚问一下 ChatGPT 就行。我们先来看一下它的文件结构,主要的配置入口是 sketchybarrc,然后它主要分为两个文件夹,一个叫 items,一个叫 plugins。其中 items 里比如 apple.sh 这个文件,就对应着左上角苹果符号的这些东西。也就是说状态栏上的每一样物品,都会对应这里的每一个 item。比如这里的 battery,就对应右上角的电池符号,以此类推。
Items 与 Plugins 的工作原理(以电池为例)
那 plugins 是什么呢?我们以 battery 为例,在 battery 这个 item 里面,首先可以使用一行命令添加一个 item,名字叫 battery,位置在右边。SketchyBar 总共分为左边、中间和右边,比如我把它添加在右边,然后用 --set 命令对 battery 进行配置。我们可以配置它的图标,以及 padding left/right,也就是左右要留多少空白。比较重要的一个是这里的 script。script 是什么呢?比如这边有个 update frequency,每隔 120 秒它就会运行一次这里的 script。这个 script 其实就是 plugins 文件夹里的 battery.sh。这里的 script 等于脚本的路径,plugin directory 对应 plugins 文件夹。也就是说电池这个 item,会每隔 120 秒运行一次 battery.sh。
它运行什么呢?首先可以用一些命令得到当前的电量,下面主要用 case 语句,比如电量在 90 到 100 区间,icon 就是 100 的图标;60 到 80 是另一个图标,30 到 50 以此类推。最后一行我再设置,每隔 120 秒检测到电量后,就把图标设置成对应的图案。这里的 label 是什么意思呢?实际上每一个 item 都会分为一个图标和一个 label。图标就是电池图案,100% 对应的就是 label。我就直接设置 label 等于 percentage(电量)加上一个百分号。总的来说,如果你想在状态栏加入一个相应的图标,首先需要在 items 里面添加一个脚本,具体语法可以参照官方文档。因为是状态栏,上面显示的东西肯定会变,怎么让它变起来呢?就是使用 script,然后设置 update frequency,比如我这里设置成每两分钟更新一次电量图标。
进阶配置:显示微信未读消息与网速
我们也可以看一下,我这边甚至还可以显示微信的未读消息数。这里的 WeChat,我设置成每十秒检测一下,icon 设置成 WeChat。实际上我这边有一个专门的 Shell 文件,把所有的 icon 都放到了这里,这样比较方便。比如我把 icon 设置成 WeChat,在这个文件里添加上去,还可以设置字体。它相当于每十秒 run 一次这个 script。我们来看一下 WeChat 对应的 script 是什么。在这里我使用 lsappinfo,这是 macOS 里专门显示当前正在运行程序信息的命令。然后我利用 grep 和 sed 这些命令,提取 status label。运行微信时,如果有未读消息数,图标右边就会显示一个数字。我们可以用命令把数字提取出来,提取完之后就是 label。我只需要在最后设置的时候,把微信后面的 label 设置成通过这行命令获取到的数字就可以了。同样的,也可以自己设置 WiFi 的下载和上传速度,包括音量、电量、时间等。
桌面空间管理与 Yabai 配合
我觉得 SketchyBar 还有一个非常好用的功能,大家可以看到左边的 12345 对应的是桌面。它实际上就是 items 里面的 spaces。这一块我是完全参照 SketchyBar 的一个 Setup,在这里选择 Top,其中的第三个。它实现了展示你哪一个桌面运行了哪些程序。这样配合 Yabai(macOS 里的桌面窗口管理工具),我用键盘切换桌面到一、二、三、四的时候,可以很方便地看左上角,就知道第一个桌面运行的是浏览器,第二个桌面运行的是终端等等。如果在原来的状态栏,就比较不好判断。
交互功能:点击脚本与动态弹窗
同样,这个状态栏不只是静态的,也可以有一些动画。比如左上角这个苹果图标,它有一个东西叫 click script。刚才的 script 是每隔固定时间自动运行,而 click script 是点击它的时候运行。比如我现在点一下,它就会弹出一个小窗。这是怎么实现的呢?就是通过 popup click script 实现弹出一个菜单,比如点一下 Preference 就能打开系统设置。同样的,比如微信,我也设置了 click script,很简单,点一下微信,它就会运行一行命令打开微信。包括音量键,这个动画比较复杂,也是在配置里。点一下可以打开一个滑块,滑动来调整音量;右键这些图标还可以显示一个列表,显示现在的音频输出设备。当然还有一些其他功能。
总结与配置分享
总之,SketchyBar 基本上可以实现你想实现的所有功能。只要你能获取到信息,就可以通过 label 显示在上面,包括点击功能,或者新增、删除桌面等,都可以自由发挥实现。我自己的配置已经上传到了我的 Dotfiles 仓库。我还可以展示一下我参考的另一个配置,在 Newest 这里,这位作者实现了微信消息数、网易云音乐以及音乐动态展示等功能,我就是参考他的配置来实现的。这就是本期视频的全部内容,谢谢大家。