Skip to content

leoberbert/zashterminal

Repository files navigation

Zashterminal

Logo Zashterminal

A modern terminal for developers, infrastructure, and system administration

Licença Versão GTK Versão libadwaita Support on Ko-fi

Zashterminal is a modern, intuitive, and innovative terminal built with GTK4 and Adwaita. It blends powerful features for developers and system administrators with a welcoming experience for newcomers. Simplified session management, an integrated file manager, automatic color highlighting, and workflow-focused tools make the command line more productive on any Linux distribution.

Why Zashterminal

  • Focused on real workflows: Manage SSH/SFTP sessions, panes, and layouts without leaving the terminal.
  • Accessible by design: Clear UI, smart defaults, and discoverable actions help beginners get started faster.
  • Optional AI assistance: Only the text you explicitly select is sent, keeping control and privacy in your hands.
  • Built on modern Linux UI: GTK4 + libadwaita for a native, responsive desktop experience.

SecureCRT Migration & PAM Compatibility

No more excuses to postpone your migration to Zashterminal:

  • Import SecureCRT sessions directly from the main menu (Import SecureCRT Sessions).
  • Bulk import from full directory trees (folders + .ini sessions).
  • SecureCRT Password V2 compatibility: Zashterminal can import and use Password V2 entries (02:<hex>), keeping credentials compatible with the Zashterminal session format.
  • Balabit/One Identity gateway compatibility: Zashterminal supports keyboard-interactive privileged access gateway flows commonly used in Balabit environments.

About Balabit and One Identity:

One Identity Privileged Access Management (PAM) solutions help reduce security risk and support compliance, available both on-prem and SaaS. They provide control, monitoring, analysis, and governance for privileged access across multiple environments and platforms, including Zero Trust and least-privilege operational models.

Screenshots

image image image

Key Features

🤖 AI Assistant Integration

image image

Zashterminal creates a bridge between your shell and Large Language Models (LLMs), offering an optional and fully non-intrusive AI experience. The assistant only processes the content that you explicitly select and choose to send, ensuring full control over your privacy.

  • Multi-Provider Support: Native integration with Groq, Google Gemini, OpenRouter, and Local LLMs (Ollama/LM Studio).
  • Context Aware: The AI understands your OS and distribution context to provide accurate and relevant commands.
  • Chat Panel: A dedicated side panel for persistent conversations, command suggestions, and "Click-to-Run" code snippets.
  • Smart Suggestions: Ask how to perform tasks and receive ready-to-execute commands directly in the UI.

📂 Advanced File Manager & Remote Editing

image
  • Integrated Side Panel: Browse local and remote file systems without leaving the terminal.
  • Remote Editing: Click to edit remote files (SSH/SFTP) in your favorite local editor. Zashterm watches the file and automatically uploads changes on save.
  • Drag & Drop Transfer: Upload files to remote servers simply by dragging them into the terminal window over (SFTP/Rsync)
  • Transfer Manager: Track uploads and downloads with a detailed progress manager and history.
image

⚡ Productivity Tools

image
  • Input Broadcasting: Type commands in one terminal and execute them simultaneously across multiple selected tabs/panes.
  • Quick Prompts: One-click AI prompts for common tasks (e.g., "Explain this error", "Optimize this command").

🖥️ Core Terminal Functionality

  • Session Management: Save, organize (with folders), and launch Local, SSH, and SFTP sessions.
  • Flexible Layouts: Split panes horizontally and vertically; save and restore complex window layouts.
  • Directory Tracking: Updates tab titles automatically based on the current working directory (OSC7 support).
  • Deep Customization: Visual theme editor, font sizing, transparency (window and headerbar), and extensive keyboard shortcuts.

🎨 Color Schemes

Zashterminal includes built-in palettes ranging from classic terminals to modern editor-inspired themes.

  • Current default theme: GitHub Dark
  • All available built-in schemes (30):
    • Ayu Mirage (ayu_mirage)
    • Catppuccin Mocha (catppuccin)
    • Catppuccin Latte (catppuccin_latte)
    • Dark (dark)
    • Dracula (dracula)
    • Everforest Green (everforest)
    • Everforest Dark (everforest_dark)
    • Everforest Light (everforest_light)
    • GitHub Dark (github_dark)
    • GitHub Light (github_light)
    • Gruvbox Dark Hard (gruvbox_dark_hard)
    • Gruvbox Light (gruvbox_light)
    • Horizon Dark (horizon_dark)
    • Kanagawa Wave (kanagawa_wave)
    • Light (light)
    • Material Ocean (material_ocean)
    • Monokai (monokai)
    • Moonfly (moonfly)
    • Night Owl (night_owl)
    • Nord (nord)
    • One Dark Pro (onedark_pro)
    • Oxocarbon Dark (oxocarbon_dark)
    • Palenight (palenight)
    • Pink Light (pink_light)
    • Rosé Pine (rose_pine)
    • Solarized Dark (solarized_dark)
    • Solarized Light (solarized_light)
    • System Default (system_default)
    • Tokyo Night (tokyonight)
    • VS Code Dark+ (vscode_dark_plus)

