lyu0805/pixshell
GitHub: lyu0805/pixshell
PixShell 是一款不依赖 Electron 的原生跨平台 SSH/SFTP 桌面客户端,为运维人员提供终端会话、连接管理和文件传输等一体化远程操作能力。
Stars: 114 | Forks: 9
**🌐 多语言支持**
🇺🇸 **English** · 🇨🇳 [**中文**](./README_CN.md)
**🖥️ 原生跨平台 SSH / SFTP 桌面客户端 · ⚡ 终端 · 🗂️ 连接管理 · 📦 文件传输**
**原生跨平台 SSH / SFTP 桌面客户端 · ⚡ 终端 · 🗂️ 连接管理 · 📦 文件传输**
|
|
### 主机管理 / 新建连接
| 主机管理 | 新建连接 |
| :---: | :---: |
|
|
|
### 快速连接:历史 / 收起侧边栏
| 快速连接:历史 | 收起侧边栏 |
| :---: | :---: |
|
|
|
### AI 工具交互 / 对接 MCP:本地 CLI
| AI 工具交互 | 对接 MCP:本地 CLI |
| :---: | :---: |
|
|
|
### 文本编辑器 / 下载管理
| 文本编辑器 | 下载管理 |
| :---: | :---: |
|
|
|
### 云备份:本地备份 / 密钥管理
| 云备份:本地备份 | 密钥管理 |
| :---: | :---: |
|
|
|
## 📚 目录
- [🚀 核心特性](#-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客户端, 终端, 运维工具, 远程管理