Fact-checked by Grok 2 weeks ago

rxvt

rxvt is a lightweight, color-capable for the , designed as a resource-efficient replacement for , particularly for users who do not require advanced features such as 4014 emulation or extensive control sequences. Originating from the Xvt terminal emulator developed by Bovey in 1992, rxvt was heavily modified by Rob Nation in 1992–1993 as part of the project to provide a simpler and lighter alternative. Key features include support for up to 16 colors, a configurable scrollback buffer (defaulting to 64 lines, with a maximum of ), multiple font encodings like ISO-8859 and EUC-JP, and options for text selection, insertion, and an optional scrollbar. It emphasizes minimal resource usage, such as reduced swap space for multiple sessions, and is configurable via command-line options (e.g., for background, foreground, and font) or X resources like geometry and saveLines. While the original rxvt project, coordinated by Geoff Wing, reached version 2.7.10 in 2002 and has been unmaintained since then but remains available via source distributions, active development has largely shifted to forks like rxvt-unicode (urxvt), which extends it with support, Xft fonts, Perl-based customizations, and daemon mode for improved efficiency across multiple windows and displays. rxvt is valued in environments for its simplicity, portability, extensibility, and separation from dependencies, making it a preferred choice for power users seeking a fast, no-frills interface.

History

Origins and Early Development

The originated as a of the xvt project, which was developed by John Bovey at the in 1992. xvt itself was designed as a lightweight X11 compatible with but with reduced memory usage. In the same year, Rob Nation significantly modified xvt to create rxvt, aiming to produce a more efficient VT102-compatible terminal that minimized resource demands, particularly swap space, while serving as a direct alternative to for users not requiring advanced features like 4014 emulation. The name "rxvt" initially stood for "Rob's xvt," reflecting its creator's personal adaptation of the predecessor. Early development focused on core VT102 emulation basics, including improved color support to enable richer text rendering without the overhead of full configurability. These initial efforts prioritized simplicity and performance, making rxvt appealing for resource-constrained systems in the early 1990s. A key early milestone occurred in 1993, when rxvt version 0.5 was bundled with the first release of the —also authored by —on June 1, marking one of the project's earliest public distributions and highlighting its integration within lightweight X11 environments. This bundling underscored rxvt's role as a foundational component for efficient desktop setups. Subsequent maintenance shifted to Mark Olesen in the mid-1990s.

Official Releases and Maintenance

The official release history of rxvt began with version 2.0 in 1995, which introduced support for color text display, marking a significant enhancement over earlier virtual terminal emulators. Subsequent releases built on this foundation; for instance, version 2.18, announced on August 2, 1996, removed the integrated vttest utility to align with external testing tools developed by the community. The project achieved a milestone with version 2.6.4 on November 1, 2001, incorporating refinements for better X11 compatibility and performance. A preview release, version 2.7.10, followed on March 26, 2003, adding minor optimizations but remaining unfinished as the final official update. Project coordination transitioned from Olesen to Oezguer Kesim for versions 2.11 through 2.4.5, and then to Geoff Wing starting with version 2.4.6. Under Olesen's stewardship in the mid-1990s, the project focused on bug fixes and incremental improvements, such as the addition of pseudo-transparency support in later versions, allowing rxvt windows to blend with desktop backgrounds using X11 compositing extensions. These changes emphasized reliability over major overhauls, with Olesen addressing compatibility issues reported by users in environments. Development stagnated after the 2003 preview release due to shifting priorities of the maintainers, leading to no further official updates and rendering the original rxvt largely obsolete in modern systems lacking features like support. This gap prompted the emergence of community forks, such as rxvt-unicode, to fulfill ongoing needs. From its inception, rxvt has been distributed under the GNU General Public License version 2.0 or later, ensuring open-source accessibility for modifications and redistribution.

Technical Overview

Architecture and Design Principles

