<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="https://perrotta.dev/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ghostty on ¬ just serendipity 🍀</title>
    <link>https://perrotta.dev/</link>
    <description>Recent content in Ghostty on ¬ just serendipity 🍀</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>serendipity@perrotta.dev (Thiago Perrotta)</managingEditor>
    <webMaster>serendipity@perrotta.dev (Thiago Perrotta)</webMaster>
    <copyright>© 2013 - 2026 Thiago Perrotta ·
  a fork of [hugo ʕ•ᴥ•ʔ bear](https://github.com/janraasch/hugo-bearblog/)
</copyright>
    <lastBuildDate>Tue, 07 Jul 2026 15:01:24 +0200</lastBuildDate>
    <atom:link href="https://perrotta.dev/tags/ghostty/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>★ cmux
      </title>
      <link>https://perrotta.dev/2026/07/cmux/</link>
      <pubDate>Tue, 07 Jul 2026 14:35:14 +0200</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>ai</category>
      <category>bestof</category>
      <category>dev</category>
      <category>ghostty</category>
      <guid>https://perrotta.dev/2026/07/cmux/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://cmux.com/&#34;&gt;cmux&lt;/a&gt; is the best implementation I&amp;rsquo;ve&#xA;seen for agent orchestrators apps like &lt;a href=&#34;https://www.conductor.build/&#34;&gt;Conductor&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/pingdotgg/t3code&#34;&gt;T3 Code&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/patrickdappollonio/dux&#34;&gt;Dux&lt;/a&gt;, and friends:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Open source Ghostty-based macOS terminal with vertical tabs and notifications&#xA;for AI coding agents. Built for multitasking, organization, and&#xA;programmability.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;It&amp;rsquo;s built on top of &lt;a href=&#34;https://ghostty.org/&#34;&gt;Ghostty&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2026/07/cmux/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; and it&amp;rsquo;s absolutely&#xA;amazing. It&amp;rsquo;s effectively better than what I attempted to build once during an&#xA;on-site hackathon wiring Claude Code sessions to&#xA;&lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The invariant I care about the most:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;restart your computer&lt;/li&gt;&#xA;&lt;li&gt;reopen &lt;code&gt;$APP&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;automatically restore every claude code session: layout &amp;amp; history preserved,&#xA;scrollback intact&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&amp;hellip;is accomplished with fine elegance by &lt;code&gt;cmux&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no need to manually fiddle with &lt;code&gt;tmux&lt;/code&gt; / &lt;code&gt;zellij&lt;/code&gt; resurrection or alike.&lt;/p&gt;&#xA;&lt;p&gt;Pair it with &lt;a href=&#34;https://perrotta.dev/2026/05/worktrunk/&#34;&gt;worktrunk&lt;/a&gt; (the &lt;code&gt;wt&lt;/code&gt; CLI) for&#xA;bonus points. Its&#xA;&lt;a href=&#34;https://worktrunk.dev/tips-patterns/#cmux-workspace-per-worktree&#34;&gt;integration&lt;/a&gt;&#xA;is well-supported, achieving one cmux workspace per git worktree. For the time&#xA;being I&amp;rsquo;m still invoking &lt;code&gt;wt&lt;/code&gt; manually though, because that gives me more&#xA;control.&lt;/p&gt;&#xA;&lt;p&gt;It is very &lt;a href=&#34;https://cmux.com/docs/configuration&#34;&gt;customizable&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Desirable side effect: existing &lt;code&gt;ghostty&lt;/code&gt; settings are automatically&#xA;inherited. They aren&amp;rsquo;t duplicated — they are effectively reused, which is&#xA;superb.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2026/07/cmux/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: cmux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/ai/&#34;&gt;#ai&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/bestof/&#34;&gt;#bestof&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghostty 1.3.0 release
      </title>
      <link>https://perrotta.dev/2026/03/ghostty-1.3.0-release/</link>
      <pubDate>Tue, 10 Mar 2026 19:10:42 +0100</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/2026/03/ghostty-1.3.0-release/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://ghostty.org/docs/install/release-notes/1-3-0&#34;&gt;Ghostty 1.3.0&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Ghostty 1.3.0 is a significant release which includes many of the most&#xA;requested features such as scrollback search, native scrollbars,&#xA;click-to-move-cursor in shell prompts, and more. It also includes hundreds of&#xA;improvements, bug fixes, and performance optimizations across all platforms.&lt;/p&gt;&#xA;&lt;p&gt;This release features 6 months of work with changes from 180 contributors over&#xA;2,858 commits. Thank you to all the contributors, maintainers, community&#xA;moderators, translators, packagers, and users who each helped make this&#xA;release possible.&lt;/p&gt;&#xA;&lt;p&gt;These release notes are painstakingly and lovingly hand-crafted by human&#xA;Ghostty maintainers, including the full changelog. They take a combined 16+&#xA;hours to write, so please enjoy. 🥰&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I never thought I could get so much joy from reading software release notes in&#xA;2026, in the era where many (most?) release notes are an afterthought, either&#xA;generic and vague or bland and LLM-generated.&lt;/p&gt;&#xA;&lt;p&gt;All hail to &lt;a href=&#34;https://mitchellh.com/&#34;&gt;Mitchell Hashimoto&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Ghostty 1.3.0 release&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ghostty: keybindings
      </title>
      <link>https://perrotta.dev/2026/01/ghostty-keybindings/</link>
      <pubDate>Sun, 11 Jan 2026 10:05:08 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <category>macos</category>
      <guid>https://perrotta.dev/2026/01/ghostty-keybindings/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;TIL&lt;/strong&gt;: A few keybindings from &lt;a href=&#34;https://ghostty.org/&#34;&gt;Ghostty&lt;/a&gt;. Assuming macOS.&#xA;This list contains the keyboard shortcuts I tend to use weekly (or daily). No&#xA;point in including an exhaustive list.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + d&lt;/code&gt;: split right&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Shift + d&lt;/code&gt;: split down&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Shift + p&lt;/code&gt;: command palette&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2026/01/ghostty-keybindings/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Shift + Enter&lt;/code&gt;: toggle (split) zoom (comparable &lt;a href=&#34;https://superuser.com/questions/238702/maximizing-a-pane-in-tmux&#34;&gt;to&lt;/a&gt; &lt;code&gt;prefix + z&lt;/code&gt; in &lt;code&gt;tmux&lt;/code&gt; a.k.a. &lt;code&gt;resize-pane&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Enter&lt;/code&gt;: toggle fullscreen (at the system window manager level)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + 1&lt;/code&gt;, &lt;code&gt;Cmd + 2&lt;/code&gt;, etc: switch terminal tabs&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Shift + {&lt;/code&gt; / &lt;code&gt;Cmd + Shift + }&lt;/code&gt;: cycle through tabs backwards / forward&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + Shift + [&lt;/code&gt; / &lt;code&gt;Cmd + Shift + ]&lt;/code&gt;: cycle through splits backwards /&#xA;forward&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + .&lt;/code&gt;: open Ghostty config&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + t&lt;/code&gt;: open new tab&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + w&lt;/code&gt;: close current tab&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Cmd + n&lt;/code&gt;: open new window&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I found these defaults to be quite sensible.&lt;/p&gt;&#xA;&lt;p&gt;The only added customization that I really occasionally use is this:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;keybind = global:cmd&amp;#43;;=toggle_quick_terminal&#xA;keybind = global:cmd&amp;#43;shift&amp;#43;;=toggle_quick_terminal&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&amp;hellip;to toggle the quick terminal (&lt;a href=&#34;https://perrotta.dev/2025/11/ghostty-quick-terminal/&#34;&gt;previously&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;After 1y using Ghostty, only now have I figured it out it has a command&#xA;palette!&amp;#160;&lt;a href=&#34;https://perrotta.dev/2026/01/ghostty-keybindings/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: ghostty: keybindings&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/macos/&#34;&gt;#macos&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ghostty: splits
      </title>
      <link>https://perrotta.dev/2026/01/ghostty-splits/</link>
      <pubDate>Thu, 08 Jan 2026 12:28:27 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <category>macos</category>
      <guid>https://perrotta.dev/2026/01/ghostty-splits/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://perrotta.dev/2025/07/ghostty-migrating-config-to-dotfiles/&#34;&gt;Previously&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The best quality-of-life improvement for Ghostty I added in 2025&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2026/01/ghostty-splits/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;: add the&#xA;following keybindings to your Ghostty config:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;# native: Cmd &amp;#43; Shift &amp;#43; d&#xA;keybind = cmd&amp;#43;shift&amp;#43;-=new_split:down&#xA;# native: Cmd &amp;#43; d&#xA;keybind = cmd&amp;#43;shift&amp;#43;|=new_split:right&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now you can split your terminal to the right and to the bottom with keyboard&#xA;shortcuts.&lt;/p&gt;&#xA;&lt;p&gt;Previously I was using the mouse to do so (right click + split).&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Unless you count &lt;a href=&#34;https://perrotta.dev/2025/11/ghostty-shaders/&#34;&gt;eye-candy&lt;/a&gt; as&#xA;a QoL improvement :)&amp;#160;&lt;a href=&#34;https://perrotta.dev/2026/01/ghostty-splits/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: ghostty: splits&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/macos/&#34;&gt;#macos&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghostty shaders
      </title>
      <link>https://perrotta.dev/2025/11/ghostty-shaders/</link>
      <pubDate>Sun, 30 Nov 2025 18:17:36 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/2025/11/ghostty-shaders/</guid>
      <description>&lt;p&gt;♠ Ghostty supports &lt;a href=&#34;https://mitchellh.com/writing/ghostty-devlog-005&#34;&gt;shaders&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/sahaj-b/ghostty-cursor-shaders&#34;&gt;This repo&lt;/a&gt; hosts a&#xA;collection of custom shaders readily available.&lt;/p&gt;&#xA;&lt;p&gt;I integrated them with my &lt;a href=&#34;https://github.com/thiagowfx/.dotfiles&#34;&gt;.dotfiles&lt;/a&gt;&#xA;via a&#xA;&lt;a href=&#34;https://github.com/thiagowfx/.dotfiles/commit/d1a8779290d0ec9181dcc6a7c092d825cd187186&#34;&gt;submodule&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;p&gt;Ghostty config:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;custom-shader = shaders/cursor_tail.glsl&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The&#xA;&lt;a href=&#34;https://github.com/sahaj-b/ghostty-cursor-shaders/blob/main/cursor_tail.glsl&#34;&gt;&lt;code&gt;cursor_tail.glsl&lt;/code&gt;&lt;/a&gt;&#xA;file was added with a symlink to the submodule.&lt;/p&gt;&#xA;&lt;p&gt;The end result? See the &lt;a href=&#34;https://github.com/sahaj-b/ghostty-cursor-shaders?tab=readme-ov-file#demos&#34;&gt;demo in the repo README&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;#power&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mitchell Hashimoto:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Okay, but this is all completely pointless,right? The most common use case is&#xA;fun and that&amp;rsquo;s certainly not necessary (yeah, screw fun, right?). However, the&#xA;primary practical use case for custom shaders is accessibility. Custom shaders&#xA;are a really great way to specifically address certain forms of&#xA;colorblindness, affect contrast or brightness to make things more readable,&#xA;create &amp;ldquo;magnifying glass&amp;rdquo; effects, etc.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;See also: &lt;a href=&#34;https://catskull.net/fun-with-ghostty-shaders.html&#34;&gt;Fun with Ghostty&#xA;Shaders&lt;/a&gt;,&#xA;&lt;a href=&#34;https://l-o-o-s-e-d.net/kb/terminals/ghostty&#34;&gt;l-o-o-s-e-d.net&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Ghostty shaders&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ghostty: quick terminal
      </title>
      <link>https://perrotta.dev/2025/11/ghostty-quick-terminal/</link>
      <pubDate>Thu, 27 Nov 2025 01:43:35 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <guid>https://perrotta.dev/2025/11/ghostty-quick-terminal/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://ghostty.org/&#34;&gt;Ghostty&lt;/a&gt; has a&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/Quake_%28video_game%29&#34;&gt;Quake&lt;/a&gt;-like&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2025/11/ghostty-quick-terminal/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; mode to pop&#xA;up a terminal (console) from the top of the screen, no matter where you are.&lt;/p&gt;&#xA;&lt;p&gt;Enable it with this setting in your Ghostty config:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;keybind = global:cmd&amp;#43;;=toggle_quick_terminal&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;global:&lt;/code&gt; is what does the &amp;ldquo;no matter where you are&amp;rdquo; magic. Even if your focus&#xA;is in another application / window, the shortcut will still work. I did not test&#xA;it with conflicting shortcuts, it&amp;rsquo;s better to pick an uncommon one (don&amp;rsquo;t pick&#xA;&lt;code&gt;Cmd + T&lt;/code&gt;!).&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Cmd + ;&lt;/code&gt; seems reasonable. I am also dabbling with &lt;code&gt;Cmd + Shift + Enter&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The terminal session persists. Say you open &lt;code&gt;vim&lt;/code&gt; and then close the terminal.&#xA;Upon opening it again, &lt;code&gt;vim&lt;/code&gt; will still be there. This blog post was written&#xA;from the quick terminal.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;See also: &lt;a href=&#34;https://guake.github.io/&#34;&gt;Guake Terminal&lt;/a&gt;.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2025/11/ghostty-quick-terminal/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: ghostty: quick terminal&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghostty: migrating config to dotfiles
      </title>
      <link>https://perrotta.dev/2025/07/ghostty-migrating-config-to-dotfiles/</link>
      <pubDate>Mon, 21 Jul 2025 14:56:27 +0200</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <category>macos</category>
      <guid>https://perrotta.dev/2025/07/ghostty-migrating-config-to-dotfiles/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/&#34;&gt;This year&lt;/a&gt; I migrated my terminal&#xA;application from &lt;a href=&#34;https://iterm2.com/&#34;&gt;iTerm2&lt;/a&gt; to&#xA;&lt;a href=&#34;https://ghostty.org/&#34;&gt;Ghostty&lt;/a&gt; on macOS.&lt;/p&gt;&#xA;&lt;p&gt;Ghostty has great defaults; I find that there are only a handful of&#xA;customizations that I need to make to satisfy my needs.&lt;/p&gt;&#xA;&lt;p&gt;One can configure ghostty by opening its config file with &lt;code&gt;Cmd + ,&lt;/code&gt;, the typical&#xA;preferences shortcut on macOS.&lt;/p&gt;&#xA;&lt;p&gt;In a vanilla system, that config file is initially &lt;code&gt;$HOME/Library/Application\ Support/com.mitchellh.ghostty/config&lt;/code&gt;&#xA;(&lt;a href=&#34;https://ghostty.org/docs/config#macos-specific-path-%28macos-only%29:&#34;&gt;docs&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;That location is not convenient / accessible though.&lt;/p&gt;&#xA;&lt;p&gt;Upon digging the &lt;a href=&#34;https://ghostty.org/docs/config&#34;&gt;ghostty config docs&lt;/a&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;$XDG_CONFIG_HOME/ghostty/config.&#xA;if XDG_CONFIG_HOME is not defined, it defaults to $HOME/.config/ghostty/config.&#xA;&#xA;macOS-specific Path (macOS only):&#xA;$HOME/Library/Application\ Support/com.mitchellh.ghostty/config&#xA;macOS also supports the XDG configuration path mentioned above.&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I prefer the &lt;code&gt;~/.config/ghostty&lt;/code&gt; location: it is cross-platform, compatible with&#xA;Linux as well, and I can easily add it to my&#xA;&lt;a href=&#34;https://github.com/thiagowfx/.dotfiles/blob/master/ghostty/config&#34;&gt;dotfiles&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Moving the file to that location yields a no-frills migration:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;% mv $HOME/Library/Application\ Support/com.mitchellh.ghostty/config $HOME/.config/ghostty/config&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;As of today, the config looks like this:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;# https://ghostty.org/docs/config&#xA;# keep-sorted start&#xA;cursor-style-blink = false&#xA;keybind = shift&amp;#43;enter=text:\n&#xA;macos-icon = chalkboard&#xA;shell-integration-features = no-cursor&#xA;theme = catppuccin-macchiato&#xA;# keep-sorted end&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The first line is a handy shortcut to the config documentation.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/google/keep-sorted&#34;&gt;&lt;code&gt;keep-sorted&lt;/code&gt;&lt;/a&gt; stanzas stem from my&#xA;tendency to keep the house tidy. They are not merely comments: the sorting is&#xA;actually enforced via a git &lt;a href=&#34;https://pre-commit.com/&#34;&gt;pre-commit&lt;/a&gt; hook.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;cursor-style-blink = false&lt;/code&gt;: blinking cursor is unnecessarily distracting.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;keybind = shift+enter=text:\n&lt;/code&gt;: &lt;a href=&#34;https://www.anthropic.com/claude-code&#34;&gt;Claude Code&lt;/a&gt; added this, it&amp;rsquo;s &lt;a href=&#34;https://github.com/ghostty-org/ghostty/discussions/7780&#34;&gt;surprising&lt;/a&gt; it&amp;rsquo;s not the default:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;[...]&#xA;│ &amp;gt; /termi                                                     │&#xA;───────────────────────────────────────────────────────────────╯&#xA;  /terminal-setup   Install Shift&amp;#43;Enter key binding for newlines&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;macos-icon = chalkboard&lt;/code&gt;: bells and whistles.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;shell-integration-features = no-cursor&lt;/code&gt;: some&#xA;&lt;a href=&#34;https://github.com/ghostty-org/ghostty/discussions/2812#discussioncomment-11686920&#34;&gt;context&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;theme = catppuccin-macchiato&lt;/code&gt;: more bells and whistles. You may like: &lt;code&gt;ghostty +list-themes&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Ghostty: migrating config to dotfiles&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/macos/&#34;&gt;#macos&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ghostty: find popular themes
      </title>
      <link>https://perrotta.dev/2025/01/ghostty-find-popular-themes/</link>
      <pubDate>Thu, 09 Jan 2025 02:56:37 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <guid>https://perrotta.dev/2025/01/ghostty-find-popular-themes/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://ghostty.org/&#34;&gt;Ghostty 1.0&lt;/a&gt; was barely released and it&amp;rsquo;s already quite&#xA;popular.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been &lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/&#34;&gt;daily driving&lt;/a&gt; it since December&#xA;last year and it has been quite enjoyable. There are a few annoyances here and&#xA;there, but its minimalism and speed make up for them.&lt;/p&gt;&#xA;&lt;p&gt;Today I stumbled upon &lt;a href=&#34;https://ghostty.town/&#34;&gt;ghostty.town&lt;/a&gt;, which hosts&#xA;user-submitted configs. Reminds me of:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://terminal.love/&#34;&gt;https://terminal.love/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://terminal.sexy/&#34;&gt;https://terminal.sexy/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My current config is quite simple (by design!):&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;cursor-style-blink = false&#xA;shell-integration-features = no-cursor&#xA;&#xA;theme=catppuccin-macchiato&#xA;&#xA;macos-titlebar-style=tabs&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I got inspired to use the &lt;a href=&#34;https://catppuccin.com/&#34;&gt;Catppuccin&lt;/a&gt; theme thanks to&#xA;&lt;a href=&#34;https://jnsgr.uk/2024/07/how-i-computer-in-2024/&#34;&gt;Jon Seager&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no need to customize the default font as it&amp;rsquo;s &lt;a href=&#34;https://perrotta.dev/2024/12/picking-a-monospaced-code-font/&#34;&gt;quite sensible&lt;/a&gt; (JetBrains Mono, &lt;a href=&#34;https://ghostty.org/docs/config&#34;&gt;as&#xA;per&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update(2025-07-22)&lt;/strong&gt;: You may also like: &lt;code&gt;ghostty +list-themes&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: ghostty: find popular themes&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghostty
      </title>
      <link>https://perrotta.dev/2024/12/ghostty/</link>
      <pubDate>Sat, 28 Dec 2024 17:50:31 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>ghostty</category>
      <guid>https://perrotta.dev/2024/12/ghostty/</guid>
      <description>&lt;p&gt;♠ From the series: yet another terminal emulator in &lt;del&gt;Rust&lt;/del&gt; Zig™:&lt;/p&gt;&#xA;&lt;figure&gt;&lt;a href=&#34;https://xkcd.com/927/&#34;&gt;&lt;img src=&#34;https://imgs.xkcd.com/comics/standards.png&#34;&#xA;    alt=&#34;Fortunately, the charging one has been solved now that we&amp;#39;ve all standardized on mini-USB. Or is it micro-USB? Shit.&#34;&gt;&lt;/a&gt;&lt;figcaption&gt;&#xA;      &lt;p&gt;XKCD Courtesy of Randall Munroe&lt;/p&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ghostty.org/&#34;&gt;https://ghostty.org/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;So you just recreated Alacritty / Kitty?&lt;/p&gt;&#xA;&lt;p&gt;Popularity on &lt;a href=&#34;https://news.ycombinator.com/item?id=42517447&#34;&gt;Hacker News&lt;/a&gt; exploded, with over 2k stars.&#xA;For some reason, anything written in &lt;del&gt;Rust&lt;/del&gt; Zig automatically becomes popular.&lt;/p&gt;&#xA;&lt;p&gt;Snark aside, I tested it yesterday on macOS and it turns out it&amp;rsquo;s quite amazing.&lt;/p&gt;&#xA;&lt;p&gt;In particular, I like:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;it&amp;rsquo;s fast&lt;/li&gt;&#xA;&lt;li&gt;it&amp;rsquo;s minimalist, and yet it&amp;rsquo;s feature-rich in an unobtrusive way&lt;/li&gt;&#xA;&lt;li&gt;it&amp;rsquo;s native (no Electron and friends, amen)&lt;/li&gt;&#xA;&lt;li&gt;it has sensible configuration defaults&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It resembles my experience of using &lt;a href=&#34;https://alacritty.org/&#34;&gt;Alacritty&lt;/a&gt; on Linux&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I just have three gripes&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; with it until I am able to fully adopt it:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-ssh-does-not-work-out-of-the-box-due-to-xterm-shenanigans&#34;&gt;&#xA;  1. &lt;code&gt;ssh&lt;/code&gt; does not work out-of-the-box due to &lt;code&gt;xterm&lt;/code&gt; shenanigans&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2024/12/ghostty/#1-ssh-does-not-work-out-of-the-box-due-to-xterm-shenanigans&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ghostty-org/ghostty/discussions/3161&#34;&gt;https://github.com/ghostty-org/ghostty/discussions/3161&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Error opening terminal: xterm-ghostty.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;They do provide a &lt;a href=&#34;https://ghostty.org/docs/help/terminfo#configure-ssh-to-fall-back-to-a-known-terminfo-entry&#34;&gt;workaround&lt;/a&gt;,&#xA;by the means of making a change to &lt;code&gt;~/.ssh/config&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;# .ssh/config&#xA;Host *&#xA;  SetEnv TERM=xterm-256color&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The workaround suffices.&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-blinking-cursor&#34;&gt;&#xA;  2. Blinking cursor&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2024/12/ghostty/#2-blinking-cursor&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When using &lt;code&gt;zsh&lt;/code&gt;, it&amp;rsquo;s impossible to make the cursor stop blinking.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s &lt;a href=&#34;https://github.com/ghostty-org/ghostty/discussions/2812#discussioncomment-11686920&#34;&gt;an issue&lt;/a&gt; about it:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Setting &lt;code&gt;cursor-style-blink&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; has virtually no effect because shell integration will automatically turn on blinking.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I also jumped on the bandwagon with a &lt;a href=&#34;https://github.com/ghostty-org/ghostty/discussions/2812#discussioncomment-11680349&#34;&gt;comment&lt;/a&gt; there:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I use &lt;a href=&#34;https://grml.org/zsh&#34;&gt;grml-zsh-config&lt;/a&gt;. When opening Ghostty, it starts with a bar+blinking cursor(1).&lt;/p&gt;&#xA;&lt;p&gt;When spawning a new &lt;code&gt;zsh&lt;/code&gt; shell within &lt;code&gt;zsh&lt;/code&gt;, it changes to a block+non-blocking cursor(2).&lt;/p&gt;&#xA;&lt;p&gt;(2) is the desired behavior – iTerm2 and Terminal.app both do it out-of-the-box. I am not sure why Ghostty sets a bar+blinking cursor, whilst the other terminal emulators do not.&lt;/p&gt;&#xA;&lt;p&gt;This discussion / issue seems to track down the root cause. I would suggest converting it back to an Issue. Happy to provide logs and/or more info if it helps!&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;There&amp;rsquo;s no elegant workaround for 2). Should they ever fix that issue, I am ready to switch from iTerm2.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Edit(2024-12-29)&lt;/strong&gt;: The following config works to achieve (2):&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;cursor-style-blink = false&#xA;shell-integration-features = no-cursor&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;3-no-scrollback-search&#34;&gt;&#xA;  3. No scrollback search&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/2024/12/ghostty/#3-no-scrollback-search&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Edit(2024-12-29)&lt;/strong&gt;: This section was added afterwards. The initial post only&#xA;had two gripes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ghostty-org/ghostty/issues/189&#34;&gt;There is no &lt;code&gt;Cmd + f&lt;/code&gt; to&#xA;search&lt;/a&gt;. This is a big deal.&#xA;It&amp;rsquo;s just a matter of time: the FR has lots of upvotes.&lt;/p&gt;&#xA;&lt;p&gt;iTerm2 is great, but it has way too many features, and I barely use any.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;On macOS, Alacritty isn&amp;rsquo;t really great.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/2022/03/macos-terminal-app-gripes/&#34;&gt;Seems familiar&lt;/a&gt;.&amp;#160;&lt;a href=&#34;https://perrotta.dev/2024/12/ghostty/#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Ghostty&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/ghostty/&#34;&gt;#ghostty&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
