ccgwz
Version:
Claude Code Git Worktree Zellij - CLI tool for parallel development with git worktrees and Claude Code in zellij panes
54 lines • 2.12 kB
JavaScript
import { execa } from 'execa';
export class ZellijManager {
async createNewTabWithPanes(tabName, paneCount, worktrees) {
try {
// Create new tab with project name
await execa('zellij', ['action', 'new-tab', '--name', tabName]);
// Now create panes in the new tab
return this.createPanesWithLayout(paneCount, worktrees);
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
success: false,
error: `Failed to create new tab: ${errorMessage}`,
};
}
}
async createPanesWithLayout(paneCount, worktrees) {
try {
// Launch Claude in current pane first
const firstResult = await this.launchClaudeInCurrentPane(worktrees[0]);
if (!firstResult.success) {
return firstResult;
}
// Create additional panes with Claude
for (let i = 1; i < paneCount; i++) {
const direction = i % 2 === 1 ? 'right' : 'down';
await execa('zellij', ['action', 'new-pane', '-d', direction, '--cwd', worktrees[i].worktreePath, '--', 'claude']);
}
return { success: true, data: undefined };
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
success: false,
error: `Failed to create zellij layout: ${errorMessage}`,
};
}
}
async launchClaudeInCurrentPane(worktree) {
try {
await execa('zellij', ['run', '--cwd', worktree.worktreePath, '--', 'claude']);
return { success: true, data: undefined };
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
success: false,
error: `Failed to launch Claude Code: ${errorMessage}`,
};
}
}
}
//# sourceMappingURL=zellij.js.map