{"id":15209520,"url":"https://github.com/lmorg/ttyphoon","last_synced_at":"2025-10-29T15:30:44.720Z","repository":{"id":212941164,"uuid":"732651384","full_name":"lmorg/mxtty","owner":"lmorg","description":"Multimedia Terminal Emulator: get more out of your command line!","archived":false,"fork":false,"pushed_at":"2024-12-05T00:01:46.000Z","size":5060,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-06T22:31:21.681Z","etag":null,"topics":["bash","fish","gui","linux","macos","multimedia","murex","shell","terminal-emulator","tui","zsh"],"latest_commit_sha":null,"homepage":"https://murex.rocks","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-17T11:59:37.000Z","updated_at":"2024-12-05T00:01:50.000Z","dependencies_parsed_at":"2024-01-11T00:56:22.602Z","dependency_job_id":"2421448f-f54b-4e28-ba9b-a0d1ba1b775e","html_url":"https://github.com/lmorg/mxtty","commit_stats":{"total_commits":105,"total_committers":2,"mean_commits":52.5,"dds":0.00952380952380949,"last_synced_commit":"6040e9deca142135b5fd10b6a1802a1b5e4f40f8"},"previous_names":["lmorg/mxtty"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmorg%2Fmxtty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmorg%2Fmxtty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmorg%2Fmxtty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmorg%2Fmxtty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmorg","download_url":"https://codeload.github.com/lmorg/mxtty/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238840740,"owners_count":19539604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","fish","gui","linux","macos","multimedia","murex","shell","terminal-emulator","tui","zsh"],"created_at":"2024-09-28T07:40:39.225Z","updated_at":"2025-10-29T15:30:44.707Z","avatar_url":"https://github.com/lmorg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eTtyphoon\u003c/h1\u003e\n\n(previously called mxtty)\n\n![logo](assets/icon-large.bmp)\n\n- [Multimedia Terminal Emulator](#multimedia-terminal-emulator)\n- [Screenshots](#screenshots)\n  - [Output Blocks](#output-blocks)\n  - [Structured Text](#structured-text)\n  - [Tables](#tables)\n  - [Images](#images)\n  - [Tmux Support](#tmux-support)\n  - [Highlighted Search Results](#highlighted-search-results)\n  - [Plus more](#plus-more)\n- [How It Works](#how-it-works)\n- [Whats Left To Do](#whats-left-to-do)\n  - [Escape Codes](#escape-codes)\n    - [VT100](#vt100)\n    - [VT52 mode](#vt52-mode)\n    - [VT200 mode](#vt200-mode)\n    - [Tektronix 4014 mode](#tektronix-4014-mode)\n    - [Window management codes](#window-management-codes)\n    - [Extended features](#extended-features)\n    - [Common application support](#common-application-support)\n  - [Application Usability](#application-usability)\n- [Supported Platforms](#supported-platforms)\n- [Install Guide](#install-guide)\n  - [VT Debugging](#vt-debugging)\n  - [AI Tracing](#ai-tracing)\n- [How To Support](#how-to-support)\n\n## Multimedia Terminal Emulator\n\nThe aim of this project is to provide an easy to use terminal emulator that\nsupports inlining multimedia widgets using native code as opposed to web\ntechnologies like Electron.\n\nCurrently the project is _very_ alpha.\n\nThe idea behind this terminal emulator is that is can be used by any $SHELL,\nhowever hooks will be built into [Murex](https://github.com/lmorg/murex) so\nthe terminal will be instantly usable even before wider support across other\nshells and command line applications is adopted.\n\nAt its heart, Ttyphoon is a regular terminal emulator. Like Kitty, iTerm2, and\nPuTTY (to name a few). But where Ttyphoon differs is that it also supports\ninlining rich content. Some terminal emulators support inlining images. Others\nmight also allow videos. But none bar some edge case Electron terminals offer\ncollapsible trees for JSON printouts. Easy to navigate directory views. Nor any\nother interactive elements that we have come to expect on modern user\ninterfaces.\n\nThe few terminal emulators that do attempt to offer this usually fail to be\ngood, or even just compatible, with all the CLI tools that we've come to depend\non.\n\nTtyphoon aims to do _both well_. Even if you never want for any interactive\nwidgets, Ttyphoon will be a good terminal emulator. And for those who want a\nlittle more GUI in their CLI, Ttyphoon will be a great modern user interface.\n\n## Screenshots\n\n### Output Blocks\n\nCommand output is grouped into blocks to make it easier to visually see the\nseparation between different command output.\n\nThose blocks are coloured too, to help identify whether a command succeeded or\nfailed.\n\n![coloured output blocks](images/blocks.png)\n\nThose blocks can be highlighted by hovering over them\n\n![highlighted output blocks](images/highlighted-block.png)\n\nAnd even collapsed, hidden from view\n\n![highlighted output blocks](images/folded-block.png)\n\n### Structured Text\n\nIDE-like tools for working with structured text, like JSON. Hover over a branch\nto highlight its child nodes\n\n![highlighted json](images/highlighted-json.png)\n\nClick to collapse that block of text\n\n![highlighted output blocks](images/folded-json.png)\n\n### Tables\n\nOutput can be presented as tables. Which can be sorted and even filtered using\nSQL. All without having to rerun the commands that generated that output\n\n![tables](images/tables.png)\n\n### Images\n\nSupport for inlined images, where images are treated as images. for example\nthey can be copied to clipboard\n\n![image support](images/images.png)\n\n### Tmux Support\n\nTmux support built in using tmux's control plane. This allows for the power of\ntmux but with the easy of use and elegance of being fully integrated into the\nterminal emulator\n\n![search](images/tmux.png)\n\n(in this screenshot, tmux's prefix key was rebinded to `F2` in `~/.tmux.conf`)\n\n### Highlighted Search Results\n\nSearch terms can be highlighted to quickly find instances of that term\n\n![search](images/search.png)\n\n### Plus more\n\nTtyphoon has only been in development for a little over a year and features a\npurpose built, hardware accelerated, rendering engine to facilitate this hybrid\nof text and media. So expect many more feature to come!\n\n## How It Works\n\nTtyphoon uses SDL ([Simple DirectMedia Layer](https://en.wikipedia.org/wiki/Simple_DirectMedia_Layer))\nwhich is a simple hardware-assisted multimedia library. This enables the\nterminal emulator to be both performant and also cross-platform. Essentially\nproviding some of the conveniences that people have come to love from tools\nlike Electron while still offering the benefits of native code.\n\nThe multimedia and interactive components will be passed from the controlling\nterminal applications via ANSI escape sequences. Before groan, yes I agree that\nin-band escape sequences are a lousy way of encoding meta-information. However\nto succeed at being a good terminal emulator, it needs to support some historic\ndesign decisions no matter how archaic they might seem today. This allows\nTtyphoon to work with existing terminal applications _and_ for third parties to\neasily add support for their applications to render rich content in Ttyphoon\nwithout breaking compatibility for legacy terminal emulators.\n\n## Whats Left To Do\n\nIn short, _a lot_!! Some of what has been detailed above is still aspirational.\nSome of it has already been delivered but in a _very_ alpha state. And while\nthere is lots of error handling and unit tests, test coverage is still pretty\nlow and exceptions will crash the terminal (quite deliberately, because I want\nto see where the application fails).\n\nBelow is a high level TODO list of features and compatibility. If an item is\nticked but not working as expected, then please raise an issue in Github.\n\n### Escape Codes\n\n#### VT100\n\n- C1 codes\n  - [x] common: can run most CLI applications\n  - [x] broad: can run older or more CLI applications\n  - [ ] complete: xterm compatible\n- CSI codes\n  - [x] common: can run most CLI applications\n  - [x] broad: can run older or more complicated CLI applications\n  - [ ] complete: xterm compatible\n- SGR codes\n  - [x] common: can run most CLI applications\n  - [x] broad: can run older or more complicated CLI applications\n  - [ ] complete: xterm compatible\n  - [ ] extended underline: kitty compatible\n- OSC codes\n  - [x] common: can run most CLI applications\n  - [x] broad: can run older or more complicated CLI applications\n  - [ ] complete: xterm compatible\n- DCS codes\n  - [ ] common: can run most CLI applications\n  - [ ] broad: can run older or more complicated CLI applications\n  - [ ] complete: xterm compatible\n- [x] Alt character sets\n- [x] Wide characters\n  - [ ] vt100 (ASCII characters)\n  - [x] Unicode (eg logograph-centric languages and emoticons)\n- Keyboard\n  - [x] Ctrl modifiers\n  - [x] Alt modifiers\n  - [x] Shift modifiers\n  - [x] special keys (eg function keys, number pad, etc)\n    - [ ] glitch free (some bugs still exist)\n  - [x] tmux support for modifiers\n- Mouse tracking\n  - [ ] common: can run most CLI applications\n  - [ ] broad: can run older or more complicated CLI applications\n  - [ ] complete: xterm compatible\n\n#### VT52 mode\n\n- [ ] cursor movements\n- [ ] special modes\n\n#### VT200 mode\n\nSome compatibility already exists. Detailed breakdown coming...\n\n#### Tektronix 4014 mode\n\n- [ ] graphics plotting\n- [ ] text rendering\n\n#### Window management codes\n\neg `xterm` and similar terminal emulators\n\n- [x] titlebar can be changed\n- [ ] ~~window can be moved and resized (WILL NOT IMPLEMENT)~~\n- [ ] window can be minimized and restored\n\n#### Extended features\n\n- [ ] Hyperlink support\n  - [x] Auto-hyperlink files\n  - [x] Auto-hyperlink URLs\n  - [ ] ANSI escape sequence supported\n- [ ] Bracketed paste mode\n- [x] Inlining images\n  - [x] Ttyphoon codes\n  - [ ] iterm2 compatible\n  - [ ] Kitty compatible\n  - [x] sixel graphics\n  - [ ] ReGIS graphics\n- [x] Code folding\n- [x] Table sorting\n  - [x] alpha: available but expect changes to the API\n  - [x] stable: available to use in Murex\n\n#### Common application support\n\n- [x] Supports `tmux`\n  - [x] usable from CLI\n  - [x] glitch-free from CLI\n  - [x] tmux control mode supported\n- [x] Supports `vim`\n  - [x] usable\n  - [x] glitch-free\n- [x] Supports `murex`\n  - [x] usable\n  - [x] glitch-free\n\n### Application Usability\n\n- [x] Terminal can be resized\n- [x] Scrollback history\n  - [x] usability hints added\n- [x] discoverability hints added\n- [x] Typeface can be changed\n- [x] Colour scheme can be changed\n  - [x] supports iTerm2 colour themes\n- [ ] Bell can be changed\n- [x] Default term size can be changed\n- [x] Default command / shell can be changed\n\n## Supported Platforms\n\nSupport for the following platforms is planned:\n\n- [x] Linux\n  - [x] tested on Arch\n  - [ ] tested on Ubuntu\n  - [ ] tested on Rocky\n- [ ] BSD\n  - [ ] tested on FreeBSD\n  - [ ] tested on NetBSD\n  - [ ] tested on OpenBSD\n  - [ ] tested on DragonflyBSD\n- [x] macOS\n  - [ ] tested on 12.x, Monterey\n  - [ ] tested on 13.x, Ventura\n  - [x] tested on 14.x, Sonoma\n  - [x] tested on 15.x, Sequoia\n- [x] Windows\n  - [x] PTY support implemented\n  - [ ] tested on Windows 10\n  - [ ] tested on Windows 11\n\n## Install Guide\n\nCurrently Ttyphoon can only be compiled from source.\n\nTo do so you will need the following installed:\n- C compiler (eg GNU C)\n- Go compiler\n- SDL libraries\n  - sdl2\n  - sdl2_mixer\n- `pkg-config`\n\nAside from that, it's as easy as running `go build .` from the git repository\nroot directory.\n\n### VT Debugging\n\nThe terminal emulator functions can provide verbose logging for debugging. To\nenable this, build with `-tags debug` flag. Please note that this will add a\nlot of noise to the stdout of the terminal used to launch Ttyphoon.\n\n### AI Tracing\n\nThe AI features, prompts sent to LLMs and messages between MCP tools can be\ntraced for debugging. To enable this, build with `-tags trace`. Trace messages\nare sent to the stdout of the terminal used to launch TTyphoon.\n\n## How To Support\n\nRegardless of your time and skill set, there are multiple ways you can support\nthis project:\n\n- **Contributing code**: This could be bug fixes, new features, or even just\n  correcting any typos.\n\n- **Testing**: There is a plethora of different software that needs to run\n  inside a terminal emulator and a multitude of distinct platforms that this\n  could run on. Any support testing Ttyphoon would be greatly appreciated.\n\n- **Documentation**: This is possibly the hardest part of any project to get\n  right. Eventually documentation for this will follow the same structure as\n  [Murex Rocks](https://murex.rocks) (albeit its own website) however, for now,\n  any documentation written in markdown is better than none.\n\n- **Architecture discussions**: I'm always open to discussing code theory. And\n  if it results in building a better terminal emulator, then that is a\n  worthwhile discussion to have.\n\n- **Porting escape codes to other applications**: Currently [Murex](https://github.com/lmorg/murex)\n  is the pioneer for supporting Ttyphoon-specific ANSI escape codes. However it\n  would be good to see some of these extensions expanded out further. Maybe\n  even to a point where this terminal emulator isn't required any more than a\n  place to beta test future proposed escape sequences.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmorg%2Fttyphoon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmorg%2Fttyphoon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmorg%2Fttyphoon/lists"}