Releases: Abs313a/dwmterm
Releases · Abs313a/dwmterm
Release list
DWM-Terminal v0.2.1
Changes in v0.2.1:
- Fix: Bound CSI L (IL) and CSI M (DL) line editing to DECSTBM scrolling margins.
- Fix: Memory allocation hardening for selection buffer, scrollback history, and flight logging.
- Fix: Unified resource teardown on early startup failure paths and normal exit.
- Build: Dynamic version tag detection in Makefile and
-fsanitize=address,undefinedtest target. - Quality: Replaced magic mouse mode literals with enum and eliminated compiler truncation warnings.
Full Changelog: v0.2...v0.2.1
DWM-Terminal v0.2
What's Changed in v0.2
Features & Protocol Improvements
- DECSTBM Scrolling Margins: Added ANSI margin bounds (
\e[top;bottomr), bounded linefeed, and CSIS/Tsequence handlers to support modern fixed-footer TUI applications and status bars. - Two-Pass Row Rendering: Decoupled cell backgrounds and mouse selection highlights from glyph and overlay drawing in
render_frame(), preventing adjacent backgrounds from clipping wide Nerd Font icons. - Multi-Click Mouse Selection: Double-click expands across word/token boundaries and triple-click selects the full row, with automatic
PRIMARYandCLIPBOARDsynchronization. - Modifier Keypress Isolation: Standalone modifier presses (
Super,Shift,Ctrl,Alt) no longer clear active selections or reset scrollback before key combinations (such asSuper+C) are completed. - ECMA-48 Private CSI Handling: Parser now recognizes private prefixes (
?,>,<,=) and guards SGR dispatch, preventing sequences like\e[>4m(modifyOtherKeys) from triggering stray underlines. - Configurable Keybindings & Styling: Support for custom key combinations, configurable cursor shapes (
block,bar,underline), blinking toggles, and asymmetric padding via~/.config/dwmterm/config.
Testing & Verification
- Test suite expanded to 39/39 passing unit & integration tests (
make test).
Full Changelog: v0.1...v0.2
DWM-Terminal v0.1
DWM-Terminal v0.1: Initial Release
An ultra-minimal, sub-millisecond latency CPU-framebuffer terminal engineered for dynamic window managers, Suckless dwm, and dwm-titus.
Highlights & Core Architecture
- Zero GPU Overhead (MIT-SHM Shared Memory): Direct CPU-framebuffer rendering via
XShmPutImage, bypassing X11 socket bottlenecking and achieving >45,000 lines/sec ingestion while eliminating GPU context switches and compositor latency. - Microscopic Footprint: ~12 MB Resident Set Size (RSS) and a static binary footprint under 60 KB.
- Native DWM Swallowing: Pre-configured
WM_CLASS(dwmterm/Dwmterm) for instantaneous, zero-friction window swallowing indwm(isterminal = 1). - Interactive PTY Flight Recorder ("Time Machine"): On-screen HUD scrubber triggered with
F1orCtrl+Shift+Rto rewind and inspect session output, with built-in export to asciinema v2 (.cast) format. - Bundled Meslo Nerd Font: Ships with official
MesloLGS Nerd Fontand automatic system-wide fontconfig installation to/usr/local/share/fonts/TTF/. - DPI-Aware Typography: Dynamic display DPI calculation for true typographical point scaling with strict monospace fallback resolution.
- Dynamic Theming & Truecolor: Full 24-bit RGB truecolor, standard 16-color ANSI palette on pitch black (
#000000), runtime hot-reloading viaSIGUSR1, and integration withdwm-titusthemes. - Clipboard & Alternate Screen: Primary selection, middle-click paste, bidirectional OSC 52 clipboard syncing, and clean
DECSET 1049/1047/47alternate buffer handling fornvim,tmux, andhtop. - Persistent Configuration: User preferences in
~/.config/dwmterm/configand command-line overrides (-s,-f,-p,-d,-T,-e).
Build & Test Suite
- Automated CI pipeline with dual GCC and Clang matrix running under
-Wall -Wextra -pedantic -Werror. - Initial unit and integration test harness covering parser state machines, VT sequence handling, and configuration loading.