{"id":26458505,"url":"https://github.com/coletrammer/ttx","last_synced_at":"2026-04-19T23:09:39.166Z","repository":{"id":281398228,"uuid":"945156045","full_name":"coletrammer/ttx","owner":"coletrammer","description":"A modern terminal multiplexer.","archived":false,"fork":false,"pushed_at":"2026-03-29T01:07:18.000Z","size":1738,"stargazers_count":5,"open_issues_count":7,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T01:46:59.905Z","etag":null,"topics":["cpp","terminal","terminal-multiplexer"],"latest_commit_sha":null,"homepage":"https://coletrammer.github.io/ttx","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coletrammer.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-08T19:34:43.000Z","updated_at":"2026-03-18T03:06:40.000Z","dependencies_parsed_at":"2026-03-03T06:03:33.078Z","dependency_job_id":null,"html_url":"https://github.com/coletrammer/ttx","commit_stats":null,"previous_names":["coletrammer/ttx"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/coletrammer/ttx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coletrammer%2Fttx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coletrammer%2Fttx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coletrammer%2Fttx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coletrammer%2Fttx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coletrammer","download_url":"https://codeload.github.com/coletrammer/ttx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coletrammer%2Fttx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32025790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","terminal","terminal-multiplexer"],"created_at":"2025-03-19T00:03:01.813Z","updated_at":"2026-04-19T23:09:39.159Z","avatar_url":"https://github.com/coletrammer.png","language":"C++","readme":"# ttx Overview\n\nA modern terminal multiplexer.\n\n## Features\n\nThe main goal of ttx to provide a good user experience when mixing local and remote terminal sessions, and support new\nterminal features in a timely manner (think kitty graphics/keyboard protocol). Instead of being a source of\ncompatibility issues, I want ttx to _just work_ when users try out new terminal features. And managing remote sessions should\nbe simple and painless. Instead of having 1 terminal window and 1 tmux session per host, or nesting tmux sessions inside\neach other, ttx aims to unify remote hosts into a single terminal environment. I think this can be a huge improvement for\ndevelopers who regularly need to develop on remote machines.\n\nThis project is currently in very early development, so there is a lot of the features listed here haven't\nyet been implemented. This list focuses only on higher level features, leaving out a lot of the lower level\ndetails.\n\n- [x] Platform support\n  - [x] Linux\n  - [x] MacOS\n  - [ ] Windows (not a priority)\n- [x] Basic multiplexing functionality\n  - [x] Layout tree with horizontal and vertical splits\n  - [x] Multiple tabs (tmux windows)\n  - [x] Multiple sessions\n  - [x] Popup windows\n  - [x] Support session/window/pane switcher via Fzf popup\n  - [x] Full Unicode support (grapheme clustering and wide characters)\n  - [x] Seamless navigation between multiplexer panes and application panes (via custom OSC 8671). Requires corresponding\n        [Neovim plugin](https://github.com/coletrammer/seamless-navigation.nvim/).\n- [ ] Graphics\n  - [x] Kitty image protocol (APC passthrough)\n    - [x] Proper Unicode handling (specifically 0 width characters)\n  - [ ] Kitty image protocol (actual support)\n    - [ ] Conversion of image to text (e.g. via `chafa`) when not supported by the host terminal\n  - [ ] Sixels\n  - [ ] Iterm image protocol\n- [ ] Daemon Mode\n  - [ ] Terminal sessions are managed by a background process, allowing sessions to be saved after closing the terminal\n        or dropping the SSH connection.\n- [ ] Session Persistence Across Reboots\n  - [x] Manual save/restore (tmux-resurrect) (partial support (layout+cwd only, not processes or scrollback))\n  - [x] Automatic save/restore (tmux-continuum) (partial support (layout+cwd only, not processes or scrollback))\n- [ ] Remote Machines\n  - [ ] Support ephemeral connections via ssh\n  - [ ] Support persistent connections via ssh\n    - [ ] Will run a daemon on the remote which will synchronize locally.\n  - [ ] Connection management UX\n  - [ ] Support creating sessions/windows/panes using remote connections\n  - [ ] See remote and local on the same screen at the same time.\n- [ ] Extensibility\n  - [x] Config\n  - [x] Themes\n  - [ ] Plugins\n\n## Installing\n\nSee [here](docs/pages/install.md).\n\n## Configuration\n\nSee [here](docs/pages/configuration.md).\n\n## Unicode Support\n\nWe aim to match the Unicode processing specified by [kitty](https://github.com/kovidgoyal/kitty/blob/master/docs/text-sizing-protocol.rst#the-algorithm-for-splitting-text-into-cells).\nThis includes correctly handling emoji sequences and grapheme clusters. When `ttx` is run in a terminal which does not\nsupport this, text is fit into whatever the outer terminal thinks is a single cell. This matches the behavior of\nNeovim 0.11 when running in these terminals.\n\nThese issues can be avoided by using a terminal like [kitty](https://github.com/kovidgoyal/kitty),\n[ghostty](https://github.com/ghostty-org/ghostty), or [wezterm](https://github.com/wezterm/wezterm). To check if your terminal\nsupports grapheme clustering, run `ttx features`, and see if the `BasicGraphemeClustering` feature is detected.\n\n## Building\n\nSee [here](docs/pages/build.md).\n\n## Developing\n\nSee [here](docs/pages/developing.md).\n\n## Dependencies\n\n- [fzf](https://github.com/junegunn/fzf) program, for various popup memus\n- [iTerm2 Color Schemes](github.com/mbadolato/iTerm2-Color-Schemes) for built-in themes\n- [dius](https://github.com/coletrammer/dius) library, to use its cross-platform\n  abstractions.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoletrammer%2Fttx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoletrammer%2Fttx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoletrammer%2Fttx/lists"}