@yuriteixeira/pi-muxr 0.1.2 → 0.1.3
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 +1 -1
- package/dist/cli/index.js +7 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/tmux/sidebar.d.ts +4 -1
- package/dist/tmux/sidebar.js +41 -16
- package/dist/tmux/sidebar.js.map +1 -1
- package/docs/ARCHITECTURE.md +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ pi-muxr --list
|
|
|
56
56
|
pi-muxr --web
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Run `pi-muxr --sidebar` inside tmux to open and pin a full height dashboard pane on the right side of every window in every tmux session. Pass `left` or `right` to select the side. Each pane uses at most 25 percent of the window width. New tmux sessions and windows receive the same sidebar while it is pinned. The pinned sidebar is toggleable. Run the same command again to close all dashboard sidebar panes and remove the pin.
|
|
59
|
+
Run `pi-muxr --sidebar` inside tmux to open and pin a full height dashboard pane on the right side of every window in every tmux session. Pass `left` or `right` to select the side. Each pane uses at most 25 percent of the window width. New tmux sessions and windows receive the same sidebar while it is pinned. A sidebar closes with its window when no other pane remains in that window. The pinned sidebar is toggleable. Run the same command again to close all dashboard sidebar panes and remove the pin.
|
|
60
60
|
|
|
61
61
|
Use `--quit-on-select` to close the interactive dashboard after Enter focuses the selected row. The browser interface runs at `http://127.0.0.1:3042` by default.
|
|
62
62
|
|
package/dist/cli/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { loadConfig } from "../config/config.js";
|
|
|
3
3
|
import { openDatabase } from "../state/database.js";
|
|
4
4
|
import { readStatuses } from "../state/read-statuses.js";
|
|
5
5
|
import { listTmuxPanes } from "../tmux/list-panes.js";
|
|
6
|
-
import { ensurePinnedSidebar, parseSidebarSide, parseSidebarWindowTarget, toggleSidebar } from "../tmux/sidebar.js";
|
|
6
|
+
import { cleanupOrphanedSidebar, ensurePinnedSidebar, parseSidebarCleanupWindowTarget, parseSidebarSide, parseSidebarWindowTarget, toggleSidebar } from "../tmux/sidebar.js";
|
|
7
7
|
import { renderRows } from "./format.js";
|
|
8
8
|
import { buildDashboardRows } from "./rows.js";
|
|
9
9
|
import { runWebServer } from "../web/server.js";
|
|
@@ -29,6 +29,11 @@ function main(argv) {
|
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
try {
|
|
32
|
+
const sidebarCleanupWindowTarget = parseSidebarCleanupWindowTarget(argv);
|
|
33
|
+
if (sidebarCleanupWindowTarget) {
|
|
34
|
+
cleanupOrphanedSidebar(sidebarCleanupWindowTarget);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
32
37
|
const sidebarWindowTarget = parseSidebarWindowTarget(argv);
|
|
33
38
|
if (sidebarWindowTarget) {
|
|
34
39
|
ensurePinnedSidebar(sidebarWindowTarget);
|
|
@@ -36,8 +41,7 @@ function main(argv) {
|
|
|
36
41
|
}
|
|
37
42
|
const sidebarSide = parseSidebarSide(argv);
|
|
38
43
|
if (sidebarSide) {
|
|
39
|
-
|
|
40
|
-
console.log(result === "created" ? `Opened and pinned pi-muxr sidebars on the ${sidebarSide}.` : "Closed and unpinned pi-muxr sidebars.");
|
|
44
|
+
toggleSidebar(sidebarSide);
|
|
41
45
|
return;
|
|
42
46
|
}
|
|
43
47
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux/sidebar.d.ts
CHANGED
|
@@ -8,9 +8,12 @@ export declare function parseSidebarSide(argv: string[]): SidebarSide | null;
|
|
|
8
8
|
export declare function parseSidebarPaneInventory(output: string): SidebarPaneInventory;
|
|
9
9
|
export declare function buildSidebarSplitArgs(side: SidebarSide, targetPaneId: string, command: string): string[];
|
|
10
10
|
export declare function parseSidebarWindowTarget(argv: string[]): string | null;
|
|
11
|
+
export declare function parseSidebarCleanupWindowTarget(argv: string[]): string | null;
|
|
11
12
|
export declare function buildPiMuxrCommand(execPath: string, entrypoint: string): string;
|
|
12
13
|
export declare function buildSidebarHookCommand(execPath: string, entrypoint: string): string;
|
|
13
|
-
export declare function
|
|
14
|
+
export declare function buildSidebarCleanupHookCommand(execPath: string, entrypoint: string): string;
|
|
15
|
+
export declare function buildSidebarHookArgs(createHookCommand: string, cleanupHookCommand: string): string[][];
|
|
14
16
|
export declare function buildSidebarUnhookArgs(): string[][];
|
|
15
17
|
export declare function toggleSidebar(side: SidebarSide): SidebarToggleResult;
|
|
16
18
|
export declare function ensurePinnedSidebar(targetWindowId: string): boolean;
|
|
19
|
+
export declare function cleanupOrphanedSidebar(targetWindowId: string): boolean;
|
package/dist/tmux/sidebar.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
2
|
const SIDEBAR_OPTION = "@pi-muxr-sidebar";
|
|
3
3
|
const SIDEBAR_SIDE_OPTION = "@pi-muxr-sidebar-side";
|
|
4
|
-
const
|
|
4
|
+
const SIDEBAR_CREATE_HOOKS = ["after-new-window[731]", "after-new-session[731]"];
|
|
5
|
+
const SIDEBAR_CLEANUP_HOOK = "window-layout-changed[731]";
|
|
6
|
+
const SIDEBAR_HOOKS = [...SIDEBAR_CREATE_HOOKS, SIDEBAR_CLEANUP_HOOK];
|
|
5
7
|
const SIDEBAR_PANES_FORMAT = `#{pane_id}\t#{window_id}\t#{${SIDEBAR_OPTION}}`;
|
|
6
8
|
export function parseSidebarSide(argv) {
|
|
7
9
|
const optionIndex = argv.indexOf("--sidebar");
|
|
@@ -22,8 +24,10 @@ export function parseSidebarPaneInventory(output) {
|
|
|
22
24
|
const [paneId, windowId, marker] = line.split("\t");
|
|
23
25
|
if (!paneId || !windowId)
|
|
24
26
|
continue;
|
|
25
|
-
if (marker === "left" || marker === "right")
|
|
27
|
+
if (marker === "left" || marker === "right") {
|
|
26
28
|
sidebarPaneIds.push(paneId);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
27
31
|
if (seenWindowIds.has(windowId))
|
|
28
32
|
continue;
|
|
29
33
|
seenWindowIds.add(windowId);
|
|
@@ -39,23 +43,23 @@ export function buildSidebarSplitArgs(side, targetPaneId, command) {
|
|
|
39
43
|
return args;
|
|
40
44
|
}
|
|
41
45
|
export function parseSidebarWindowTarget(argv) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!target || !/^@\d+$/.test(target))
|
|
47
|
-
throw new Error("--sidebar-window requires a tmux window ID.");
|
|
48
|
-
return target;
|
|
46
|
+
return parseWindowTarget(argv, "--sidebar-window");
|
|
47
|
+
}
|
|
48
|
+
export function parseSidebarCleanupWindowTarget(argv) {
|
|
49
|
+
return parseWindowTarget(argv, "--sidebar-cleanup-window");
|
|
49
50
|
}
|
|
50
51
|
export function buildPiMuxrCommand(execPath, entrypoint) {
|
|
51
52
|
return `${quoteShellArgument(execPath)} ${quoteShellArgument(entrypoint)}`;
|
|
52
53
|
}
|
|
53
54
|
export function buildSidebarHookCommand(execPath, entrypoint) {
|
|
54
|
-
|
|
55
|
-
return `run-shell ${quoteShellArgument(command)}`;
|
|
55
|
+
return buildWindowHookCommand(execPath, entrypoint, "--sidebar-window");
|
|
56
56
|
}
|
|
57
|
-
export function
|
|
58
|
-
return
|
|
57
|
+
export function buildSidebarCleanupHookCommand(execPath, entrypoint) {
|
|
58
|
+
return buildWindowHookCommand(execPath, entrypoint, "--sidebar-cleanup-window");
|
|
59
|
+
}
|
|
60
|
+
export function buildSidebarHookArgs(createHookCommand, cleanupHookCommand) {
|
|
61
|
+
const createHooks = SIDEBAR_CREATE_HOOKS.map((hook) => ["set-hook", "-g", hook, createHookCommand]);
|
|
62
|
+
return [...createHooks, ["set-hook", "-g", SIDEBAR_CLEANUP_HOOK, cleanupHookCommand]];
|
|
59
63
|
}
|
|
60
64
|
export function buildSidebarUnhookArgs() {
|
|
61
65
|
return SIDEBAR_HOOKS.map((hook) => ["set-hook", "-g", "-u", hook]);
|
|
@@ -75,7 +79,7 @@ export function toggleSidebar(side) {
|
|
|
75
79
|
const command = buildPiMuxrCommand(process.execPath, entrypoint);
|
|
76
80
|
createSidebarPanes(side, inventory.targetPaneIds, command);
|
|
77
81
|
try {
|
|
78
|
-
pinSidebar(side, buildSidebarHookCommand(process.execPath, entrypoint));
|
|
82
|
+
pinSidebar(side, buildSidebarHookCommand(process.execPath, entrypoint), buildSidebarCleanupHookCommand(process.execPath, entrypoint));
|
|
79
83
|
}
|
|
80
84
|
catch (error) {
|
|
81
85
|
destroySidebarPanes(readSidebarPaneInventory().sidebarPaneIds);
|
|
@@ -96,6 +100,26 @@ export function ensurePinnedSidebar(targetWindowId) {
|
|
|
96
100
|
createSidebarPanes(side, [targetPaneId], buildPiMuxrCommand(process.execPath, resolveEntrypoint()));
|
|
97
101
|
return true;
|
|
98
102
|
}
|
|
103
|
+
export function cleanupOrphanedSidebar(targetWindowId) {
|
|
104
|
+
const inventory = readSidebarPaneInventory(targetWindowId);
|
|
105
|
+
if (inventory.targetPaneIds.length > 0 || inventory.sidebarPaneIds.length === 0)
|
|
106
|
+
return false;
|
|
107
|
+
destroySidebarPanes(inventory.sidebarPaneIds);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
function parseWindowTarget(argv, option) {
|
|
111
|
+
const optionIndex = argv.indexOf(option);
|
|
112
|
+
if (optionIndex === -1)
|
|
113
|
+
return null;
|
|
114
|
+
const target = argv[optionIndex + 1];
|
|
115
|
+
if (!target || !/^@\d+$/.test(target))
|
|
116
|
+
throw new Error(`${option} requires a tmux window ID.`);
|
|
117
|
+
return target;
|
|
118
|
+
}
|
|
119
|
+
function buildWindowHookCommand(execPath, entrypoint, option) {
|
|
120
|
+
const command = `${buildPiMuxrCommand(execPath, entrypoint)} ${option} '#{window_id}'`;
|
|
121
|
+
return `run-shell ${quoteShellArgument(command)}`;
|
|
122
|
+
}
|
|
99
123
|
function resolveEntrypoint() {
|
|
100
124
|
const entrypoint = process.argv[1];
|
|
101
125
|
if (!entrypoint)
|
|
@@ -122,11 +146,12 @@ function readPinnedSidebarSide() {
|
|
|
122
146
|
return null;
|
|
123
147
|
}
|
|
124
148
|
}
|
|
125
|
-
function pinSidebar(side,
|
|
149
|
+
function pinSidebar(side, createHookCommand, cleanupHookCommand) {
|
|
126
150
|
execFileSync("tmux", ["set-option", "-g", SIDEBAR_SIDE_OPTION, side], { stdio: "ignore" });
|
|
127
151
|
try {
|
|
128
|
-
for (const args of buildSidebarHookArgs(
|
|
152
|
+
for (const args of buildSidebarHookArgs(createHookCommand, cleanupHookCommand)) {
|
|
129
153
|
execFileSync("tmux", args, { stdio: "ignore" });
|
|
154
|
+
}
|
|
130
155
|
}
|
|
131
156
|
catch (error) {
|
|
132
157
|
removeSidebarHooks();
|
package/dist/tmux/sidebar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/tmux/sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AACpD,MAAM,
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/tmux/sidebar.ts"],"names":[],"mappings":"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"}
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -181,7 +181,7 @@ The extension uses `tmux list-panes` to discover pane metadata. The dashboard jo
|
|
|
181
181
|
|
|
182
182
|
When the user focuses a row, `src/tmux/focus.ts` selects the pane and switches to its tmux session and window. When the CLI runs outside tmux, it reports the commands needed to focus the pane instead of pretending that the focus succeeded.
|
|
183
183
|
|
|
184
|
-
The sidebar command splits every window in every tmux session and starts the same `pi-muxr` entrypoint in each new pane. The default side is right, and each pane uses at most 25 percent of the window width. A tmux pane option marks each pane. A global tmux option stores the selected side. Indexed `after-new-session` and `after-new-window` hooks add the sidebar to new sessions and windows without replacing other hooks. The next sidebar command finds the markers, closes all dashboard sidebar panes, and removes the option and hooks.
|
|
184
|
+
The sidebar command splits every window in every tmux session and starts the same `pi-muxr` entrypoint in each new pane. The default side is right, and each pane uses at most 25 percent of the window width. A tmux pane option marks each pane. A global tmux option stores the selected side. Indexed `after-new-session` and `after-new-window` hooks add the sidebar to new sessions and windows without replacing other hooks. An indexed `window-layout-changed` hook closes a sidebar when it is the only pane left in its window. The next sidebar command finds the markers, closes all dashboard sidebar panes, and removes the option and hooks.
|
|
185
185
|
|
|
186
186
|
The browser gateway uses a separate tmux session, named `pi-muxr-web` by default. A query parameter can select another valid session name.
|
|
187
187
|
|