{"id":52035935,"url":"https://github.com/tuanpham-dev/tmux-server-extensions","last_synced_at":"2026-08-01T19:30:25.086Z","repository":{"id":373573922,"uuid":"1305329653","full_name":"tuanpham-dev/tmux-server-extensions","owner":"tuanpham-dev","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-28T15:01:38.000Z","size":2213,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-28T17:06:42.033Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tuanpham-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-19T01:11:14.000Z","updated_at":"2026-07-28T15:07:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tuanpham-dev/tmux-server-extensions","commit_stats":null,"previous_names":["tuanpham-dev/tmux-server-extensions"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tuanpham-dev/tmux-server-extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuanpham-dev%2Ftmux-server-extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuanpham-dev%2Ftmux-server-extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuanpham-dev%2Ftmux-server-extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuanpham-dev%2Ftmux-server-extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuanpham-dev","download_url":"https://codeload.github.com/tuanpham-dev/tmux-server-extensions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuanpham-dev%2Ftmux-server-extensions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36168841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-01T02:00:05.789Z","response_time":100,"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":[],"created_at":"2026-08-01T19:30:24.429Z","updated_at":"2026-08-01T19:30:25.076Z","avatar_url":"https://github.com/tuanpham-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tmux-server extensions\n\nOptional [tmux-server](https://github.com/tuanpham-dev/tmux-server) extensions, packaged as installable `.tsix` files and served as a registry catalog. These are not bundled with tmux-server itself — install the ones you want through the app's Extensions sidebar tab.\n\n## Extensions\n\n| Extension | Type | Source | License |\n|---|---|---|---|\n| AI Command Search | natural language → shell command via a local AI CLI (Claude Code / Codex / Gemini / custom) | first-party (tmux-server) | MIT |\n| Prompts | `.prompt.md` editor tab with AI refine + AI-suggested filenames | first-party (tmux-server) | MIT |\n| Full Keyboard | on-screen keyboard | first-party (tmux-server) | MIT |\n| One-Hand Operation | bottom swipe bar | first-party (tmux-server) | MIT |\n| Dark Modern | color theme | flattened from [microsoft/vscode](https://github.com/microsoft/vscode)'s `dark_modern.json` include chain | MIT |\n| Light Modern | color theme | flattened from [microsoft/vscode](https://github.com/microsoft/vscode)'s `light_modern.json` include chain | MIT |\n| One Dark Pro | color theme (5 variants) | [Binaryify/OneDark-Pro](https://github.com/Binaryify/OneDark-Pro) | MIT |\n| VSCode Icons | file icon theme | [vscode-icons/vscode-icons](https://github.com/vscode-icons/vscode-icons) | MIT |\n| Popular Monospace Fonts | terminal fonts (4 groups) | Fira Code, JetBrains Mono, Cascadia Code, Source Code Pro — via [Fontsource](https://fontsource.org/) | OFL-1.1 |\n\nEach extension's `LICENSE.txt` carries the full upstream license text and attribution.\n\n### Dark Modern / Light Modern\n\nVS Code's own theme loader chains `dark_modern.json → dark_plus.json → dark_vs.json` (same for light). tmux-server's theme loader only follows one `include` level, and the `*_plus.json` layer contributes no workbench colors anyway (only `tokenColors`, which tmux-server ignores) — so these two themes are authored as single flattened JSON files merging the `*_vs.json` + `*_modern.json` color layers.\n\nA handful of keys VS Code sets via `registerColor()` defaults in its own source rather than in any theme JSON — the 16 `terminal.ansi*` colors, `editor.selectionBackground`, `gitDecoration.*`, `charts.yellow`/`charts.green`, `editorWarning.foreground` — are injected from those same registry defaults so the themes render a complete, self-contained palette. See the provenance comment at the top of each theme JSON for the full list and source.\n\n### Popular Monospace Fonts\n\nOne extension, four selectable font groups (Fira Code, JetBrains Mono, Cascadia Code, Source Code Pro), each with core latin + latin-ext coverage across regular/500/bold weights plus italic where the upstream family ships one — sourced from the already-split, already-subsetted [`@fontsource`](https://fontsource.org/) npm packages rather than raw upstream releases, same approach as tmux-server's own bundled `ibm-plex-mono` extension.\n\n## Packing\n\n```sh\nnpm install   # first time only — pulls esbuild for code extensions\nnpm run pack\n```\n\n`pack` first runs `npm run build`, which esbuild-bundles any **code** extension (a folder with `src/client.tsx` — e.g. Full Keyboard) into its `dist/client.js`/`client.css`, with `react`/`@tmux-server/engine-support` aliased to the host-instance shims in `scripts/shims/`. Data-only extensions (themes, fonts, icons) have no build step. Then, per extension, it produces: `dist/\u003cextension\u003e-\u003cversion\u003e.tsix` (a zip with contents under a top-level `extension/` folder, matching the format tmux-server's extension installer expects), a `-README.md` copy, and a `-icon.\u003cext\u003e` copy for any extension with an `icon` manifest field — plus a `dist/index.json` catalog listing all of the above, in the shape tmux-server's registry feature expects.\n\n## Registry (recommended)\n\n`dist/` is itself a valid registry source — no separate publishing step needed. In tmux-server:\n\n1. Open the **Extensions** sidebar tab (`Ctrl+Shift+X`).\n2. Click the gear icon → \"Manage registries\".\n3. Add this repo's absolute `dist/` path (e.g. `/works/tmux-server-extensions/dist`) as a source, or serve it over HTTP (`python3 -m http.server` from inside `dist/`) and add that URL instead.\n4. Every extension in the table above appears under **Available** — click Install.\n\nRe-running `npm run pack` after editing a theme/font and clicking the refresh icon in the Extensions tab picks up the change immediately, without reinstalling.\n\n## Hosting the registry on GitHub Pages\n\nFor a shareable, always-online registry, this repo publishes `dist/` to GitHub Pages via [`.github/workflows/pages.yml`](.github/workflows/pages.yml). The workflow runs `npm run pack` and deploys the built catalog on every push to `main` — `dist/` is never committed (it's `.gitignore`d); it's regenerated in CI.\n\ntmux-server fetches the catalog server-side, so no CORS config is needed. Once Pages is live, add this URL as a registry source in the Extensions tab:\n\n```\nhttps://tuanpham-dev.github.io/tmux-server-extensions/\n```\n\nThe server appends `index.json` to that base, then downloads each `.tsix`/README/icon by the relative path in the catalog.\n\n### One-time setup\n\n```sh\n# from inside this repo, with the GitHub CLI authenticated (gh auth login)\ngit remote add origin git@github.com:tuanpham-dev/tmux-server-extensions.git\ngh repo create tuanpham-dev/tmux-server-extensions --public --source=. --remote=origin --push\n```\n\nThen enable Pages with the **GitHub Actions** source (once):\n\n```sh\ngh api -X POST repos/tuanpham-dev/tmux-server-extensions/pages \\\n  -f 'build_type=workflow'\n```\n\nOr via the web UI: **Settings → Pages → Build and deployment → Source: GitHub Actions**. After the first workflow run finishes (Actions tab), the URL above is live. Publishing a new extension version is just `git push` — bump the version, push, wait for the Action, then hit refresh in the Extensions tab (allow a few minutes for GitHub's CDN cache).\n\n## Installing manually\n\nWithout setting up a registry source, install one `.tsix` at a time: in the Extensions tab, click \"Install from .tsix\" and pick a file from `dist/`. Or via the API — the endpoint expects the raw file bytes as the request body, not a multipart upload:\n\n```sh\ncurl -X POST -H \"content-type: application/octet-stream\" \\\n  --data-binary @dist/vscode-icons-12.19.0.tsix \\\n  http://localhost:\u003cport\u003e/api/extensions/install\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuanpham-dev%2Ftmux-server-extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuanpham-dev%2Ftmux-server-extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuanpham-dev%2Ftmux-server-extensions/lists"}