Repository navigation
Releases: mah3uz/insensical-release
Release list
v0.2.0
Released 2026-10-06 03:16 +06:00
Upgrading from 0.1.0
This version's window and server speak a newer protocol than 0.1.0's. After installing
it, restart the server from the window, or with isc restart-server. What runs in your
panes carries on.
Homebrew now installs insensical from mah3uz/tap. If you ran
brew tap mah3uz/insensical … for 0.1.0, that tap stays at 0.1.0: run
brew untap mah3uz/insensical, then brew install --cask mah3uz/tap/insensical.
Knowing what needs you
-
A waiting pane glows. A pane that waits for you takes the waiting colour at its
edge and in its header, and casts a soft light of it into the gaps around it. The
light beats three times as the pane begins to wait, then stands still.
attention-glow = falseturns it off. -
An icon in the tray on Linux. With no window open, insensical's icon in your
desktop's tray is marked while a pane needs you. Its menu lists those panes; pick one
and a window opens on it. Close the window from there too, or quit: quitting ends
every program, so a window asks first and says what would end. Show in the
tray, in the settings, turns it off. It needs a tray that shows
status notifier items, which GNOME has only with the AppIndicator extension. -
Notifications on Linux carry insensical's icon, where they showed a plain
terminal's. -
A password prompt is noticed. A command that stops to ask for a password, as
sudodoes in the middle of an install, marks its pane as waiting and tells you, with
the prompt as what it says. -
You're told where you are. While insensical is in front, a pane that waits, fails
or finishes is said in a notice at the foot of the sidebar, and not on your desktop.
Click the notice to go to the pane. A finish goes after six seconds; a pane that
waits or failed keeps its notice until you've seen it. When insensical isn't in
front, you get the desktop notification as before. -
Sound. A pane that waits or failed makes a short sound;
sound = "all"adds a
softer one for a finish, andsound = "off"turns it off. -
Notifications can be turned off, all of them with
notifications = false, or one
kind withnotify-waiting,notify-failedandnotify-done. -
Notifications on a Mac arrive with the window closed, for as long as the
application is running. Click one and a window opens on the pane it's about. Before,
only an open window posted them. -
A sidebar that says more in fewer rows. A pane that needs you shows why on its
row. A tab that holds one pane no longer takes a row of its own. Projects are
headings. A pane has one name everywhere it's listed: yours, else its program's
title, else its program and directory, such asfish · api. -
The count of panes that need you is two counts: those that wait or failed, and those
that only finished.
Many projects, many panes
-
A shell is called by its directory. The sidebar, the dock and the palette no
longer putfish ·orzsh ·before every shell's directory: the icon says it's a
shell. -
Faster where there was room to be. A program that floods a pane is read by a
thread of its own for as long as the flood lasts, so it is held back only by the
kernel: long lines and raw output go through at some 450 MB/s here, up from 260. A
build's lines were already at what the kernel allows. -
Mute a whole project. "Silence this project's notifications" in the palette, or
isc project mute NAME. Panes opened in it later are quiet too, and their states
still show. -
You say what a long command is.
long-commandsets how many seconds a command
runs before its end is told of. It was fixed at 30. -
See what a project costs. A project's heading in the sidebar shows the memory
its programs hold and the processor they're using; the overview shows it for each
pane, andisc usageprints it. -
Put a project to sleep. It ends the project's programs and gives back the memory
they held, and keeps its tabs, panes, directories and what each pane showed. Wake it
and each pane has a shell where it was, with what ran there ready at the prompt. -
Far less memory with many panes. A pane's history is packed away when the pane
goes quiet and unpacked when you read it. A pane with a full history takes about
1.6 MB in place of 11.5 MB; seventy panes took 74 MB in place of 365 MB. -
Faster with several panes. A pane that hasn't changed is no longer drawn again
when another prints, or while an agent's mark turns. With six panes and one printing,
a frame takes a third of the time it did. -
Dragging a window's edge no longer resizes every program at every frame: a pane's
size changes at most once in 25 milliseconds. -
The server raises its limit on open files when it starts, so a Mac is no longer
held to some eighty panes. -
scrollbacksets how much history a pane keeps, from 1 to 200 megabytes.
Settings and commands
- The settings file is there from the first start. The window makes
config.tomlif you have none, with every setting explained and none of them set. isc config get,setandresetcomplete the names of the settings.isc wait --output TEXTwaits until a pane's screen shows the text, for scripts
that start something and then use it.isc apisends the daemon any request as JSON and prints the answer, so whatever
the window can do can be scripted.- Input methods, if you turn them on.
input-method = truelets your system's
input method compose text in a pane, for Bangla, Chinese, Japanese and the rest. It's
off by default, as it hasn't been tried with a real one yet. - Files open in your editor, at the line.
Ctrl+clicksrc/main.rs:12:5and it
opens there in the editoropen-files-withnames; a terminal editor opens in a pane
beside the one you clicked in. - Links a program marks are followed (OSC 8):
Ctrl+click the words. - The terminal's description comes with insensical. Programs get
xterm-ghostty
and every feature a pane has, whether or not Ghostty is installed.term = "xterm-256color"goes back to the description every machine knows. - A settings sheet.
Ctrl+,(⌘,on a Mac) opens every setting on one sheet, to be
switched, picked or stepped, with nothing to type. A change takes effect at once and
is written to yourconfig.toml. It marks what you've changed and resets it, finds
a setting as you type, and shows each agent and whether its hooks still work. isc config get,setandresetread and change one setting, and leave the
rest of your settings file as you wrote it.- A better command palette. It lists things under headings, with icons, keys as key
caps and each setting's value. What you type is ranked, so the best fit is first,
and what you chose recently is offered first. Settings are in it too. - "Name this pane" and "Name this tab" are commands, in the palette and for a key.
- The sheet of keys says why a command has no key when your own
[keys.direct]or
[keys.leader]table left it out. Its long names wrap, and what follows the leader
is listed under the same headings.
The window
-
A tab shows a deck of its programs. In the sidebar and along the top, a tab's
icon is the tile of its front pane with the tiles of its other panes stacked behind
it, in place of an outline and a number. -
Settings, keys and the overview are a click away. They're at the foot of the
sidebar, with a button for a new project, and at the end of the top bar when the
sidebar is hidden. -
The settings sheet is laid out as your desktop's is. Sections stand in a column
of their own, each with a tile in its own colour, and a section's settings are one
roomy group. -
Icons are drawings. Every icon of the interface is drawn, so it sits in the
middle of its button or tile whatever font you use. Panels are headed by glossy
tiles like the programs', files in the path picker are coloured by kind, and panels
that lie over the window are lit from above. -
Taller rows, lifted capsules. Sidebar rows, tabs and pane headers have a little
more height, and the row and tab in front are lit from above with a hairline and a
soft shadow. -
The overview can show only what needs you. Press Tab in it.
-
A neutral interface.
interface-style = "neutral"draws the window around the
terminals in greys, whatever the theme. -
A see-through window.
background-opacitybelow 1 lets your desktop show behind
the text, andbackground-blurasks the desktop to blur it. Both are in the settings
sheet. -
Programs are shown as tiles. What runs in a pane is its own mark on a small
glossy card in its maker's colour: some two hundred programs, from Claude, Codex
and Gemini to Vite, Rails, Laravel, Django, Docker and psql. A dev server is called
by its own name,viteorrails, and notnodeorruby. The tile is the same in every theme, in the sidebar, the pane
header, the tabs, the dock, the overview and the palette. -
Any font works. The icons come with insensical now, so
font-familydoesn't have
to be a Nerd Font. -
A little motion. Sheets, questions and notices fade in, and a pane you float, put
back or zoom clears from a light wash so you see where it went.motion = "off"
stops it, along with the turning mark and blinking cursors; by default it follows
your desktop. -
From command to command.
Ctrl+Shift+UpandCtrl+Shift+Downscroll to the
prompt before and after, when your shell marks its prompts. -
Ligatures. Symbols side by side are drawn as your font's ligature for them, such
as->and!=.font-ligatures = falseturns it off. -
Five new themes, each for a dark desktop and a light one:
tidepool,heather,
lichen,lanternandquartz. Set one by name and it follows the desktop as it
turns. A theme file of your...
v0.1.0
Released 2026-10-04 04:35 +06:00
The first release of insensical: a terminal multiplexer with a native window, for running
many terminals and coding agents and knowing which of them needs you. It comes as two
programs: insensical, the window, and isc, the server and the command line.
It does not redraw what a program prints. A server owns each program and its terminal;
a window that attaches is sent a snapshot and then the program's own bytes, untouched.
Panes, tabs and splits are real interface elements, not characters drawn inside one
terminal.
Programs that stay
- They outlive the window. Close it and open it again: everything is there, still
running. - They come back after a stop. Restart the machine, and every project returns with
its tabs, splits, floating and minimized panes, each pane in the directory it was in,
showing what it showed, with what ran in it typed at the prompt to run again. - They outlive an update. A new version installed under a running one replaces
nothing. The window says it is there, and the server moves to it when you say so, with
every program still running and everything it printed still there.
The window
- Projects in a sidebar, as a tree: each project, its tabs and their panes, with what
runs in them, where, and in what state. Tabs can be along the top instead. - Splits in either direction, resized, moved and swapped by key or by mouse, and one
pane filling its tab for a while. - Floating panes, moved by the header and resized from any edge, over one tab or over
every tab of a project. One key brings a scratch shell over whatever you are looking
at, and puts it away again. - Minimize any pane to a dock. Its program runs on at the size it had.
- An overview of every tab of every project, each drawn small as it is laid out.
- A command palette, a finder for files, search in a pane's text, and web addresses
and paths that open on a click. - Themes: a terminal's colours in a small file, and an interface derived from them.
Any Ghostty theme works by name. - Keys your way: each command on a chord of its own, or after a leader key as in tmux
and vim, and any of them rebound. One key shows them all, and another gives every key
to the program in the pane.
Agents and attention
- A state on every pane: working, waiting for you, done or failed, from what agents
already write to their terminal and from their hooks. - A count of the panes that need you, and one key to go to the most urgent.
- Hooks for Claude Code, Codex, Gemini CLI, opencode and pi, set up when you say so,
from the window or withisc. Those for Codex, Gemini CLI, opencode and pi are written
from the agents' documentation and have not been run under them. - Desktop notifications when a pane starts waiting, finishes or fails, unless you are
looking at it. They arrive with no window open.
The command line
isc does everything the window does: it makes and arranges projects, tabs and panes,
sends keys, reads what a pane shows, waits for a pane, and follows events. It completes
panes, tabs and projects in bash, zsh and fish.
Installing
- Arch Linux:
insensical-binin the AUR. - Debian 12 and later, Ubuntu 24.04 and later: the
.deb. - Other Linux on x86-64, with glibc 2.36 or later: the tarball.
- macOS 13 and later, on Apple silicon: the disk image, or Homebrew. The application
is not signed with a Developer ID, so macOS has to be told to open it; the manual says
how.
MANUAL.md is the manual. It needs a Nerd Font: the default is JetBrainsMono Nerd Font.