Bartender 5 中通过脚本自动显示/隐藏 WireGuard 图标

最近系统升级为 Sonoma 后,对应 Bartender 也从 4 升级到 5,发现通过对比图标样式显示/隐藏图标的功能消失了,应该是现在截图的时候,系统有强制的截图图标提示且无法取消,基于隐私的考虑避免应用悄悄获取敏感权限(截图、视频、语音等),和手机上的表现一致。

Bartender5 Screenshot

平常使用 WireGuard 比较多且经常会进行切换,已经习惯了连接时隐藏,断开时显示,突然没有了还有点不习惯,刚好 Bartender5 提示了 Script 的能力,所以写了个简单的脚本来实现这一功能。

首先进入 Bartender 5 设置 -> 菜单栏元素里面,把 WireGuard 的图标拖到隐藏的菜单栏元素中


接下来进入设置 -> 触发 -> 新建触发器,显示菜单栏元素选择 WireGuard,增加触发器条件选择 Script,在脚本条件里面录入以下脚本

vpn=$(scutil --nc list | grep "com.wireguard.macos" | grep "(Connected)" | head -n 1)

if ! [ -z "$vpn" ]
then
  echo "false"
else
  echo "true"
fi

配置完成后,如下图所示:

确认即完成所有配置,默认脚本执行时间是 1 分钟,所以图标状态变化可能会有一定的滞后。

顺便再推荐一个 RaycastWireGuard 插件