基于 Wails v2 + Go + Vue 3 的 Windows Scoop 桌面客户端,提供更接近原生应用的图形化包管理体验。
- 原生桌面布局:无边框窗口、自定义标题栏、启动加载遮罩、侧边栏导航、底部状态区 GitHub 入口
- 仪表盘:展示已安装包 / Bucket / 可更新数量,支持一键更新全部、清理旧版本、导出包列表、查看系统信息
- 已安装包管理:支持搜索过滤、按 Bucket 筛选、按包名/版本排序、查看包详情、更新、卸载
- 搜索安装:支持仓库搜索、快速安装输入、热门软件快捷安装、安装输出实时查看
- Bucket 管理:支持查看已添加 Bucket、添加官方 Bucket、添加自定义 Git 仓库、移除 Bucket
- 终端:支持执行 Scoop / PowerShell 命令、快捷命令、分组输出、复制输出、命令历史
- 设置:支持 Scoop 安装检测、Scoop 自更新、诊断检查、代理配置、执行策略检查、缓存清理
- 实时输出流:安装、更新、清理等操作通过事件流实时推送到前端
- 浏览器开发模式:未连接 Wails Runtime 时自动使用 mock 数据,前端页面可独立开发
| 层级 | 技术 |
|---|---|
| 桌面框架 | Wails v2 |
| 后端 | Go 1.21 |
| 前端 | Vue 3 + Composition API |
| 状态管理 | Pinia |
| 路由 | Vue Router 4 |
| 构建 | Vite 5 |
| 样式 | 纯 CSS 变量 |
scoop-desktop/
├── app.go # Go 后端:Scoop / PowerShell 命令执行与解析
├── main.go # Wails 入口与窗口配置
├── wails.json # Wails 配置
├── go.mod
├── docs/
│ └── snapshot/ # README 截图资源
└── frontend/
├── index.html
├── package.json
├── vite.config.js
├── wailsjs/ # Wails 自动生成绑定
└── src/
├── App.vue # 主布局、标题栏、侧边栏、启动遮罩
├── main.js # Vue 入口
├── wails.js # 前后端桥接层 + 浏览器模式 mock
├── assets/
│ └── main.css # 全局样式
├── stores/
│ └── scoop.js # Pinia 状态与业务操作
└── views/
├── Dashboard.vue
├── Packages.vue
├── Search.vue
├── Buckets.vue
├── Terminal.vue
└── Settings.vue
- 启动时聚合读取 Scoop 状态、版本、统计数据、Bucket
- 展示安装总数、可更新数量、Bucket 数量与运行状态
- 支持更新全部、清理旧版本、跳转搜索页、导出安装列表
- 展示系统信息与最近终端输出
- 拉取并展示已安装软件包
- 过滤无效数据,并按
name + bucket去重 - 支持包详情查看、单包更新、批量更新、卸载确认
- 支持
scoop search检索仓库包 - 支持直接输入包名安装
- 提供热门软件快捷安装入口
- 安装过程实时输出到终端区域
- 支持读取已添加 Bucket 与官方 Bucket 列表
- 支持一键添加官方 Bucket
- 支持手动输入名称与 Git URL 添加自定义 Bucket
- 支持移除 Bucket,并保留来自该 Bucket 的已安装软件
- 支持执行自定义命令
- 内置常用 Scoop 快捷命令
- 输出按命令分组显示,便于追踪每次执行结果
- 支持复制全部输出与查看命令历史
- 展示 Scoop 安装状态、版本、目录、上次更新时间
- 支持安装 Scoop、更新 Scoop、诊断检查、清理旧版本
- 支持代理配置、PowerShell 执行策略检查/设置
- 提供缓存清理入口
app.go 暴露了桌面端核心能力,包括:
GetStartupState():启动阶段一次返回是否安装、Scoop 版本、统计信息、Bucket 列表CheckScoopInstalled()/GetScoopVersion()GetInstalledPackages()/SearchPackages()/GetPackageInfo()InstallPackage()/UninstallPackage()/UpdatePackage()/UpdateAllPackages()GetBuckets()/GetKnownBuckets()/AddBucket()/RemoveBucket()GetScoopConfig()/SetScoopProxy()/CleanupScoop()/ScoopStatus()GetSystemInfo()/ExportPackageList()/RunCommand()
常规 Scoop 命令优先直接调用 scoop 进程,PowerShell 主要用于终端页、自定义脚本命令与系统信息采集;执行时使用隐藏窗口参数,避免弹出控制台窗口。
frontend/src/wails.js 提供统一桥接层:
- 在 Wails 环境 下调用
window.go.main.App.* - 在 浏览器 / 前端开发模式 下返回 mock 数据
- 统一封装窗口控制、外部链接打开、基础 API 调用
这让前端页面在没有完整桌面运行时也能独立开发和预览。
- Windows
- Go 1.21+
- Node.js 18+
- Wails CLI v2
go install github.com/wailsapp/wails/v2/cmd/wails@latestcd frontend && npm install && cd ..wails devwails build默认输出位置:
build/bin/scoop.exe
- 深色终端感界面
- 主色为电子青,辅色包含绿色、琥珀色、红色状态提示
- 无第三方 UI 组件库,界面样式全部基于 CSS 变量手写
- 左下角状态区显示 GitHub、应用版本、Scoop 版本与当前时间






