Skip to content

leechristophermurray/xmd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

XMD Desktop - Terminal Navigator

XMD Logo

License: MIT Go Version Wails Svelte

A modern, lightning-fast terminal navigator and application launcher built with Material Design 3

✨ Features

πŸš€ Core Functionality

  • Global Hotkey Access: Launch instantly with Ctrl+Space (configurable)
  • Real-time Search: Find applications, files, and commands as you type
  • Terminal-First Workflow: Direct command execution with persistent sessions
  • Application Launcher: Launch desktop applications seamlessly

πŸ–₯️ Terminal Integration

  • x: <command> Syntax: Execute commands directly with x: ls -la, x: htop, etc.
  • Persistent Sessions: Interactive terminals that stay active across toggles
  • Session Management: Real-time counter showing running terminal count
  • Multi-Session Support: Run multiple terminals simultaneously

🎨 Modern UI/UX

  • Material Design 3: Google's latest design system with dynamic theming
  • Tron-Style Accents: Electric blue highlights for terminal and AI elements
  • Responsive Interface: Smooth animations and keyboard-driven navigation
  • Dark Theme: Optimized for low-light coding sessions

πŸ€– AI Integration (Coming Soon)

  • Natural Language Queries: Ask AI questions directly from the search bar
  • Context-Aware Responses: AI understands your current directory and workflow
  • Command Suggestions: Get help with complex terminal operations

πŸš€ Quick Start

Prerequisites

  • Linux: Fedora, Ubuntu, or any modern distribution
  • Go: Version 1.20 or later
  • Node.js: Version 16+ with npm
  • Wails v2: go install github.com/wailsapp/wails/v2/cmd/wails@latest

Installation

  1. Clone the repository:

    git clone https://github.com/clmurray/xmd.git
    cd xmd/desktop
  2. Install dependencies:

    wails build
  3. Run XMD:

    ./build/bin/xmd-desktop

GNOME Integration (Recommended)

For the best experience on GNOME:

  1. Open Settings β†’ Keyboard β†’ View and Customize Shortcuts
  2. Add a Custom Shortcut:
    • Name: XMD Terminal Navigator
    • Command: /path/to/xmd-desktop --toggle
    • Shortcut: Super+Space (or your preference)

πŸ“– Usage Guide

Basic Navigation

  • Open XMD: Press your configured hotkey (default: Ctrl+Space)
  • Search: Start typing to find apps, files, or commands
  • Select: Use arrow keys or mouse, press Enter to execute
  • Close: Press Esc or click outside the window

Terminal Commands

  • Direct Execution: Type x: ls -la and press Enter
  • Interactive Sessions: Commands like x: python3 or x: htop remain interactive
  • Session Tracking: See running terminal count in the search window
  • Multi-Tasking: Launch multiple terminals and switch between them

Search Types

  • Applications: firefox, code, gimp - Launch desktop applications
  • Commands: x: git status, x: docker ps - Execute in terminal
  • Files: /home/user/project - Navigate to directories
  • AI Queries: ask how to use git rebase - Get AI assistance (coming soon)

Keyboard Shortcuts

Key Action
Ctrl+Space Toggle XMD window
↑ ↓ Navigate results
Enter Execute selected item
Esc Close window
Tab Cycle through UI elements

πŸ—οΈ Architecture

See docs/ARCHITECTURE.md for detailed technical documentation.

High-Level Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    XMD Desktop                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Frontend (Svelte + Material Design 3)                 β”‚
β”‚  β”œβ”€β”€ SpotlightWindow (Main UI)                         β”‚
β”‚  β”œβ”€β”€ CommandInput (Search & Command Entry)             β”‚
β”‚  β”œβ”€β”€ ResultsList (Search Results Display)              β”‚
β”‚  └── TerminalView (Interactive Terminal)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Backend (Go + Wails)                                  β”‚
β”‚  β”œβ”€β”€ App (Main Application Logic)                      β”‚
β”‚  β”œβ”€β”€ Terminal Manager (PTY Session Handling)           β”‚
β”‚  β”œβ”€β”€ Search Engine (Application & File Indexing)       β”‚
β”‚  β”œβ”€β”€ AI Client (OpenAI Integration)                    β”‚
β”‚  └── Hotkey Handler (Global Keyboard Shortcuts)        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  System Integration                                    β”‚
β”‚  β”œβ”€β”€ Desktop Files (.desktop parsing)                  β”‚
β”‚  β”œβ”€β”€ PTY/Shell Integration                             β”‚
β”‚  β”œβ”€β”€ IPC (Single Instance Management)                  β”‚
β”‚  └── Platform-Specific Hotkeys                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Development

