z-hunter/Scanline-Term

Retro-futuristic multi-tab terminal emulator for Windows with optional physically-modelled WebGL CRT simulation, AI assistant and built-in minimalistic web browser, optimized for keyboard workflow.

TypeScript

12

254 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

Windows native terminal with CRT emulation - Scanline Term (r/commandline)

I had always wanted a modern Windows terminal that emulated a CRT monitor—something like **Cool Retro Term** for Linux. However, nothing of the sort existed for Windows, aside from a rather pathetic attempt at simulating scanlines in **Microsoft Terminal**. Even when Cool-Retro was eventually…

2

Oct 4, 2026

README

Scanline Term - The Past’s Future

Release Platform Built with Tauri License: MIT Buy Me a Coffee

Scanline Term

Scanline Term is a "retro-futuristic" Windows terminal emulator, featuring:

  • Instant response, GPU rendering, multithreading
  • Physical CRT screen simulation (toggleable)
  • Smooth pixel-by-pixel line scrolling, even in TUI applications
  • Lightweight and native
  • Historical and custom presets for various terminals and screens
  • Built-in mini web browser
  • Built-in AI assistant
  • Static sessions gallery for visual tab switching
  • Open Source

Combining the raw nostalgia of cathode-ray tube monitors with modern power-user capabilities — multi-tab ConPTY sessions, vim-like search, a Quake-style console global hotkey, and a context-aware AI terminal assistant — Scanline Term brings the golden era of computing straight into your modern developer workflow.


Why Scanline Term?

1. Authentic CRT Physics

Scanline Term features a custom multi-pass WebGL shader pipeline extracted from our Scanline game engine. It accurately simulates physical CRT phenomena:

  • Sinc-integrated Fourier scanlines with dynamic electron beam modulation.
  • Phosphor persistence & ghosting trails with ping-pong framebuffers and adjustable decay rates.
  • Multi-pass bloom & phosphor halation (soft and spiral diffusion algorithms).
  • Physical glass distortion: adjustable spherical barrel curvature, corner vignetting, and bezel ambient glow.
  • Hardware breathing & electrical fluctuations: HV deflection breathing under heavy load, anti-moiré filtering, and phosphor grain/noise.

Scanline Term

2. Keyboard-First Multitasking & Embedded WebView Browser

Keep your hands on the keyboard and stay in the zone:

  • Built-in WebView2 Browser Tabs: Open documentation, API references, or web tools right alongside your terminal (Menu + B or pass URLs via CLI). A blank browser tab starts on a local bookmark home page stored in %APPDATA%\\com.zhunter.scanlineterm\\home.json; each browser tab adopts the opened page's theme/background color.
  • Open Terminal Links: Hold Ctrl and middle-click an HTTP(S) URL in the terminal, including normal scrollback. The whole URL is highlighted while the pointer remains over it; release the middle button to open it in a new browser tab.
  • Fast Tab Switching: Jump between multiple live console sessions and browser tabs instantly using Menu + 1...9, or open the static Sessions Gallery with Menu + Backspace.
  • Tab Reordering: Drag the active tab left or right in the tab bar, or move it one position at a time with Menu + Shift + ←/→ or Menu + Shift + H/L. Tab numbers are refreshed automatically.

3. Native Windows ConPTY Engine

Built specifically for Windows with Rust and native APIs:

  • ConPTY Backend: Direct integration via conpty-oxide with bundled Windows ConPTY binaries.
  • Win32 Input Mode: Full support for Win32 Console Input Mode (?9001h), function keys, numpad application modes, and full mouse tracking (SGR 1006, drag, and any-event).

Scanline Term

Scanline Term

4. Quake-Style Global Hotkey

Summon Scanline Term from anywhere in Windows with a single keystroke. When you're done, press Win + ~ again to tuck it away without disrupting your active window layout.

5. AI Terminal Assistant

Connect any terminal session to an embedded Codex AI assistant (Menu + A). The operator can only see the terminal session and execute commands in it.