rxvt is implemented in the C programming language, leveraging the Xlib library for direct integration with the . This choice enables a , single-process architecture where the terminal emulator handles all operations within one process, including management and display updates. The design employs an internal to process X events, such as inputs and window resizes, ensuring responsive interaction without relying on higher-level toolkits. Central to rxvt's design principles is , prioritizing a reduced —typically around 3 MB in usage—to suit resource-constrained environments and older . This is achieved through the separation of emulation logic from management responsibilities, allowing efficient handling of VT102-compatible sequences while avoiding bloat from unnecessary features. rxvt eschews dependencies on widget toolkits like Xt or , opting instead for bare Xlib calls to minimize overhead and enhance portability across systems. The rendering system utilizes bitmap-based methods for text display, optimizing performance on systems with limited graphical capabilities. A key aspect of this includes a scrollback defaulting to lines, which can be configured up to lines via the saveLines resource, balancing history retention with efficiency. For broader , rxvt features a to , enabling X11-based operation on Windows while preserving core Unix behaviors. This VT102 emulation forms the foundation for standards compliance, with extensions handled modularly to maintain the emulator's lean profile. The project reached its final version 2.7.10 in 2003.

Standards Compliance and Emulation

rxvt primarily emulates the VT102 terminal standard, providing support for basic escape sequences that enable cursor positioning, movement, and control, as well as character attributes such as bold, underline, and reverse video, and select DEC private modes for features like origin mode and auto-wrap. In terms of handling, rxvt uses the same VT220-style escape sequences as , where, for example, the F1 sends ESC [ 11 ~. This aligns with common application expectations but can be configured if needed. Additionally, rxvt lacks full VT220 support, which excludes advanced capabilities like soft character sets for user-defined glyphs. rxvt offers partial compliance with ANSI standards, including support for 16 colors (the standard 8 ANSI colors plus their high-intensity variants), configurable via resources like color0 through color15. It defaults to the ISO 8859-1 character encoding and does not provide native support, limiting it to Latin-1 characters without multibyte handling. Compliance was verified through integration with vttest up to rxvt version 2.18 by maintainer Mark Olesen, after which vttest was removed from the distribution to align with updated testing practices. Among its limitations, rxvt does not support graphics, a DEC extension for bitmap imaging, nor advanced mouse reporting modes beyond basic extensions for button events and scrollbar interaction, which can be overridden with Shift or keys. These constraints reflect rxvt's emphasis on VT102 over comprehensive DEC features.

Features

Core Functionality

rxvt serves as a lightweight VT102 terminal emulator for the , providing essential text-based interaction for command-line applications. It displays text in a default 80-column by 24-row grid, allowing users to view and manage output from shell sessions or programs. Horizontal and vertical scrolling is facilitated through an optional , enabled by default, which permits navigation through the scrollback buffer without altering the visible content. Copy and paste operations rely on the X primary selection mechanism, where text is selected by dragging the left to highlight a region, and insertion occurs via the middle or the Shift-Insert key at the current cursor position. This approach integrates seamlessly with X11's selection handling, enabling quick transfer of text between rxvt instances or other X applications. Visual elements include a 16-color palette comprising eight standard ANSI colors and their high-intensity variants, supporting basic colored output from applications. The cursor blinks by default and can be customized in color, while selections are highlighted using reverse video, which swaps foreground and background colors for clarity. Input is processed through standard VT102 keyboard mappings, ensuring compatibility with applications expecting traditional terminal key sequences, such as arrow keys for navigation and function keys for commands. Resize events trigger the SIGWINCH signal to notify running processes of dimension changes, allowing adaptive behavior like reflow of text in editors. The distribution includes rclock, a memory-efficient analog clock utility designed as a for xclock, featuring reverse video mode and appointment reminders. Performance is optimized for responsiveness, with low —using much less swap space than —making it suitable for resource-constrained environments or multi-session use. Colors and other visual aspects can be adjusted via X resources, such as specifying custom palettes in the .Xresources file.

Customization and Extensions

Users can customize rxvt's appearance and behavior primarily through X resources defined in the ~/.Xresources or ~/.Xdefaults file, which allows fine-grained control over various settings. These resources support the XTerm and Rxvt classes and include options for specifying a fixed-width font via the font resource, color schemes with background, foreground, and color0 through color15 for the 16-color palette, scrollback buffer size using saveLines (defaulting to 64 lines, with a maximum of ), and border adjustments via internalBorder and externalBorder (up to 100 pixels). For instance, a user might configure a larger scrollback history by setting rxvt.saveLines: 10000 and define the initial window dimensions with rxvt.geometry: 80x24 to match common sizes. Additional visual tweaks include enabling a bold font with boldFont or a font with mfont for italicized or special characters. Command-line flags offer quick overrides for these resources at launch, such as -fn to select a font, -bg and -fg for background and foreground colors, -sl for scrollback lines, and -b or -w for internal and external widths. rxvt also supports reverse video , which swaps foreground and background colors, activated via the -rv flag or the reverseVideo resource for high-contrast displays. In versions 2.7.x and later, pseudo-transparency was introduced through the inheritPixmap resource (a boolean option), allowing rxvt to inherit the parent window's pixmap for a simulated transparent background effect without true alpha blending. However, the original rxvt's customization is limited to these static X resources and command-line options, lacking support for scripting or dynamic runtime extensions.

Forks and Derivatives

rxvt-unicode (urxvt)

rxvt-unicode, commonly known as urxvt, originated as a of the rxvt , initiated by developer Marc Lehmann in November 2003 to introduce comprehensive support into the lightweight rxvt codebase. The fork cloned the rxvt CVS on November 19, 2003, with the initial release (version 1.0) occurring shortly after on December 18, 2003. This development addressed the limitations of the original rxvt, which lacked native handling for international character sets, by storing all text internally in (UCS-2 or UCS-4) and supporting locale-correct input and output. A major enhancement in rxvt-unicode is its full rendering capability, combined with support for the Xft library to enable anti-aliased fonts, improving readability for complex scripts and modern display requirements. Another key innovation is the integrated extension system, which allows users to add advanced functionality through scripts, such as launching URLs with a , seamless integration, and customizable keyboard shortcuts for tasks like or regex-based text selection. These extensions leverage Perl's flexibility to extend the terminal's core without recompiling, making rxvt-unicode highly adaptable for power users. The last stable release, version 9.31, was issued on January 2, 2023. While Linux distributions continue to provide updates and patches for compatibility and performance, upstream development by Lehmann has not seen new releases since then. It is widely integrated into major Linux distributions, including , where the package (version 9.31-9) was updated as recently as October 24, 2025. rxvt-unicode introduces several unique features that distinguish it from its predecessor, including a daemon mode (urxvtd) that enables faster window launches by sharing resources across multiple instances and displays, reducing memory overhead. It supports 256 colors natively, with extensions for (24-bit) via ISO 8613-3 sequences, along with transparency effects and window shading for aesthetic customization. The Perl library further enables tabbed multi-session management and matcher plugins for highlighting or interacting with specific patterns, such as URLs or log entries, enhancing usability in scripting-heavy environments.

Other Variants

Aterm, forked from rxvt version 2.4.8 around 1999, introduced support for anti-aliased fonts via Xft and visual enhancements such as semitransparent gradients and pseudo-transparency without additional resource overhead, tailored for integration with the window manager. It also featured off-focus text fading and image backgrounds using formats like and through libAfterImage. The project released its final version, 1.0.1, in August 2007 and entered maintenance-only mode thereafter, rendering it unmaintained and deprecated in favor of more modern alternatives. Eterm, derived from rxvt 2.21 and extensively modified for visual customization, emphasized themed appearances with window manager integration, including pixmap backgrounds, transparency effects, and advanced rendering via the library for features like shaded and gradient elements. Development, which focused on lightweight performance and IPC-based controls for dynamic theming, effectively ceased in the , leaving the project inactive with no significant updates since. mrxvt, originating as a 2002 fork initially based on aterm (later shifting to rxvt 2.7.11), specialized in multi-tabbed functionality with support for split panes, customizable hotkeys, and features like true translucency, pseudo-transparency, and CJK input methods. Its lightweight design aimed at efficient tab management and font handling via FreeType, but adoption remained limited due to competition from more feature-rich emulators. The last notable release occurred around 2008, with activity halting by the early 2010s, marking it as inactive. These variants, once innovative for specific visual or needs, are now largely obsolete given advancements in . Modern users are typically advised to adopt rxvt-unicode (urxvt) for comparable or superior functionality, and no major new rxvt forks have emerged since 2010.