Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Connexio

Project-based Terminal Manager — Organize your terminals by project, not by window.

Release Platform License Downloads

Connexio is built with Tauri v2 and a native Rust backend for fast startup, low memory usage, and cross-platform support.

📸 Preview

Connexio v0.5.0 — Project command center and recent projects

🎯 Problem

When working on multiple projects, you end up with dozens of terminal windows/tabs with no clear organization. Which terminal belongs to which project? Where was that running server?

✨ Solution

Connexio organizes your terminals by project. Each project gets its own workspace with dedicated terminal tabs, persistent sessions, remote access, and productivity tools built right in.

🚀 Features

Core

  • 📁 Project Workspace — Each project has its own workspace with dedicated terminals
  • 📑 Multi-tab Terminals — Multiple terminal tabs per project with rename & drag-to-reorder
  • 🐚 Shell Picker — Auto-detect available shells (PowerShell, CMD, Git Bash, WSL, Zsh, Fish, etc.)
  • 💾 Session Persistence — Tabs, layout, and active project survive app restart
  • 🔀 Drag & Drop — Reorder tabs, reorder projects, move projects between groups
  • ⚡ WebGL Renderer — Hardware-accelerated terminal rendering (toggleable in settings)

Productivity

  • 📋 Task Runner — Auto-detect scripts from package.json, Makefile, Cargo.toml, pyproject.toml — one-click run
  • 📌 Pinned Commands — Save favorite commands per project (CRUD, drag reorder)
  • ⏱️ Command Timer — Track execution time, notification when long-running commands finish
  • 📝 Code Editor — Built-in editor powered by CodeMirror 6 (JS, TS, HTML, CSS, Python, Rust, JSON, Markdown)
  • 📂 File Explorer — Full file tree with context menu and inline actions
  • 🌐 Web Preview — Live preview panel as a workspace tab

Git Integration

  • 🌿 Git Status — Live branch, ahead/behind, modified/staged/untracked counts
  • 🔀 Branch Picker — Switch branches from the workspace header
  • 💬 Commit Box — Stage and commit directly from the UI
  • 📜 Git History — View commit history per project

Connectivity

  • 📱 Remote Access — Open a secure mobile workspace with trusted-token login and remote terminal controls
  • 🔗 SSH Manager — Save SSH connections per project + global, one-click connect with key or password auth
  • 🌐 Tailscale Support — Generate remote URLs using detected Tailscale IPs for private-network access
  • 🤖 AI Chat — Side panel with configurable model integration
  • 🎮 Discord Rich Presence — Show what you're working on in Discord
  • 🔄 Auto-Updater — Check for updates via GitHub Releases, download & install with one click

Customization

  • 🎨 Themes — Built-in themes (Dark, Light, Midnight Ocean) with full terminal color support
  • ⚙️ Settings — Font size, font family, cursor style, scrollback, copy-on-select, default shell, WebGL toggle
  • 🖥️ Custom Titlebar — Clean frameless window with app version display
  • 📐 Resizable Panels — Split panes for editor + terminal side-by-side layout

📥 Download

PlatformDownload
WindowsConnexio_x64-setup.exe
macOS (Apple Silicon)Connexio_aarch64.dmg
LinuxConnexio_amd64.AppImage

Or go to Releases for all versions including pre-releases.

📦 Tech Stack

TechnologyPurpose
Tauri v2Cross-platform desktop framework
RustNative backend (PTY, git, SSH, file system)
portable-ptyNative PTY process management
React 18UI framework
TypeScriptType safety
xterm.jsTerminal rendering (with WebGL addon)
CodeMirror 6Code editor
ZustandState management
Tailwind CSSStyling
ViteFrontend build tool
tauri-plugin-storePersistent storage
tauri-plugin-updaterAuto-update via GitHub Releases
discord-rich-presenceDiscord RPC integration

🛠️ Development

Prerequisites

  • Node.js 18+
  • Rust (latest stable via rustup)
  • Platform-specific dependencies:
    • Windows: WebView2 (usually pre-installed on Windows 10/11), Visual Studio C++ Build Tools
    • macOS: xcode-select --install
    • Linux: sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev

Setup

git clone https://github.com/yandanp/Connexio.git
cd Connexio
npm install
npm run dev

Scripts

CommandDescription
npm run devStart Tauri dev mode (hot-reload frontend + Rust backend)
npm run dev:rendererStart Vite dev server only (frontend)
npm run buildBuild frontend for production
npm run build:tauriBuild full Tauri app (installer)
npm run typecheckType-check all TypeScript

Release

# Patch release (e.g. 0.5.0 -> 0.5.1)
npm version patch
git push && git push --tags

# Pre-release (dev builds)
npm version prerelease --preid=dev
git push && git push --tags

Pushing a v* tag triggers GitHub Actions → multi-platform build & GitHub Release.

Tag patterns for release channels:

  • v1.0.0 — Stable release
  • v1.0.0-dev.1 — Dev pre-release
  • v1.0.0-alpha.1 / v1.0.0-beta.1 — Alpha/Beta pre-release

