<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: threedaycat</title>
    <description>The latest articles on DEV Community by threedaycat (@threedaycat).</description>
    <link>https://dev.to/threedaycat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4205825%2F8c89aa93-b3c1-4a95-a60e-1081fab0b402.png</url>
      <title>DEV Community: threedaycat</title>
      <link>https://dev.to/threedaycat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/threedaycat"/>
    <language>en</language>
    <item>
      <title>I dictate almost every prompt to Claude Code now. This Mac tool writes down exactly what I said</title>
      <dc:creator>threedaycat</dc:creator>
      <pubDate>Sun, 25 Oct 2026 14:42:46 +0000</pubDate>
      <link>https://dev.to/threedaycat/i-dictate-almost-every-prompt-to-claude-code-now-this-mac-tool-writes-down-exactly-what-i-said-47ag</link>
      <guid>https://dev.to/threedaycat/i-dictate-almost-every-prompt-to-claude-code-now-this-mac-tool-writes-down-exactly-what-i-said-47ag</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: &lt;a href="https://github.com/siyuanseever/voice-input" rel="noopener noreferrer"&gt;voice-input&lt;/a&gt; is push-to-talk dictation for macOS. Tap right Command, speak, tap again, and a second or two later the text is pasted at your cursor. It is built for talking to coding agents, so it has one hard rule: write down what was said. Never rewrite it, never translate it, never answer it. MIT, Hammerspoon plus one zsh script.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5nj2u0d55huuel801jm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5nj2u0d55huuel801jm.png" alt="How it works: speak, record, transcribe, proofread, apply vocabulary rules, paste. Claude Code feeds misheard terms back into the vocabulary." width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wrote my own
&lt;/h2&gt;

&lt;p&gt;Most of my working day is now spent talking to Claude Code: describing a change, pointing at a bug, asking why. Typing that is slow; saying it is fast. Off-the-shelf dictation got in the way in three ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;LLM cleanup is too helpful.&lt;/strong&gt; Give a model "explain what this event tap does" and ask it to tidy the transcript, and it may explain the event tap instead. Or it smooths your wording. When the text is a prompt for an agent, both are wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical terms.&lt;/strong&gt; "Claude Code" kept coming out as "Cloud Code", "Codex" as "Codecs".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscriptions&lt;/strong&gt; for something I use all day.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Record.&lt;/strong&gt; ffmpeg captures 16 kHz mono. A small overlay at the bottom of the screen shows elapsed time and a live level meter. You can start the next clip while the previous one is still being transcribed. Every clip is saved before anything else happens, so a failed or cancelled one can be redone from the panel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcribe.&lt;/strong&gt; Models are tried in order: Alibaba Cloud's &lt;code&gt;qwen3-asr-flash&lt;/code&gt; (fast and cheap), then Gemini on its free tier, then an optional on-device Qwen3-ASR-1.7B (MLX) that works offline. A model that is out of quota, unreachable or gone is skipped automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proofread.&lt;/strong&gt; &lt;code&gt;qwen-plus&lt;/code&gt; gets a brief that allows exactly three edits: drop fillers and stutters, fix punctuation, fix the spelling of terms. No synonyms, no reordering, no added words, and never an answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vocabulary rules.&lt;/strong&gt; A plain-text file: one term per line goes into the prompts; &lt;code&gt;wrong =&amp;gt; right&lt;/code&gt; lines are applied afterwards for what still slips through.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paste.&lt;/strong&gt; The text goes to the clipboard and, if the cursor is still in the same field, it is pasted there.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is a synthetic clip I made with macOS &lt;code&gt;say&lt;/code&gt; and ran through it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spoken:  "Um, can you refactor the, the panel code so that it uses the new i18n helper,
          and then run the tests? Don't push yet."
pasted:  Can you refactor the panel code so that it uses the new i18n helper and then run the tests? Don't push yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "um" and the repeated "the" are gone; the request is still a request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned about the proofreading prompt
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The cheaper model couldn't follow it.&lt;/strong&gt; I started with &lt;code&gt;qwen-flash&lt;/code&gt;. It swapped synonyms, reordered clauses and once finished my sentence with half a sentence I never said. Making the rules stricter made it worse. &lt;code&gt;qwen-plus&lt;/code&gt; follows them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guard the output, not just the prompt.&lt;/strong&gt; If the proofread text is much longer or shorter than the raw transcript, the model has probably answered or rewritten something. The tool throws it away and pastes the raw transcript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Examples in the prompt leak.&lt;/strong&gt; I once wrote "if you hear something like 'cloud code', it is Claude Code". The model started inserting "Claude" into sentences where I had never said it. Now the prompt carries a list of terms and no examples.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let Claude maintain the vocabulary
&lt;/h2&gt;

