An open API service indexing awesome lists of open source software.

https://github.com/cod-e-codes/launchr

Terminal mission control TUI for launching apps, monitoring processes, managing bookmarks, SSH hosts, scripts, notifications, and shell history. Fast, keyboard-driven, cross-platform, built with Rust and ratatui.
https://github.com/cod-e-codes/launchr

bash config cross-platform crossterm dashboard fish fuzzy-search launcher linux macos powershell ratatui rust ssh sysinfo terminal-app toml tui windows zsh

Last synced: about 1 month ago
JSON representation

Terminal mission control TUI for launching apps, monitoring processes, managing bookmarks, SSH hosts, scripts, notifications, and shell history. Fast, keyboard-driven, cross-platform, built with Rust and ratatui.

Awesome Lists containing this project

README

          

## launchr

A fast terminal dashboard to launch, monitor, and manage apps, bookmarks, clipboard history, configuration files, Docker containers, Git repositories, network connections, SSH hosts, scripts, notifications, shell history, quick notes (scratchpad), an embedded shell terminal, and a calculator. Built in Rust with ratatui.

![launchr demo](launchr.gif)

### Build
- Prerequisites: Rust stable, Cargo
- Build: `cargo build --release`
- Run (dev): `cargo run`

Tested on Linux/macOS/Windows. On Windows, run in a true terminal (Windows Terminal/PowerShell).