📁 Project Structure

Connexio/
├── AGENTS.md                    # Written conventions for AI agents & contributors
├── docs/
│   └── STYLEGUIDE.md            # Canonical design tokens & utility classes
├── config/                      # Tooling & quality gates
│   ├── check-max-lines.mjs      # Max-lines ratchet (frontend + Rust)
│   ├── max-lines-baseline.txt   # Big-file baseline (numbers only go down)
│   ├── check-feature-imports.mjs# Feature boundary checker
│   └── vitest.config.ts         # Test config
├── src/
│   ├── shared/
│   │   └── types.ts             # Pure shared types (frontend ↔ Rust)
│   └── renderer/                # React frontend
│       ├── core/                # Kernel — importable by every feature
│       │   ├── api/             # Typed IPC wrappers per domain (window.connexio)
│       │   ├── api-remote/      # Same API shape for remote (mobile/web) mode
│       │   ├── ui/              # Small primitives (ContextMenu, ConfirmDialog, …)
│       │   ├── hooks/           # use-terminal-resize-v2, useDiscordPresence
│       │   ├── stores/          # Cross-cutting stores: settings, theme, notifications
│       │   └── tauri-shim.ts    # Picks desktop vs remote API at startup
│       ├── features/            # 1 folder = 1 domain; public API via index.ts only
│       │   ├── terminal/        # Terminal, TerminalLayer, ShellPicker, SearchPanel
│       │   ├── workspace/       # Workspace composition, tab bar, split layout, store
│       │   ├── projects/        # Sidebar, AddProjectModal, projects store
│       │   ├── git/             # SourcePanel, DiffViewer, BranchPicker, CommitBox, …
│       │   ├── ssh/             # SSH manager: hosts, identities, known hosts, SFTP
│       │   ├── remote/          # Remote access: login gate, mobile shell, settings
│       │   ├── tasks/           # TaskPanel + pinned commands
│       │   ├── explorer/        # FileExplorer
│       │   ├── editor/          # CodeEditor + RemoteEditorWrapper
│       │   ├── ai/              # AIChatPanel + provider client & store
│       │   ├── settings/        # SettingsModal + settings tabs
│       │   └── notifications/   # NotificationBell, NotificationToast
│       ├── styles/              # globals.css (design token source)
│       └── App.tsx / main.tsx   # Composition root — only place features are joined
├── src-tauri/
│   ├── src/
│   │   ├── main.rs              # Tauri app entry point
│   │   ├── lib.rs               # Plugin registration & command setup
│   │   └── modules/
│   │       ├── pty/             # PTY process management (portable-pty)
│   │       ├── ssh/             # SSH module folder (connection, sftp, trust, secrets, …)
│   │       ├── remote/          # Remote access server folder (http, websocket, wol, …)
│   │       ├── projects.rs      # Project CRUD
│   │       ├── workspace.rs     # Workspace state persistence
│   │       ├── session.rs       # Session persistence
│   │       ├── settings.rs      # App settings + shell detection
│   │       ├── shell.rs         # Shell detection & configuration
│   │       ├── git.rs           # Git status & operations
│   │       ├── tasks.rs         # Task runner (script detection)
│   │       ├── pinned.rs        # Pinned commands
│   │       ├── theme.rs         # Theme management
│   │       ├── explorer.rs      # File system explorer
│   │       ├── clipboard.rs     # Native clipboard handling
│   │       ├── notification.rs  # Desktop notifications
│   │       ├── discord.rs       # Discord Rich Presence
│   │       └── updater.rs       # Auto-updater
│   ├── tauri.conf.json          # Tauri configuration
│   ├── Cargo.toml               # Rust dependencies
│   └── capabilities/            # Tauri permission capabilities
├── assets/                      # App icons
├── .github/workflows/           # CI gates + multi-platform release
├── vite.config.ts               # Vite configuration
├── tailwind.config.js           # Tailwind configuration
└── package.json

🎨 Themes

ThemeStyle
Connexio DarkDefault dark theme with blue accents
Connexio LightClean light theme
Midnight OceanDeep blue with teal accents

Themes apply to both the app UI and terminal colors.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repo
  2. Create your feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

Commit Convention

PrefixUsage
feat:New feature
fix:Bug fix
refactor:Code refactoring
ci:CI/CD changes
chore:Maintenance

📄 License

MIT © yandanp

关于 About

Connexio — Project-based Terminal Manager. Organize terminals by project with persistent sessions, task runner, SSH manager, and more.
developer-toolsproductivityproject-managementreactremote-accessrustsshtauriterminalterminal-managertypescriptxterm

语言 Languages

TypeScript76.0%
Rust20.7%
HTML1.5%
CSS0.8%
JavaScript0.5%
Python0.3%
PowerShell0.3%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
263
Total Commits
峰值: 58次/周
Less
More

核心贡献者 Contributors