Scanline Term

Note: To use the AI Terminal Assistant, Codex CLI (version 0.152.1 or newer) must be installed on your system and available on your PATH.

6. Ultra-Lightweight & Fast

Scanline Term is built on Tauri 2 + Rust + WebGL. The production installer is only 25 MB* (most of which consists of the included fonts), launches instantly, and stays lightweight on system resources.


Scanline Term

Display Profiles & Virtual Resolutions

Scanline Term includes a CRT Display Lab settings panel (Menu + S) with live sliders for every visual parameter.

  • Curated Color Profiles: Classic DOS VGA, Windows Campbell, Amber Phosphor, Matrix Green Phosphor, Commodore 64, IBM 3279, Cyberpunk Neon, B&W (~6500K White Phosphor), and Phosphor Blue.
  • Virtual Resolutions: Toggle between authentic retro grid resolutions or pixel-sharp rendering:
    • VGA (640 × 480)
    • SVGA (800 × 600)
    • XGA (1024 × 768)
    • Native (Full resolution)

Keyboard Shortcuts Cheat Sheet

Note: The Menu key refers to the Application / Context Menu key (typically situated in the lower right keyboard row between Alt/Win and Ctrl).

ShortcutActionDescription
Win + ~Global Show/HideSummon or minimize Scanline Term from any Windows application
Alt + EnterFullscreen ToggleToggle distraction-free full-screen CRT mode
Menu + SSettings PanelOpen / close the real-time CRT shader lab and display controls
Menu + AAI Assistant PanelOpen / close the Codex AI assistant panel
Menu + NNew Terminal TabSpawn a new independent ConPTY shell session
Menu + BNew Browser TabOpen a local bookmark home page; links promote the tab to WebView2
Menu + WClose TabClose the active terminal session or browser tab
Menu + BackspaceSessions GalleryOpen / close a static fullscreen gallery of terminal and browser tabs
Menu + 1...9Switch TabSwitch directly to tab 1 through 9
Menu + → / Menu + >Next TabSwitch to the next terminal or browser tab (cycles)
Menu + Shift + → / Menu + Shift + LMove Tab RightMove the active tab one position to the right
Menu + Shift + ← / Menu + Shift + HMove Tab LeftMove the active tab one position to the left
Menu + ← / Menu + <Previous TabSwitch to the previous terminal or browser tab (cycles)
Menu + TabAlternate TabToggle back to the previously active tab
Menu + VPastePaste clipboard text into the active shell
Menu + CCopy ModeActivate rectangular screen selection and copy mode
Ctrl + Middle ClickOpen Terminal LinkHighlight the HTTP(S) URL under the pointer; release over it to open a new browser tab
Menu + /Find in TerminalOpen terminal-buffer search; type a query, then use Enter or n for the next match
Menu + Shift + /Find Back in TerminalOpen reverse terminal-buffer search; Enter or n moves to the previous match
Menu + PgUp / PgDnScroll BufferScroll the terminal screen and history buffer up or down

While terminal search is open, N reverses the search direction and Esc closes the overlay and restores terminal input. Search includes normal scrollback; in alternate-screen applications it covers the current screen only.

Menu + Backspace opens a static overview of all sessions; a primary click on unused workspace or tab-bar space does the same, including the outer monitor frame and the narrow physical-window gutters. Terminal cards retain their last CRT-rendered frame; browser cards show a title/type placeholder. Use arrows or h/j/k/l to move the selection. While Gallery is open, Menu + Shift + ←/→ or Menu + Shift + H/L moves the selected card one position horizontally, and Menu + Shift + ↑/↓ or Menu + Shift + K/J moves it to the nearest card in the adjacent row. Gallery reordering is keyboard-only; cards animate into their new positions and tab numbers are refreshed after every move. Enter, Space, or 1…9/0 opens a tab, while Esc, Menu + Backspace, or a click outside a card returns unchanged. Menu + N and Menu + B create a terminal or browser tab from the overview.

