Laravel Packages

Screen is a terminal renderer written in pure PHP

Published
Screen is a terminal renderer written in pure PHP image

Screen is a terminal renderer created by Aaron Francis that is written in pure PHP. It powers Solo for Laravel and can be used to build rich text-based user interfaces in any PHP application. However, it is not a standalone terminal application and should not be confused with the GNU Screen application in Linux.

What is a terminal renderer? A terminal renderer is responsible for processing text, and ANSI escape sequences to create a virtual representation of the terminal output. It interprets escape sequences to track cursor position, apply text formatting, and manage screen content.

Screen, therefore, helps to safely interpret ANSI operations within an isolated environment, ensuring terminal output is rendered correctly and contained within designated areas.

Features

  • Pure PHP Implementation: Only one dependency (Grapheme, another Solo library)
  • Comprehensive ANSI Support: Handles cursor positioning, text styling, and screen manipulation
  • Unicode/Multibyte Support: Properly handles UTF-8 characters including emojis and wide characters
  • Buffer Management: Maintains separate buffers for text content and styling
  • Character Width Handling: Correctly calculates display width for CJK and other double-width characters
  • Scrolling: Support for vertical scrolling with proper content management

Example

use SoloTerm\Screen\Screen;
 
// Create a screen with dimensions (columns, rows)
$screen = new Screen(80, 24);
 
// Draw a border
$screen->write("┌" . str_repeat("─", 78) . "┐\n");
for ($i = 0; $i < 6; $i++) {
$screen->write("│" . str_repeat(" ", 78) . "│\n");
}
$screen->write("└" . str_repeat("─", 78) . "┘");
 
// Write text and ANSI escape sequences
$screen->write("\e[3;25HHello, \e[1;31mLaravel News Community!\e[0m");
 
// Move cursor and add more text
$screen->write("\e[5;30HYou are amazing! 🎉");
 
// Get the rendered content
echo $screen->output();

The output would look like the following:

Install this package via Composer:

composer require soloterm/screen

Learn more about this package and view the source code on GitHub.

Yannick Lyn Fatt photo

Staff Writer at Laravel News and Full stack web developer.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Fresh Package: Laravel Package Skeleton with Testbench, CI, and Boost Integration image

Fresh Package: Laravel Package Skeleton with Testbench, CI, and Boost Integration

Read article
Inertia DevTools Now Available for Firefox image

Inertia DevTools Now Available for Firefox

Read article
Laravel Scalpel Scans for Filesystem Intrusion Evidence image

Laravel Scalpel Scans for Filesystem Intrusion Evidence

Read article
Mercure Broadcasting in Laravel 13.32 image

Mercure Broadcasting in Laravel 13.32

Read article
Super Stack: Laravel Starter Kit With Filament and NativePHP image

Super Stack: Laravel Starter Kit With Filament and NativePHP

Read article
Laravel MCP 1.0 Is Released image

Laravel MCP 1.0 Is Released

Read article