gosh

module
v0.1.0-beta.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2025 License: MIT

README ΒΆ

🐚 GoSh - Cross-Platform Go Shell

Version: 0.1.0-beta.7 Status: Beta - Git-Flow + Cross-Platform Testing License: MIT

A modern, cross-platform shell written in Go with beautiful TUI and native script execution.

✨ Features

🎨 4 Beautiful UI Modes
  • Classic - Traditional bash-like interface
  • Warp - Modern, polished UI
  • Compact - Minimal, space-efficient
  • Chat - Telegram-like conversational interface
πŸ“œ Command History
  • Persistent History: Commands automatically save to ~/.gosh_history
  • Auto-Load: History loads on shell startup
  • Up/Down Navigation: Navigate through command history with arrow keys
  • Smart Deduplication: Consecutive identical commands are automatically deduplicated
  • Configurable Limit: History respects 10,000 command limit (configurable)
πŸš€ Command Execution
  • External Commands: Execute any system command via os/exec
  • Interactive Mode: Full TTY support for programs like vim, ssh, nano
  • Native Shell Scripts: Execute .sh/.bash scripts natively using mvdan.cc/sh (no bash.exe dependency on Windows!)
  • Script Detection: Automatically detects .sh, .bash, .bat, .cmd, .ps1 scripts
🎨 Syntax Highlighting
  • Inline ANSI syntax highlighting
  • Commands, options, and arguments color-coded
  • Real-time highlighting as you type
πŸ”§ Git Integration
  • Current branch displayed in prompt
  • Dirty status indicator
  • Works in any git repository
⌨️ Input & Navigation
  • Tab Completion: Basic command and file completion
  • Multi-line Input: Alt+Enter for multiline commands
  • Viewport Scrolling: PgUp/PgDn, Mouse Wheel support
  • Auto-scroll: Automatically scroll to bottom on new output
  • Visual Help Overlay: Press F1 or ? for keyboard shortcuts reference
  • UI Mode Switching: Alt+1-4 hotkeys to switch modes on-the-fly

πŸ“¦ Installation

Prerequisites
  • Go 1.25 or higher
  • Git (for installation from source)
Build from Source
git clone https://github.com/grpmsoft/gosh.git
cd gosh
go build -o gosh ./cmd/gosh

# On Windows:
go build -o gosh.exe ./cmd/gosh
Quick Start
# Run GoSh
./gosh

# Or on Windows:
gosh.exe

🎯 Usage

Basic Commands
# Execute any system command
ls -la
git status
npm install

# Run interactive programs
vim myfile.txt
ssh user@server
nano config.yml

# Execute shell scripts (native POSIX support!)
./my-script.sh
History Features
# Navigate history
# Use Up/Down arrow keys to browse previous commands

# History is automatically saved to ~/.gosh_history
# History loads automatically on shell startup
UI Modes & Keyboard Shortcuts
# Get help
F1 or ?          # Open visual help overlay (ESC to close)
help             # Show built-in commands

# Switch UI modes
Alt+1            # Classic mode (traditional bash-like)
Alt+2            # Warp mode (modern polished)
Alt+3            # Compact mode (minimal space)
Alt+4            # Chat mode (telegram-like)

# Or use :mode command
:mode            # Show current UI mode
:mode classic    # Switch to Classic
:mode warp       # Switch to Warp
:mode compact    # Switch to Compact
:mode chat       # Switch to Chat

βš™οΈ Configuration

History Configuration

History is stored in ~/.gosh_history and automatically managed.

Default Settings:

  • Max size: 10,000 commands
  • Auto-save: Enabled
  • Deduplication: Consecutive duplicates removed
.goshrc Configuration

GoSh supports .goshrc configuration file for customization:

  • Location: ~/.goshrc (home directory)
  • Aliases: Define custom command aliases
  • Environment: Set environment variables
  • Auto-load: Loaded automatically on shell startup

Example .goshrc:

# Aliases
alias ll='ls -la'
alias gs='git status'