Tab Reordering

When the tab bar contains more than one tab, the active tab can be dragged left or right. The tab under the pointer becomes active when the drag starts; the tab follows the pointer and the other tabs make room, but the order is committed only when the pointer is released. Keyboard moves are discrete one-position steps and animate the tab to its new slot. All reorder paths keep tab numbering sequential.

Browser Tab Keyboard Navigation

Embedded WebView2 browser tabs feature a keyboard-first, Vim-inspired navigation mode:

KeyActionDescription
j / kScroll LineScroll page down / up (64px)
d / uHalf-Page ScrollScroll half page down / up
gg / GTop / BottomJump to top (gg) or bottom (G) of the page
h / l (or Backspace)History NavigationGo back (h / Backspace) or forward (l) in page history
fLink HintsShow asdfghjkl hints over interactive elements; on the local home page this covers links, buttons, inputs and the editor
o or F6Address / SearchOpen the native browser address overlay or focus the home search field
/Find in PageSearch text on the current page
rReloadReload the current page
iPass/Insert ModeEnter pass-through mode to interact directly with web page keys
EscNormal ModeExit hints, address bar, or pass/insert mode back to normal navigation
F5Home SafetyThe local home page consumes F5 so it cannot reload the application
Menu + ...App ShortcutsAll main app shortcuts (Menu + W, Menu + 1...9, Menu + B, etc.) remain fully accessible within browser tabs

Command-Line Usage

Scanline Term can be invoked from the command prompt, PowerShell, terminal scripts, or Windows shortcuts with custom arguments:

sterm [options] [target] [arguments...]

Command line Arguments

FlagParameterDescription
-TNoneOpen target in a new tab if an instance of Scanline Term is already running
-P<path>Set explicit working directory (cwd) for the launched terminal session
-S / --preset<name>Apply the named preset (without .json) to a new terminal tab

Target Arguments

