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.
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
/* Zen-style vertical tabs: a dark sidebar column with the terminal inset
|
||||
to its right. */
|
||||
|
||||
.vtabs-window {
|
||||
background-color: #0f0d14;
|
||||
}
|
||||
|
||||
.vtabs-sidebar {
|
||||
background-color: #1b1823;
|
||||
border-right: 1px solid #2a2536;
|
||||
}
|
||||
|
||||
.vtabs-sidebar headerbar {
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
min-height: 38px;
|
||||
}
|
||||
|
||||
.vtabs-list {
|
||||
background: none;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
|
||||
.vtabs-list > row {
|
||||
border-radius: 8px;
|
||||
margin: 1px 0;
|
||||
padding: 5px 8px;
|
||||
color: #b6afc7;
|
||||
transition: background-color 120ms ease;
|
||||
}
|
||||
|
||||
.vtabs-list > row:hover {
|
||||
background-color: #262133;
|
||||
}
|
||||
|
||||
.vtabs-list > row:selected {
|
||||
background-color: #342c4a;
|
||||
color: #f0ecf8;
|
||||
}
|
||||
|
||||
.vtabs-list > row:selected image {
|
||||
color: #b29df5;
|
||||
}
|
||||
|
||||
/* Keep the close button unobtrusive until the row is hovered or current. */
|
||||
.vtabs-close {
|
||||
opacity: 0;
|
||||
min-width: 20px;
|
||||
min-height: 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.vtabs-list > row:hover .vtabs-close,
|
||||
.vtabs-list > row:selected .vtabs-close {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.vtabs-close:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.vtabs-content {
|
||||
background-color: #16141c;
|
||||
border-radius: 10px;
|
||||
margin: 6px 6px 6px 0;
|
||||
}
|
||||
Reference in New Issue
Block a user