### Keybindings
- Global: `q` quit, `Tab`/`Shift+Tab` next/previous section, `j/k` or `↓/↑` navigate, `Enter` activate
- Lists: `n` new, `d` delete, `r` refresh, `t` toggle details, `PgUp`/`PgDn` `Home`/`End`
- Search: `/` open fuzzy search (scoped to current section), type to filter, `Enter` jump, `Esc` close
- Help: `?` toggle help overlay
- Apps: `Enter` launch, `s` stop process (also from Dashboard)
- Clipboard: `Enter` copy to clipboard, `p` pin/unpin entry
- Configs: `Enter` open in editor, `b` backup, `v` view (scrollable with syntax highlighting), `c` copy, `o` open in editor, `f` search
- Docker: `Enter` exec into container, `v` switch view (containers/images), `a` toggle show all
- Network: `v` switch view (connections/interfaces/ports), `f` filter connections by state
- SSH: `x` disconnect latest session (terminates the ssh process)
- Scripts: `S` schedule selected script (example every 60s)
- Git: `Enter` open in editor, `S` scan for repositories
- Scratchpad: `n` new note, `c` copy to clipboard, `e` export to path, `R` rename, `f` search notes, `t` toggle preview
- Shell: `i` input command, `h` search history, `C` clear history
- Services: `s` start, `S` stop, `r` restart, `E` enable, `D` disable, `l` logs, `u` toggle user/system, `f` filter, `t` details
- Calculator: `` ` `` toggle typing mode, `←→↑↓` navigate buttons, `Enter/Space` press button, `m` toggle basic/scientific mode, `h` history view, `r` recall from history, `0-9` digits, `+/-/*//^%` operators, `()` parentheses, `c/C` clear/clear all, `y` copy result

**Sections:** `1` Dashboard, `2` Apps, `3` Bookmarks, `4` Clipboard, `\` Configs, `5` Docker, `6` Network, `7` SSH, `8` Scripts, `9` Git, `0` History, `-` Scratchpad, `=` Shell, `]` Services, `` ` `` Calculator, `[` Notifications

### Features
- **Dashboard**: running processes (scrollable), active SSH sessions, recent notifications
- **Apps**: auto-scan PATH for executables (on Windows, filters to .exe/.bat/.cmd/.ps1); show running processes via sysinfo
- **Bookmarks**: open files/dirs/URLs with platform-native open
- **Clipboard**: track clipboard history with timestamps, pin important entries, copy back to clipboard
- **Configs**: manage configuration files with backup, preview, copy, and search functionality
- **Docker**: view and manage containers and images; exec into running containers; toggle between running and all containers
- **Git**: scan directories for repositories; view status, branch, uncommitted changes, ahead/behind commits; open repositories in editor
- **Network**: monitor active connections with state filtering; view network interfaces with IP/MAC addresses; list listening ports with process info
- **SSH**: connect via system SSH (uses `-p `); auto-detects active sessions by scanning running `ssh` processes; disconnect (`x`) ends the underlying process
- **Scripts**: run commands; simple scheduling (example)
- **History**: browse and run recent shell commands
- **Scratchpad**: quick note-taking with auto-detection of your preferred editor (VSCode, Sublime, Notepad++, vim, etc.); search, rename, export, copy notes to clipboard
- **Shell**: embedded minimal shell terminal with built-in commands (`cd`, `pwd`, `history`, etc.) and external command execution through your system shell
- **Services**: manage system services (systemd/launchd/Windows Services); start/stop/restart, enable/disable, view logs, filter by state
- **Calculator**: visual calculator with button navigation, basic and scientific modes, expression evaluation, calculation history, and result copying
- **Notifications**: system-level notifications for actions
- Context-aware fuzzy search `/` per section
- Dynamic header: username, time, arch, detected shell, CPU cores and average usage

### Shell detection & history
- Detects shell: PowerShell (Windows), Bash, Zsh, or Fish
- Loads recent history from:
- PowerShell: `%APPDATA%/Microsoft/Windows/PowerShell/PSReadLine/ConsoleHost_history.txt`
- Bash: `~/.bash_history`
- Zsh: `~/.zsh_history`
- Fish: `~/.local/share/fish/fish_history` (or `%APPDATA%/fish/fish_history` on Windows)
- Header shows the detected shell

### Configuration
Location:
- Linux: `~/.config/launchr/config.toml`
- macOS: `~/Library/Application Support/launchr/config.toml`
- Windows: `%APPDATA%/launchr/config.toml`

On first run, a default file is created. Example (TOML):

```toml
# Bookmarks
[[bookmarks]]
name = "Home"
path = "~"
bookmark_type = "directory"

[[bookmarks]]
name = "Rust"
path = "https://www.rust-lang.org"
bookmark_type = "url"

# SSH Hosts
[[ssh_hosts]]
name = "Prod"
host = "prod.example.com"
port = 22
user = "ubuntu"

# Scripts
[[scripts]]
name = "List"
command = "ls -la"
description = "List current dir"

# Git repo search paths
git_search_paths = [
"~/Projects",
"~/Documents/GitHub",
"~/code",
]

# Scratchpad
[scratchpad]
editor = "nvim" # optional
# directory = "/path/to/notes" # optional

# Config files managed by Configs section
[[configs]]
name = "Bash Config"
path = "/home/you/.bashrc"
category = "Shell"
description = "Bash shell configuration"
editor = "nvim" # optional per-entry
```

An example file is available at `examples/config.example.toml`.

Add entries in-app:
- Bookmarks: `n` then `name|path|type`
- Configs: `n` then `name|path|category|description|editor`
- SSH: `n` then `name|user@host:port`
- Scripts: `n` then `name|command|description`

### Module Details

**Clipboard Module**
- Stores clipboard content with metadata (type, timestamp)
- Pin frequently used entries to keep them persistent
- Supports text, command, and URL types
- Windows: uses `clip` command for clipboard operations

**Configs Module**
- Track and manage configuration files with categories and descriptions
- Open configs in editor in new terminal window (respects $EDITOR or custom per-config editor)
- Create timestamped backups of config files
- Preview config contents with syntax highlighting (scrollable with ↑↓, Esc to exit)
- Directory preview: shows directory contents with file sizes, prioritizes common config files
- Syntax highlighting for JSON, YAML, TOML, INI, bash, SSH, Git, Docker, and more
- Copy config contents to clipboard (directory info for directories)
- Search configs by name, path, category, or description
- Auto-detects common configs on first run (bash, zsh, git, ssh, vim)
- Shows file size and last modified time

**Docker Module**
- Lists containers with status, image, and port information
- Lists Docker images with repository, tag, and size
- Exec into containers (opens new terminal window)
- Toggle between running containers and all containers
- Requires Docker CLI installed

**Git Module**
- Scans configurable search paths for Git repositories (default: ~/Projects, ~/Documents/GitHub, etc.)
- Displays repository status: clean, modified, ahead, behind
- Shows current branch, uncommitted changes count, and last commit message
- Opens repository in available editor (nvim, nano, code etc.)
- Requires Git CLI installed

**Network Module**
- Connections view: active network connections with protocol, addresses, state, and process info
- Interfaces view: network adapters with IP addresses, MAC addresses, and status
- Ports view: listening ports with process names and PIDs
- Filter connections by state (ESTABLISHED, LISTEN, etc.)
- Uses platform-specific commands: `ss`/`netstat` (Linux), `netstat` (macOS), `netstat`/`ipconfig` (Windows)

**Scratchpad Module**
- Quick note-taking with automatic editor detection (checks for VSCode, Sublime Text, Notepad++, vim, etc.)
- Opens editors in a new window/terminal - launchr remains responsive and non-blocking
- Auto-generates timestamped filenames or use custom names
- Search notes by filename or content
- Copy note contents to clipboard
- Export notes to custom paths
- Rename notes in-place
- Preview pane with toggle (`t`)
- Respects `EDITOR` environment variable or configured editor in config.toml
- Default storage: `~/.launchr/scratchpad/` (configurable)

**Shell Module**
- Embedded terminal with command execution
- Built-in commands: `cd`, `pwd`, `clear`, `exit`, `export`, `history`
- External command execution through system shell (PowerShell on Windows, bash/zsh on Unix)
- Command history with exit status indicators (✓/✗)
- Working directory tracking, history search, clear history
- Shows current prompt with user@hostname:dir format

**Services Module**
- Cross-platform: systemd (Linux), launchd (macOS), Windows Services
- Start, stop, restart, enable, disable services
- View service logs (systemd only)
- Filter by state (running/stopped/failed) or toggle user/system scope
- Displays state, PID, memory usage, enabled status, description, uptime
- Search services by name or description

**Calculator Module**
- Visual calculator interface with button navigation using arrow keys
- Basic arithmetic: addition, subtraction, multiplication, division, exponentiation, modulo
- Scientific functions: sin, cos, tan, sqrt, log, ln, exp, abs, reciprocal, square
- Expression parsing with proper order of operations and parentheses support
- Calculation history with timestamps and recall functionality
- Real-time expression evaluation as you type
- Copy results to clipboard
- Toggle between Basic and Scientific modes with automatic scrolling for large layouts
- Typing mode for direct expression input with visual button navigation
- History view with dedicated panel toggle

### Notes
- Uses `sysinfo` for processes, `which` for PATH resolution, and `crossterm`/`ratatui` for TUI.
- Some actions spawn external programs; ensure they exist in PATH (e.g., `ssh`, `docker`, `git`).
- Network monitoring requires appropriate permissions to view process information on some systems.

### License
MIT. See the `LICENSE` file in the repository.