@projmux/darwin-arm64 0.4.5 → 0.4.6
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.
- package/README.md +57 -273
- package/bin/projmux +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,325 +1,109 @@
|
|
|
1
1
|
# projmux
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/assets/projmux-icon.png" alt="projmux icon" width="112">
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
attention signals. It can run as its own tmux app (`projmux shell`) or install
|
|
8
|
-
the same behavior into your existing tmux server.
|
|
7
|
+
Project-aware tmux workspaces with fast switching, previews, status context,
|
|
8
|
+
and AI-pane attention built in.
|
|
9
9
|
|
|
10
10
|
[](https://www.npmjs.com/package/projmux)
|
|
11
11
|
[](https://github.com/crevissepartners/projmux/actions/workflows/ci.yml)
|
|
12
12
|
|
|
13
|
-
[
|
|
13
|
+
[Korean README](README-ko.md)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+

|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
`projmux` treats that as the foundation, then adds the app-level pieces needed
|
|
19
|
-
for a daily terminal workspace:
|
|
17
|
+
## What It Is
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
sessions, windows, panes, git branch, Kubernetes context, and pane metadata.
|
|
25
|
-
- **The tmux layer is generated, not hand-spliced.** `projmux` writes the tmux
|
|
26
|
-
config it needs for popup launchers, window/pane rename flows, status
|
|
27
|
-
segments, pane borders, attention badges, and app mode.
|
|
28
|
-
- **AI panes are first-class.** Codex and Claude panes can be launched,
|
|
29
|
-
labeled, tracked as thinking or waiting, surfaced in pane/window/session
|
|
30
|
-
badges, and announced through desktop notifications.
|
|
31
|
-
- **You can choose isolation or integration.** Use `projmux shell` as a
|
|
32
|
-
self-contained tmux app, or install the generated snippet into your normal
|
|
33
|
-
tmux server.
|
|
19
|
+
`projmux` turns project directories into durable tmux sessions. It gives you a
|
|
20
|
+
keyboard-first workspace app for switching projects, previewing sessions,
|
|
21
|
+
opening AI splits, and keeping useful context visible in tmux.
|
|
34
22
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- Creates or switches to tmux sessions from project directories.
|
|
38
|
-
- Shows existing sessions with window and pane previews.
|
|
39
|
-
- Provides popup and sidebar navigation surfaces backed by `fzf`.
|
|
40
|
-
- Pins important projects and scans common source roots for new ones.
|
|
41
|
-
- Persists preview selection for fast window and pane cycling.
|
|
42
|
-
- Generates tmux bindings for launchers, rename prompts, pane borders, status
|
|
43
|
-
segments, and attention hooks.
|
|
44
|
-
- Displays git branch and Kubernetes context/namespace in the status area.
|
|
45
|
-
- Renders a two-line clickable status bar with click-to-switch tabs on
|
|
46
|
-
row 0 and HUD-style notify (left) and AI usage (right) segments on
|
|
47
|
-
row 1.
|
|
48
|
-
- Launches AI splits and keeps their agent name, topic, status, and
|
|
49
|
-
notification state visible in tmux.
|
|
50
|
-
|
|
51
|
-
## Typical Workflow
|
|
52
|
-
|
|
53
|
-
```sh
|
|
54
|
-
projmux shell
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Open the app once, then use its generated tmux bindings to:
|
|
58
|
-
|
|
59
|
-
- jump between projects from a sidebar or popup,
|
|
60
|
-
- inspect sessions before attaching,
|
|
61
|
-
- split Codex, Claude, or a plain shell into the current workspace,
|
|
62
|
-
- rename windows and AI pane topics without losing metadata,
|
|
63
|
-
- see which panes need review from badges and desktop notifications.
|
|
23
|
+
Use it when you want one command to open your terminal workspace and one set of
|
|
24
|
+
keys to move between projects, windows, panes, notifications, and settings.
|
|
64
25
|
|
|
65
26
|
## Requirements
|
|
66
27
|
|
|
67
|
-
- [Node.js](https://nodejs.org/) and npm
|
|
68
|
-
|
|
69
|
-
- [
|
|
70
|
-
`go install` or building from source.
|
|
71
|
-
- [tmux](https://github.com/tmux/tmux/wiki/Installing) **≥ 3.4** — the workspace runtime. Earlier versions miss `display-popup -T` and other features projmux depends on.
|
|
72
|
-
- [fzf](https://github.com/junegunn/fzf#installation) **≥ 0.55** — interactive popup/sidebar pickers. The multiline picker uses `--marker-multi-line`, `--gap-line`, and `--highlight-line`, which landed by 0.55.
|
|
73
|
-
- A Unix shell such as `bash`, `zsh`, or `sh` — `projmux shell` uses your
|
|
74
|
-
absolute `$SHELL` for the generated app config, falling back to `/bin/sh`.
|
|
75
|
-
- [git](https://git-scm.com/downloads) — branch/status metadata.
|
|
76
|
-
- `stty` — POSIX terminal control, used by `projmux setup`. Already shipped by every macOS / Linux base system; not applicable on Windows hosts.
|
|
77
|
-
- [kubectl](https://kubernetes.io/docs/tasks/tools/) — optional, only for the Kubernetes status segment.
|
|
78
|
-
|
|
79
|
-
Desktop notifications: Linux uses `notify-send`; WSL routes Windows toasts via
|
|
80
|
-
`powershell.exe`. Override either with `PROJMUX_NOTIFY_HOOK`.
|
|
28
|
+
- [Node.js](https://nodejs.org/) and npm, for the main install path.
|
|
29
|
+
- [tmux](https://github.com/tmux/tmux/wiki/Installing) **3.4 or newer**.
|
|
30
|
+
- [fzf](https://github.com/junegunn/fzf#installation) **0.65.0 or newer**.
|
|
81
31
|
|
|
82
|
-
Run `projmux doctor`
|
|
83
|
-
|
|
84
|
-
|
|
32
|
+
Run `projmux doctor` after installing to check the local runtime. The `fzf`
|
|
33
|
+
requirement is the junegunn/fzf CLI binary; `npm i fzf` is a different
|
|
34
|
+
JavaScript library.
|
|
85
35
|
|
|
86
36
|
## Install
|
|
87
37
|
|
|
88
38
|
```sh
|
|
89
39
|
npm install -g projmux
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
npm installs a small Node.js shim plus the matching platform binary package
|
|
93
|
-
for Linux and macOS on x64 or arm64. The shim marks the install as npm-managed
|
|
94
|
-
so `projmux update` and the Settings About screen can use the right upgrade
|
|
95
|
-
path.
|
|
96
|
-
|
|
97
|
-
Verify:
|
|
98
|
-
|
|
99
|
-
```sh
|
|
100
40
|
projmux version
|
|
101
41
|
```
|
|
102
42
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
go install github.com/crevissepartners/projmux/cmd/projmux@latest
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
This drops the binary in `$(go env GOBIN)` (when set) or `$(go env GOPATH)/bin`
|
|
110
|
-
(default `~/go/bin`). Make sure that directory is on your `PATH`.
|
|
43
|
+
The npm package installs a small Node.js shim plus the matching projmux binary
|
|
44
|
+
for Linux and macOS on x64 or arm64. npm is the primary distribution path for
|
|
45
|
+
normal users.
|
|
111
46
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
`PROJMUX_PROJDIR` is the primary project root projmux uses for picker and
|
|
115
|
-
discovery when you explicitly configure it. It is optional; when unset,
|
|
116
|
-
projmux does not assume a canonical repo root. Discovery still uses pins, live
|
|
117
|
-
sessions, saved workdirs, and weak common-folder probes (`~/source`, `~/work`,
|
|
118
|
-
`~/projects`, `~/src`, `~/code`) when they exist.
|
|
119
|
-
|
|
120
|
-
```sh
|
|
121
|
-
export PROJMUX_PROJDIR="/your/path"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Add the line to `~/.bashrc`, `~/.zshrc`, or your shell's rc file. The resolved value is
|
|
125
|
-
memoized to `~/.config/projmux/projdir` after first use, so later shells keep
|
|
126
|
-
the same root even without the env var.
|
|
127
|
-
|
|
128
|
-
`PROJMUX_PROJDIR` accepts an OS-native PATH-style multi-value (`:` on
|
|
129
|
-
Linux/macOS, `;` on Windows). The first non-empty entry is the primary
|
|
130
|
-
project root; any additional entries are prepended to the managed-roots
|
|
131
|
-
search list, so they participate in discovery just like
|
|
132
|
-
`PROJMUX_MANAGED_ROOTS`. Only the primary path is memoized to
|
|
133
|
-
`~/.config/projmux/projdir`.
|
|
134
|
-
|
|
135
|
-
```sh
|
|
136
|
-
# Linux/macOS — primary repo + secondary search root
|
|
137
|
-
export PROJMUX_PROJDIR="/main/repos:/srv/work/repos"
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
#### Set the project root during setup
|
|
141
|
-
|
|
142
|
-
```sh
|
|
143
|
-
PROJMUX_PROJDIR=/your/path projmux shell
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
The first invocation that sees the env var writes
|
|
147
|
-
`~/.config/projmux/projdir`, so later shells without the env var still
|
|
148
|
-
resolve the same root.
|
|
149
|
-
|
|
150
|
-
You can also manage the saved value interactively with
|
|
151
|
-
`projmux settings > Project Picker > Project Root`. That screen shows the
|
|
152
|
-
effective primary root and source (`PROJMUX_PROJDIR`, `@projmux_projdir`,
|
|
153
|
-
saved, or not configured), shows when a saved value is shadowed by env/tmux,
|
|
154
|
-
and lets you set a path directly, use the current project context, or clear the
|
|
155
|
-
saved value. When no Project Root is configured, the direct-set prompt starts
|
|
156
|
-
with `$HOME` as an editable fallback; it is not treated as the effective root
|
|
157
|
-
until you save it.
|
|
158
|
-
|
|
159
|
-
### From source
|
|
160
|
-
|
|
161
|
-
```sh
|
|
162
|
-
git clone https://github.com/crevissepartners/projmux.git
|
|
163
|
-
cd projmux
|
|
164
|
-
make install
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
`make install` builds, atomically replaces `$(go env GOPATH)/bin/projmux`, and
|
|
168
|
-
runs `projmux tmux apply` so the live `-L projmux` server picks up new bindings
|
|
169
|
-
without a restart. Override the destination with `INSTALL_DIR=/usr/local/bin`.
|
|
47
|
+
Manual Go, source checkout, GitHub Release, and packaging details live in
|
|
48
|
+
[Install](docs/install.md).
|
|
170
49
|
|
|
171
50
|
## Quick Start
|
|
172
51
|
|
|
173
|
-
|
|
52
|
+
Open the isolated projmux tmux app:
|
|
174
53
|
|
|
175
54
|
```sh
|
|
176
55
|
projmux shell
|
|
177
56
|
```
|
|
178
57
|
|
|
179
|
-
|
|
180
|
-
bindings. Cooperative terminals get `Alt-1`..`Alt-5` immediately, with no
|
|
181
|
-
terminal config. The left status badge shows the current project name; the
|
|
182
|
-
right side shows path, kube segment, git segment, and clock.
|
|
183
|
-
|
|
184
|
-
If a key does not fire, run `projmux setup` outside tmux to see which
|
|
185
|
-
sequences your terminal swallows. For supported terminals, preview the
|
|
186
|
-
fallback with `projmux init [terminal]`, then apply it with
|
|
187
|
-
`projmux init [terminal] --apply` (auto-detects when no terminal is given).
|
|
188
|
-
Dotfiles users on multi-machine setups should pass
|
|
189
|
-
`--allow-symlink` or `--config <path>` to make their intent explicit. Full
|
|
190
|
-
flow and the manual CSI-u fallback are in
|
|
191
|
-
[Terminal Keybindings](docs/keybindings.md).
|
|
192
|
-
|
|
193
|
-
If anything looks off, `projmux doctor` reports which dependency is
|
|
194
|
-
missing or stale and how to install it. See [Requirements](#requirements)
|
|
195
|
-
for the supported versions.
|
|
196
|
-
|
|
197
|
-
## Upgrading
|
|
198
|
-
|
|
199
|
-
The Settings About screen is the normal interactive update surface: it shows
|
|
200
|
-
cached release status, installer source, Check Updates, Update Now, and
|
|
201
|
-
release notes. The startup update prompt uses the same cache and never reaches
|
|
202
|
-
the network.
|
|
203
|
-
To refresh the cached release status manually, run:
|
|
204
|
-
|
|
205
|
-
```sh
|
|
206
|
-
projmux update check
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
Use Settings > About > Update or `projmux update apply` to update through the
|
|
210
|
-
detected installer. See [Upgrading](docs/upgrading.md) for npm, Go, GitHub
|
|
211
|
-
Release, and source-checkout details.
|
|
212
|
-
|
|
213
|
-
## Usage
|
|
214
|
-
|
|
215
|
-
Day-to-day, projmux is driven by tmux keybindings inside `projmux shell` — see
|
|
216
|
-
[Terminal Keybindings](docs/keybindings.md). For the full CLI surface (pins,
|
|
217
|
-
preview state, status helpers, updates, etc.), run `projmux help` or
|
|
218
|
-
`<command> --help`.
|
|
219
|
-
|
|
220
|
-
## How It Finds Projects
|
|
221
|
-
|
|
222
|
-
`projmux switch` combines pinned directories, live tmux sessions, and discovered
|
|
223
|
-
project roots. When no explicit search roots are configured, discovery uses
|
|
224
|
-
weak common-folder probes such as `~/source`, `~/work`, `~/projects`, `~/src`,
|
|
225
|
-
and `~/code` if they exist; it does not assume a canonical `~/source/repos`
|
|
226
|
-
root. `projmux settings` also has `Project Picker > Add Project...`, which
|
|
227
|
-
scans filesystem roots up to depth 3 so projects outside the weak probes can be
|
|
228
|
-
added to the picker. Session names are derived from normalized directory paths,
|
|
229
|
-
so a project keeps the same tmux session name across launches.
|
|
230
|
-
|
|
231
|
-
For permanent search-root customization, the Project Picker section also
|
|
232
|
-
includes:
|
|
233
|
-
|
|
234
|
-
- `Project Root` - set, change, or clear the saved primary root. This is the
|
|
235
|
-
one root used as the primary project context; env `PROJMUX_PROJDIR` and tmux
|
|
236
|
-
`@projmux_projdir` override the saved value until unset. If no root is
|
|
237
|
-
configured, the direct-set prompt pre-fills `$HOME` so the picker remains
|
|
238
|
-
usable without inventing an implicit saved root.
|
|
239
|
-
- `+ Add Workdir...` - append a single directory to the saved workdirs list.
|
|
240
|
-
- `Workdirs` - review and remove saved workdirs. The same picker also surfaces
|
|
241
|
-
any active `PROJMUX_MANAGED_ROOTS` / `TMUX_SESSIONIZER_ROOTS` env values as
|
|
242
|
-
read-only rows so you can see why an env list might be overriding the saved
|
|
243
|
-
file.
|
|
244
|
-
|
|
245
|
-
`Add Workdir > Type path manually...` gives you a typed entry that skips the
|
|
246
|
-
filesystem scan. Use it for paths you do not want crawled, e.g. WSL mounts
|
|
247
|
-
(`/mnt/c/Users/...`), large NFS mounts, or per-project temp roots.
|
|
248
|
-
|
|
249
|
-
The saved file lives at `~/.config/projmux/workdirs` (one absolute path per
|
|
250
|
-
line, `#` comments allowed). It is consulted only when the env vars are unset.
|
|
58
|
+
Inside the app:
|
|
251
59
|
|
|
252
|
-
|
|
60
|
+
- `Alt-1` opens the project sidebar.
|
|
61
|
+
- `Alt-2` opens the notification list.
|
|
62
|
+
- `Alt-3` opens the existing-session picker.
|
|
63
|
+
- `Alt-4` opens the AI split picker.
|
|
64
|
+
- `Alt-5` opens settings.
|
|
65
|
+
- `Alt-6` opens the project switcher popup.
|
|
253
66
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
`
|
|
257
|
-
Missing or non-executable hooks are skipped silently; failures never block
|
|
258
|
-
session creation. See [Hooks](docs/hooks.md) for the env contract, examples,
|
|
259
|
-
and troubleshooting.
|
|
67
|
+
See [Terminal Keybindings](docs/keybindings.md) for the full key map. If a key
|
|
68
|
+
does not fire, run `projmux setup` outside tmux, then use
|
|
69
|
+
`projmux init [terminal] --apply` for supported terminal fallbacks.
|
|
260
70
|
|
|
261
|
-
##
|
|
71
|
+
## Day-To-Day Use
|
|
262
72
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
| `PROJMUX_USAGE_LIMITS_PATH` | Deprecated. Limits now come from the upstream APIs (Anthropic OAuth usage endpoint, Codex `rate_limits`); this variable is read but ignored. |
|
|
73
|
+
- Pick a project directory and projmux creates or reuses its tmux session.
|
|
74
|
+
- Pin important projects so they stay easy to reach.
|
|
75
|
+
- Preview windows, panes, git branch, Kubernetes context, and AI pane state
|
|
76
|
+
before switching.
|
|
77
|
+
- Use Settings > Project Picker to add roots and workdirs without editing env
|
|
78
|
+
vars.
|
|
79
|
+
- Use Settings > About > Update or `projmux update apply` to upgrade.
|
|
271
80
|
|
|
272
|
-
|
|
81
|
+
For detailed configuration, including `PROJMUX_PROJDIR`, managed roots,
|
|
82
|
+
notifications, and usage tracking, see [Configuration](docs/configuration.md).
|
|
83
|
+
For update behavior by installer type, see [Upgrading](docs/upgrading.md).
|
|
273
84
|
|
|
274
|
-
|
|
275
|
-
Claude Code and the Codex CLI. Both adapters read from the upstream's own
|
|
276
|
-
view of your account so the percentages match what `claude /usage` and
|
|
277
|
-
`codex` show natively:
|
|
85
|
+
## More Docs
|
|
278
86
|
|
|
279
|
-
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
Snapshots are persisted under `<state>/projmux/usage/snapshots.json` (or
|
|
288
|
-
`PROJMUX_USAGE_STATE_DIR`) and refreshed at most every 30 seconds when
|
|
289
|
-
`projmux status usage` runs in the tmux status bar.
|
|
290
|
-
|
|
291
|
-
## Scope
|
|
292
|
-
|
|
293
|
-
`projmux` owns the portable session-management core: naming, discovery, pins,
|
|
294
|
-
preview state, tmux orchestration, status segments, and generated tmux bindings.
|
|
87
|
+
- [Install](docs/install.md)
|
|
88
|
+
- [Configuration](docs/configuration.md)
|
|
89
|
+
- [Terminal Keybindings](docs/keybindings.md)
|
|
90
|
+
- [CLI Reference](docs/cli.md)
|
|
91
|
+
- [Statusbar](docs/statusbar.md)
|
|
92
|
+
- [Hooks](docs/hooks.md)
|
|
93
|
+
- [Usage tracking](docs/usage-tracking.md)
|
|
94
|
+
- [Agent Workflow](docs/agent-workflow.md)
|
|
295
95
|
|
|
296
96
|
## Development
|
|
297
97
|
|
|
298
|
-
Useful commands:
|
|
299
|
-
|
|
300
98
|
```sh
|
|
301
99
|
make build
|
|
302
100
|
make fmt
|
|
303
101
|
make fix
|
|
304
102
|
make test
|
|
305
|
-
make test-integration
|
|
306
|
-
make test-e2e
|
|
307
|
-
make verify
|
|
308
103
|
```
|
|
309
104
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
- [Architecture](docs/architecture.md)
|
|
313
|
-
- [CLI Reference](docs/cli.md)
|
|
314
|
-
- [Statusbar](docs/statusbar.md)
|
|
315
|
-
- [Notify queue](docs/notify-queue.md)
|
|
316
|
-
- [Usage tracking](docs/usage-tracking.md)
|
|
317
|
-
- [Upgrading](docs/upgrading.md)
|
|
318
|
-
- [Hooks](docs/hooks.md)
|
|
319
|
-
- [Migration Plan](docs/migration-plan.md)
|
|
320
|
-
- [Repo Layout](docs/repo-layout.md)
|
|
321
|
-
- [Terminal Keybindings](docs/keybindings.md)
|
|
322
|
-
- [Agent Workflow](docs/agent-workflow.md)
|
|
105
|
+
See [Testing](docs/testing.md), [Architecture](docs/architecture.md), and
|
|
106
|
+
[Repo Layout](docs/repo-layout.md) for contributor details.
|
|
323
107
|
|
|
324
108
|
## License
|
|
325
109
|
|
package/bin/projmux
CHANGED
|
Binary file
|