@vibelord/lanes 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/LICENSE +21 -0
- package/README.md +70 -0
- package/bin/lanes-install.mjs +158 -0
- package/lib/plan.mjs +65 -0
- package/package.json +37 -0
- package/payload/lanes/README.md +152 -0
- package/payload/lanes/VERSION +1 -0
- package/payload/lanes/bin/lanes +1035 -0
- package/payload/lanes/client/ghostty/common.conf +22 -0
- package/payload/lanes/client/ghostty/macos.conf +6 -0
- package/payload/lanes/client/ghostty/omarchy.conf +19 -0
- package/payload/lanes/client/install.sh +16 -0
- package/payload/lanes/client/lanes-launch +315 -0
- package/payload/lanes/client/lanes-upload +147 -0
- package/payload/lanes/client/lanes-window +36 -0
- package/payload/lanes/client/macos-helper.applescript +14 -0
- package/payload/lanes/client/omarchy/discover.sh +56 -0
- package/payload/lanes/client/omarchy/lanes.conf +5 -0
- package/payload/lanes/client/omarchy/lanes.desktop +9 -0
- package/payload/lanes/client/omarchy/lanes.lua +14 -0
- package/payload/lanes/client/ssh.stanza.in +54 -0
- package/payload/lanes/container/env.sh +16 -0
- package/payload/lanes/container/lane +268 -0
- package/payload/lanes/container/lane-run +34 -0
- package/payload/lanes/docs/ARCHITECTURE.md +93 -0
- package/payload/lanes/docs/HOST-GUARD.md +108 -0
- package/payload/lanes/docs/INSTALL.md +192 -0
- package/payload/lanes/docs/RUNBOOK.md +385 -0
- package/payload/lanes/docs/SHARING.md +124 -0
- package/payload/lanes/docs/ZMX-RING0.md +51 -0
- package/payload/lanes/docs/images/desktop.png +0 -0
- package/payload/lanes/docs/images/iphone.png +0 -0
- package/payload/lanes/holders/exec.sh +21 -0
- package/payload/lanes/holders/tmux.sh +111 -0
- package/payload/lanes/holders/zmx.sh +22 -0
- package/payload/lanes/holders.lock +5 -0
- package/payload/lanes/install/enable-phone.sh +43 -0
- package/payload/lanes/install/enable-web.sh +16 -0
- package/payload/lanes/install/host-install.sh +72 -0
- package/payload/lanes/install/services.py +61 -0
- package/payload/lanes/install.sh +603 -0
- package/payload/lanes/libexec/cursor_commit.py +159 -0
- package/payload/lanes/libexec/cursor_sync.py +166 -0
- package/payload/lanes/libexec/guard.py +231 -0
- package/payload/lanes/libexec/lanes_lib.py +610 -0
- package/payload/lanes/libexec/legacy_sessions.py +130 -0
- package/payload/lanes/libexec/session_actions.py +276 -0
- package/payload/lanes/libexec/sidebar +8 -0
- package/payload/lanes/libexec/sidebar.py +872 -0
- package/payload/lanes/libexec/statusd.py +764 -0
- package/payload/lanes/libexec/tmpscan.py +921 -0
- package/payload/lanes/libexec/view.sh +179 -0
- package/payload/lanes/scripts/adopt-sharing-candidate.py +109 -0
- package/payload/lanes/site/README.md +28 -0
- package/payload/lanes/site/beyondwork/known_hosts +1 -0
- package/payload/lanes/site/beyondwork/site.conf +11 -0
- package/payload/lanes/site/site.example.conf +10 -0
- package/payload/lanes/sudo/host-guard.sh +356 -0
- package/payload/lanes/sudo/one-time-root.sh +32 -0
- package/payload/lanes/systemd/lanes-ensure.service +7 -0
- package/payload/lanes/systemd/lanes-ensure.timer +10 -0
- package/payload/lanes/systemd/lanes-gc.service +7 -0
- package/payload/lanes/systemd/lanes-gc.timer +9 -0
- package/payload/lanes/systemd/lanes-guard.service +8 -0
- package/payload/lanes/systemd/lanes-guard.timer +10 -0
- package/payload/lanes/systemd/lanes-mobile.service +23 -0
- package/payload/lanes/systemd/lanes-statusd.service +15 -0
- package/payload/lanes/systemd/lanes-sync.service +10 -0
- package/payload/lanes/systemd/lanes-sync.timer +10 -0
- package/payload/lanes/systemd/lanes-tmpreap.service +11 -0
- package/payload/lanes/systemd/lanes-tmpreap.timer +13 -0
- package/payload/lanes/systemd/lanes-web.service +13 -0
- package/payload/lanes/systemd/lanes.slice +11 -0
- package/payload/lanes/web/Caddyfile +37 -0
- package/payload/lanes/web/README.md +35 -0
- package/payload/lanes/web/icon-192.png +0 -0
- package/payload/lanes/web/icon.svg +4 -0
- package/payload/lanes/web/index.html +30 -0
- package/payload/lanes/web/manifest.webmanifest +15 -0
- package/payload/lanes/web/mobile.css +301 -0
- package/payload/lanes/web/mobile.js +367 -0
- package/payload/lanes/workspaces.example/README.md +27 -0
- package/payload/lanes/workspaces.example/catalog.json +7 -0
- package/payload/lanes/workspaces.example/commit-targets.json +8 -0
- package/payload/lanes/workspaces.example/terminals.example.json +19 -0
- package/payload/lanes/workspaces.example/workspaces.product.json +15 -0
- package/payload/lanes/workspaces.example/workspaces.research.json +16 -0
- package/payload/lanes/zellij/config.kdl +360 -0
- package/payload/manifest.json +31 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
// lanes host view configuration. Generated from the user's coder-launch keybinding scheme
|
|
2
|
+
// (clear-defaults, Ctrl-Alt prefix: every ordinary key reaches the agent). Edit here; this file is versioned.
|
|
3
|
+
keybinds clear-defaults=true {
|
|
4
|
+
normal {
|
|
5
|
+
bind "Ctrl g" { SwitchToMode "locked"; }
|
|
6
|
+
bind "Ctrl Alt p" { SwitchToMode "pane"; }
|
|
7
|
+
bind "Ctrl Alt t" { SwitchToMode "tab"; }
|
|
8
|
+
bind "Ctrl Alt n" { SwitchToMode "resize"; }
|
|
9
|
+
bind "Ctrl Alt h" { SwitchToMode "move"; }
|
|
10
|
+
bind "Ctrl Alt o" { SwitchToMode "session"; }
|
|
11
|
+
bind "Ctrl Alt b" { SwitchToMode "tmux"; }
|
|
12
|
+
bind "Ctrl Alt f" { SwitchToMode "scroll"; }
|
|
13
|
+
}
|
|
14
|
+
locked {
|
|
15
|
+
bind "Ctrl g" { SwitchToMode "normal"; }
|
|
16
|
+
}
|
|
17
|
+
pane {
|
|
18
|
+
bind "left" { MoveFocus "left"; }
|
|
19
|
+
bind "down" { MoveFocus "down"; }
|
|
20
|
+
bind "up" { MoveFocus "up"; }
|
|
21
|
+
bind "right" { MoveFocus "right"; }
|
|
22
|
+
bind ";" { FocusLastPane; }
|
|
23
|
+
bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; }
|
|
24
|
+
bind "d" { NewPane "down"; SwitchToMode "normal"; }
|
|
25
|
+
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
|
26
|
+
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
|
27
|
+
bind "Shift f" { ToggleFocusNoUiFullscreen; SwitchToMode "normal"; }
|
|
28
|
+
bind "h" { MoveFocus "left"; }
|
|
29
|
+
bind "i" { TogglePanePinned; SwitchToMode "normal"; }
|
|
30
|
+
bind "j" { MoveFocus "down"; }
|
|
31
|
+
bind "k" { MoveFocus "up"; }
|
|
32
|
+
bind "l" { MoveFocus "right"; }
|
|
33
|
+
bind "n" { NewPane; SwitchToMode "normal"; }
|
|
34
|
+
bind "p" { SwitchFocus; }
|
|
35
|
+
bind "Ctrl p" { SwitchToMode "normal"; }
|
|
36
|
+
bind "r" { NewPane "right"; SwitchToMode "normal"; }
|
|
37
|
+
bind "s" { NewPane "stacked"; SwitchToMode "normal"; }
|
|
38
|
+
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
|
39
|
+
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
|
40
|
+
}
|
|
41
|
+
tab {
|
|
42
|
+
bind "left" { GoToPreviousTab; }
|
|
43
|
+
bind "down" { GoToNextTab; }
|
|
44
|
+
bind "up" { GoToPreviousTab; }
|
|
45
|
+
bind "right" { GoToNextTab; }
|
|
46
|
+
bind "1" { GoToTab 1; SwitchToMode "normal"; }
|
|
47
|
+
bind "2" { GoToTab 2; SwitchToMode "normal"; }
|
|
48
|
+
bind "3" { GoToTab 3; SwitchToMode "normal"; }
|
|
49
|
+
bind "4" { GoToTab 4; SwitchToMode "normal"; }
|
|
50
|
+
bind "5" { GoToTab 5; SwitchToMode "normal"; }
|
|
51
|
+
bind "6" { GoToTab 6; SwitchToMode "normal"; }
|
|
52
|
+
bind "7" { GoToTab 7; SwitchToMode "normal"; }
|
|
53
|
+
bind "8" { GoToTab 8; SwitchToMode "normal"; }
|
|
54
|
+
bind "9" { GoToTab 9; SwitchToMode "normal"; }
|
|
55
|
+
bind "[" { BreakPaneLeft; SwitchToMode "normal"; }
|
|
56
|
+
bind "]" { BreakPaneRight; SwitchToMode "normal"; }
|
|
57
|
+
bind "b" { BreakPane; SwitchToMode "normal"; }
|
|
58
|
+
bind "h" { GoToPreviousTab; }
|
|
59
|
+
bind "j" { GoToNextTab; }
|
|
60
|
+
bind "k" { GoToPreviousTab; }
|
|
61
|
+
bind "l" { GoToNextTab; }
|
|
62
|
+
bind "n" { NewTab; SwitchToMode "normal"; }
|
|
63
|
+
bind "r" { SwitchToMode "renametab"; TabNameInput 0; }
|
|
64
|
+
bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
|
|
65
|
+
bind "Ctrl t" { SwitchToMode "normal"; }
|
|
66
|
+
bind "x" { CloseTab; SwitchToMode "normal"; }
|
|
67
|
+
bind "tab" { ToggleTab; }
|
|
68
|
+
}
|
|
69
|
+
resize {
|
|
70
|
+
bind "left" { Resize "Increase left"; }
|
|
71
|
+
bind "down" { Resize "Increase down"; }
|
|
72
|
+
bind "up" { Resize "Increase up"; }
|
|
73
|
+
bind "right" { Resize "Increase right"; }
|
|
74
|
+
bind "+" { Resize "Increase"; }
|
|
75
|
+
bind "-" { Resize "Decrease"; }
|
|
76
|
+
bind "=" { Resize "Increase"; }
|
|
77
|
+
bind "H" { Resize "Decrease left"; }
|
|
78
|
+
bind "J" { Resize "Decrease down"; }
|
|
79
|
+
bind "K" { Resize "Decrease up"; }
|
|
80
|
+
bind "L" { Resize "Decrease right"; }
|
|
81
|
+
bind "h" { Resize "Increase left"; }
|
|
82
|
+
bind "j" { Resize "Increase down"; }
|
|
83
|
+
bind "k" { Resize "Increase up"; }
|
|
84
|
+
bind "l" { Resize "Increase right"; }
|
|
85
|
+
bind "Ctrl n" { SwitchToMode "normal"; }
|
|
86
|
+
}
|
|
87
|
+
move {
|
|
88
|
+
bind "left" { MovePane "left"; }
|
|
89
|
+
bind "down" { MovePane "down"; }
|
|
90
|
+
bind "up" { MovePane "up"; }
|
|
91
|
+
bind "right" { MovePane "right"; }
|
|
92
|
+
bind "h" { MovePane "left"; }
|
|
93
|
+
bind "Ctrl h" { SwitchToMode "normal"; }
|
|
94
|
+
bind "j" { MovePane "down"; }
|
|
95
|
+
bind "k" { MovePane "up"; }
|
|
96
|
+
bind "l" { MovePane "right"; }
|
|
97
|
+
bind "n" { MovePane; }
|
|
98
|
+
bind "p" { MovePaneBackwards; }
|
|
99
|
+
bind "tab" { MovePane; }
|
|
100
|
+
}
|
|
101
|
+
scroll {
|
|
102
|
+
bind "c" { CopyLastCommandOutput; SwitchToMode "normal"; }
|
|
103
|
+
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
|
104
|
+
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
|
105
|
+
}
|
|
106
|
+
search {
|
|
107
|
+
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
|
108
|
+
bind "n" { Search "down"; }
|
|
109
|
+
bind "o" { SearchToggleOption "WholeWord"; }
|
|
110
|
+
bind "p" { Search "up"; }
|
|
111
|
+
bind "w" { SearchToggleOption "Wrap"; }
|
|
112
|
+
}
|
|
113
|
+
session {
|
|
114
|
+
bind "[" { FocusGuestSession; SwitchToMode "normal"; }
|
|
115
|
+
bind "]" { FocusHostSession; SwitchToMode "normal"; }
|
|
116
|
+
bind "a" {
|
|
117
|
+
LaunchOrFocusPlugin "zellij:about" {
|
|
118
|
+
floating true
|
|
119
|
+
move_to_focused_tab true
|
|
120
|
+
}
|
|
121
|
+
SwitchToMode "normal"
|
|
122
|
+
}
|
|
123
|
+
bind "c" {
|
|
124
|
+
LaunchOrFocusPlugin "configuration" {
|
|
125
|
+
floating true
|
|
126
|
+
move_to_focused_tab true
|
|
127
|
+
}
|
|
128
|
+
SwitchToMode "normal"
|
|
129
|
+
}
|
|
130
|
+
bind "f" { ToggleHostFullscreen; SwitchToMode "normal"; }
|
|
131
|
+
bind "l" {
|
|
132
|
+
LaunchOrFocusPlugin "zellij:layout-manager" {
|
|
133
|
+
floating true
|
|
134
|
+
move_to_focused_tab true
|
|
135
|
+
}
|
|
136
|
+
SwitchToMode "normal"
|
|
137
|
+
}
|
|
138
|
+
bind "Ctrl o" { SwitchToMode "normal"; }
|
|
139
|
+
bind "p" {
|
|
140
|
+
LaunchOrFocusPlugin "plugin-manager" {
|
|
141
|
+
floating true
|
|
142
|
+
move_to_focused_tab true
|
|
143
|
+
}
|
|
144
|
+
SwitchToMode "normal"
|
|
145
|
+
}
|
|
146
|
+
bind "s" {
|
|
147
|
+
LaunchOrFocusPlugin "zellij:share" {
|
|
148
|
+
floating true
|
|
149
|
+
move_to_focused_tab true
|
|
150
|
+
}
|
|
151
|
+
SwitchToMode "normal"
|
|
152
|
+
}
|
|
153
|
+
bind "w" {
|
|
154
|
+
LaunchOrFocusPlugin "session-manager" {
|
|
155
|
+
floating true
|
|
156
|
+
move_to_focused_tab true
|
|
157
|
+
}
|
|
158
|
+
SwitchToMode "normal"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
shared {
|
|
162
|
+
bind "Ctrl Alt PageUp" { PageScrollUp; SwitchToMode "scroll"; }
|
|
163
|
+
bind "Ctrl Alt PageDown" { PageScrollDown; SwitchToMode "scroll"; }
|
|
164
|
+
bind "Ctrl Alt End" { ScrollToBottom; SwitchToMode "normal"; }
|
|
165
|
+
bind "Ctrl Alt c" { Copy; }
|
|
166
|
+
bind "Ctrl Alt left" { GoToPreviousTab; }
|
|
167
|
+
// lanes: workspaces are tabs (Ctrl-Alt-←/→); lanes live in the sidebar. These reach the sidebar
|
|
168
|
+
// from anywhere in the tab: it opens the previous/next lane (or starts a filter) and hands focus back.
|
|
169
|
+
//
|
|
170
|
+
// WHY THREE MoveFocus "left": a workspace tab is [sidebar | view main | view b | view c] (wide views, at most
|
|
171
|
+
// 3 viewports) and WriteChars types into whichever pane holds the focus BY THEN. One "left" reaches the
|
|
172
|
+
// sidebar only from `main`; pressed in viewport b or c it stopped on a LANE and the "J"/"K" was typed into
|
|
173
|
+
// the agent. Three lefts reach the sidebar from every viewport, and zellij does not wrap at the left edge, so
|
|
174
|
+
// the surplus moves are no-ops. tests/view.py proves both (3 lefts land on the sidebar, a 4th stays there, the
|
|
175
|
+
// real Ctrl-Alt-Down bytes from viewport 2 put no "J" on any lane). More viewports = more lefts here.
|
|
176
|
+
// Known limit: a tab WITHOUT a sidebar (Host, Throttle, the mobile view tab) has nothing to the left, so there
|
|
177
|
+
// the character still goes to the pane itself.
|
|
178
|
+
bind "Ctrl Alt down" { MoveFocus "left"; MoveFocus "left"; MoveFocus "left"; WriteChars "J"; }
|
|
179
|
+
bind "Ctrl Alt up" { MoveFocus "left"; MoveFocus "left"; MoveFocus "left"; WriteChars "K"; }
|
|
180
|
+
bind "Ctrl Alt /" { MoveFocus "left"; MoveFocus "left"; MoveFocus "left"; WriteChars "/"; }
|
|
181
|
+
// Arm the sidebar's upload box, then drop files anywhere on the window (a drop = a paste into the focused pane).
|
|
182
|
+
bind "Ctrl Alt u" { MoveFocus "left"; MoveFocus "left"; MoveFocus "left"; WriteChars "U"; }
|
|
183
|
+
bind "Ctrl Alt right" { GoToNextTab; }
|
|
184
|
+
bind "Ctrl Alt s" {
|
|
185
|
+
LaunchOrFocusPlugin "session-manager" {
|
|
186
|
+
floating true
|
|
187
|
+
move_to_focused_tab true
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
shared_except "normal" "locked" {
|
|
192
|
+
bind "Alt left" { MoveFocusOrTab "left"; }
|
|
193
|
+
bind "Alt down" { MoveFocus "down"; }
|
|
194
|
+
bind "Alt up" { MoveFocus "up"; }
|
|
195
|
+
bind "Alt right" { MoveFocusOrTab "right"; }
|
|
196
|
+
bind "Alt +" { Resize "Increase"; }
|
|
197
|
+
bind "Alt -" { Resize "Decrease"; }
|
|
198
|
+
bind "Alt =" { Resize "Increase"; }
|
|
199
|
+
bind "Alt [" { PreviousSwapLayout; }
|
|
200
|
+
bind "Alt ]" { NextSwapLayout; }
|
|
201
|
+
bind "Alt f" { ToggleFloatingPanes; }
|
|
202
|
+
bind "Ctrl g" { SwitchToMode "locked"; }
|
|
203
|
+
bind "Alt h" { MoveFocusOrTab "left"; }
|
|
204
|
+
bind "Alt i" { MoveTab "left"; }
|
|
205
|
+
bind "Alt j" { MoveFocus "down"; }
|
|
206
|
+
bind "Alt k" { MoveFocus "up"; }
|
|
207
|
+
bind "Alt l" { MoveFocusOrTab "right"; }
|
|
208
|
+
bind "Alt n" { NewPane; }
|
|
209
|
+
bind "Alt o" { MoveTab "right"; }
|
|
210
|
+
bind "Alt p" { TogglePaneInGroup; }
|
|
211
|
+
bind "Alt Shift p" { ToggleGroupMarking; }
|
|
212
|
+
bind "Ctrl q" { Quit; }
|
|
213
|
+
}
|
|
214
|
+
shared_except "normal" "locked" "move" {
|
|
215
|
+
bind "Ctrl h" { SwitchToMode "move"; }
|
|
216
|
+
}
|
|
217
|
+
shared_except "normal" "locked" "session" {
|
|
218
|
+
bind "Ctrl o" { SwitchToMode "session"; }
|
|
219
|
+
}
|
|
220
|
+
shared_except "normal" "locked" "scroll" "search" "tmux" {
|
|
221
|
+
bind "Ctrl b" { SwitchToMode "tmux"; }
|
|
222
|
+
}
|
|
223
|
+
shared_except "normal" "locked" "scroll" "search" {
|
|
224
|
+
bind "Ctrl s" { SwitchToMode "scroll"; }
|
|
225
|
+
}
|
|
226
|
+
shared_except "normal" "locked" "tab" {
|
|
227
|
+
bind "Ctrl t" { SwitchToMode "tab"; }
|
|
228
|
+
}
|
|
229
|
+
shared_except "normal" "locked" "pane" {
|
|
230
|
+
bind "Ctrl p" { SwitchToMode "pane"; }
|
|
231
|
+
}
|
|
232
|
+
shared_except "normal" "locked" "resize" {
|
|
233
|
+
bind "Ctrl n" { SwitchToMode "resize"; }
|
|
234
|
+
}
|
|
235
|
+
shared_except "normal" "locked" "entersearch" {
|
|
236
|
+
bind "enter" { SwitchToMode "normal"; }
|
|
237
|
+
}
|
|
238
|
+
shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
|
|
239
|
+
bind "esc" { SwitchToMode "normal"; }
|
|
240
|
+
}
|
|
241
|
+
shared_among "pane" "tmux" {
|
|
242
|
+
bind "x" { CloseFocus; SwitchToMode "normal"; }
|
|
243
|
+
}
|
|
244
|
+
shared_among "scroll" "search" {
|
|
245
|
+
bind "Home" { ScrollToTop; }
|
|
246
|
+
bind "End" { ScrollToBottom; SwitchToMode "normal"; }
|
|
247
|
+
bind "g" { ScrollToTop; }
|
|
248
|
+
bind "G" { ScrollToBottom; SwitchToMode "normal"; }
|
|
249
|
+
bind "y" { Copy; SwitchToMode "normal"; }
|
|
250
|
+
bind "PageDown" { PageScrollDown; }
|
|
251
|
+
bind "PageUp" { PageScrollUp; }
|
|
252
|
+
bind "left" { PageScrollUp; }
|
|
253
|
+
bind "down" { ScrollDown; }
|
|
254
|
+
bind "up" { ScrollUp; }
|
|
255
|
+
bind "right" { PageScrollDown; }
|
|
256
|
+
bind "[" { ScrollToPreviousPrompt; }
|
|
257
|
+
bind "]" { ScrollToNextPrompt; }
|
|
258
|
+
bind "Ctrl b" { PageScrollUp; }
|
|
259
|
+
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
|
260
|
+
bind "d" { HalfPageScrollDown; }
|
|
261
|
+
bind "Ctrl f" { PageScrollDown; }
|
|
262
|
+
bind "h" { PageScrollUp; }
|
|
263
|
+
bind "j" { ScrollDown; }
|
|
264
|
+
bind "k" { ScrollUp; }
|
|
265
|
+
bind "l" { PageScrollDown; }
|
|
266
|
+
bind "m" { SelectCommandAtScrollPosition; }
|
|
267
|
+
bind "Ctrl s" { SwitchToMode "normal"; }
|
|
268
|
+
bind "u" { HalfPageScrollUp; }
|
|
269
|
+
}
|
|
270
|
+
entersearch {
|
|
271
|
+
bind "Ctrl c" { SwitchToMode "scroll"; }
|
|
272
|
+
bind "esc" { SwitchToMode "scroll"; }
|
|
273
|
+
bind "enter" { SwitchToMode "search"; }
|
|
274
|
+
}
|
|
275
|
+
renametab {
|
|
276
|
+
bind "esc" { UndoRenameTab; SwitchToMode "tab"; }
|
|
277
|
+
}
|
|
278
|
+
shared_among "renametab" "renamepane" {
|
|
279
|
+
bind "Ctrl c" { SwitchToMode "normal"; }
|
|
280
|
+
}
|
|
281
|
+
renamepane {
|
|
282
|
+
bind "esc" { UndoRenamePane; SwitchToMode "pane"; }
|
|
283
|
+
}
|
|
284
|
+
shared_among "session" "tmux" {
|
|
285
|
+
bind "d" { Detach; }
|
|
286
|
+
}
|
|
287
|
+
tmux {
|
|
288
|
+
bind "left" { MoveFocus "left"; SwitchToMode "normal"; }
|
|
289
|
+
bind "down" { MoveFocus "down"; SwitchToMode "normal"; }
|
|
290
|
+
bind "up" { MoveFocus "up"; SwitchToMode "normal"; }
|
|
291
|
+
bind "right" { MoveFocus "right"; SwitchToMode "normal"; }
|
|
292
|
+
bind "space" { NextSwapLayout; }
|
|
293
|
+
bind "\"" { NewPane "down"; SwitchToMode "normal"; }
|
|
294
|
+
bind "%" { NewPane "right"; SwitchToMode "normal"; }
|
|
295
|
+
bind "," { SwitchToMode "renametab"; }
|
|
296
|
+
bind "[" { SwitchToMode "scroll"; }
|
|
297
|
+
bind "Ctrl b" { Write 2; SwitchToMode "normal"; }
|
|
298
|
+
bind "c" { NewTab; SwitchToMode "normal"; }
|
|
299
|
+
bind "h" { MoveFocus "left"; SwitchToMode "normal"; }
|
|
300
|
+
bind "j" { MoveFocus "down"; SwitchToMode "normal"; }
|
|
301
|
+
bind "k" { MoveFocus "up"; SwitchToMode "normal"; }
|
|
302
|
+
bind "l" { MoveFocus "right"; SwitchToMode "normal"; }
|
|
303
|
+
bind "n" { GoToNextTab; SwitchToMode "normal"; }
|
|
304
|
+
bind "o" { FocusNextPane; }
|
|
305
|
+
bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
|
|
306
|
+
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
plugins {
|
|
310
|
+
about location="zellij:about"
|
|
311
|
+
compact-bar location="zellij:compact-bar"
|
|
312
|
+
configuration location="zellij:configuration"
|
|
313
|
+
filepicker location="zellij:strider" {
|
|
314
|
+
cwd "/"
|
|
315
|
+
}
|
|
316
|
+
plugin-manager location="zellij:plugin-manager"
|
|
317
|
+
session-manager location="zellij:session-manager"
|
|
318
|
+
status-bar location="zellij:status-bar"
|
|
319
|
+
strider location="zellij:strider"
|
|
320
|
+
tab-bar location="zellij:tab-bar"
|
|
321
|
+
welcome-screen location="zellij:session-manager" {
|
|
322
|
+
welcome_screen true
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// No background plugins: the host view runs only zellij's built-in bar.
|
|
326
|
+
load_plugins {
|
|
327
|
+
}
|
|
328
|
+
env {
|
|
329
|
+
CLICOLOR "1"
|
|
330
|
+
COLORTERM "truecolor"
|
|
331
|
+
FORCE_COLOR "3"
|
|
332
|
+
FORCE_HYPERLINK "1"
|
|
333
|
+
}
|
|
334
|
+
web_client {
|
|
335
|
+
font "monospace"
|
|
336
|
+
}
|
|
337
|
+
osc8_hyperlinks true
|
|
338
|
+
theme_dark "tokyo-night"
|
|
339
|
+
theme_light "catppuccin-latte"
|
|
340
|
+
default_mode "normal"
|
|
341
|
+
mouse_mode true
|
|
342
|
+
copy_clipboard "system"
|
|
343
|
+
copy_on_select true
|
|
344
|
+
scrollback_editor "/usr/bin/vi"
|
|
345
|
+
show_startup_tips false
|
|
346
|
+
mouse_scroll_resize false
|
|
347
|
+
scroll_mode_sync false
|
|
348
|
+
mouse_hover_effects false
|
|
349
|
+
mouse_hover_tips false
|
|
350
|
+
|
|
351
|
+
// --- lanes server settings ---
|
|
352
|
+
// Views are disposable and lanes live in their holders: nothing to resurrect or serialize.
|
|
353
|
+
session_serialization false
|
|
354
|
+
// zmx replays its 2,000-line snapshot into the pane; tmux lanes use the alternate screen.
|
|
355
|
+
scroll_buffer_size 10000
|
|
356
|
+
default_shell "/bin/bash"
|
|
357
|
+
// The web server is started explicitly by lanes-web.service on 127.0.0.1:8082 (tailnet exposure is a
|
|
358
|
+
// separate, user-run Tailscale Serve step). Sessions may be shared with authenticated web clients.
|
|
359
|
+
web_sharing "on"
|
|
360
|
+
show_release_notes false
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibelord/lanes",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"commit": "a3692b61a114c851b493618bf7f5446b7a84336a",
|
|
5
|
+
"digest": "sha256:20b6265bee253def6bce29dbf66e35678e6ecbe9c81c86b03cdf2091660bb5ae",
|
|
6
|
+
"executables": [
|
|
7
|
+
"bin/lanes",
|
|
8
|
+
"client/install.sh",
|
|
9
|
+
"client/lanes-launch",
|
|
10
|
+
"client/lanes-upload",
|
|
11
|
+
"client/lanes-window",
|
|
12
|
+
"client/omarchy/discover.sh",
|
|
13
|
+
"container/lane",
|
|
14
|
+
"container/lane-run",
|
|
15
|
+
"holders/exec.sh",
|
|
16
|
+
"holders/tmux.sh",
|
|
17
|
+
"holders/zmx.sh",
|
|
18
|
+
"install.sh",
|
|
19
|
+
"install/enable-web.sh",
|
|
20
|
+
"install/host-install.sh",
|
|
21
|
+
"libexec/sidebar",
|
|
22
|
+
"libexec/sidebar.py",
|
|
23
|
+
"libexec/statusd.py",
|
|
24
|
+
"libexec/view.sh",
|
|
25
|
+
"sudo/host-guard.sh",
|
|
26
|
+
"sudo/one-time-root.sh"
|
|
27
|
+
],
|
|
28
|
+
"sites": [
|
|
29
|
+
"beyondwork"
|
|
30
|
+
]
|
|
31
|
+
}
|