The optional [target] argument is automatically detected and routed:

  • Directory Path (. or C:\path\to\dir): Launches the default shell in the specified directory.
  • Command or Executable (pwsh, cmd.exe, C:\tools\app.exe): Launches the given command or console program directly. Arguments after the executable are passed to it unchanged.
  • HTTP / HTTPS URL (https://... or http://...): Opens the URL directly in an embedded WebView2 browser tab.
  • Local document (C:\docs\manual.html, .htm, .html or .pdf): Opens the existing file in an embedded browser tab.

Practical Examples

# Launch default shell in the current working directory
sterm .

# Launch default shell in a specific project folder
sterm C:\Projects\MyProject

# Launch PowerShell with an explicit working directory
sterm -P C:\Projects\MyProject pwsh

# Launch an executable with arguments
sterm C:\Tools\watcher.exe --port 8080 --verbose

# Open a new tab in an existing Scanline Term window
sterm -T pwsh

# Open a local HTML/PDF document in the embedded browser
sterm C:\Docs\manual.html
sterm -T C:\Docs\manual.pdf

# Open a new tab with working directory set
sterm -T -P C:\Projects\MyProject

# Open an executable with arguments in a new tab
sterm -T C:\Tools\watcher.exe --port 8080

# Open a terminal tab using a named preset from the Presets list
sterm -T --preset "DEC VT-100 (1978)" pwsh

# Open documentation directly in the built-in CRT browser
sterm https://docs.rs

Installation

Download the latest pre-compiled Windows Installer (MSI) from the Releases page:

Download Scanline Term (Latest Release)

Run the .msi installer shown in the downloaded release assets. System requirements:

  • Windows 10 (version 17763+) or Windows 11 (64-bit)
  • Microsoft Edge WebView2 Runtime (pre-installed on most modern Windows systems)
  • (Optional) Codex CLI (version 0.152.1 or newer) on PATH if using the AI Terminal Assistant.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                       Windows Desktop                       │
│     Global Hotkey (Win+~) ─── Native Child WebViews (URL)   │
└──────────────────────────────┬──────────────────────────────┘
                               │
┌──────────────────────────────▼──────────────────────────────┐
│                    Rust Backend (Tauri 2)                   │
│   ConPTY Lifecycle (conpty-oxide) ── Codex App-Server IPC   │
└──────────────────────────────┬──────────────────────────────┘
                               │ Tauri Commands & Events
┌──────────────────────────────▼──────────────────────────────┐
│                  Frontend UI (React 19)                     │
│  Tab Manager ── Headless xterm Buffer ── UI Controls        │
└──────────────────────────────┬──────────────────────────────┘
                               │ Canvas 2D Text Grid
┌──────────────────────────────▼──────────────────────────────┐
│        Scanline Virtual Screen (external display module)    │
│      Virtual canvas ── CRT/pass-through ── Display canvas   │
└─────────────────────────────────────────────────────────────┘

For in-depth architectural details, check our comprehensive documentation in docs/:


Building from Source

Prerequisites

  1. Rust (stable x86_64-pc-windows-msvc toolchain)
  2. Node.js (v20+ recommended)
  3. Visual Studio C++ Build Tools

Development Workflow

# Clone the repository
git clone https://github.com/z-hunter/Scanline-Term.git
cd Scanline-Term

# Install frontend dependencies
npm install

# Start development in browser-only mode (simulated mock session for shader testing)
npm run dev

# Launch full native Tauri app with live ConPTY sessions
npm run tauri:dev

# Run frontend & backend test suites
npm test
cd src-tauri && cargo test

# Build production MSI installer
npm run tauri:build -- --bundles msi

Buy me a coffee

License

This project is licensed under the MIT License.
The display module is Scanline Virtual Screen, which has its own source-available license and commercial-use terms.


Enjoy CRT computing! PRs, suggestions, and feedback are always welcome.

z-hunter/Scanline-Term

Retro-futuristic multi-tab terminal emulator for Windows with optional physically-modelled WebGL CRT simulation, AI assistant and built-in minimalistic web browser, optimized for keyboard workflow.

TypeScript

12

254 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

Windows native terminal with CRT emulation - Scanline Term (r/commandline)

I had always wanted a modern Windows terminal that emulated a CRT monitor—something like **Cool Retro Term** for Linux. However, nothing of the sort existed for Windows, aside from a rather pathetic attempt at simulating scanlines in **Microsoft Terminal**. Even when Cool-Retro was eventually…

2

Oct 4, 2026

README

Scanline Term - The Past’s Future

Release Platform Built with Tauri License: MIT Buy Me a Coffee

Scanline Term

Scanline Term is a "retro-futuristic" Windows terminal emulator, featuring:

  • Instant response, GPU rendering, multithreading
  • Physical CRT screen simulation (toggleable)
  • Smooth pixel-by-pixel line scrolling, even in TUI applications
  • Lightweight and native
  • Historical and custom presets for various terminals and screens
  • Built-in mini web browser
  • Built-in AI assistant
  • Static sessions gallery for visual tab switching
  • Open Source

Combining the raw nostalgia of cathode-ray tube monitors with modern power-user capabilities — multi-tab ConPTY sessions, vim-like search, a Quake-style console global hotkey, and a context-aware AI terminal assistant — Scanline Term brings the golden era of computing straight into your modern developer workflow.


Why Scanline Term?

1. Authentic CRT Physics

Scanline Term features a custom multi-pass WebGL shader pipeline extracted from our Scanline game engine. It accurately simulates physical CRT phenomena:

  • Sinc-integrated Fourier scanlines with dynamic electron beam modulation.
  • Phosphor persistence & ghosting trails with ping-pong framebuffers and adjustable decay rates.
  • Multi-pass bloom & phosphor halation (soft and spiral diffusion algorithms).
  • Physical glass distortion: adjustable spherical barrel curvature, corner vignetting, and bezel ambient glow.
  • Hardware breathing & electrical fluctuations: HV deflection breathing under heavy load, anti-moiré filtering, and phosphor grain/noise.

Scanline Term

2. Keyboard-First Multitasking & Embedded WebView Browser

Keep your hands on the keyboard and stay in the zone:

  • Built-in WebView2 Browser Tabs: Open documentation, API references, or web tools right alongside your terminal (Menu + B or pass URLs via CLI). A blank browser tab starts on a local bookmark home page stored in %APPDATA%\\com.zhunter.scanlineterm\\home.json; each browser tab adopts the opened page's theme/background color.
  • Open Terminal Links: Hold Ctrl and middle-click an HTTP(S) URL in the terminal, including normal scrollback. The whole URL is highlighted while the pointer remains over it; release the middle button to open it in a new browser tab.
  • Fast Tab Switching: Jump between multiple live console sessions and browser tabs instantly using Menu + 1...9, or open the static Sessions Gallery with Menu + Backspace.
  • Tab Reordering: Drag the active tab left or right in the tab bar, or move it one position at a time with Menu + Shift + ←/→ or Menu + Shift + H/L. Tab numbers are refreshed automatically.

3. Native Windows ConPTY Engine

Built specifically for Windows with Rust and native APIs:

  • ConPTY Backend: Direct integration via conpty-oxide with bundled Windows ConPTY binaries.
  • Win32 Input Mode: Full support for Win32 Console Input Mode (?9001h), function keys, numpad application modes, and full mouse tracking (SGR 1006, drag, and any-event).

Scanline Term

Scanline Term

4. Quake-Style Global Hotkey

Summon Scanline Term from anywhere in Windows with a single keystroke. When you're done, press Win + ~ again to tuck it away without disrupting your active window layout.

5. AI Terminal Assistant

Connect any terminal session to an embedded Codex AI assistant (Menu + A). The operator can only see the terminal session and execute commands in it.

Scanline Term

Note: To use the AI Terminal Assistant, Codex CLI (version 0.152.1 or newer) must be installed on your system and available on your PATH.

6. Ultra-Lightweight & Fast

Scanline Term is built on Tauri 2 + Rust + WebGL. The production installer is only 25 MB* (most of which consists of the included fonts), launches instantly, and stays lightweight on system resources.


Scanline Term

Display Profiles & Virtual Resolutions

Scanline Term includes a CRT Display Lab settings panel (Menu + S) with live sliders for every visual parameter.

  • Curated Color Profiles: Classic DOS VGA, Windows Campbell, Amber Phosphor, Matrix Green Phosphor, Commodore 64, IBM 3279, Cyberpunk Neon, B&W (~6500K White Phosphor), and Phosphor Blue.
  • Virtual Resolutions: Toggle between authentic retro grid resolutions or pixel-sharp rendering:
    • VGA (640 × 480)
    • SVGA (800 × 600)
    • XGA (1024 × 768)
    • Native (Full resolution)

Keyboard Shortcuts Cheat Sheet

Note: The Menu key refers to the Application / Context Menu key (typically situated in the lower right keyboard row between Alt/Win and Ctrl).

ShortcutActionDescription
Win + ~Global Show/HideSummon or minimize Scanline Term from any Windows application
Alt + EnterFullscreen ToggleToggle distraction-free full-screen CRT mode
Menu + SSettings PanelOpen / close the real-time CRT shader lab and display controls
Menu + AAI Assistant PanelOpen / close the Codex AI assistant panel
Menu + NNew Terminal TabSpawn a new independent ConPTY shell session
Menu + BNew Browser TabOpen a local bookmark home page; links promote the tab to WebView2
Menu + WClose TabClose the active terminal session or browser tab
Menu + BackspaceSessions GalleryOpen / close a static fullscreen gallery of terminal and browser tabs
Menu + 1...9Switch TabSwitch directly to tab 1 through 9
Menu + → / Menu + >Next TabSwitch to the next terminal or browser tab (cycles)
Menu + Shift + → / Menu + Shift + LMove Tab RightMove the active tab one position to the right
Menu + Shift + ← / Menu + Shift + HMove Tab LeftMove the active tab one position to the left
Menu + ← / Menu + <Previous TabSwitch to the previous terminal or browser tab (cycles)
Menu + TabAlternate TabToggle back to the previously active tab
Menu + VPastePaste clipboard text into the active shell
Menu + CCopy ModeActivate rectangular screen selection and copy mode
Ctrl + Middle ClickOpen Terminal LinkHighlight the HTTP(S) URL under the pointer; release over it to open a new browser tab
Menu + /Find in TerminalOpen terminal-buffer search; type a query, then use Enter or n for the next match
Menu + Shift + /Find Back in TerminalOpen reverse terminal-buffer search; Enter or n moves to the previous match
Menu + PgUp / PgDnScroll BufferScroll the terminal screen and history buffer up or down

While terminal search is open, N reverses the search direction and Esc closes the overlay and restores terminal input. Search includes normal scrollback; in alternate-screen applications it covers the current screen only.

Menu + Backspace opens a static overview of all sessions; a primary click on unused workspace or tab-bar space does the same, including the outer monitor frame and the narrow physical-window gutters. Terminal cards retain their last CRT-rendered frame; browser cards show a title/type placeholder. Use arrows or h/j/k/l to move the selection. While Gallery is open, Menu + Shift + ←/→ or Menu + Shift + H/L moves the selected card one position horizontally, and Menu + Shift + ↑/↓ or Menu + Shift + K/J moves it to the nearest card in the adjacent row. Gallery reordering is keyboard-only; cards animate into their new positions and tab numbers are refreshed after every move. Enter, Space, or 1…9/0 opens a tab, while Esc, Menu + Backspace, or a click outside a card returns unchanged. Menu + N and Menu + B create a terminal or browser tab from the overview.

Tab Reordering

When the tab bar contains more than one tab, the active tab can be dragged left or right. The tab under the pointer becomes active when the drag starts; the tab follows the pointer and the other tabs make room, but the order is committed only when the pointer is released. Keyboard moves are discrete one-position steps and animate the tab to its new slot. All reorder paths keep tab numbering sequential.

Browser Tab Keyboard Navigation

Embedded WebView2 browser tabs feature a keyboard-first, Vim-inspired navigation mode:

KeyActionDescription
j / kScroll LineScroll page down / up (64px)
d / uHalf-Page ScrollScroll half page down / up
gg / GTop / BottomJump to top (gg) or bottom (G) of the page
h / l (or Backspace)History NavigationGo back (h / Backspace) or forward (l) in page history
fLink HintsShow asdfghjkl hints over interactive elements; on the local home page this covers links, buttons, inputs and the editor
o or F6Address / SearchOpen the native browser address overlay or focus the home search field
/Find in PageSearch text on the current page
rReloadReload the current page
iPass/Insert ModeEnter pass-through mode to interact directly with web page keys
EscNormal ModeExit hints, address bar, or pass/insert mode back to normal navigation
F5Home SafetyThe local home page consumes F5 so it cannot reload the application
Menu + ...App ShortcutsAll main app shortcuts (Menu + W, Menu + 1...9, Menu + B, etc.) remain fully accessible within browser tabs

Command-Line Usage

Scanline Term can be invoked from the command prompt, PowerShell, terminal scripts, or Windows shortcuts with custom arguments:

sterm [options] [target] [arguments...]

Command line Arguments

FlagParameterDescription
-TNoneOpen target in a new tab if an instance of Scanline Term is already running
-P<path>Set explicit working directory (cwd) for the launched terminal session
-S / --preset<name>Apply the named preset (without .json) to a new terminal tab

Target Arguments

The optional [target] argument is automatically detected and routed:

  • Directory Path (. or C:\path\to\dir): Launches the default shell in the specified directory.
  • Command or Executable (pwsh, cmd.exe, C:\tools\app.exe): Launches the given command or console program directly. Arguments after the executable are passed to it unchanged.
  • HTTP / HTTPS URL (https://... or http://...): Opens the URL directly in an embedded WebView2 browser tab.
  • Local document (C:\docs\manual.html, .htm, .html or .pdf): Opens the existing file in an embedded browser tab.

Practical Examples

# Launch default shell in the current working directory
sterm .

# Launch default shell in a specific project folder
sterm C:\Projects\MyProject

# Launch PowerShell with an explicit working directory
sterm -P C:\Projects\MyProject pwsh

# Launch an executable with arguments
sterm C:\Tools\watcher.exe --port 8080 --verbose

# Open a new tab in an existing Scanline Term window
sterm -T pwsh

# Open a local HTML/PDF document in the embedded browser
sterm C:\Docs\manual.html
sterm -T C:\Docs\manual.pdf

# Open a new tab with working directory set
sterm -T -P C:\Projects\MyProject

# Open an executable with arguments in a new tab
sterm -T C:\Tools\watcher.exe --port 8080

# Open a terminal tab using a named preset from the Presets list
sterm -T --preset "DEC VT-100 (1978)" pwsh

# Open documentation directly in the built-in CRT browser
sterm https://docs.rs

Installation

Download the latest pre-compiled Windows Installer (MSI) from the Releases page:

Download Scanline Term (Latest Release)

Run the .msi installer shown in the downloaded release assets. System requirements:

  • Windows 10 (version 17763+) or Windows 11 (64-bit)
  • Microsoft Edge WebView2 Runtime (pre-installed on most modern Windows systems)
  • (Optional) Codex CLI (version 0.152.1 or newer) on PATH if using the AI Terminal Assistant.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                       Windows Desktop                       │
│     Global Hotkey (Win+~) ─── Native Child WebViews (URL)   │
└──────────────────────────────┬──────────────────────────────┘
                               │
┌──────────────────────────────▼──────────────────────────────┐
│                    Rust Backend (Tauri 2)                   │
│   ConPTY Lifecycle (conpty-oxide) ── Codex App-Server IPC   │
└──────────────────────────────┬──────────────────────────────┘
                               │ Tauri Commands & Events
┌──────────────────────────────▼──────────────────────────────┐
│                  Frontend UI (React 19)                     │
│  Tab Manager ── Headless xterm Buffer ── UI Controls        │
└──────────────────────────────┬──────────────────────────────┘
                               │ Canvas 2D Text Grid
┌──────────────────────────────▼──────────────────────────────┐
│        Scanline Virtual Screen (external display module)    │
│      Virtual canvas ── CRT/pass-through ── Display canvas   │
└─────────────────────────────────────────────────────────────┘

For in-depth architectural details, check our comprehensive documentation in docs/:


Building from Source

Prerequisites

  1. Rust (stable x86_64-pc-windows-msvc toolchain)
  2. Node.js (v20+ recommended)
  3. Visual Studio C++ Build Tools

Development Workflow

# Clone the repository
git clone https://github.com/z-hunter/Scanline-Term.git
cd Scanline-Term

# Install frontend dependencies
npm install

# Start development in browser-only mode (simulated mock session for shader testing)
npm run dev

# Launch full native Tauri app with live ConPTY sessions
npm run tauri:dev

# Run frontend & backend test suites
npm test
cd src-tauri && cargo test

# Build production MSI installer
npm run tauri:build -- --bundles msi

Buy me a coffee

License

This project is licensed under the MIT License.
The display module is Scanline Virtual Screen, which has its own source-available license and commercial-use terms.


Enjoy CRT computing! PRs, suggestions, and feedback are always welcome.

Languages

TypeScript

74.4%

Rust

15.9%

HTML

5.2%

CSS

4.3%