Yildun
A pure Ruby terminal application shell with profiles, tabs, and testable sessions.
Features · Installation · Quick start · Headless sessions · Configuration
Yildun is a terminal application shell built on Tarazed. It manages profiles, tabs, pane state, scrollback search, and links while keeping the terminal session available for scripted integration tests. The name comes from δ Ursae Minoris and the Turkish yıldız, “star.”
Features
- Tarazed-backed terminal sessions with profiles and tabs
- Pane state, configurable keymaps, scrollback search, and OSC 8 links
- JSONC settings with fail-fast validation
- Headless command, script, and expected-screen modes for testing
- Pure Ruby; no WebView, JavaScript engine, SSH client, or multiplexer
Installation
Add gem "yildun" to your Gemfile and run bundle install, or install directly:
gem install yildunRequires Ruby 3.1 or newer. The gem installs its compatible Tarazed dependency.
Quick start
Launch the terminal from a TTY:
yildunRun a specific shell command:
yildun --command 'printf "hello\n"'Interactive mode needs terminal input and output. In a script or CI job, use
--headless instead.
Headless sessions
yildun --headless --command 'printf "hello\n"'--headless prints the final screen and exits. --script PATH sends file
contents to the session, while --expect PATH compares the final screen
with a fixture. Use --columns, --rows, and --timeout when a test needs
specific dimensions or more time.
Configuration
Yildun reads $XDG_CONFIG_HOME/yildun/settings.jsonc, or
~/.config/yildun/settings.jsonc when XDG_CONFIG_HOME is unset.
For example:
Settings merge with built-in defaults. Invalid JSONC raises a clear error instead of silently replacing the active profile. See the cell-rendering and shell-integration decisions.
Development
bundle install
bundle exec rake test
bundle exec rbs -I sig validate
{ "theme": "tokyo-night", "scrollback_limit": 10000, "profiles": { "default": { "command": ["sh", "-l"], "env": {} } } }