Pocket 口袋浏览器
仿 Claude HUD 的桌面 dock 悬浮球浏览器:屏幕上只有一条小胶囊 dock, 里面横排若干个球,每个球是一个独立浏览器会话。鼠标碰球立即展开,移开立即收起。
- 本地:
D:\Aproject\pocket\ - 仓库:
LongJie686/pocket(master 分支,私有) - 技术栈:Electron,需要 Node.js 18+
bash
cd D:\Aproject\pocket
npm install # 首次较慢,要下载 Electron交互设计
[⋮⋮拖动手柄][球1][球2]…[+新建]整条 dock 可拖动,平时半透明,悬停变亮。碰球展开面板时不抢键盘焦点, 离开 dock + 面板立即收起。每个球显示所在网页的 favicon,悬停提示标题,展开中的球带绿圈。
几个不显然的实现点
- 收起时暂停媒体,展开时续播:收起自动暂停视频/音频并静音, 但后台请求不冻结——扫码登录的轮询要是被冻住,收起面板等于登录失败。
- 登录态所有球共享:登录一次全部可用。这与「每球独立会话」不矛盾, 共享的是 cookie 分区,独立的是导航历史和视图状态。
- UA 伪装成干净 Chrome:不暴露 Electron 特征,否则不少站点会拒绝或降级渲染。
- 按球独立记忆:手机版/电脑版 UA 切换、面板大小,都是每个球单独记。
- 单实例锁:重复启动会亮出已有 dock,而不是再开一个。
- 多显示器支持,高 DPI 下拖动不变形;不在任务栏显示。
重启后自动恢复:dock 位置、每球的网址/尺寸/UA 模式、标题图标。
定位
摸鱼刷抖音、看小说、临时查资料。做成悬浮球而不是常规窗口, 是因为这类使用场景的特点是「频繁切进切出、每次停留很短」, 常规窗口的切换成本(Alt-Tab、找窗口、最小化)比浏览内容本身还高。