Skip to main content

A hardware-accelerated SSH terminal emulator with authentic retro CRT effects, inspired by the Cool Retro Terminal project

Project description

CoolPyTerm

A hardware-accelerated SSH terminal emulator with authentic retro CRT effects, built with PyQt6 and OpenGL. Inspired by the Cool Retro Terminal project.

CoolPyTerm Screenshot

✨ Features

🔌 Advanced SSH Connection Management

  • Connection Profiles: Save, organize, and manage multiple SSH connections
  • Recent Connections: Quick access to recently used connections (marked with ⭐)
  • Authentication Support: Password and SSH key authentication
  • Connection Dialog: Enhanced UI with password fields and key file browser
  • Profile Management: Create, edit, and delete connection profiles

🖥️ Hardware-Accelerated Terminal

  • OpenGL Rendering: Smooth, hardware-accelerated text rendering
  • Full Screen Support: Immersive full-screen terminal experience
  • Dynamic Resizing: Automatic terminal resizing with proper PTY handling
  • Character Grid: Efficient grid-based text rendering system

🎨 Authentic CRT Effects

  • Phosphor Glow: Realistic phosphor afterglow effects
  • Scanlines: Adjustable CRT scanline simulation
  • Screen Curvature: Subtle barrel distortion for authenticity
  • Ambient Background Glow: Subtle phosphor illumination across the screen
  • Brightness & Contrast: Adjustable CRT-style image controls
  • Auto-DPI Scaling: Automatic effect adjustment based on screen resolution

🎭 Retro Themes

  • Green Phosphor: Classic green monochrome CRT terminal
  • Amber Phosphor: Warm amber terminal with enhanced glow
  • DOS Terminal: Retro blue DOS-style terminal

⌨️ Terminal Features

  • Full ANSI Support: Complete terminal emulation with color support
  • Scrollback Buffer: History navigation and scrolling
  • Cursor Control: Blinking cursor with adjustable rate
  • Key Mapping: Comprehensive SSH key handling
  • Clipboard Support: Copy/paste functionality

🚀 Installation

Prerequisites

  • Python 3.10+
  • PyQt6
  • PyOpenGL (for hardware acceleration)
  • SSH client libraries

Install Dependencies

pip install -r requirements.txt

Required Packages

PyQt6
PyOpenGL
PyOpenGL_accelerate
paramiko
pyte
numpy

🎮 Usage

Starting the Application

python -m coolpyterm.cpt

First Run

  1. Connection Dialog: The application starts with a connection dialog
  2. Enter SSH Details: Hostname, username, password/key file
  3. Save Profile: Optionally save connection details for future use
  4. Connect: Click "Connect" to establish SSH session

Connection Management

  • Ctrl+M: Open connection manager
  • Ctrl+N: Create new connection
  • Double-click: Connect to saved profile instantly

⌨️ Keyboard Shortcuts

Application Controls

  • Ctrl+Alt+F11: Toggle full screen mode
  • Ctrl+Q: Quit application
  • Ctrl+V: Paste from clipboard
  • Escape: Exit full screen (in full screen mode)

Visual Effects

  • Ctrl+G: Toggle phosphor glow
  • Ctrl+S: Toggle scanlines
  • Ctrl+Shift+A: Toggle ambient background glow
  • Ctrl+Alt+I: Increase ambient glow intensity
  • Ctrl+Alt+O: Decrease ambient glow intensity

Terminal Controls

  • Standard SSH keys: All standard terminal key combinations work
  • Function keys: F1-F12 support
  • Arrow keys: Navigation support
  • Ctrl+C: Send SIGINT
  • Ctrl+D: Send EOF
  • Ctrl+Z: Send SIGTSTP

🎨 Themes

Green Phosphor (Default)

Classic green monochrome CRT appearance with moderate phosphor persistence and subtle background glow.

Amber Phosphor

Warm amber coloring reminiscent of early computer terminals, with enhanced background glow for that cozy retro feel.

DOS Terminal

Blue-tinted terminal mimicking classic DOS and early PC interfaces with crisp, high-contrast appearance.

⚙️ Configuration

Settings

  • Connection profiles are automatically saved
  • Window geometry and state persistence
  • Theme preferences
  • Effect intensity settings

Auto-Adjustment Features

  • Scanline DPI Scaling: Automatically adjusts scanline intensity based on screen DPI
  • Font Scaling: Responsive font sizing
  • Effect Optimization: Performance-optimized rendering

🔧 Advanced Features

Full Screen Mode

  • Borderless Display: True full screen experience
  • Menu-Free Interface: Clean, distraction-free terminal
  • Proper Geometry: Exact screen coverage
  • Easy Exit: Escape key or Ctrl+Alt+F11

CRT Authenticity

  • Phosphor Persistence: Realistic afterglow simulation
  • Variable Intensity: Adjustable effect levels
  • Theme Integration: Effects tailored to each theme
  • Hardware Acceleration: Smooth 60fps rendering

