Commit Graph
9 Commits
Author SHA1 Message Date
Greyson Parrelli 695417a601 Add theme customizer. 2026-08-13 15:55:23 -04:00
Greyson Parrelli 2daeb6125f Fix mouse interactions in terminal. 2026-08-13 11:46:48 -04:00
Greyson Parrelli e16b147e16 Improve styling. 2026-08-12 21:15:07 -04:00
Greyson Parrelli 4e0e400372 Fix hooks. 2026-08-12 18:50:16 -04:00
Greyson Parrelli dd60e52005 Add hook system. 2026-08-11 16:24:53 -04:00
Greyson Parrelli 3026bdcd4c Add custom layout creation. 2026-08-11 13:57:54 -04:00
Greyson Parrelli a7a9429d09 Add a web browser tab. 2026-08-11 12:39:14 -04:00
Greyson Parrelli 5b00c98e03 Multiple terminals per tab, rearrangeable by drag or keyboard
A tab is now a view holding an ordered list of panes rather than a single
terminal. New panes open side by side; moving one against a top or bottom
edge restacks the view, and against a side edge returns it to a row.

Layout is a flat list with one orientation per view rather than a split
tree. That covers a shell beside an agent without the structure a tree
needs, and it can be replaced once mixed layouts actually matter.

Panes live in a GtkBox and are reordered in place, so rearranging never
unparents a terminal and running processes and scrollback survive the move.

Dragging a pane uses its header as the handle so it never competes with the
terminal's own mouse handling, and drops go through the same moveRelative
path as the Ctrl+Shift+arrow shortcuts.

Also fixes an ordering bug this surfaced: View.create used to add its first
pane immediately, firing the title callback into a Tab that had not been
initialized yet. The view is now created empty and the caller adds the pane
once it has finished wiring itself up.
2026-08-11 10:59:21 -04:00
Greyson Parrelli 738cead680 vtabs: terminal with vertical tabs on libghostty-vt + GTK4
Uses libghostty-vt (the API Ghostty documents for external embedders) for
the terminal core. Ghostty's other C API, ghostty.h, exposes a full terminal
surface but only supports macOS and iOS platform tags, so it cannot be
embedded on Linux.

We supply the layers libghostty-vt deliberately leaves out: PTY and process
management, a Cairo/Pango cell renderer, and a GTK4/libadwaita UI with a
Zen-style vertical tab sidebar.

Nix pins the whole toolchain (Zig 0.16 via zig-overlay, GTK 4.22, libadwaita)
so no host setup is needed.
2026-08-11 08:36:10 -04:00