&lt;p&gt;The vocabulary file is the part I'm happiest with, and I don't maintain it by hand. Since I talk to Claude Code all day, it usually understands what I meant and can tell which word was misheard. So my &lt;code&gt;CLAUDE.md&lt;/code&gt; has a rule like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## Misheard words in my dictation
I dictate most messages. When you can tell a term was misheard and are sure of the right one,
add "wrong =&amp;gt; right" to ~/.config/voice-input/vocab.txt and mention it in one line at the end of your reply.
If the wrong spelling is a common word, include surrounding words so normal speech isn't rewritten. If unsure, ask.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the first month my vocabulary file got 108 edits; 86 of them were made by Claude this way. The next time I say the word, the transcript is right. That is the loop in the bottom-right corner of the diagram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fallbacks and cost
&lt;/h2&gt;

&lt;p&gt;After a month: 1,872 clips over 23 days, about 13 hours of audio. At list price that is under $2 (about ¥11 on the China region); my actual bill was zero, because on the China region each model version comes with a new-account free quota and the tool spends those first. With "stop when used up" turned on in the console, an exhausted quota returns an error instead of a charge, and the next model takes over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5a8ch9ut35r062nrqexz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5a8ch9ut35r062nrqexz.png" alt="The panel's stats tab: transcripts per day over two weeks, coloured by model (made-up data)" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The tool works with either an Alibaba Cloud Model Studio key (International or China region; set Region to Auto and it works out which one your key belongs to) or a free Gemini key. The UI follows your macOS language, English or Chinese.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small things for Claude Code users
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Newlines are removed before pasting, because Claude Code collapses multi-line pastes into &lt;code&gt;[Pasted text]&lt;/code&gt; and you can't check what was transcribed.&lt;/li&gt;
&lt;li&gt;Saying only "compact" pastes &lt;code&gt;/compact&lt;/code&gt;; saying only "continue" pastes &lt;code&gt;continue&lt;/code&gt; with no full stop.&lt;/li&gt;
&lt;li&gt;Optional mouse buttons: back to talk, forward for Return, middle click to paste. I can lean back and run a whole session without touching the keyboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; hammerspoon
brew &lt;span class="nb"&gt;install &lt;/span&gt;ffmpeg jq
git clone https://github.com/siyuanseever/voice-input ~/projects/voice-input
~/projects/voice-input/install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then give Hammerspoon Accessibility and Microphone permission, paste a key in the panel's Settings, and tap right Command.&lt;/p&gt;

&lt;p&gt;Known limits, up front: macOS only. I mostly speak Chinese mixed with English, so that is what it has been used on most; English I tested with synthetic clips. The Gemini path has no separate proofreading step, so it occasionally keeps a filler word. Issues and PRs welcome.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>macos</category>
    </item>
    <item>
      <title>I run a dozen Claude Code sessions at once. This tmux console tells me which one needs me</title>
      <dc:creator>threedaycat</dc:creator>
      <pubDate>Sun, 25 Oct 2026 04:43:22 +0000</pubDate>
      <link>https://dev.to/threedaycat/i-run-a-dozen-claude-code-sessions-at-once-this-tmux-console-tells-me-which-one-needs-me-a32</link>
      <guid>https://dev.to/threedaycat/i-run-a-dozen-claude-code-sessions-at-once-this-tmux-console-tells-me-which-one-needs-me-a32</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhc1sighi2dvekjwd0595.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhc1sighi2dvekjwd0595.gif" alt="15 seconds: status bar → picker → jump to the session waiting on you → switch account from the sidebar" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — &lt;a href="https://github.com/threedaycat/claude-tmux-sessions" rel="noopener noreferrer"&gt;claude-tmux-sessions&lt;/a&gt; is a small set of tmux tools for running many Claude Code sessions in parallel. It answers three questions I kept asking myself: &lt;em&gt;which session is waiting on me, what is everyone doing, and what do I do when one account runs out of quota?&lt;/em&gt; MIT, tmux + bash + python3, driven by Claude Code hooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I use Claude Code
&lt;/h2&gt;

&lt;p&gt;Some context first, or the design will look odd.&lt;/p&gt;