Connection Features

  • Recent History: Track and prioritize recent connections
  • Profile Export/Import: (Planned feature)
  • Connection Validation: Pre-connection testing
  • Error Handling: Graceful connection failure management

🛠️ Development

Project Structure

coolpyterm/
├── cpt.py                    # Main application entry point
├── connection_manager.py     # SSH connection management
├── opengl_grid_widget.py    # Hardware-accelerated rendering
├── retro_theme_manager.py   # Theme system
├── ssh_backend.py           # SSH connection handling
├── key_handler_ssh.py       # Keyboard input processing
├── settings_manager.py      # Configuration management
└── logs/                    # Application logs

Key Components

  • OpenGL Shaders: Custom fragment shaders for CRT effects
  • SSH Backend: Paramiko-based SSH client
  • Grid Rendering: Efficient character grid system
  • Theme Engine: Extensible color scheme system

📋 System Requirements

Minimum Requirements

  • OS: Windows 10, macOS 10.14, or Linux
  • Python: 3.10 or higher
  • Graphics: OpenGL 3.3 support

Recommended

  • Graphics: Dedicated GPU for best performance
  • Display: High DPI display for optimal scanline effects
  • Memory: 1GB+ RAM for large scrollback buffers

🐛 Troubleshooting

OpenGL Issues

# Check OpenGL support
python -m coolpyterm.checkogl

Connection Problems

  • Verify SSH credentials
  • Check network connectivity
  • Review connection logs in logs/ directory

Performance Issues

  • Disable effects on slower systems
  • Reduce font size for better performance
  • Use windowed mode instead of full screen

Building Distributions with setup.py

1. Development Installation

# Install in development/editable mode
pip install -e .

# Install with development dependencies
pip install -e ".[dev]"

# Test the installation
coolpyterm
python -m coolpyterm

2. Building Wheel Distribution

# Install build dependencies
pip install wheel setuptools

# Build wheel (recommended format)
python setup.py bdist_wheel

# Creates: dist/coolpyterm-1.0.0-py3-none-any.whl

3. Building Source Distribution

# Build source distribution (tarball)
python setup.py sdist

# Creates: dist/coolpyterm-1.0.0.tar.gz

4. Building Both Wheel and Source

# Build both wheel and source distribution
python setup.py sdist bdist_wheel

# Creates both:
# dist/coolpyterm-1.0.0.tar.gz
# dist/coolpyterm-1.0.0-py3-none-any.whl

5. Clean Build (Recommended)

# Clean previous builds
python setup.py clean --all
rm -rf build/ dist/ *.egg-info/

# Fresh build
python setup.py sdist bdist_wheel

# Verify contents
twine check dist/*

Windows Build Commands

# Windows equivalent of clean build
python setup.py clean --all
if exist build rmdir /s /q build
if exist dist rmdir /s /q dist
for /d %%i in (*.egg-info) do rmdir /s /q "%%i"

# Build distributions
python setup.py sdist bdist_wheel

# Verify
twine check dist\*

Upload to PyPI

# Install upload tools
pip install twine

# Check distributions before upload
twine check dist/*

# Upload to Test PyPI first (recommended)
twine upload --repository testpypi dist/*

# Upload to real PyPI
twine upload dist/*

📜 License

[Add your license information here]

🏆 Acknowledgments

  • PyQt6: For the excellent GUI framework
  • OpenGL: For hardware acceleration capabilities
  • Paramiko: For robust SSH connectivity
  • Pyte: For terminal emulation support

CoolPyTerm - Where modern technology meets retro aesthetics. Experience the nostalgia of classic terminals with the power of contemporary hardware acceleration.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coolpyterm-0.1.2.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coolpyterm-0.1.2-py3-none-any.whl (72.0 kB view details)

Uploaded Python 3

File details

Details for the file coolpyterm-0.1.2.tar.gz.

File metadata

  • Download URL: coolpyterm-0.1.2.tar.gz
  • Upload date:
  • Size: 72.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for coolpyterm-0.1.2.tar.gz
Algorithm Hash digest
SHA256 dc14e145794b813d60eb43ea796004195ea89f88f8f6e60fea5429165ad5a50a
MD5 3c5ec68fdf7c23dc8bcca189300900f1
BLAKE2b-256 5fdc89b87f27e36c8466ff94bc2594508e36c1fb611f316e7b3a7266d7787b5f

See more details on using hashes here.

File details

Details for the file coolpyterm-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: coolpyterm-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 72.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for coolpyterm-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3f296e95c3176129f61884629f2f72c534ec7c882c03aec04aa516c8154f5ebc
MD5 7e2220d18b5ff9e0d6b438c1ba007b70
BLAKE2b-256 e83a9b11c630a71a669299f76f2cd7bfa38ea46e76389341ad43da3df42f6875

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page