tabby-tmux 1.0.0

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 ADDED
@@ -0,0 +1,93 @@
1
+ # tabby-tmux
2
+
3
+ [中文](README.zh-CN.md)
4
+
5
+ [![Build](https://github.com/ruanimal/tabby-tmux/actions/workflows/build.yml/badge.svg)](https://github.com/ruanimal/tabby-tmux/actions/workflows/build.yml)
6
+ [![npm version](https://img.shields.io/npm/v/tabby-tmux)](https://www.npmjs.com/package/tabby-tmux)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+
9
+ A [Tabby](https://tabby.sh/) plugin that provides tmux Control Mode integration, inspired by [iTerm2 tmux Integration](https://iterm2.com/documentation-tmux-integration.html).
10
+
11
+ ## Features
12
+
13
+ - **Native UI integration** — Maps tmux windows and panes into native Tabby components
14
+ - **Session persistence** — tmux sessions survive Tabby restarts; reconnect via `tmux -CC attach`
15
+ - **Window bar** — Collapsible bottom bar for switching tmux windows, with support for creating new windows and disconnecting
16
+ - **Layout sync** — Automatically syncs tmux layout into Tabby SplitTab
17
+
18
+ ## Installation
19
+
20
+ ### Via Tabby Settings
21
+
22
+ 1. Open Tabby → **Settings** → **Plugins**
23
+ 2. Search for `tabby-tmux`
24
+ 3. Click **Install**
25
+
26
+ ### Via command line
27
+
28
+ ```bash
29
+ cd <tabby-plugins-dir>
30
+ npm install tabby-tmux
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ 1. Create a new profile in Tabby, select the **Tmux** type
36
+ 2. Configure the tmux session name (default: `default`)
37
+ 3. Once connected, the bottom window bar shows tmux windows — switch between windows and panes from there
38
+
39
+ ### Development
40
+
41
+ ```bash
42
+ pnpm install
43
+ pnpm run watch # watch mode
44
+
45
+ # Launch Tabby with the plugin loaded
46
+ TABBY_PLUGINS=$(pwd) tabby --debug
47
+ ```
48
+
49
+ ## trzsz Support
50
+
51
+ This plugin is fully compatible with the [tabby-trzsz](https://github.com/trzsz/tabby-trzsz) plugin, enabling file transfer (`trz`/`tsz`) and drag-and-drop upload over tmux panes.
52
+
53
+ Install both plugins and they work together automatically:
54
+
55
+ ```bash
56
+ cd <tabby-plugins-dir>
57
+ npm install tabby-tmux tabby-trzsz
58
+ ```
59
+
60
+ > **Note:** When uploading files over WebSocket terminals (e.g. via [tabby-ws-term](https://github.com/ruanimal/tabby-ws-term)), use `trzsz -B 10K` to improve compatibility.
61
+
62
+ ## Architecture
63
+
64
+ ```
65
+ TmuxService
66
+ ├── TmuxGateway — tmux Control Mode protocol parser
67
+ ├── TmuxController — session state management & event dispatch
68
+ ├── TmuxSessionTab — extends SplitTabComponent, manages window/pane mapping
69
+ ├── TmuxWindowBar — collapsible bottom window switcher bar
70
+ └── TmuxPaneTab — extends BaseTerminalTabComponent, single pane
71
+ ```
72
+
73
+ ### Data flow
74
+
75
+ ```
76
+ User input → TmuxPaneTab → paneSession.feedFromTerminal()
77
+ → controller.writeToPane(paneId, data)
78
+ → gateway.sendKeys(hex, paneId) → PTY → tmux
79
+
80
+ tmux output → PTY → controller.handleLine()
81
+ → gateway.executeLine() → parse protocol
82
+ → %output → paneSession.emitOutput()
83
+ → %layout-change → event → SessionTab.syncLayout()
84
+ ```
85
+
86
+ ## Tech Stack
87
+
88
+ - **Framework**: Angular 15 + TypeScript 4.9
89
+ - **Dependencies**: `tabby-core`, `tabby-terminal`, `tabby-local`, `rxjs`
90
+
91
+ ## License
92
+
93
+ MIT
@@ -0,0 +1,93 @@
1
+ # tabby-tmux
2
+
3
+ [中文](README.zh-CN.md)
4
+
5
+ [![Build](https://github.com/ruanimal/tabby-tmux/actions/workflows/build.yml/badge.svg)](https://github.com/ruanimal/tabby-tmux/actions/workflows/build.yml)
6
+ [![npm version](https://img.shields.io/npm/v/tabby-tmux)](https://www.npmjs.com/package/tabby-tmux)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+
9
+ A [Tabby](https://tabby.sh/) plugin that provides tmux Control Mode integration, inspired by [iTerm2 tmux Integration](https://iterm2.com/documentation-tmux-integration.html).
10
+
11
+ ## Features
12
+
13
+ - **Native UI integration** — Maps tmux windows and panes into native Tabby components
14
+ - **Session persistence** — tmux sessions survive Tabby restarts; reconnect via `tmux -CC attach`
15
+ - **Window bar** — Collapsible bottom bar for switching tmux windows, with support for creating new windows and disconnecting
16
+ - **Layout sync** — Automatically syncs tmux layout into Tabby SplitTab
17
+
18
+ ## Installation
19
+
20
+ ### Via Tabby Settings
21
+
22
+ 1. Open Tabby → **Settings** → **Plugins**
23
+ 2. Search for `tabby-tmux`
24
+ 3. Click **Install**
25
+
26
+ ### Via command line
27
+
28
+ ```bash
29
+ cd <tabby-plugins-dir>
30
+ npm install tabby-tmux
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ 1. Create a new profile in Tabby, select the **Tmux** type
36
+ 2. Configure the tmux session name (default: `default`)
37
+ 3. Once connected, the bottom window bar shows tmux windows — switch between windows and panes from there
38
+
39
+ ### Development
40
+
41
+ ```bash
42
+ pnpm install
43
+ pnpm run watch # watch mode
44
+
45
+ # Launch Tabby with the plugin loaded
46
+ TABBY_PLUGINS=$(pwd) tabby --debug
47
+ ```
48
+
49
+ ## trzsz 支持
50
+
51
+ 本插件与 [tabby-trzsz](https://github.com/trzsz/tabby-trzsz) 插件完全兼容,可在 tmux pane 中使用文件传输(`trz`/`tsz`)和拖拽上传。
52
+
53
+ 同时安装两个插件即可自动配合工作:
54
+
55
+ ```bash
56
+ cd <tabby-plugins-dir>
57
+ npm install tabby-tmux tabby-trzsz
58
+ ```
59
+
60
+ > **提示:** 通过 WebSocket 终端上传文件时(如使用 [tabby-ws-term](https://github.com/ruanimal/tabby-ws-term)),建议使用 `trzsz -B 10K` 以提高兼容性。
61
+
62
+ ## Architecture
63
+
64
+ ```
65
+ TmuxService
66
+ ├── TmuxGateway — tmux Control Mode protocol parser
67
+ ├── TmuxController — session state management & event dispatch
68
+ ├── TmuxSessionTab — extends SplitTabComponent, manages window/pane mapping
69
+ ├── TmuxWindowBar — collapsible bottom window switcher bar
70
+ └── TmuxPaneTab — extends BaseTerminalTabComponent, single pane
71
+ ```
72
+
73
+ ### Data flow
74
+
75
+ ```
76
+ User input → TmuxPaneTab → paneSession.feedFromTerminal()
77
+ → controller.writeToPane(paneId, data)
78
+ → gateway.sendKeys(hex, paneId) → PTY → tmux
79
+
80
+ tmux output → PTY → controller.handleLine()
81
+ → gateway.executeLine() → parse protocol
82
+ → %output → paneSession.emitOutput()
83
+ → %layout-change → event → SessionTab.syncLayout()
84
+ ```
85
+
86
+ ## Tech Stack
87
+
88
+ - **Framework**: Angular 15 + TypeScript 4.9
89
+ - **Dependencies**: `tabby-core`, `tabby-terminal`, `tabby-local`, `rxjs`
90
+
91
+ ## License
92
+
93
+ MIT