You can switch themes and create your own custom palettes from the appearance/preferences dialog.

Dependencies

To build and run Zashterminal, you will need:

  • Python 3.9+
  • GTK4 and Adwaita 1.0+ (libadwaita)
  • VTE for GTK4 (vte4 >= 0.76 recommended)
  • Python Libraries:
    • PyGObject (GTK bindings)
    • pycryptodomex (SecureCRT-compatible password encryption/decryption)
    • requests (For AI API connectivity)
    • pygments (For syntax highlighting)
    • psutil (Optional, for advanced process tracking)
    • regex (Optional, for high-performance highlighting patterns)

Installation (works on any distro)

Arch/Manjaro

AUR (recommended on Arch-based systems):

yay -S zashterminal        # or
paru -S zashterminal

Local installer (same flow used on other distros, system-wide with venv):

curl -fsSL https://raw.githubusercontent.com/leoberbert/zashterminal/refs/heads/main/install.sh | bash

Debian / Ubuntu / Fedora / openSUSE / others

The installer detects the distro, installs the required system packages, and installs Zashterminal system-wide using a virtual environment in /opt/zashterminal/venv.

# Quick install (no clone required)
curl -fsSL https://raw.githubusercontent.com/leoberbert/zashterminal/refs/heads/main/install.sh | bash

# Alternatively, download and run
curl -fsSLO https://raw.githubusercontent.com/leoberbert/zashterminal/refs/heads/main/install.sh
bash install.sh

WSL on Windows (Experimental)

Zashterminal can run on WSL, but this is still experimental and may present issues depending on your WSLg/graphics/input setup.

  • Tested environment: Ubuntu 24.04 on WSL
  • Installation method: same Debian/Ubuntu flow using install.sh
curl -fsSL https://raw.githubusercontent.com/leoberbert/zashterminal/refs/heads/main/install.sh | bash

If you use a language other than English (default), configure locale and keyboard (example for Brazilian Portuguese):

# ~/.bashrc
export LANG=pt_BR.UTF-8
export LC_ALL=pt_BR.UTF-8
export LANGUAGE=pt_BR:pt
sudo apt update
sudo apt install x11-xkb-utils
setxkbmap br

Also add to ~/.bashrc:

if [ -n "$DISPLAY" ]; then
    setxkbmap br
fi

After changing your ~/.bashrc, close WSL completely and open it again.

Usage

zashterminal [options] [directory]

Arguments

Option Description
-w, --working-directory DIR Set initial working directory
-e, -x, --execute COMMAND Execute command on startup (all remaining args are included)
--close-after-execute Close the terminal tab after the command finishes
--ssh [USER@]HOST Immediately connect to an SSH host
--new-window Force opening a new window instead of a tab

Examples

# Open terminal in a specific directory
zashterminal ~/projects

# Execute a command
zashterminal -e htop

# SSH connection
zashterminal --ssh user@server.example.com

# Execute command and close after completion
zashterminal --close-after-execute -e "ls -la"

Configuration

Configuration files are stored in ~/.config/zashterminal/:

File/Directory Description
settings.json General preferences, appearance, terminal behavior, shortcuts, and AI configuration
sessions.json Saved SSH/SFTP connections and session folders
session_state.json Window state and session restore data
layouts/ Saved window layouts (split panes configuration)
logs/ Application logs (when logging to file is enabled)
backups/ Manual encrypted backup archives

Note: Syntax highlighting rules are bundled with the application in data/highlights/ and include rules for 50+ commands (docker, git, systemctl, kubectl, and more).

Contributing

Contributions are welcome!

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/amazing-feature).
  3. Commit your changes.
  4. Push to the branch.
  5. Open a Pull Request.

License

This project is licensed under the GNU GPL v3 (or later) - see the LICENSE file for details.

Support the Project

If you enjoy Zashterminal and it improves your workflow, a contribution helps cover development time and ongoing costs. Any support is appreciated and goes directly into making the project better:

Contact

Acknowledgments

  • Developers of GNOME, GTK, VTE, and Pygments.

Made with code, coffee, and curiosity through long nights of lines of code, by Leonardo Berbert.

About

Modern GTK4 terminal emulator powered by Python. Fast, sleek, and extensible.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors

Languages