This commit removes the native OS title bar and introduces a cross-platform custom title bar using gpui-component's TitleBar. To optimize vertical screen space, the tab bar has been relocated into the newly created custom title bar. Fixes #37
ashell
ashell is a modern, GPUI Component-based desktop terminal client written in Rust.
This project focuses on providing a high-performance and visually appealing shell workspace by combining local and remote environments with a rich set of built-in features.
🚀 v0.4 Major Upgrades
v0.4 builds on the v0.3 foundation and focuses on more capable workspace operations and a smoother daily workflow:
- ✨ Keybinding Management: View and edit common shortcuts from the settings UI with conflict hints.
- ✨ Settings Page Polish: A more compact and clearer settings experience with improved layout and interaction flow.
- ✨ Multi-Pane Tabs with a tmux-like Workflow: A single tab can now host multiple panes, with split, focus, and switching actions for a tmux-inspired experience.
- ✨ Transfer History Improvements: The transfer history panel now presents richer task details, making upload and download activity easier to review.
- ✨ SSH Passphrase Support: Private keys can now store a passphrase, and SSH connections will use it automatically.
- ✨ Terminal Rendering Enhancements: Terminal rendering now handles Block Elements and similar custom glyphs more completely.
Download
You can download the latest pre-compiled releases for macOS, Windows, and Linux from the GitHub Releases page.
Mac Installation Guide
Method 1: Homebrew (Recommended)
If you use Homebrew, you can install it quickly with:
brew install rust-kotlin/taps/ashell --cask
To update the app:
brew update
brew upgrade ashell --cask
Note
: Since the app uses ad-hoc signing, the Homebrew installation or update includes a postflight script to automatically handle the quarantine flag. This will require you to enter your administrator password for authorization.
Method 2: Manual Download
- Download and unzip from the Releases page.
- Move
ashell.appto your Applications folder. - Since the app uses ad-hoc signing, macOS may warn that the app is "damaged" upon first launch. If this happens, open Terminal and run:
sudo xattr -cr /Applications/ashell.app
Features
The current version provides a fully-featured GPUI-native workspace:
- Local & Remote Sessions: Open local terminal tabs or connect to remote servers via SSH.
- Advanced SSH Authentication: Supports both password-based and key-based (file path or inline) SSH connections.
- Session Management: Easily save, reopen, edit, and remove your SSH sessions.
- SFTP Integration: Built-in SFTP file manager to browse, upload, download, and manage remote files.
- Robust Terminal Emulator: Parses terminal output with
alacritty_terminal, supporting rich ANSI color spans, fast rendering, and complete keyboard input forwarding. - System Telemetry: Real-time visualization of CPU, memory, swap, network, and disk metrics in the left cockpit sidebar.
- Theming System: Switch between multiple GPUI Component themes directly from the top toolbar.
- Embedded Fonts: Uses embedded Maple Mono NF CN fonts out-of-the-box for excellent CJK character and Nerd Font icon support.
- v0.3 Core Enhancements: Global font and font-size controls, concurrent SFTP transfers, persistent layout state, disconnect awareness, hot-swappable i18n, and smart terminal right-click copy/paste.
Run
To run the application locally:
cargo run --release
Package macOS App
./scripts/package-macos-app.sh
open target/release/ashell.app
The packaging script creates a standard .app bundle. It does not attach an entitlements file, and after signing, it verifies that com.apple.security.app-sandbox is not present (meaning it runs non-sandboxed).
License
This project is licensed under the GPL-3.0-or-later License.
