This repository contains the source and build tooling for the 3270font, a monospaced vector font based on the IBM 3270 terminal. The primary artifact is a FontForge SFD file (3270_HQ.sfd) which is processed by a FontForge script (generate_derived.pe) to produce OTF, TTF, WOFF, and other font formats. The build system is orchestrated by a Makefile that also generates sample images, runs tests (fontlint, Font Bakery), and can install the fonts. Supporting Python scripts include generate_grid.py for creating FontForge guide grids and generate_sample_image.py for rendering sample text. The project includes CI via Travis and GitHub Actions, a Dockerfile for reproducible builds, and a pre-commit hook for code quality. While primarily a font design project, it functions as a build pipeline for a digital asset, with well-structured scripts and automated testing.
wego is a terminal weather client that fetches data from multiple weather APIs and displays it in various formats. It features a plugin architecture that allows easy addition of new backends (weather data sources) and frontends (output formats). The application handles configuration via environment variables, config files, and command-line flags, with caching to reduce API calls.
Guake is a drop-down terminal emulator for the GNOME desktop environment, inspired by the Quake game terminal. It provides a fast, keyboard-driven terminal that slides down from the top of the screen with a single keystroke (default F12). The application is built with Python 3, GTK3, and VTE (Virtual Terminal Emulator), and uses GSettings for configuration, D-Bus for remote control, and Glade for UI layout. It supports tabs, split terminals, customizable color palettes, background images, transparency, session save/restore, workspace-aware tab sets, and extensive keyboard shortcuts. The architecture is modular, with separate modules for preferences, keybindings, terminal management, and utilities, though some files (e.g., guake_app.py, prefs.py) are large and tightly coupled. The codebase shows signs of technical debt such as deprecated GTK APIs, Python 2 compatibility remnants, and partial Wayland support, but remains actively maintained with a comprehensive CI pipeline and regular releases.
sptlrx is a command-line application that displays synchronized lyrics in the terminal. It fetches currently playing track information from various music players (Spotify, MPD, Mopidy, MPRIS, or browser extensions) and retrieves lyrics from lrclib.net or local LRC files. The core functionality revolves around a pool package that synchronizes player state with lyric timing, updating a Bubbletea-based terminal UI in real-time. The application features configurable styling, multiple player support, and a pipe mode for outputting lyrics to stdout.
ttab is a single-file Bash CLI that programmatically opens new terminal tabs and windows on macOS (Terminal.app and iTerm2) and Linux (gnome-terminal). It supports running startup commands in the new tab, setting working directory, title, and profile, creating iTerm2 horizontal/vertical splits (-v/-h), creating tabs without stealing focus (-g/-G), delaying command submission (-l), and clearing the screen (-q). The entire application is bin/ttab: a ~700-line Bash script with zero runtime dependencies that parses options via getopts, detects the calling terminal through TERM_PROGRAM / GNOME_TERMINAL_SCREEN or an explicit -a flag, synthesizes backend-specific automation (AppleScript for Terminal.app and iTerm2, with distinct v2/v3 syntax paths, and a CLI argument string for gnome-terminal), and executes it via 'exec osascript' on macOS or eval on Linux. It embeds its full Markdown man page as a here-doc extracted by sed, so --help, --man, and --man-source all work from the single distributed file.
cool-retro-term is a desktop terminal emulator that simulates the visual appearance of vintage cathode-ray tube (CRT) monitors. It renders a real terminal session (via QMLTermWidget) with a chain of GPU shader effects including scanline patterns, bloom, screen curvature, burn-in, chromatic aberration, and frame reflections. The application is built with Qt 6 (QML and C++) and runs on Linux and macOS. It provides a rich settings interface for customizing all visual parameters, and ships with 14 built-in retro profiles (e.g., Amber, Green, Commodore 64, Apple II) and a curated collection of bitmap fonts to match authentic terminal looks. Architecturally, the C++ layer handles font management (FontManager), font list models, file I/O, and the main entry point. The QML layer composes the terminal window, tabs, settings panels, and the shader pipeline. Shaders are pre-compiled into .qsb files for 48+ combinations of effect flags, enabling smooth runtime switching without compilation latency. Persistent settings are stored in SQLite via a thin QML wrapper (Storage.qml). The application uses two Git submodules: qmltermwidget for the actual terminal emulation and KDSingleApplication for single-instance enforcement. Key entry points include app/main.cpp (C++ startup), app/qml/main.qml (QML root), and the shader fragment files in app/shaders/. External dependencies are Qt 6, QMLTermWidget, and KDSingleApplication. The build system is qmake (with a planned but not yet executed migration to CMake). Packaging is provided for AppImage, DMG, Debian, RPM, and Snap.
yewtube is a terminal-based YouTube player and downloader, forked from mps-youtube. It provides a full-featured CLI for searching, streaming, downloading, and managing YouTube content without requiring a YouTube API key. The application uses yt-dlp and youtube-search-python as backends for video extraction and search. It supports multiple media players (mpv, mplayer, VLC), MPRIS integration for desktop media control, Last.fm scrobbling, playlist management (local and YouTube), and various download/transcoding options. The architecture is a monolithic Python application with a command-loop pattern, global state management via a dedicated module, and a plugin-like player abstraction. While the codebase shows its age with some tightly coupled modules and global variables, it contains well-designed components such as a config system with validation, an abstract player interface, and a command registration decorator. The project is actively maintained with recent commits and releases.
git-log-tree is a single-file Bash CLI tool that renders a fancy, colored git log graph in the terminal. It wraps `git log` with `--topo-order`, `--parents`, and a custom pretty format, then parses the output to draw a tree using Unicode box-drawing characters and ANSI colors. The script handles complex branching, merges, and orphan commits, assigning colors to branches with an algorithm that minimizes reuse and ensures contrast. It respects the `NO_COLOR` environment variable and auto-detects color support. The tool pipes output through `less -F -R -S -X` for paging. The repository includes a comprehensive BATS test that creates a synthetic git history via fast-import and verifies the exact rendered output, along with a GitHub Actions workflow for coverage via kcov. The code is well-structured for a Bash script, using associative arrays and bit manipulation for efficient color sorting, but is monolithic with global state, limiting component reusability.
termbox-go is a minimalistic Go library for building text-based user interfaces (TUIs). It provides a clean API for cell-based screen manipulation, keyboard and mouse input, and multiple output modes (normal, 256, 216, grayscale, RGB). The library abstracts over Unix terminals (via terminfo and ANSI escape codes) and the Windows console (via Win32 API). Architecture uses double-buffering: a back buffer is modified by the user, then flushed to a front buffer and rendered to the terminal. Input events are processed asynchronously via a goroutine and channel. The library is stable and widely used (godit, termui, gocui, etc.) but the README explicitly states it is no longer actively maintained; users may consider gdamore/tcell as a more modern alternative. The codebase is well-organized with platform-specific files using Go build tags, though it exhibits some global state and sparse test coverage.
turm is a terminal user interface (TUI) application for monitoring and managing Slurm workload manager jobs. It provides real-time job tracking, log viewing, and job control capabilities through a keyboard-driven interface. The application architecture centers around two main background threads: a job watcher that periodically executes `squeue` to gather job information, and a file watcher that monitors job output files for changes using efficient tail-like reading with polling fallback for network filesystems. The UI is built with ratatui and handles user input via crossterm, offering features like job filtering, sorting, scrollable logs, and interactive dialogs for job control operations. The project includes mock implementations of Slurm commands for local development and testing without requiring an actual Slurm cluster.
This repository provides an xontrib (plugin) for the Xonsh shell that adds a `cheatsheet` command to open the project's README.md in a web browser. The README.md serves as a comprehensive cheat sheet for the Xonsh shell, covering installation, basics, and advanced topics. The repository also includes an example script demonstrating how to make web requests, process output, and use colored output in Xonsh.
term39 is a cross-platform terminal multiplexer and emulator built in Rust, featuring a retro MS-DOS aesthetic. It provides a full-screen text interface with window management (drag, resize, minimize, maximize, auto-tiling), terminal emulation via VTE ANSI parsing and PTY integration, session persistence through a Unix daemon, a lockscreen with OS-level authentication (PAM, macOS DS, Windows Security, PIN), and an optional Linux framebuffer backend for direct console rendering. The application supports multiple platforms including Linux, macOS, Windows, FreeBSD, NetBSD, OpenBSD, and Android/Termux, with feature-gated builds via Cargo features. The architecture is modular: an event loop drives input handling (keyboard, mouse) and rendering through a `RenderBackend` trait that abstracts terminal (crossterm) and framebuffer backends. The UI is composed of widgets (top bar, battery, network, system menu) and dialogs (config, prompt, toast, info). Terminal state is managed by `TerminalGrid` and `TerminalEmulator`, with ANSI escape sequences parsed by `AnsiHandler`. Session persistence uses a client/daemon pattern over Unix domain sockets, allowing windows to be detached and reattached. The lockscreen supports multiple authentication backends via a factory pattern. While the codebase is feature-rich and well-structured in many areas, it exhibits some technical drift: dead code artifacts (e.g., a disabled restore line in main.rs), heavy use of `#[allow(dead_code)]`, platform-specific code duplication, and unsafe operations in forking and signal handling. The rapid version history (0.1.0 to 1.6.0 in about a year) suggests fast iteration, which may have introduced some technical debt. Nonetheless, the project demonstrates strong engineering in its abstraction layers, widget system, and cross-platform support.
goploader is a self-hosted file sharing system consisting of a Go-based command-line client and web server. The server provides both a web interface and REST API for file uploads/downloads, featuring optional client-side encryption (where encryption keys are never stored server-side), automatic expiration-based cleanup, and metadata storage via BoltDB. The client supports terminal-based uploads with features like progress bars, screenshot capture, and clipboard integration. Architecture follows a layered design with separation between HTTP handlers (views), data models, and utility components. While the core functionality is well-implemented, the codebase shows signs of technical debt including outdated frontend dependencies (Font Awesome 4.7.0), inconsistent Go version references, and a cryptographic concern (static IV in AES encryption mode). The maintainer explicitly notes the technology is outdated but maintains the repository in a working state.
Pokemon-Terminal is a CLI tool that sets Pokemon images as terminal backgrounds or desktop wallpapers. It supports multiple terminal emulators (iTerm2, ConEmu, Terminology, Tilix, Windows Terminal, Kitty) and desktop environments (macOS, GNOME, sway, feh, swww, Windows) via a clean adapter pattern with runtime discovery. The system parses user-supplied filters (name, region, type, brightness) from a database of 719 Pokemon plus custom extras, then applies the selected image to the terminal or wallpaper. It also features a slideshow mode using multiprocessing and platform-specific named events for IPC. While the codebase has some rough edges (global mutable state in filters, a hacky unittest.mock.patch in production for POSIX named event detection), the overall architecture is well-modularized and demonstrates solid use of abstraction and reflection. The repo is actively maintained with recent commits and a large community (4.8k stars).
A minimalist Node.js HTTP server that streams an animated ASCII art party parrot to curl clients. The server loads ten ASCII frames from local files into memory, colors them randomly from a palette, and streams them with a 70ms interval, respecting backpressure. It also supports an optional `?flip=true` query parameter to mirror the animation horizontally. The primary entry point is `index.js`, with an `nginx.conf` for reverse proxy deployment and a PowerShell script for Windows clients. The system is a single-file monolith with no database, no external APIs, and two npm dependencies (colors and mz). It is designed for a single playful purpose: `curl parrot.live` displays the animated parrot in terminals. The code is straightforward, functional, but lacks tests, CI, or modularity beyond the single server file.
This repository is a collection of terminal color themes for the Warp terminal emulator, organized into categories (standard, base16, warp_bundled, special_edition, etc.). The primary content is YAML configuration files defining ANSI color palettes, accent colors, background images, and theme metadata. A single Python script (gen_theme_previews.py) generates SVG preview images from these YAML files and produces a README table with embedded previews. The repository is essentially a static theme gallery with a minimal utility script, not a running application or data pipeline. It serves as both a distribution channel for official Warp themes and a contribution point for community themes.
This repository is a step-by-step tutorial for building a minimal text editor called 'kilo' in C, based on antirez's original kilo. It is not a runnable application itself but a set of documentation and a diff file (steps.diff) containing the incremental code changes. The tutorial guides the user through 184 steps to create a terminal-based text editor with features like raw mode input, cursor movement, file I/O, search, and syntax highlighting. The code is a single C file with no external dependencies, targeting POSIX terminals. The repository is primarily educational, with the actual source code embedded in the diff file rather than as a standalone project. It has not been updated since 2017, making it stale, but the code remains functional on modern systems due to its simplicity and use of standard C99.
This repository is the open-source CLI client for Amazon Q Developer (formerly CodeWhisperer), now deprecated in favor of the closed-source Kiro CLI. It is a Rust workspace with approximately 2000 files, building two main binaries: `q` (terminal chat assistant) and `qchat` (legacy chat binary). The codebase is dominated by auto-generated AWS SDK client crates (amzn-codewhisperer-client, amzn-codewhisperer-streaming-client, amzn-qdeveloper-streaming-client, amzn-consolas-client, amzn-toolkit-telemetry-client), which are Smithy-generated and checked in. Hand-written code includes the chat CLI interactive loop, an agent framework with MCP (Model Context Protocol) support, a semantic search client using local ONNX models (MiniLM) and BM25 indexing, authentication (OIDC with device grant flow), telemetry, and an OS abstraction layer. The architecture is essentially a monolithic CLI application with multiple supporting libraries. About 90% of the source files are generated code, which means the hand-crafted components are relatively small. The project was previously actively maintained but is now effectively archived; the README states only critical security fixes will be accepted.
Upterm is a terminal emulator for the 21st century, built as an Electron desktop application with TypeScript and React. It provides an IDE-like terminal experience with features such as autocompletion (for git, npm, brew, and many other commands), output prettyfiers (JSON tree, git grep, image display), multiple tabs and split sessions, a custom shell parser, and a plugin system. The application uses node-pty for pseudo-terminal management and Monaco Editor for the prompt input. It also includes a full VT100/xterm-compatible terminal emulator (Output.ts) that handles ANSI escape sequences, scrolling, cursor movements, and SGR attributes. Architecturally, Upterm follows a modular pattern with services (FontService, HistoryService, GitService, etc.) that communicate via RxJS observables, a plugin manager that registers autocompletion providers and prettyfiers, and a shell layer that parses commands and manages jobs. The codebase is well-structured and demonstrates non-obvious craftsmanship in areas like the history trie for fuzzy matching, man page parsing for flag extraction, and the terminal buffer implementation. However, the project is explicitly deprecated and unmaintained. The README states it is no longer accepting pull requests or issues. The codebase relies on outdated dependencies (Node 8.11.0, Electron 2.0.10, React 16.2.0) and has several incomplete features and security concerns (e.g., execFile with user-controlled input). Despite its quality, the technical drift is high, and the repository should be considered a reference or learning resource rather than a production-ready tool.
This repository is an awesome list of macOS command-line tools and tips, but it has been permanently moved to the author's personal Git instance. The GitHub repository now serves only as a notice with a patch-based contribution policy. There is no executable code, no dependencies, and no reusable components. The actual knowledge base lives elsewhere; this repo is effectively a dead link.