Project

yildun

0.0
The project is in a healthy, maintained state
A terminal application shell with tabs, profiles, search, links, and Tarazed-backed sessions.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0.2.6, < 0.3
 Project Readme

Yildun

A pure Ruby terminal application shell with profiles, tabs, and testable sessions.

Gem version CI status Ruby 3.1 or newer MIT license

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 yildun

Requires Ruby 3.1 or newer. The gem installs its compatible Tarazed dependency.

Quick start

Launch the terminal from a TTY:

yildun

Run 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:

{
  "theme": "tokyo-night",
  "scrollback_limit": 10000,
  "profiles": {
    "default": {
      "command": ["sh", "-l"],
      "env": {}
    }
  }
}

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

License

MIT