lyu0805/pixshell

GitHub: lyu0805/pixshell

PixShell 是一款不依赖 Electron 的原生跨平台 SSH/SFTP 桌面客户端,为运维人员提供终端会话、连接管理和文件传输等一体化远程操作能力。

Stars: 114 | Forks: 9

PixShell [![版本](https://img.shields.io/badge/version-0.1.2-blue)](https://github.com/lyu0805/pixshell) [![平台](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey)](https://github.com/lyu0805/pixshell) [![macOS](https://img.shields.io/badge/macOS-Swift%20%2B%20SwiftTerm%20%2B%20SwiftNIO-000000.svg)](./mac) [![Windows](https://img.shields.io/badge/Windows-WPF%20%2B%20WebView2%20%2B%20SSH.NET-0078D6.svg)](./win) [![许可证](https://img.shields.io/badge/license-UNLICENSED-lightgrey)](./LICENSE) PixShell icon **🌐 多语言支持** 🇺🇸 **English** · 🇨🇳 [**中文**](./README_CN.md) **🖥️ 原生跨平台 SSH / SFTP 桌面客户端 · ⚡ 终端 · 🗂️ 连接管理 · 📦 文件传输** **原生跨平台 SSH / SFTP 桌面客户端 · ⚡ 终端 · 🗂️ 连接管理 · 📦 文件传输**
## ✨ 概览 PixShell 是面向运维场景的 **SSH / SFTP** 桌面客户端。自 **v0.1.1** 起以 **双端原生应用** 形态发布(同一 monorepo),不再依赖 Electron。 PixShell 是面向运维场景的 **SSH / SFTP** 桌面客户端。自 **v0.1.1** 起以 **双端原生应用** 形态发布(同一 monorepo),不再依赖 Electron。 | 平台 | UI | 终端 | SSH stack | | --- | --- | --- | --- | | 🍎 **macOS** | Swift / AppKit | **SwiftTerm**(原生渲染,非 xterm.js) | **SwiftNIO** + 自研 SFTP v3 | | 🪟 **Windows** | C# **WPF** shell | **WebView2** 内嵌 **xterm.js** | **SSH.NET** | ## 🖼️ 软件界面 ### 暗色模式 / 淡色模式 | 暗色模式 | 淡色模式 | | :---: | :---: | | Dark theme / 暗色模式 | Light theme / 淡色模式 | ### 主机管理 / 新建连接 | 主机管理 | 新建连接 | | :---: | :---: | | Host manager / 主机管理 | New connection / 新建连接 | ### 快速连接:历史 / 收起侧边栏 | 快速连接:历史 | 收起侧边栏 | | :---: | :---: | | Quick connect history / 快速连接:历史 | Sidebar collapsed / 收起侧边栏 | ### AI 工具交互 / 对接 MCP:本地 CLI | AI 工具交互 | 对接 MCP:本地 CLI | | :---: | :---: | | AI tool interaction / AI 工具交互 | MCP and local CLI bridge / 对接 MCP:本地 CLI | ### 文本编辑器 / 下载管理 | 文本编辑器 | 下载管理 | | :---: | :---: | | Text editor / 文本编辑器 | Download manager / 下载管理 | ### 云备份:本地备份 / 密钥管理 | 云备份:本地备份 | 密钥管理 | | :---: | :---: | | Cloud and local backup / 云备份:本地备份 | Key manager / 密钥管理 | ## 📚 目录 - [🚀 核心特性](#-key-features--核心特性) - [💻 支持平台](#-supported-platforms--支持平台) - [🏗️ 架构](#️-architecture--架构) - [⚡ 快速开始](#-quick-start--快速开始) - [📦 打包](#-packaging--打包) - [🗂️ 首次运行配置](#️-first-run-configuration--首次运行配置) - [📁 项目结构](#-project-layout--项目结构) - [🤖 CLI / agent 桥接](#-cli--agent-bridge) - [🔒 数据与安全](#-data-and-security--数据与安全) ## 🚀 核心特性 | 领域 | 能力 | | --- | --- | | 🖥️ **多会话终端** | 标签页式 SSH 会话,重连,PTY 尺寸调整。Mac: SwiftTerm · Win: WebView2 + xterm.js | | 🗂️ **连接管理** | 分组、备注、主机 OS 图标、快速连接 | | 🔑 **身份验证** | 密码 + 私钥;可选使用操作系统安全存储来保存密码 | | 📁 **SFTP** | 双面板浏览、上传 / 下载、打包传输、远程文本编辑 | | 🎨 **主题** | 淡色 / 暗色 UI + 终端配色方案 | | 📡 **代理** | 双平台均支持 SOCKS / HTTP 代理(实现路径不同,行为对齐) | | 🤖 **CLI / agent 桥接** | 本机自动化 HTTP 桥,用于连接 / 执行 / SFTP 工作流 | | 📐 **布局一致性** | macOS 和 Windows 对齐的五区工作区 | ## 💻 支持平台 | 平台 | 架构 | 状态 | | --- | --- | --- | | 🍎 macOS | arm64 / x64 | ✅ 支持(原生) | | 🪟 Windows | x64 | ✅ 支持(原生) | | 🐧 Linux | — | ❌ 在原生的 0.1.1 线路中不支持 | ## 🏗️ 架构 ``` PixShell-all monorepo ├── mac/ SwiftPM executable → package-mac.sh → PixShell.app │ AppKit UI · SwiftTerm · SwiftNIO SSH · 自研 SFTP └── win/ .NET 9 WPF → publish win-x64 WPF chrome · WebView2(xterm.js) · SSH.NET · SFTP ``` **设计约定** - 各平台间共享产品行为和五区布局。 - 在性能表现最佳的地方采用平台原生控件和终端技术栈。 - 双端功能与五区布局对齐;控件与终端栈按平台原生最优路径实现。 ## ⚡ 快速开始 ### 🍎 macOS **前置条件**:完整 **Xcode**(不要只用 Command Line Tools;请设置 `DEVELOPER_DIR`)。 ``` cd mac export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer # Debug run / 调试运行 swift build # 或一键: bash "启动 PixShell.command" # Release package / 发布打包 swift build -c release bash scripts/package-mac.sh release open dist/PixShell.app ``` ### 🪟 Windows **前置条件**:**.NET 9 SDK**;终端依赖 **Edge WebView2 Runtime**(多数 Win10/11 已自带)。 ``` cd win # 推荐一键脚本 .\build.ps1 -Action publish -Configuration Release -Runtime win-x64 .\publish\win-x64\PixShell.exe # 或直接 dotnet dotnet restore PixShell.csproj -r win-x64 dotnet publish PixShell.csproj -c Release -r win-x64 --self-contained true -o publish/win-x64 ``` 若缺少 WebView2: ``` winget install Microsoft.EdgeWebView2Runtime ``` ## 📦 打包 | 目标 | 方式 | 产物 | | --- | --- | --- | | 🍎 mac-arm64 / mac-x64 | `mac/scripts/package-mac.sh release` · GitHub Actions | `PixShell.app`(zip 工件,CI unsigned) | | 🪟 win-x64 | `win/build.ps1` / `dotnet publish` · GitHub Actions | `publish/win-x64/PixShell.exe` | 打包使用的应用图标: | 文件 | 作用 | | --- | --- | | `docs/assets/icon.png` / `pixshell-title.svg` / `logo.svg` | README 及文档 | | `build/icon.icns` · `mac/Resources/AppIcon.icns` | macOS `.app` Dock / Finder 图标 | | `build/icon.ico` · `win/Resources/AppIcon.ico` | Windows exe `ApplicationIcon` | ### CI/CD GitHub Actions (`.github/workflows/build.yml`) 构建产物: | 产物 | 运行器 | | --- | --- | | `PixShell-mac-arm64` | `macos-15` | | `PixShell-mac-x64` | `macos-15-intel` | | `PixShell-win-x64` | `windows-2025` | ## 🗂️ 首次运行配置 用户的主机、密码、设置和快捷命令 **绝不会** 打包进应用中。 用户主机、密码、设置与快捷命令 **不会** 打进安装包。 | 平台 | 路径 | | --- | --- | | 🍎 macOS | `~/Library/Application Support/PixShell/` | | 🪟 Windows | `%APPDATA%\PixShell\` | 常见运行时文件: - 📄 `hosts.json` — 保存的主机(密码优先走系统安全存储) - ⚙️ `settings.json` — 应用偏好设置 - ⚡ 快捷命令库 私钥、密码和 known_hosts 仅保存在本机。 ## 📁 项目结构 ``` PixShell-all/ ├── mac/ # macOS native (SwiftPM) │ ├── Sources/PixShell/ # App / UI / SSH / SFTP / Bridge │ ├── Resources/AppIcon.icns │ ├── scripts/package-mac.sh │ └── 启动 PixShell.command ├── win/ # Windows native (.NET 9 WPF) │ ├── UI/ Terminal/ Sftp/ Bridge/ │ ├── web/ # vendored xterm.js for WebView2 only │ ├── Resources/AppIcon.ico │ ├── build.ps1 │ └── PixShell.csproj ├── build/ # shared packaging icons (.icns / .ico / .png) ├── docs/assets/ # logo + title art for README ├── .github/workflows/ # multi-platform CI └── README.md ``` 此仓库仅包含源码和文档 —— 不含任何用户机密、运行时日志或发布版二进制文件。 ## 🤖 CLI / agent 桥接 双端均提供了一个本机自动化桥,用于连接主机、执行命令和 SFTP 辅助操作(由 `pixshell-cli` / agent 工作流使用)。 双端均提供本机自动化桥:连接主机、执行命令、SFTP 辅助(供 CLI / agent 工作流使用)。 | 平台 | 监听技术栈(实现差异,协议对齐) | | --- | --- | | 🍎 macOS | `NWListener` HTTP 桥 | | 🪟 Windows | `HttpListener` 桥 | ## 🔒 数据与安全 - 🛡️ 配置在首次运行时于平台用户数据目录下创建。 - 📦 打包的构建版本不含主机、密码和私钥。 - 📝 运行时日志保留在本地,并被 git 忽略。 - 🔐 在可用的情况下,优先使用操作系统安全存储来保存密码。 ## 📄 许可证 除非所有者另有说明,否则为 UNLICENSED / 专有源代码。
**PixShell v0.1.1** · 原生 macOS + Windows 如果 PixShell 对您有帮助,欢迎点个 Star ⭐
标签:SSH客户端, 终端, 运维工具, 远程管理