# Environment variables
export EDITOR=vim
export GOPATH=$HOME/go

πŸ—ΊοΈ Project Status

Current: v0.1.0-beta.7 (Git-Flow + Cross-Platform Testing) Next: v0.1.0-rc.1 (Community Feedback) Target: v0.1.0 Stable (Q2 2025)

See ROADMAP.md for detailed development plan.

πŸ“ Documentation

🀝 Contributing

Contributions are welcome! See CONTRIBUTING.md for:

  • Development setup and workflow
  • Testing requirements (TDD)
  • Code style guidelines
  • Pull request process

Quick start:

git clone https://github.com/grpmsoft/gosh.git
cd gosh
make test && make build

πŸ“„ License

MIT License - see LICENSE for details.

Third-party library licenses - see NOTICE for details.

πŸ™ Acknowledgments

Special Thanks

Professor Ancha Baranova - This project would not have been possible without her invaluable help and support. Her assistance was crucial in bringing GoSh to life.

Open Source Libraries
  • Bubbletea - Charm's excellent TUI framework
  • mvdan.cc/sh - Native POSIX shell interpreter
  • Lipgloss - Terminal styling library
  • Bubbles - TUI components

πŸ“ž Support


Built with ❀️ using Go and modern software architecture practices

GoSh aims to be the best cross-platform shell with native script execution and beautiful UI πŸš€

Directories ΒΆ

Path Synopsis
cmd
gosh command
Package main provides the entry point and dependency injection for the GoSh shell application.
Package main provides the entry point and dependency injection for the GoSh shell application.
internal
application/execute
Package execute provides use cases for command execution orchestration.
Package execute provides use cases for command execution orchestration.
application/history
Package history provides use cases for command history management.
Package history provides use cases for command history management.
application/ports
Package ports defines interfaces for adapters in hexagonal architecture.
Package ports defines interfaces for adapters in hexagonal architecture.
application/session
Package session provides use cases for shell session management.
Package session provides use cases for shell session management.
domain/builtins
Package builtins provides domain models for shell builtin commands.
Package builtins provides domain models for shell builtin commands.
domain/command
Package command provides domain models for shell commands and their execution semantics.
Package command provides domain models for shell commands and their execution semantics.
domain/config
Package config provides domain configuration models for shell behavior and UI modes.
Package config provides domain configuration models for shell behavior and UI modes.
domain/history
Package history provides domain models for command history management and navigation.
Package history provides domain models for command history management and navigation.
domain/job
Package job provides domain models for background job management.
Package job provides domain models for background job management.
domain/pipeline
Package pipeline provides domain models for command pipelines and their composition.
Package pipeline provides domain models for command pipelines and their composition.
domain/process
Package process provides domain models for OS process lifecycle management.
Package process provides domain models for OS process lifecycle management.
domain/session
Package session provides domain models for shell session state and environment.
Package session provides domain models for shell session state and environment.
domain/shared
Package shared provides common domain types and error definitions.
Package shared provides common domain types and error definitions.
infrastructure/builtin
Package builtin provides adapters for executing shell builtin commands.
Package builtin provides adapters for executing shell builtin commands.
infrastructure/config
Package config provides infrastructure for loading configuration from files.
Package config provides infrastructure for loading configuration from files.
infrastructure/executor
Package executor provides adapters for executing OS commands and pipelines.
Package executor provides adapters for executing OS commands and pipelines.
infrastructure/filesystem
Package filesystem provides adapters for filesystem operations.
Package filesystem provides adapters for filesystem operations.
infrastructure/history
Package history provides infrastructure for persisting command history to files.
Package history provides infrastructure for persisting command history to files.
interfaces/parser
Package parser provides lexical analysis and parsing for shell command syntax.
Package parser provides lexical analysis and parsing for shell command syntax.
interfaces/repl
Package repl provides the Read-Eval-Print-Loop interface using Bubbletea TUI framework.
Package repl provides the Read-Eval-Print-Loop interface using Bubbletea TUI framework.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL