openmux 0.2.41 → 0.2.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +19 -56
  2. package/package.json +3 -1
package/README.md CHANGED
@@ -171,6 +171,23 @@ Each workspace has a layout mode that determines how panes are arranged:
171
171
 
172
172
  Sessions persist your workspace layouts and pane working directories. Sessions are auto-saved to `~/.config/openmux/sessions/` and can be switched via the session picker (`Alt+s` or `Ctrl+b s`).
173
173
 
174
+ ### Configuration
175
+
176
+ openmux loads `~/.config/openmux/config.toml` (or `$XDG_CONFIG_HOME/openmux/config.toml`). If the file is missing, a full default config is generated on startup. Deleting the file and restarting openmux will regenerate it.
177
+
178
+ Config changes are hot-reloaded while openmux is running (layout, theme, and keybindings update live).
179
+
180
+ See [`CONFIG.md`](CONFIG.md) for the full generated config.
181
+
182
+ Environment variables override the config file for layout values:
183
+
184
+ - `OPENMUX_WINDOW_GAP`
185
+ - `OPENMUX_MIN_PANE_WIDTH`
186
+ - `OPENMUX_MIN_PANE_HEIGHT`
187
+ - `OPENMUX_STACK_RATIO` (maps to `layout.defaultSplitRatio`)
188
+
189
+ To unbind a keybinding, set its value to `null` or `"unbind"`.
190
+
174
191
  ### Detach / Attach
175
192
 
176
193
  Use `Ctrl+b d` to detach and leave the background shim running. Reattach by launching `openmux` again. Detach/attach uses a single-client lock; a new client steals the lock and the previous client detaches.
@@ -184,60 +201,6 @@ A fullscreen overlay (`Alt+a` or `Ctrl+b a`) that lets you browse all PTYs acros
184
201
  - **Filter by typing** to search by process name, directory, or git branch
185
202
  - Navigate with `j/k` or arrow keys, `Enter` to interact, `Prefix+Esc` to return to list
186
203
 
187
- ## Project Structure
188
-
189
- ```
190
- src/
191
- ├── core/ # Core layout and session management
192
- │ ├── types.ts # Type definitions (Workspace, Pane, etc.)
193
- │ ├── config.ts # Configuration and defaults
194
- │ ├── keyboard-utils.ts # hjkl to Direction conversion
195
- │ ├── operations/
196
- │ │ ├── index.ts # Layout operations exports
197
- │ │ └── master-stack-layout.ts # Master-stack layout calculations
198
- │ └── session/ # Session persistence
199
- │ ├── index.ts # Session exports
200
- │ ├── session-manager.ts # High-level session operations
201
- │ ├── session-serializer.ts # Serialize/deserialize sessions
202
- │ └── session-storage.ts # Disk I/O for sessions
203
-
204
- ├── components/ # OpenTUI SolidJS components
205
- │ ├── index.ts # Component exports
206
- │ ├── Pane.tsx # Individual pane with border/focus
207
- │ ├── PaneContainer.tsx # Layout pane renderer
208
- │ ├── TerminalView.tsx # Terminal rendering with buffer API
209
- │ ├── StatusBar.tsx # Bottom status bar
210
- │ ├── KeyboardHints.tsx # Keyboard shortcuts overlay
211
- │ ├── SessionPicker.tsx # Session selection modal
212
- │ └── AggregateView.tsx # PTY browser overlay
213
-
214
- ├── contexts/ # SolidJS contexts for state
215
- │ ├── index.ts # Context exports
216
- │ ├── LayoutContext.tsx # Workspace/pane layout state (store + actions)
217
- │ ├── TerminalContext.tsx # PTY management and lifecycle
218
- │ ├── KeyboardContext.tsx # Prefix mode and key state
219
- │ ├── SessionContext.tsx # Session management and persistence
220
- │ ├── ThemeContext.tsx # Theme/styling configuration
221
- │ └── AggregateViewContext.tsx # Aggregate view state management
222
-
223
- ├── terminal/ # PTY and terminal emulation
224
- │ ├── index.ts # Terminal exports
225
- │ ├── pty-manager.ts # PTY session lifecycle (zig-pty)
226
- │ ├── ghostty-vt/ # Native libghostty-vt bindings + emulator
227
- │ ├── ghostty-emulator/ # Cell conversion utilities
228
- │ ├── input-handler.ts # Key/mouse to escape sequence encoder
229
- │ ├── graphics-passthrough.ts # Kitty Graphics/Sixel protocol
230
- │ ├── capabilities.ts # Terminal capability detection
231
- │ └── terminal-colors.ts # Color palette detection
232
-
233
- ├── utils/
234
- │ ├── index.ts # Utils exports
235
- │ └── clipboard.ts # Clipboard read/write
236
-
237
- ├── App.tsx # Main app component with provider hierarchy
238
- └── index.tsx # Entry point (Bun + OpenTUI renderer)
239
- ```
240
-
241
204
  ## Development Status
242
205
 
243
206
  Current status:
@@ -256,8 +219,8 @@ Current status:
256
219
  - [x] Scrollback support
257
220
  - [x] Aggregate view (PTY browser)
258
221
  - [x] Attach/detach (steal + lock)
259
- - [ ] Configurable keybindings
260
- - [ ] Configurable settings and colors
222
+ - [x] Configurable keybindings
223
+ - [x] Configurable settings and colors
261
224
 
262
225
  ## License
263
226
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmux",
3
- "version": "0.2.41",
3
+ "version": "0.2.43",
4
4
  "description": "Terminal multiplexer with master-stack tiling layout",
5
5
  "module": "src/index.tsx",
6
6
  "type": "module",
@@ -28,6 +28,7 @@
28
28
  "check:circular": "bunx madge --circular --extensions ts,tsx src/",
29
29
  "lint:effect": "effect-language-service diagnostics --format pretty --project ./tsconfig.json",
30
30
  "lint": "bun run lint:effect",
31
+ "config:doc": "bun scripts/generate-config-doc.ts",
31
32
  "release": "standard-version",
32
33
  "release:minor": "standard-version --release-as minor",
33
34
  "release:major": "standard-version --release-as major",
@@ -75,6 +76,7 @@
75
76
  "dependencies": {
76
77
  "@effect/cli": "^0.72.1",
77
78
  "@effect/platform": "^0.93.8",
79
+ "@iarna/toml": "^3.0.0",
78
80
  "@opentui/core": "^0.1.62",
79
81
  "@opentui/solid": "^0.1.62",
80
82
  "effect": "^3.19.13",