Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

318 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English | 简体中文

carton

Telegram Group

carton 是一个基于 sing-box 的桌面客户端,交互和信息组织尽量贴近官方 SFM,同时更看重性能、响应速度,以及一些更实用的增强功能。

目前支持 WindowsLinux。暂不提供 macOS 版本,因为 macOS 上已经有 SFM。

项目方向:

  • 尽量贴近官方 SFM 的体验,降低迁移成本
  • 更看重界面响应、启动速度和长期运行时的资源占用
  • 直接使用你自己的配置和规则启动 sing-box,只额外提供少量开关式选项
  • 在不打乱主流程的前提下补上一些实用能力
  • 使用非 Electron / Tauri / Web 技术栈的桌面实现,内存占用更低、性能更好

配置复写说明

carton 启动时不会直接整份覆盖你的 sing-box 配置,而是在原配置基础上生成运行时配置,只修改少量和桌面开关直接相关的内容。 这样设计是因为很多用户都很反感第三方 GUI 大面积覆盖自己已经配好的配置和规则,carton 会尽量少碰你原本手写或订阅生成的内容。

  • log:只会更新 log.level;如果原配置没有 log,才会补一个最小可用的 log 对象
  • inbounds:只会处理 mixedtun 两类入口
  • 对已有 mixed inbound,只更新 listenlisten_portset_system_proxy,其他字段保持原样
  • 对已有 tun inbound,优先保留原配置中的 address,缺失时才补上默认地址;auto_routestrict_route 会更新为 true
  • 如果配置里原本没有对应的 mixed / tun inbound,运行时才会补上;如果关闭 tun,则会移除对应的 tun inbound

carton 不是官方 SFM 客户端,也不隶属于 sing-box 官方团队。

界面预览

Dashboard Groups
Dashboard Groups
Connections Profiles
Connections Profiles

主要特性

贴近官方 SFM 的主流程

  • Dashboard / Groups / Profiles / Connections / Logs / Settings 六个核心页面
  • 启动、停止、查看状态、切换分组等常用操作集中在主流程中
  • 内置 Clash API / WebUI 入口,方便和现有使用习惯衔接

性能优先

  • 基于 Avalonia + .NET 10
  • 非 Electron、Tauri 和其他基于 Web 技术的桌面框架
  • 很多同类方案在实际使用里,启动后内存占用很容易来到 200MB+
  • 提供 NativeAOT 发布脚本,用来进一步改善启动速度和运行开销
  • 页面按需加载,并对后台页面做了释放和刷新控制,减少长期运行时的资源占用

配置与订阅管理

  • 支持本地配置创建、导入、编辑
  • 支持远程订阅导入、手动更新、自动更新间隔
  • 启动前可为不同配置保存独立运行参数
  • 如果你没有 sing-box 订阅地址,可以使用 sublink-worker 进行转换;它提供了 app.sublink.works 在线工具,可将多种订阅或协议链接转换为 sing-box 配置。若是机场用户,请在 User Agent 中输入 clashxray

节点与分组增强

  • 读取并展示 outbound groups
  • 支持节点切换、延迟测试、URLTest 结果刷新
  • 托盘菜单可直接查看和切换分组
  • 可选在切换节点后自动断开受影响的连接

实用附加功能

  • 系统代理切换
  • TUN / 监听端口 / LAN 访问 / 日志级别等运行时选项
  • 实时流量、内存占用、会话时长、连接列表、日志查看
  • 支持 sing-box 内核下载、更新、自定义内核安装与内核切换
  • 应用更新通道、备份导出/导入、便携模式数据目录切换
  • 中英文界面与主题设置

技术栈

  • Avalonia UI
  • .NET 10
  • CommunityToolkit.Mvvm
  • sing-box
  • Velopack

开发与构建

平台

  • Windows
  • Linux

环境要求

  • .NET 10 SDK
  • Windows 本地调试 TUN 提权或发布包需要 Rust toolchaincargo
  • Windows NativeAOT 发布需要安装 Desktop development with C++ 或等效的 MSVC / Windows SDK 构建工具链
  • 如需生成 Windows 安装包,还需要 NSIS,并确保 makensis 可用;GitHub Actions 会自动安装 NSIS

本地构建

dotnet build carton.slnx

开发运行

dotnet run --project src\carton.GUI\carton.GUI.csproj

Windows Debug 构建会在检测到 cargo 时自动构建并复制 carton-helper.exe 到 GUI 输出目录;如果未安装 Rust,应用仍可启动,但本地调试时的 Windows TUN 提权启动不可用。

单元测试

dotnet test src\carton.GUI.Tests\carton.GUI.Tests.csproj
cargo test --manifest-path src\carton.Helper\Cargo.toml

main 的 push / PR 会通过 .github/workflows/ci.yml 自动跑上述构建与测试。

Windows NativeAOT 发布

scripts\test-publish-win-aot.bat win-x64 Release

或使用带安装包封装的脚本:

scripts\build-release-win-x64.bat

其中:

  • scripts\test-publish-win-aot.bat 只执行 NativeAOT 发布
  • scripts\build-release-win-x64.bat 会执行 scripts\build-release-win-x64.ps1,并额外生成便携压缩包和 NSIS 安装包

Linux NativeAOT 发布

./scripts/test-publish-linux-aot.sh linux-x64 Release

输出目录为 artifacts/publish/<rid>

仓库里已经包含多个运行时目标,现成脚本主要围绕 Windows AOT 构建流程整理。

项目定位

如果你更在意:

  • 尽量接近官方 SFM 的体验
  • 更偏性能取向的实现
  • 一些官方客户端之外但又不喧宾夺主的实用功能

那么 carton 基本就是按这个方向来做的。

License

本项目基于 GNU General Public License v3.0(GPL-3.0)开源,详见 LICENSE

About

A Windows and Linux GUI client for sing-box.(主打高性能和易用性,非electron tauri等web套皮)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages