[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105290":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":29,"readmeContent":30,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},105290,"ghostty-designer","reemus-dev\u002Fghostty-designer","reemus-dev","Live-preview Ghostty terminal configuration for theme, fonts and UI.",null,"TypeScript",91,1,54,0,14,42,65.3,"MIT License",false,"main",true,[23,24,25,26,27,28],"cli","ghostty","ghostty-config","ghostty-terminal","ghostty-theme","live-preview","2026-11-01 00:13:35","# ghostty-designer\n\n[![CI](https:\u002F\u002Fgithub.com\u002Freemus-dev\u002Fghostty-designer\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Freemus-dev\u002Fghostty-designer\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Latest release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Freemus-dev\u002Fghostty-designer)](https:\u002F\u002Fgithub.com\u002Freemus-dev\u002Fghostty-designer\u002Freleases\u002Flatest)\n\n**A visual editor for Ghostty, with every change previewed live in your running\nterminals.**\n\nThemes, colours, fonts, cursor and window. Nothing is saved until you review the\ndiff.\n\n![Ghostty Designer's Customise and Themes windows in front of two Ghostty windows, running Claude Code and ghostty-designer demo in the same colours](assets\u002Fcover.png)\n\n▶ [Watch the 1-minute video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=tcUtw31Ih2Y)\n\n- **Themes:** try themes with the arrow keys, or pin a theme beside your colours\n  and copy single colours from it.\n- **Colours:** tune each colour with OKLCH sliders and contrast checks.\n- **Fonts:** browse fonts previewed in their own typeface, with ligature,\n  feature and variable-axis controls.\n- **Cursor and window:** set cursor, opacity, blur, padding, titlebar and split\n  options.\n- **Other apps:** edit the config of apps built on libghostty, such as cmux.\n- **Safe saves:** save only the lines you changed, with a backup first.\n\n\u003C!-- oxfmt-ignore -->\n> [!NOTE]\n> **Built entirely by AI agents in Claude Code with Opus 5.5 💌**\n>\n> I own the result, and I put my expertise and care into it.\n\nAn unofficial community tool, not affiliated with the Ghostty project.\n\n## Install\n\nThe designer installs as a terminal command, `ghostty-designer`. Run it in a\nterminal to open the panel window.\n\n| Requirement | Needs                                                                     |\n| ----------- | ------------------------------------------------------------------------- |\n| Ghostty     | [Installed](https:\u002F\u002Fghostty.org\u002Fdownload), 1.3.1 or later                 |\n| macOS       | 15 or later, arm64 or x86_64                                              |\n| Linux       | glibc 2.34 or later (Ubuntu 22.04, Debian 12, Fedora 35), arm64 or x86_64 |\n\n**Homebrew** (macOS)\n\n```sh\nbrew install reemus-dev\u002Ftap\u002Fghostty-designer\n```\n\n**Linux packages**\n\nDownload the `.deb` or `.rpm` for your platform from\n[GitHub Releases](https:\u002F\u002Fgithub.com\u002Freemus-dev\u002Fghostty-designer\u002Freleases). The\npackages install the runtime libraries.\n\n```sh\nsudo apt install .\u002Fghostty-designer_\u003Cversion>_amd64.deb      # Ubuntu, Debian\nsudo dnf install .\u002Fghostty-designer-\u003Cversion>-1.x86_64.rpm   # Fedora\n```\n\n**Mise** (macOS, Linux)\n\n```sh\nmise use -g github:reemus-dev\u002Fghostty-designer\n```\n\n**npm** (macOS, Linux)\n\nRun it without installing:\n\n```sh\nnpx ghostty-designer@latest     # or: bunx ghostty-designer@latest\n```\n\nOr install it:\n\n```sh\nnpm install -g ghostty-designer\n```\n\nOn Linux, Mise, npm and the release tarball need the runtime libraries:\n\n\u003Cdetails>\n\u003Csummary>Runtime libraries\u003C\u002Fsummary>\n\n```sh\nsudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 procps fontconfig   # Ubuntu, Debian\nsudo dnf install webkit2gtk4.1 gtk3 procps-ng fontconfig             # Fedora\nsudo pacman -S --needed webkit2gtk-4.1 gtk3 procps-ng fontconfig     # Arch\n```\n\nTo use the tarball from the release, copy `ghostty-designer` from it to a\ndirectory on `PATH`.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Build from source\u003C\u002Fsummary>\n\nRequires [Mise](https:\u002F\u002Fmise.jdx.dev\u002F). On Linux, the build also needs the GTK 3\nand WebKitGTK 4.1 development packages (`libwebkit2gtk-4.1-dev` on Debian and\nUbuntu).\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Freemus-dev\u002Fghostty-designer.git\ncd ghostty-designer\nmise install\nmise run install\nmise run build\n.\u002Fdist\u002Fghostty-designer\n```\n\n\u003C\u002Fdetails>\n\n## Quick start\n\n\u003C!-- oxfmt-ignore -->\n> [!NOTE]\n> The designer is a GUI app, but you launch it from a terminal.\n\n1. Run `ghostty-designer`. The panel opens in its own window, and the prompt\n   returns.\n2. Click **Enable live preview**. The designer backs up your config, then adds\n   two lines to the end of it.\n3. Change a setting and watch Ghostty update. Some settings apply only to new\n   windows, and the panel notes which.\n4. Click **Save to config…**, review the exact changes, and confirm.\n\nThe panel has two views. **Customise** shows your colours, font and window\nsettings on one page. **Themes** shows every theme as a small terminal in its\ncolours.\n\nClick **Live in Ghostty** in the toolbar to turn the live preview off or on. The\ndesigner remembers your choice. Close the panel to stop the designer. With\nunsaved changes, it asks first.\n\n## How your config stays safe\n\n```text\n Panel\n   │\n   ├─ every change ─▶ ghostty-designer.conf\n   │                  (emptied when the designer stops)\n   │                        │ included after your config\n   │                        ▼\n   │                  Ghostty reloads\n   │\n   └─ Save ─▶ review the exact diff\n                    │ confirm\n                    ▼\n              your config: changed lines only\n              (backed up first)\n```\n\n**Preview never edits your config.** Each change goes to\n`ghostty-designer.conf`, next to your config, and Ghostty reloads. The preview\nloads after every line of your main config file, so it wins over all of them. A\nfile that loads later can still override it, such as a file that one of your\nincludes includes. The panel warns when that hides a change.\n\n**Save edits only what you changed, where it is set.** The save rewrites each\nchanged key on the line that sets it last, even in an included file. It adds new\nkeys in a `# ghostty-designer: saved settings` block. Comments, order and\nformatting stay. When you save a new theme, the save comments out your colour\nlines that would override it with `# ghostty-designer:`. The review lists those\nlines, and any settings in the theme besides colours.\n\n**Undo any write:**\n\n| Write                                               | Undo                                                         |\n| --------------------------------------------------- | ------------------------------------------------------------ |\n| `ghostty-designer.conf`, on each change             | Stop the designer, or delete the file                        |\n| Two include lines, on **Enable live preview**       | Delete the two lines                                         |\n| Changed lines in your config, on save               | Copy back the file from `previous\u002F`, or restore the original |\n| A theme file in `~\u002F.config\u002Fghostty\u002Fthemes`, on save | Delete the file. A theme never replaces another file.        |\n\nBefore it changes a config file, the designer backs the file up to\n`~\u002F.local\u002Fstate\u002Fghostty-designer\u002F` (`$XDG_STATE_HOME\u002Fghostty-designer\u002F` when\nset):\n\n- `original\u002F` keeps each file as it was before the designer first changed it,\n  and is never replaced.\n- `previous\u002F` keeps each file as it was before the latest save.\n\n**Restore original config…** in the ⋯ menu puts back the current config's files\nfrom `original\u002F`. It also discards every later change to those files, including\nyour own edits.\n\n**Other guarantees:**\n\n- The panel's controls edit only appearance settings: colours, fonts, cursor,\n  window and splits. A theme can carry other settings, and the save review lists\n  them.\n- Ghostty validates every preview before it loads. The designer leaves out a\n  value Ghostty rejects, and the panel names that setting.\n- A save stops before it writes anything if a config file changed on disk after\n  your review.\n- If a file cannot be written, the save puts back the files it already wrote. It\n  never rewrites a file that is not valid UTF-8.\n- Quitting, a termination signal or a designer crash empties the preview file.\n  After a hard kill or power loss, Ghostty shows the last preview until the\n  designer starts again or you delete the file. The include is optional\n  (`config-file = ?ghostty-designer.conf`), so Ghostty starts without the file.\n\n## Usage\n\n### Command line\n\n| Command                          | Action                                                                              |\n| -------------------------------- | ----------------------------------------------------------------------------------- |\n| `ghostty-designer`               | Open the panel, or bring the open panel to the front                                |\n| `ghostty-designer --config FILE` | Edit `FILE` instead of Ghostty's config. A running designer offers to switch to it. |\n| `ghostty-designer demo`          | Print sample output in this terminal's colours and font                             |\n\n### Shortcuts\n\n| macOS      | Linux                 | Action                                          |\n| ---------- | --------------------- | ----------------------------------------------- |\n| ⌘K         | Ctrl+K                | Find any setting, theme, font or action         |\n| ⌘S         | Ctrl+S                | Review and save                                 |\n| ⌘Z \u002F ⇧⌘Z   | Ctrl+Z \u002F Ctrl+Shift+Z | Undo \u002F redo                                     |\n| ⌥1 \u002F ⌥2    | Alt+1 \u002F Alt+2         | Show Customise \u002F Themes                         |\n| `\u002F`        | `\u002F`                   | Search fonts in Customise, or themes in Themes  |\n| Hold `\\`   | Hold `\\`              | Show your saved config in Ghostty while held    |\n| Arrow keys | Arrow keys            | In the theme grid or font list, try each choice |\n\nTrying several themes or fonts in a row is one undo step.\n\n### Other apps' configs\n\nApps built on libghostty can load a config file of their own. To edit one,\nchoose **Switch config…** in the toolbar's ⋯ menu or with ⌘K. The designer still\nneeds Ghostty installed. The switcher lists the apps below when their config\nfile has content, your recent files, and any other file by path.\n\n| App      | Config file                                                     | Loads Ghostty's config first |\n| -------- | --------------------------------------------------------------- | ---------------------------- |\n| cmux     | `~\u002FLibrary\u002FApplication Support\u002Fcom.cmuxterm.app\u002Fconfig.ghostty` | Yes                          |\n| Supacode | `~\u002F.config\u002Fsupacode\u002Fconfig.ghostty`                             | Yes                          |\n| Ghostex  | `~\u002F.config\u002Fghostex\u002Fghostty\u002Fconfig.ghostty`                      | No                           |\n| agterm   | `~\u002F.config\u002Fagterm\u002Fghostty.conf`                                 | No                           |\n| macterm  | `~\u002F.config\u002Fmacterm\u002Fconfig.ghostty`                              | Yes                          |\n\nThe designer loads any other file on top of Ghostty's config. To change this for\na file, select it in the switcher and change **Does this app use Ghostty's\nconfig as a base?**.\n\n- A save writes only that file and the files it includes. When a line in\n  Ghostty's config still decides a setting, the save review says so.\n- The live preview reloads only Ghostty. Other apps show your changes when they\n  reload their config.\n- When you edit Ghostty's config, the save review names the settings that an\n  app's own config overrides.\n\nThe designer opens the config you last edited.\n\n## Troubleshooting\n\n\u003C!-- [UNTIL] The oldest Ghostty the designer supports includes the fix. https:\u002F\u002Fgithub.com\u002Fghostty-org\u002Fghostty\u002Fissues\u002F14833 Then remove the colour-query item. -->\n\n- **A change does not show in Ghostty.** A file that loads after the preview may\n  set the same key, and the panel warns about it. Check the order of your\n  `config-file` lines.\n- **A cursor change does not show.** Ghostty draws a hollow block in windows\n  that are not focused. Click into Ghostty.\n- **The cursor turns into a bar at the prompt.** Shell integration sets it. Turn\n  on **Use this cursor at the shell prompt**.\n- **Background opacity does not change on macOS.** Open a new Ghostty window, or\n  restart Ghostty.\n- **macOS asks to let the designer control Ghostty.** A font size change resets\n  each window's zoom (⌘+ \u002F ⌘−) through Apple Events. Allow it, so zoomed windows\n  show the new size.\n- **Colours or fonts differ from another app.** Check whether the app loads\n  Ghostty's config first, then set **Does this app use Ghostty's config as a\n  base?** to match in the config switcher.\n- **A program keeps its old colours while the designer runs.** The preview turns\n  off Ghostty's replies to colour queries (`osc-color-report-format = none`),\n  because Ghostty 1.3.1 can freeze when a reload lands during a burst of them.\n  Ghostty 1.4.0 has the\n  [fix](https:\u002F\u002Fgithub.com\u002Fghostty-org\u002Fghostty\u002Fpull\u002F14834), and the designer\n  keeps the workaround while it supports 1.3.1.\n- **`error while loading shared libraries: libwebkit2gtk-4.1.so.0`.** Install\n  the [runtime libraries](#install).\n- **Anything else.** Startup errors print in the terminal. Later output goes to\n  `~\u002F.local\u002Fstate\u002Fghostty-designer\u002Fghostty-designer.log`.\n\n## Uninstall\n\n1. Quit the designer.\n2. In each config where you enabled live preview, delete these two lines, and\n   delete `ghostty-designer.conf` next to it:\n\n   ```text\n   # ghostty-designer: live preview, keep below other config-file lines\n   config-file = ?ghostty-designer.conf\n   ```\n\n3. Remove the package with the tool that installed it.\n4. Optional: delete `~\u002F.local\u002Fstate\u002Fghostty-designer\u002F` once you no longer need\n   its backups.\n\nYour saved settings and themes are ordinary Ghostty config and stay.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n[docs\u002Farchitecture.md](docs\u002Farchitecture.md) describes how the work splits\nbetween the Rust host and the panel.\n\n## License\n\n[MIT](LICENSE)\n",2,"2026-10-31 04:26:20","CREATED_QUERY"]