rockorager/prise
No description provided.
1207240cf170e4a5d77d38730bbe537ade46868b.tar.gz68d6ea1d94fa0e5575e3af505bebab29a15acb96.tar.gzaf970851f5412a32c9eceb1c4519679a242c6093.tar.gzWARNING Prise is alpha software under active development. Expect breaking changes, incomplete features, and rough edges.
Prise is a terminal multiplexer targeted at modern terminals.
brew tap rockorager/tap
brew install prise
brew services start prise
To install the binary and service files:
zig build install --prefix ~/.local
To enable and start the prise server as a background service:
zig build enable-service --prefix ~/.local
This will:
~/Library/LaunchAgents/ and load it~/.config/systemd/user/ and enable itHomebrew (macOS):
brew services start prise
brew services stop prise
macOS (from source):
launchctl unload ~/Library/LaunchAgents/sh.prise.server.plist # stop
launchctl load ~/Library/LaunchAgents/sh.prise.server.plist # start
Linux:
systemctl --user stop prise # stop
systemctl --user start prise # start
systemctl --user status prise # check status
Core Thesis: High-performance software is the result of quality engineering.
Prise is built on a solid foundation of libghostty, libvaxis, and Lua. While these tools provide an excellent starting point, they do not guarantee success—it is still entirely possible to build bad software with good tools. Agentic coding—leveraging AI agents to amplify engineering capabilities—is capable of consistently producing the quality software this project demands.
Prise is an agentic coded project. Contributions are welcome. Show me your vibes.
To set up your development environment (installs pre-commit hook):
zig build setup
To build the project:
zig build
To run the project:
zig build run
To run tests:
zig build test
To format code:
zig build fmt
Prise is configured via Lua. Create ~/.config/prise/init.lua to customize the UI.
-- Use the built-in tiling UI with custom options
local ui = require("prise").tiling()
ui.setup({
theme = {
mode_normal = "#7aa2f7", -- Tokyo Night blue
mode_command = "#f7768e", -- Tokyo Night red
bg1 = "#1a1b26",
bg2 = "#24283b",
bg3 = "#414868",
accent = "#7aa2f7",
},
keybinds = {
leader = { key = "a", ctrl = true }, -- Use Ctrl+a as leader (like tmux)
},
status_bar = {
enabled = true,
},
tab_bar = {
show_single_tab = false,
},
})
return ui
The default leader key is Super+k (Cmd+k on macOS). After pressing the leader:
| Key | Action |
|---|---|
v |
Split vertical |
s |
Split horizontal |
h/j/k/l |
Focus left/down/up/right |
w |
Close pane |
z |
Toggle zoom |
t |
New tab |
c |
Close tab |
n/p |
Next/previous tab |
d |
Detach session |
q |
Quit |
Press Super+p to open the command palette.
Prise installs type definitions to <prefix>/share/prise/lua/. To get autocomplete and type checking in your editor, add this path to your Lua language server configuration.
require("lspconfig").lua_ls.setup({
settings = {
Lua = {
workspace = {
library = {
vim.fn.expand("~/.local/share/prise/lua"),
},
},
},
},
})
Add to lua/plugins/lua_ls.lua:
return {
"neovim/nvim-lspconfig",
opts = {
servers = {
lua_ls = {
settings = {
Lua = {
workspace = {
library = {
vim.fn.expand("~/.local/share/prise/lua"),
},
},
},
},
},
},
},
}
Add to .vscode/settings.json:
{
"Lua.workspace.library": [
"~/.local/share/prise/lua"
]
}
{
"workspace.library": [
"~/.local/share/prise/lua"
]
}
The following binaries are required for development:
stylua (for Lua formatting)zigdoc (for documentation)