快给macOS 上的Grok Bot换一套皮肤

10 阅读4分钟

给 macOS 上的 Grok Bot 换一套皮肤

Grok Bot App最近在用,感觉挺不错。但窗口却一直是黑/白界面,界面略显单调;而且订阅用量在二级入口,有次意外出现循环任务导致超量。。

基于以上,整了个皮肤工具:Grok Bot Skin 。

菜单栏切换皮肤,皮肤工作室里预览和导出分享,侧栏保持显示本周期订阅已用 / 剩余百分比。

仓库:github.com/Yellow5A5/G…

全部在用户本机完成。基于CDP完成CSS覆盖皮肤,不修改官方文件Grok Bot.app,不上传对话、账号或凭据。

效果

水墨夜、青玉林(Appearance 选 Dark): ink-night.jpg

jade-grove.jpg 木叶暖、复联霓(木叶暖用 Light,复联霓用 Dark):

avenger-neon.jpg

leaf-warm.jpg

草帽海(Light):

straw-sea.jpg

菜单栏:

菜单栏转存失败,建议直接上传图片文件

皮肤工作室:

studio.jpg

也可以自己做包,导出 .grokskin.zip 分享。

安装

本机需要:

  • macOS 13+
  • Node 22+
  • Xcode Command Line Tools(第一次会用 swiftc 编菜单栏)
  • /Applications 里已装 Grok Bot

脚本不会代装这些。环境齐了之后:

curl -fsSL https://raw.githubusercontent.com/Yellow5A5/Grok-Bot-Skin/main/scripts/install.sh | bash

它把工具复制到 ~/Library/Application Support/grok-bot-skin/app,编译菜单栏,打开 Grok Bot,并套上上次用的皮肤。已经有仓库目录时,执行 ./scripts/install.sh 效果相同。

装好后菜单栏会出现调色盘。点皮肤名切换;语言可切 English / 中文。

技术原理

Grok Bot 是带 Developer ID 签名和公证的 Electron 应用,包里还有 ElectronAsarIntegrity。改 /Applications/Grok Bot.app 里的 asar 或资源,会破校验,下一次官方更新也会冲掉。所以这个工具是旁边的配套程序,不碰那个 .app。

换肤分三步。

1. 带着本机调试口启动

菜单栏用官方应用自己的入口打开 Grok Bot,只多传一个参数:

--remote-debugging-port=19222

这是 Chromium / Electron 的 Chrome DevTools Protocol(CDP)。端口绑在 127.0.0.1,不是 0.0.0.0,局域网访问不到。工具通过 http://127.0.0.1:19222/json/list 找到窗口,再经 WebSocket 发 Runtime.evaluate。

从官方 Dock 打开、且开了「跟随」时,如果这次没有带端口,菜单栏会先退出再带端口打开。关掉跟随、或菜单栏没开,就是原装窗口,没有皮肤。

2. 把皮肤编译成 CSS,注入到当前页

一份皮肤是文件夹:skin.json + 壁纸 / 封面。颜色写成 token(前景、窗口底、侧栏、对话面、强调色),编译成覆盖层 CSS。壁纸画在窗口真正的不透明层 .sand-shell 上,聊天区保持透明,图才能透出来。

注入时只插一条 <style>,再用 JSON.stringify 把 CSS 放进 textContent,不拼用户字符串进 JS。当前会话里可以用 Page.addScriptToEvaluateOnNewDocument 让新打开的页也带上同一套样式。进程退出后样式就没了;下次仍由菜单栏带着端口启动再注入。

3. 菜单栏是 Swift,干活的是本机 Node

菜单栏 Extra(LSUIElement)只负责菜单和登录项。点皮肤、开工作室、读状态,都是在本机执行 node bin/cli.mjs。皮肤工作室监听 http://127.0.0.1:4177/,同样不对外网开放。

上次用的皮肤、语言、是否显示用量,写在:

~/Library/Application Support/grok-bot-skin/

导入的包也在这里的 packs/ 下。官方 Grok Bot 的数据目录不会被改。

订阅用量

侧栏那张卡片读的是 Grok Bot 窗口里已经有的接口,例如 window.desktop.main.getCursorUsageSummary、getCursorUsageBreakdown、getCursorWeeklyUsage、getCursorAuthStatus。接口只给订阅百分比时,就显示本周期已用 / 剩余。

这些数字只用来画在本机侧栏,不会发到任何服务器。

隐私

这套工具没有账号系统,没有远程后台,也没有统计上报。

数据会不会离开这台 Mac
对话、侧栏里的会话名、输入框不会。工具不读、不存、不传
Grok / Cursor 登录态、Cookie不会。不读官方数据目录,不转发请求
订阅用量、token只在本机渲染进程里读,画在侧栏
当前皮肤、语言、是否显示用量只写本机 Application Support/grok-bot-skin/
壁纸和封面只以 file:// 出现在本机窗口

调试口只听 127.0.0.1。皮肤工作室只听 127.0.0.1。仓库和安装脚本都不包含 Grok Bot.app,也不要求你把官方应用放进 git。

别人给的 .grokskin.zip 里可以带 CSS。只导入你信任的包。

说明

欢迎试用,也欢迎自己分享一套皮肤或者看看是否还有痛点需要拓展:github.com/Yellow5A5/G…