gpty — Godot Project
Running
# Build the Rust extension first
cd .. && cargo build -p gpty-gdext
# Launch Godot (editor)
cd godot && godot -e
# Press F5 to run the applicationThe workspace starts an IPC server on startup ($XDG_RUNTIME_DIR/gpty.sock on Linux)
that accepts JSON-RPC 2.0 commands. Use the gpty CLI to control it
from the terminal:
Structure
godot/
├── project.godot # Godot 4.7 project config
├── gpty.gdextension # GDExtension library config
├── concepts.default.json # Shipped default concepts
├── profiles.default.json # Shipped recommended layouts (Agent Workspace)
├── fonts/ # Bundled fonts (DejaVu Sans Mono + Phosphor icons)
│ ├── DejaVuSansMono.ttf
│ ├── DejaVuSansMono-Bold.ttf
│ ├── DejaVuSansMono-Oblique.ttf
│ └── Phosphor-Regular.ttf
└── scenes/
├── main.tscn # Root scene (Workspace)
├── autoloads/ # 9 singleton managers
│ ├── base_persistence_manager.gd # Shared JSON I/O base
│ ├── settings_manager.gd
│ ├── profile_manager.gd
│ ├── concept_manager.gd
│ ├── workspace_store.gd # Named workspace (tab set) persistence
│ ├── focus_manager.gd
│ ├── toast_manager.gd
│ ├── shortcut_manager.gd
│ └── update_checker.gd
├── terminal/ # Core terminal logic
│ ├── workspace.gd # Grid layout, workspace tabs, sidebar, profiles, concept routing
│ ├── ipc_handlers.gd # WorkspaceIpcHandlers — IPC/pane-API method dispatch
│ ├── terminal_pane.gd # Control-based renderer, keyboard, selection
│ ├── concept_router.gd # Pure concept-event routing (extracted, testable)
│ └── terminal_manager.gd
├── ui/ # UI components
│ ├── sidebar.gd # Vertical stack: window mode, workspaces, panes, profiles
│ ├── settings_panel.gd
│ ├── toast_overlay.gd
│ ├── window_chrome.gd # Titlebar + window-mode/fullscreen handling
│ ├── markdown_view.gd # Safe shared Markdown renderer
│ └── icons.gd # Phosphor icon constants
└── panes/ # Specialty pane types
├── pane_body.gd
├── pane_types.gd # Pane registry, sanitizers, palette command list
├── code_viewer.gd
├── file_tree.gd
├── inspector_pane.gd
└── reasoning_pane.gdKey Bindings
Terminal
| Shortcut | Action |
|---|---|
Ctrl+Shift+C |
Copy selection |
Ctrl+Shift+V |
Paste from clipboard |
Ctrl+Shift+F |
Toggle scrollback search |
PageUp / PageDown |
Scroll through history |
Workspace
| Shortcut | Action |
|---|---|
Ctrl+Shift+N |
Spawn terminal |
Ctrl+Shift+D |
Spawn code viewer |
Ctrl+Shift+T |
Spawn file tree |
Ctrl+Shift+O |
Spawn inspector |
Ctrl+Shift+W |
Close focused pane |
Ctrl+Shift+B |
Toggle sidebar |
Ctrl+Shift+P |
Command palette |
Ctrl+Shift+R |
Reset workspace |
F11 / Ctrl+Shift+M |
Toggle fullscreen |
Alt+←↑↓→ |
Jump to adjacent pane |
Note:
Ctrl+Shift+Ccopies the terminal selection; with no selection it does nothing.Note:
Ctrl+Vis deliberately passed through to the shell as a literal^V— shells and TUIs use it (readline quoted-insert, vim visual-block mode). Paste usesCtrl+Shift+V.
Sidebar
- [+ Terminal] — spawn a new terminal
- [Settings] — open global settings panel
- [Reset] — clear all terminals and layout
Layout is auto-saved on close and auto-restored on startup via user://layout.json.
The shipped Agent Workspace profile opens a normal terminal plus separate
Inspector (private Q&A) and Reasoning (passive agent thinking) panes. Five
single-pane ecosystem presets ship alongside it: herdr, lazygit, nvim,
claude, and OMP — each restores one full-screen terminal running that tool.
None of them install the OMP extension or launch omp; the user does that in
the terminal. Inspector does not follow the terminal conversation. Reasoning
requires the @gpty/omp-events extension and gpty’s Unix event socket
(gpty-events.sock); it is not available on Windows builds yet.
Command Palette (Ctrl+Shift+P)
Type partial commands: new, close, settings, reset, save, load.