&lt;p&gt;I use two Claude accounts to push several projects forward at the same time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One account per project.&lt;/strong&gt; Each account has a 5-hour and a 7-day usage window. If one busy project shares an account with the others, it stalls them too. With an account per project, each has its own quota.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One session per role inside an account.&lt;/strong&gt; Algorithms, backend, frontend, testing: one session each, so each context holds only its own part of the work and doesn't drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I only make decisions.&lt;/strong&gt; I don't watch any one terminal. I go over when a session needs a yes/no, or when it has finished and I should look at the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory lives in files.&lt;/strong&gt; Project rules, hand-off notes and a dev log are in the repository, so switching accounts or sessions loses nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That adds up to a lot of sessions open at once, more than one person can watch. tmux only manages windows; it has no idea what the Claude inside each window is doing. Hence this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four pieces
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkejtk6kjn3772wfwjmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkejtk6kjn3772wfwjmd.png" alt="The whole screen: Claude on the left, its sidebar on the right, the status bar at the bottom" width="799" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Status bar: who is waiting on you
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frdsgqh9lzl1c9yzsb29n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frdsgqh9lzl1c9yzsb29n.png" alt="Status bar: four counts on the left, the window list with a state per window, CPU/memory/swap/disk on the right" width="790" height="27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each session reports its state through Claude Code hooks, and the status bar counts them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;⏸&lt;/code&gt; waiting for your confirmation (a permission prompt is open and Claude is idle) — the only state that rings and sends a notification;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;✔&lt;/code&gt; finished, and you haven't looked yet;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;▶&lt;/code&gt; running, nothing to do;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;✓&lt;/code&gt; finished, and you've seen it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The four counts never move: a zero turns grey but keeps its place, so you can click from muscle memory. Click &lt;code&gt;⏸&lt;/code&gt; to jump to the session that has waited longest; click &lt;code&gt;✔&lt;/code&gt; to get a list of just the finished-but-unread ones:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7rouc5t4qo696kv4blj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7rouc5t4qo696kv4blj.png" alt="Clicking ✔: a picker with only the done-unread sessions floats up from the bottom" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That list is a tmux 3.7 &lt;em&gt;floating pane&lt;/em&gt;, not &lt;code&gt;display-popup&lt;/code&gt;, which is why clicking anywhere outside closes it — &lt;code&gt;display-popup&lt;/code&gt; swallows clicks outside its box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Picker: what is everyone doing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F13ln2uvrqawrcyi8m41k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F13ln2uvrqawrcyi8m41k.png" alt="Picker: grouped by project, numbered rows, live preview of the highlighted session" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;prefix + g&lt;/code&gt; lists every session, grouped by tmux session (for me, one per project), with a live view of the one under the cursor. Every row is numbered; type the number to jump. It behaves like an inbox: visiting a session marks it read, and quiet ones fold away by default, so the list shows only what needs you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sidebar: everything about this one session
&lt;/h3&gt;

&lt;p&gt;Every Claude gets a sidebar on its right that is about &lt;em&gt;this&lt;/em&gt; session only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every turn.&lt;/strong&gt; What you said and the start of the reply. Click a turn and the main pane scrolls to that turn's final answer. Turns before a &lt;code&gt;/compact&lt;/code&gt; fold into one line. It reads the transcript file, not the screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quota.&lt;/strong&gt; Context, 5-hour and 7-day bars. Grey until something runs well ahead of an even pace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buttons.&lt;/strong&gt; git (with the count of uncommitted files), files, refresh quota, switch account, close.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The git and files buttons open &lt;a href="https://github.com/jesseduffield/lazygit" rel="noopener noreferrer"&gt;lazygit&lt;/a&gt; and &lt;a href="https://github.com/sxyazi/yazi" rel="noopener noreferrer"&gt;yazi&lt;/a&gt; floating over the right 60 % of the window, so the Claude on the left doesn't re-wrap; click outside and they're gone:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4kae0otafll0m55bizzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4kae0otafll0m55bizzh.png" alt="lazygit floating on the right, showing the diff of what Claude just changed" width="799" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rule of thumb: global things go on the status bar, things about the current session go on the sidebar. The status bar is short on space, and this keeps both uncluttered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Switch accounts: keep going when one runs out
&lt;/h3&gt;

&lt;p&gt;Click ⇄ on the sidebar and the session exits, then comes back as &lt;code&gt;claude --resume&lt;/code&gt; of the same session id under the other account. Same conversation, same context. There are guard rails: a session that is working is left alone; one with unsent text in its prompt is left alone (exiting would lose it); a window with agent-team teammates first gets a line typed to the lead asking it to wind the team down, and switches once they've exited.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trade-offs I made on purpose
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hooks, not screen scraping, for state.&lt;/strong&gt; Sessions report their own state when it changes: accurate, no polling, no CPU. The screen is read only where there is no other way ("which turn is where", "is there unsent text").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An inbox, not a dashboard.&lt;/strong&gt; Things you've seen turn &lt;code&gt;✓&lt;/code&gt; on their own and come back when that session does something new. Nobody maintains the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything is clickable.&lt;/strong&gt; I work mostly by voice and trackpad, so every segment and button takes a click. Keyboard shortcuts are there too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When in doubt, don't switch accounts.&lt;/strong&gt; It skips and tells you why rather than risk losing anything.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The rest of my setup
&lt;/h2&gt;

&lt;p&gt;The tmux console is one of four pieces. I also dictate almost every prompt with a push-to-talk voice tool (an LLM proofreads each transcript, and Claude adds the words it sees misheard to the vocabulary itself), and look back at usage and configuration in a local web dashboard. That's written up in &lt;a href="https://github.com/threedaycat/claude-tmux-sessions/blob/main/docs/workbench.md" rel="noopener noreferrer"&gt;docs/workbench.md&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/threedaycat/claude-tmux-sessions.git ~/projects/claude-tmux-sessions
~/projects/claude-tmux-sessions/install.sh &lt;span class="nt"&gt;--lang&lt;/span&gt; en
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add one line to your tmux config, &lt;code&gt;source-file ~/projects/claude-tmux-sessions/tmux/claude-tmux.conf&lt;/code&gt;, and put the status-bar segments into your own status line; the README walks through it.&lt;/p&gt;

&lt;p&gt;Known limits, up front: I use it daily on macOS only (Linux is untested); you need a Nerd Font for the icons; and a few features read Claude Code's screen, so a Claude Code UI change may need a follow-up fix. Issues and PRs welcome.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>tmux</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
