<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Tools on bismigel</title><link>https://bismigel.dev/tags/tools/</link><description>Recent content in Tools on bismigel</description><generator>Hugo</generator><language>en-us</language><copyright>bismigel</copyright><lastBuildDate>Thu, 15 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://bismigel.dev/tags/tools/index.xml" rel="self" type="application/rss+xml"/><item><title>multi-ghostel</title><link>https://bismigel.dev/projects/multi-ghostel/</link><pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate><guid>https://bismigel.dev/projects/multi-ghostel/</guid><description>Directory-scoped terminal reuse and a toggleable dedicated window for ghostel in Emacs.</description><content:encoded><![CDATA[<p><code>multi-ghostel</code> is a small Emacs package that ports the parts of <a href="https://github.com/suonlight/multi-vterm" target="_blank" rel="noopener noreferrer">multi-vterm</a>
 I actually use to <a href="https://github.com/dakra/ghostel" target="_blank" rel="noopener noreferrer">ghostel</a>
. Most of multi-vterm already ships with ghostel, so this only adds what is missing.</p>
<h1 id="what-it-adds">What it adds</h1>
<ul>
<li><strong>Directory-scoped reuse</strong>: <code>multi-ghostel-cwd</code> keys off <code>default-directory</code> (following <code>cd</code> via OSC 7), so each directory gets one reusable terminal.</li>
<li><strong>An always-new command</strong>: <code>multi-ghostel</code> starts a fresh session, matching multi-vterm&rsquo;s behaviour instead of reusing ghostel&rsquo;s buffer.</li>
<li><strong>A dedicated window</strong>: toggle, open, close and focus a single terminal window without killing the shell running in it.</li>
</ul>
<h1 id="why-a-separate-package">Why a separate package</h1>
<p>ghostel is a vterm alternative built on the same idea (a real terminal inside Emacs). Rather than fork either project, this package composes the existing ghostel primitives with the multi-vterm workflow: one command to reuse a terminal per project, one to force a new one, and one to get a scratch terminal out of the way and back.</p>
<h1 id="install">Install</h1>
<p>Emacs 29 ships <code>package-vc-install</code>:</p>
<div class="code-block">
  <div class="code-block-header">
    <span class="code-block-lang">commonlisp</span>
    <button type="button" class="code-copy" aria-label="Copy code">
      <span class="code-copy-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>
</span>
      <span class="code-copy-icon code-copy-icon-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
</span>
      <span class="code-copy-label">Copy</span>
    </button>
  </div>
  <pre tabindex="0"><code class="language-commonlisp" data-lang="commonlisp">(package-vc-install &#34;https://github.com/bismigel/multi-ghostel&#34;)</code></pre>
</div>
<p>Or with <code>use-package</code>:</p>
<div class="code-block">
  <div class="code-block-header">
    <span class="code-block-lang">commonlisp</span>
    <button type="button" class="code-copy" aria-label="Copy code">
      <span class="code-copy-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>
</span>
      <span class="code-copy-icon code-copy-icon-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
</span>
      <span class="code-copy-label">Copy</span>
    </button>
  </div>
  <pre tabindex="0"><code class="language-commonlisp" data-lang="commonlisp">(use-package multi-ghostel
  :vc (:url &#34;https://github.com/bismigel/multi-ghostel&#34;)
  :bind ((&#34;C-c t&#34; . multi-ghostel-cwd)
         (&#34;C-c T&#34; . multi-ghostel)
         (&#34;C-`&#34;   . multi-ghostel-dedicated-toggle)))</code></pre>
</div>
<p>The source and suggested keybindings live on <a href="https://github.com/bismigel/multi-ghostel" target="_blank" rel="noopener noreferrer">GitHub</a>
.</p>
]]></content:encoded></item></channel></rss>