Project Structure

xmd/desktop/
β”œβ”€β”€ app.go                 # Main application logic
β”œβ”€β”€ main.go               # Application entry point
β”œβ”€β”€ wails.json            # Wails configuration
β”œβ”€β”€ frontend/             # Svelte frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/   # UI components
β”‚   β”‚   β”œβ”€β”€ styles/       # Material Design 3 styles
β”‚   β”‚   └── App.svelte    # Root component
β”‚   └── package.json      # Frontend dependencies
β”œβ”€β”€ pkg/                  # Go packages
β”‚   β”œβ”€β”€ terminal/         # Terminal session management
β”‚   β”œβ”€β”€ search/           # Search and indexing
β”‚   └── ai/              # AI integration
β”œβ”€β”€ internal/             # Internal packages
β”‚   └── hotkeys/         # Global hotkey handling
└── docs/                # Documentation

Development Commands

XMD uses a comprehensive Makefile build system for all development tasks:

# Show all available commands
make help

# Development
make dev           # Development server with hot reload
make dev-frontend  # Frontend development server only
make dev-debug     # Development server with debug logging

# Building
make build         # Build complete application
make build-wails   # Build using Wails build system
make build-all     # Clean, test, and build everything
make build-release # Build optimized release version

# Cross-platform builds
make build-linux   # Build for Linux
make build-darwin  # Build for macOS  
make build-windows # Build for Windows
make build-multiplatform # Build for all platforms

# Testing
make test          # Run all tests
make test-go       # Run Go tests only
make test-frontend # Run frontend tests only
make test-go-coverage # Run Go tests with coverage

# Code quality
make fmt           # Format all code
make lint          # Run all linters
make check         # Format, lint, and test

# Dependencies
make deps          # Install all dependencies
make deps-update   # Update all dependencies

# Installation
make install       # Install to system (/usr/local/bin)
make install-user  # Install to user directory (~/.local/bin)

# Environment
make setup         # Set up development environment
make doctor        # Check environment health

Code Style & Standards

  • Go: Follow standard Go conventions, use gofmt
  • Svelte: TypeScript-first, reactive patterns
  • CSS: Material Design 3 tokens, utility-first approach
  • Git: Conventional commits with emoji prefixes

🎨 Customization

Theming

XMD uses Material Design 3 with customizable color schemes:

  • Primary Colors: Purple-based palette (customizable)
  • Tron Accents: Electric blue for terminal/AI elements
  • Dark Theme: Optimized for developer workflows
  • Typography: Roboto for UI, JetBrains Mono for terminal

Configuration

Configuration is managed through:

  • Wails Config: wails.json for build settings
  • Environment Variables: Runtime configuration
  • CSS Variables: Theme customization in styles/md3-tokens.css

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Areas for Contribution

  • AI Integration: Enhance OpenAI client and context awareness
  • Platform Support: macOS and Windows compatibility
  • Terminal Features: Advanced PTY features, session persistence
  • UI/UX: Animation improvements, accessibility features
  • Performance: Search optimization, memory management

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Wails: Fantastic Go + Web framework
  • Material Design 3: Google's design system
  • Svelte: Reactive UI framework
  • PTY Library: Terminal session handling
  • Contributors: Thanks to all who have contributed to this project

πŸ”— Links


Built with ❀️ by developers, for developers

Making terminal navigation beautiful and efficient

About

A modern, lightning-fast terminal navigator and application launcher built with Material Design 3

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published