Generated Computers
Locals: an Apple Silicon engine that runs local LLMs up to 3x faster. A product of Generated Computers.
翻译准备中
fxterm-tabs (FxTerminalTabs): Windows terminal with vertical tabs and sleeping tabs, made for long Claude Code sessions
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Full name FxTerminalTabs; we simply call it Tabs. The project and its files are named fxterm-tabs (organisation fxterm).
A terminal for Windows and macOS with vertical tabs, made for long sessions with AI coding agents such as Claude Code. Tabs sleep and wake like a browser's, every session can be found again in History, and several windows share one process. An idle window uses a few tens of MB.
Status: 0.1, early releases. Windows is the main platform; macOS (Apple silicon and Intel) is new in 0.1.4 and tested far less.
Each tab shows three lines: its title, its folder's name, and the full path. A number in the corner is the key that reaches it (Ctrl+1 or Alt+1 for the first). In the picture above, Backend, Frontend and Later are separators: labels that group the tabs under them. Add one with the "⎯ label" button under the list, or with "Insert separator above" in a tab's menu. Separators are never selected and are skipped by Ctrl+Tab and the number keys.
Click a label to fold its group. Each label also has a Zz button at its right end for the group's sleeping tabs: it shows how many there are ("Zz 3"); click it and the sleeping tabs are hidden, leaving the live ones, and the button turns solid and counts what is hidden ("Zz 3 hidden"), so nothing is ever silently gone. Click again to show them. Hidden tabs keep their places, so the order of your list does not change; the tab you are looking at always stays in view, and a tab you wake appears at once. Ctrl+Shift+Z does the same for the group of the shown tab, and the label's menu has it too. The choice is saved with the label.
Give a tab a colour from its menu (right-click, Colour) and the colour shows as a strip at its left edge. The active tab is a lighter row with white text. If you prefer the whole row and the frame round the terminal in the tab's colour, start Tabs with --tab-fill full.
Drag a tab to reorder it (or press Ctrl+Shift+PgUp / PgDn). A new tab opens just after the current one.
When Tabs closes it saves every tab. When it starts again, every tab comes back asleep: no process runs, and the tab shows the text it had, so you can read or copy it. Press Enter or F2 (or click Restore) to wake it.
claude ... --resume <id>).A sleeping tab is dulled in the list and carries a grey moon; hover the moon and it turns into a yellow sun, and one click wakes the tab. To put a tab to sleep yourself, hover its RAM figure and click Zz, or choose Hibernate in its menu. When memory runs short, hidden Claude tabs that have been idle are put to sleep for you.
Closing a tab (its x, Ctrl+Shift+W, or its menu) closes a bare shell at once. When Claude Code or any other program is running in it, Tabs asks first: Close (F2), Hibernate (F3) or cancel (Esc).
Each live tab shows the RAM of its shell and everything it runs: blue under 100 MB, yellow from 100, orange from 200, and the heaviest tab red. The footer shows all tabs together ("All tabs 70 MB (4 live, 1 asleep)") and Tabs' own share.
Drag a tab out of the window and it opens in a new window, with its program still running. Drop it on another window's list to move it there, or use "Move to window" in its menu. Ctrl+Shift+N opens a new window. A window left without tabs closes. Every window, with its place on the screen and its tabs, comes back after a restart.
Each window has its own colour, never one that another open window wears, and can be given a name. The colour fills the window's title bar and border on Windows 11 and the terminal icon on the taskbar, so windows tell apart at a glance. The row above the tab list has flat icon buttons, with colour when the mouse is over one: History, the window's colour, its name, Restore all (the sun) and Settings (the gear). Name and colour are kept across restarts.
Ctrl+Tab opens a popup that goes to a tab in any window. The list on the left holds every awake tab, under its group, under its window, and then the same again for the hibernated tabs; the right side shows what the highlighted tab shows now, or its saved text when it sleeps. Type to filter: a tab's number, part of its name or folder, a window's or group's name, several words at once. Up and Down move, Enter goes there, Backspace takes back what was typed, Esc closes.
A program in a tab that is blocked on you (Claude Code, say) runs fxterm-tabs ctl attention on; Tabs finds that tab by itself. Its row turns amber with a softly glowing bell, Tabs plays one quiet sound, and a small popup asks whether to switch to that tab: Yes (F2), No (Esc), and with no answer in 20 seconds Tabs switches there by itself. Keys are ignored for the first moments, so what you were typing cannot answer it. fxterm-tabs ctl attention off takes the bell away, and so does typing in that tab. A title that starts with a bell, a warning sign, a siren or an exclamation mark does the same, and keeps the mark in the window title and tooltip. Only the animated marks programs cycle through (claude's stars, braille dots, the spinning bar) are replaced by Tabs' own activity ring. Only the bell glows; no row moves or changes size, so the tab list never shakes.
Every tab that closes or goes to sleep is kept, with its text, and so is every tab that was open when Tabs closed. Ctrl+Shift+H opens History. Search finds words in titles, folders and the saved text. Filter by date and kind, preview the text, copy it, copy the command that resumes it, or press Enter to resume it in a new tab.
Ctrl+Shift+E opens an editor under the terminal for writing what a terminal makes awkward, such as a request of several lines for an AI agent. It takes the terminal's own colours, and has an editor's tools (bold, italic, headings, lists) and a writer bar for dictation (F3) and spelling. Ctrl+Enter sends it to the tab as one paste followed by Enter; "Type only" sends it without Enter.
Select text in the terminal and a small bar appears beside it: Copy, Read aloud, Quote & reply (into the compose box) and Quote in notepadfx. Read aloud speaks the selection and lights each word in the terminal as it is said, scrolling to keep it in sight; while it reads, the footer shows Pause, Stop, speed and Voice. Claude's own markers and the box-drawing characters are not read.
Ctrl+= makes the text bigger, Ctrl+- smaller, and Ctrl+0 goes back to the default. Ctrl+mouse wheel and pinching on a touchpad or touch screen do the same. The size applies to every tab in every window and is remembered.
fxterm-tabs -Xjr:update (a copy not started through the release exe opens the release page instead).fxterm-tabs open <dir> opens a shell there, fxterm-tabs run <command...> opens a tab running a command. A second launch adds a tab to the running window.Install in Terminal (curl sets no download mark, so macOS does not block the file; a browser download would be blocked until you choose Open Anyway in System Settings, Privacy & Security):
curl -fLo /tmp/fxterm-tabs https://github.com/fxterm/tabs/releases/latest/download/fxterm-tabs-macos-$(uname -m) && chmod +x /tmp/fxterm-tabs && /tmp/fxterm-tabs -Xjr:install
That puts Tabs.app in ~/Applications and a command fxterm-tabs in ~/.local/bin; no administrator rights. It needs Java 25 (jr offers to download one if none is found). Update later by clicking the footer's "Update ... available", or with fxterm-tabs -Xjr:update.
What differs from Windows:
$SHELL -l, zsh by default). A tab that ran Claude Code wakes as claude ... --resume <id> inside a login shell, and drops back to a shell when claude ends.--theme tabby uses an existing Tabby configuration instead (~/Library/Application Support/tabby/config.yaml).~/speechfx/keys/deepgram_keys.xml holds a key; the free system voices are not connected. Everything else in this README works on a Mac.Everything else goes to the program in the tab.
Download fxterm-tabs.exe from the latest release and run it. It needs Java 25 (the exe finds an installed JDK 25 or later). On first run it downloads fxterm-tabs.jar from the same release and checks it against the SHA-256 built into the exe. fxterm-tabs.exe -Xjr:update moves to a newer release.
Settings and saved state live in %USERPROFILE%\fxterm\tabs: open tabs, window places, font size, history and the log.
--tab-fill strip|full a tab's colour as the strip at its edge (the default), or filling the row and the frame--font N, --family NAME the terminal font (Consolas on Windows, Menlo on a Mac)--theme tabby|vscode colours from an existing Tabby configuration (the default on Windows), or VS Code's Dark Modern terminal (the default on a Mac)--shell CMD the shell for new tabs (cmd.exe on Windows, your login shell on a Mac)--restore false start with a fresh tab instead of the saved onesJDK 25 and Maven:
mvn verify
app\target\jr\fxterm-tabs.exe
mvn -Djr.source=url verify builds the release files in app\target\jr\release.
Tabs is Apache-2.0 (see LICENSE). The terminal widget is a modified copy of JediTermFX 1.1.0 (module jeditermfx-ui), itself a JavaFX port of JetBrains' JediTerm, dual-licensed Apache-2.0 / LGPL-3.0; the licence texts are in that module. Process handling uses pty4j; the exe is made with jr.