Skip to content

yimingwu425/Shadowrocket-Switch

Repository files navigation

Shadowrocket Switch

一个 macOS 菜单栏工具,用快捷键和状态栏菜单快速切换 Shadowrocket VPN,并显示本次 App 启动后的实时网速与累计流量。

适合经常在 macOS 上切换 Shadowrocket VPN、希望少打开系统设置或 Shadowrocket 主界面的用户。最短使用方式:构建后打开 .build/ShadowrocketSwitch.app,菜单栏会出现网络状态图标和实时上下行速度。

功能

  • 菜单栏快速查看 Shadowrocket VPN 状态
  • 一键切换 VPN 连接状态
  • 全局快捷键 Command + Option + S
  • 实时显示下载 / 上传速度
  • 统计本次 App 启动后的累计下载 / 上传流量
  • 打包为无 Dock 图标的 macOS 菜单栏 App

环境要求

  • macOS 13 或更高版本
  • Xcode / Command Line Tools
  • Swift 5.9 或更高版本
  • 已安装并配置 Shadowrocket VPN 服务

构建

./scripts/build.sh

构建完成后,App 会生成在:

.build/ShadowrocketSwitch.app

安装到 Applications

ditto .build/ShadowrocketSwitch.app /Applications/ShadowrocketSwitch.app
open /Applications/ShadowrocketSwitch.app

如果已有旧进程在运行,可以先退出菜单栏 App,或执行:

pkill -x ShadowrocketSwitch

使用

启动后,菜单栏会显示网络状态图标和实时网速,例如:

↓120 KB/s ↑8 KB/s

点击菜单栏图标可以查看:

  • 当前 VPN 状态
  • 实时网速
  • 本次 App 启动后的累计流量
  • 切换 VPN
  • 刷新状态
  • 退出 App

快捷键:

Command + Option + S

统计口径

流量统计基于 macOS 网络接口计数器:

  • 排除 loopback 接口
  • 统计 App 启动后每次采样之间的增量
  • 累计值只代表本次 App 运行期间的数据
  • 当前实现统计系统活跃网络接口总流量,不保证只统计 Shadowrocket VPN 隧道流量

项目结构

Sources/ShadowrocketSwitch/
├── main.swift                    # App 启动入口
├── AppDelegate.swift             # 菜单栏、菜单、状态刷新
├── VPNController.swift           # 通过 scutil 控制 VPN
├── HotKeyController.swift        # 全局快捷键
└── NetworkStatsController.swift  # 实时网速与累计流量统计

Resources/
└── Info.plist                    # macOS App bundle 配置

scripts/
├── build.sh                      # 构建并打包 .app
└── generate_app_icon.swift       # 生成 App 图标资源

开发

调试构建:

swift build

Release 打包:

./scripts/build.sh

License

MIT

About

Shadowrocket Switch 是一个轻量级的 macOS 菜单栏应用,为 Shadowrocket VPN 用户提供快速切换和网络监控功能。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors