Skip to content

Repository files navigation

Claufy

Every window you're working in, on one screen.
Tiles that space themselves — and the one you're using grows.

claufy.pages.dev · Download · MIT


Download

macOS (Apple Silicon) Claufy-mac-arm64.dmg
macOS (Intel) Claufy-mac-x64.dmg
Windows Claufy-win-x64.exe
Linux Claufy-linux-x86_64.AppImage

The builds are not code-signed — a signing certificate costs money and this is free. Every OS therefore puts up a scare the first time:

  • macOS — right-click the app and choose Open, then Open again. Or xattr -dr com.apple.quarantine /Applications/Claufy.app.
  • Windows — SmartScreen: More infoRun anyway.
  • Linuxchmod +x Claufy-linux-x86_64.AppImage, then run it.

Building from source skips all of that, and is two commands (see below).


Claufy is a desktop app that holds your terminals (and web pages) as tiles. Open another one and everything re-spaces itself. Click a tile and it grows, smoothly, because you're working in it.

It is not a window manager and it does not take over your OS. It is one app window with tiles inside, so it works the same on macOS, Windows and Linux.

Run it

npm install     # also repairs node-pty's spawn-helper permissions
npm start

Install it (macOS)

npm run dist         # builds Claufy.app
npm run install-app  # copies to ~/Applications, ad-hoc signs, tells Spotlight

Then type claufy in Spotlight or Finder. Use npm run install-app -- --system for /Applications instead (needs an admin password).

How it looks

The palette, the font and the whole ANSI table are read out of Terminal.app's Clear Dark profile, so a tile looks like the terminal window it replaces: background #191d27, text #e0e0e0, selection #273d4c, JetBrainsMono NFP Thin at 12pt. To retarget it at a different profile, decode ~/Library/Preferences/com.apple.Terminal.plist — the colours are NSKeyedArchiver blobs whose NSRGB field is a null-terminated string of floats — and replace TERM_THEME in src/renderer/index.ts plus the tokens at the top of src/renderer/styles.css.

Keys

Key Does
Cmd/Ctrl + T New terminal tile
Cmd/Ctrl + W Close the active tile
Cmd/Ctrl + Enter Blow the active tile up to fill the window, and back
Cmd/Ctrl + 1…9 Jump to a tile
Esc Leave full-window mode
Double-click a tile's header Same as Cmd/Ctrl + Enter

The three focus modes

Set this in the top bar. It is remembered.

Mode What happens when you click a tile
Equal Nothing — every tile stays the same size
Grow Its row and column expand; Size sets how much
Solo It takes the whole window, the others collapse away

All three animate, because the layout is one CSS Grid and the sizes live in grid-template-columns / grid-template-rows. Chromium interpolates those, so the browser animates the tracks for us. Nothing is transformed or scaled, which matters: scaling a terminal would blur the text.

What can be a tile

  • Terminals — a real login shell via node-pty, in any folder you pick.
  • Web pages — anything that loads in a browser, including your dev server.
  • Native appsno. No cross-platform app can host another app's window inside itself; the APIs simply do not exist. Claufy opens those in your OS instead of pretending. This is a real limit, not a to-do.

Gotcha worth knowing

npm publishes node-pty's prebuilt spawn-helper without the execute bit. Every attempt to open a shell then dies with posix_spawnp failed. — which names neither the file nor the permission. scripts/fix-pty-perms.mjs runs on postinstall and restores it.

Checking it works

CLAUFY_SMOKE=1 npx electron .

Boots the app, opens four terminals, drives all three focus modes, prints a JSON report and exits. It calls the same functions the buttons do, so a pass means the real paths work.

Layout

src/main/index.ts      app window + pseudo-terminals
src/main/preload.ts    the only bridge between tiles and shells
src/renderer/          the grid, the tiles, the animation
scripts/               build, icons, the spawn-helper repair
assets/cat.svg         the cat

About

Every window you're working in, on one screen. Tiled terminals and web pages in one app — and every tile gets its own Claude agent view, scoped to its folder.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages