给 macOS 上的 Grok Bot 换一套皮肤
Grok Bot App最近在用,感觉挺不错。但窗口却一直是黑/白界面,界面略显单调;而且订阅用量在二级入口,有次意外出现循环任务导致超量。。
基于以上,整了个皮肤工具:Grok Bot Skin 。
菜单栏切换皮肤,皮肤工作室里预览和导出分享,侧栏保持显示本周期订阅已用 / 剩余百分比。
全部在用户本机完成。基于CDP完成CSS覆盖皮肤,不修改官方文件Grok Bot.app,不上传对话、账号或凭据。
效果
水墨夜、青玉林(Appearance 选 Dark): 
木叶暖、复联霓(木叶暖用 Light,复联霓用 Dark):


草帽海(Light):

菜单栏:

皮肤工作室:

也可以自己做包,导出 .grokskin.zip 分享。
安装
本机需要:
- macOS 13+
- Node 22+
- Xcode Command Line Tools(第一次会用
swiftc编菜单栏) /Applications里已装 Grok Bot
脚本不会代装这些。环境齐了之后:
bash
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,只多传一个参数:
text
--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/,同样不对外网开放。
上次用的皮肤、语言、是否显示用量,写在:
text
~/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...