@heyitsiveen/dotfiles 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.
Files changed (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/dist/index.mjs +1445 -0
  4. package/dotfiles/macos/.claude/CLAUDE.md +13 -0
  5. package/dotfiles/macos/.claude/settings.json +38 -0
  6. package/dotfiles/macos/.claude.json +32 -0
  7. package/dotfiles/macos/.config/bat/config +27 -0
  8. package/dotfiles/macos/.config/bat/themes/Vercel.tmTheme +308 -0
  9. package/dotfiles/macos/.config/bat/themes/Vesper.tmTheme +357 -0
  10. package/dotfiles/macos/.config/btop/btop.conf +272 -0
  11. package/dotfiles/macos/.config/btop/themes/Solarized_Dark.theme +89 -0
  12. package/dotfiles/macos/.config/btop/themes/Vercel.theme +89 -0
  13. package/dotfiles/macos/.config/btop/themes/Vesper.theme +89 -0
  14. package/dotfiles/macos/.config/fish/conf.d/00-platform.fish +19 -0
  15. package/dotfiles/macos/.config/fish/conf.d/10-homebrew.fish +33 -0
  16. package/dotfiles/macos/.config/fish/conf.d/20-environment.fish +12 -0
  17. package/dotfiles/macos/.config/fish/conf.d/30-aliases.fish +52 -0
  18. package/dotfiles/macos/.config/fish/conf.d/40-fzf.fish +120 -0
  19. package/dotfiles/macos/.config/fish/conf.d/50-tools.fish +51 -0
  20. package/dotfiles/macos/.config/fish/conf.d/60-tmux.fish +19 -0
  21. package/dotfiles/macos/.config/fish/conf.d/70-tide.fish +31 -0
  22. package/dotfiles/macos/.config/fish/config.fish +30 -0
  23. package/dotfiles/macos/.config/fish/functions/_tide_palette_heyitsiveen.fish +101 -0
  24. package/dotfiles/macos/.config/fish/functions/_tide_palette_vercel.fish +94 -0
  25. package/dotfiles/macos/.config/fish/functions/_tide_palette_vesper.fish +100 -0
  26. package/dotfiles/macos/.config/fish/functions/backup.fish +43 -0
  27. package/dotfiles/macos/.config/fish/functions/fish_greeting.fish +5 -0
  28. package/dotfiles/macos/.config/fish/functions/reload-fish.fish +4 -0
  29. package/dotfiles/macos/.config/fish/functions/tide_palette.fish +21 -0
  30. package/dotfiles/macos/.config/ghostty/config +46 -0
  31. package/dotfiles/macos/.config/nvim/.neoconf.json +15 -0
  32. package/dotfiles/macos/.config/nvim/init.lua +2 -0
  33. package/dotfiles/macos/.config/nvim/lazy-lock.json +42 -0
  34. package/dotfiles/macos/.config/nvim/lazyvim.json +11 -0
  35. package/dotfiles/macos/.config/nvim/lua/config/autocmds.lua +8 -0
  36. package/dotfiles/macos/.config/nvim/lua/config/keymaps.lua +21 -0
  37. package/dotfiles/macos/.config/nvim/lua/config/lazy.lua +72 -0
  38. package/dotfiles/macos/.config/nvim/lua/config/options.lua +13 -0
  39. package/dotfiles/macos/.config/nvim/lua/plugins/colorscheme.lua +12 -0
  40. package/dotfiles/macos/.config/nvim/lua/plugins/editor.lua +366 -0
  41. package/dotfiles/macos/.config/nvim/lua/plugins/example.lua +197 -0
  42. package/dotfiles/macos/.config/nvim/lua/plugins/mason.lua +11 -0
  43. package/dotfiles/macos/.config/nvim/lua/plugins/oxc.lua +64 -0
  44. package/dotfiles/macos/.config/nvim/lua/plugins/ui.lua +123 -0
  45. package/dotfiles/macos/.config/nvim/stylua.toml +3 -0
  46. package/dotfiles/macos/.config/ripgrep/config +9 -0
  47. package/dotfiles/macos/.config/tmux/STATUSBAR REFERENCE.md +1183 -0
  48. package/dotfiles/macos/.config/tmux/keybinds.conf +124 -0
  49. package/dotfiles/macos/.config/tmux/notifications.conf +39 -0
  50. package/dotfiles/macos/.config/tmux/pane.conf +33 -0
  51. package/dotfiles/macos/.config/tmux/popup-window.conf +27 -0
  52. package/dotfiles/macos/.config/tmux/statusbar.conf +281 -0
  53. package/dotfiles/macos/.config/tmux/tmux.conf +94 -0
  54. package/dotfiles/macos/.config/wezterm/wezterm.lua +143 -0
  55. package/dotfiles/windows/.claude/CLAUDE.md +13 -0
  56. package/dotfiles/windows/.claude/settings.json +38 -0
  57. package/dotfiles/windows/.claude.json +32 -0
  58. package/dotfiles/windows/.config/bat/config +27 -0
  59. package/dotfiles/windows/.config/bat/themes/Vercel.tmTheme +308 -0
  60. package/dotfiles/windows/.config/bat/themes/Vesper.tmTheme +357 -0
  61. package/dotfiles/windows/.config/btop/btop.conf +251 -0
  62. package/dotfiles/windows/.config/btop/themes/Solarized_Dark.theme +89 -0
  63. package/dotfiles/windows/.config/btop/themes/Vercel.theme +89 -0
  64. package/dotfiles/windows/.config/btop/themes/Vesper.theme +89 -0
  65. package/dotfiles/windows/.config/nvim/.neoconf.json +15 -0
  66. package/dotfiles/windows/.config/nvim/init.lua +2 -0
  67. package/dotfiles/windows/.config/nvim/lazy-lock.json +42 -0
  68. package/dotfiles/windows/.config/nvim/lazyvim.json +11 -0
  69. package/dotfiles/windows/.config/nvim/lua/config/autocmds.lua +8 -0
  70. package/dotfiles/windows/.config/nvim/lua/config/keymaps.lua +21 -0
  71. package/dotfiles/windows/.config/nvim/lua/config/lazy.lua +72 -0
  72. package/dotfiles/windows/.config/nvim/lua/config/options.lua +13 -0
  73. package/dotfiles/windows/.config/nvim/lua/plugins/colorscheme.lua +12 -0
  74. package/dotfiles/windows/.config/nvim/lua/plugins/editor.lua +366 -0
  75. package/dotfiles/windows/.config/nvim/lua/plugins/example.lua +197 -0
  76. package/dotfiles/windows/.config/nvim/lua/plugins/mason.lua +11 -0
  77. package/dotfiles/windows/.config/nvim/lua/plugins/oxc.lua +64 -0
  78. package/dotfiles/windows/.config/nvim/lua/plugins/ui.lua +123 -0
  79. package/dotfiles/windows/.config/nvim/stylua.toml +3 -0
  80. package/dotfiles/windows/.config/omp-themes/solarized-dark.omp.toml +197 -0
  81. package/dotfiles/windows/.config/omp-themes/vercel.omp.toml +197 -0
  82. package/dotfiles/windows/.config/omp-themes/vesper.omp.toml +197 -0
  83. package/dotfiles/windows/.config/ripgrep/config +9 -0
  84. package/dotfiles/windows/.config/wezterm/wezterm.lua +88 -0
  85. package/dotfiles/windows/powershell/Profile.ps1 +36 -0
  86. package/dotfiles/windows/powershell/functions/Switch-PromptPalette.ps1 +37 -0
  87. package/dotfiles/windows/powershell/functions/backup.ps1 +39 -0
  88. package/dotfiles/windows/powershell/functions/reload-shell.ps1 +8 -0
  89. package/dotfiles/windows/powershell/modules/aliases.ps1 +44 -0
  90. package/dotfiles/windows/powershell/modules/environment.ps1 +13 -0
  91. package/dotfiles/windows/powershell/modules/fzf.ps1 +82 -0
  92. package/dotfiles/windows/powershell/modules/prompt.ps1 +25 -0
  93. package/dotfiles/windows/powershell/modules/tools.ps1 +52 -0
  94. package/package.json +72 -0
@@ -0,0 +1,1183 @@
1
+ # COMPLETE TMUX STATUS BAR REFERENCE
2
+
3
+ Comprehensive reference guide for tmux status bar configuration, format variables, styling, and advanced techniques.
4
+
5
+ ---
6
+
7
+ ## TABLE OF CONTENTS
8
+
9
+ 1. [Status Bar Core Options](#status-bar-core-options)
10
+ 2. [Status Bar Sections](#status-bar-sections)
11
+ 3. [Window Status Options](#window-status-options)
12
+ 4. [Pane Border Options](#pane-border-options)
13
+ 5. [Message & Mode Options](#message--mode-options)
14
+ 6. [Clock Mode Options](#clock-mode-options)
15
+ 7. [Format Variables Reference](#format-variables-reference)
16
+ 8. [Style Attributes](#style-attributes)
17
+ 9. [Format Modifiers & Conditionals](#format-modifiers--conditionals)
18
+ 10. [Time & Date Formats](#time--date-formats)
19
+ 11. [Practical Examples](#practical-examples)
20
+ 12. [Advanced Techniques](#advanced-techniques)
21
+
22
+ ---
23
+
24
+ ## STATUS BAR CORE OPTIONS
25
+
26
+ ### status
27
+ Enable or disable the status bar display.
28
+
29
+ - **Valid Values:** `on`, `off`
30
+ - **Default:** `on`
31
+ - **Example:** `set -g status on`
32
+
33
+ ### status-position
34
+ Position of the status bar on screen.
35
+
36
+ - **Valid Values:** `top`, `bottom`
37
+ - **Default:** `bottom`
38
+ - **Example:** `set -g status-position bottom`
39
+
40
+ ### status-interval
41
+ How often (in seconds) to update the status bar.
42
+
43
+ - **Valid Values:** Any positive integer (0 = disable automatic updates)
44
+ - **Default:** `15`
45
+ - **Recommendation:** `1` for clocks/dynamic content, `5-15` for static content
46
+ - **Example:** `set -g status-interval 1`
47
+
48
+ ### status-justify
49
+ Alignment of the window list in the status bar.
50
+
51
+ - **Valid Values:**
52
+ - `left` - Align to left
53
+ - `centre` or `center` - Center alignment
54
+ - `right` - Align to right
55
+ - `absolute-centre` - Absolute center (ignores left/right sections)
56
+ - **Default:** `left`
57
+ - **Example:** `set -g status-justify left`
58
+
59
+ ### status-keys
60
+ Key binding mode for status line prompts.
61
+
62
+ - **Valid Values:** `vi`, `emacs`
63
+ - **Default:** `emacs`
64
+ - **Example:** `set -g status-keys vi`
65
+
66
+ ### status-style
67
+ Overall appearance of the status bar (background, foreground, attributes).
68
+
69
+ - **Valid Values:** Style specifications (see [Style Attributes](#style-attributes))
70
+ - **Default:** `default`
71
+ - **Transparency:** Use `bg=default` for transparent background
72
+ - **Example:** `set -g status-style fg=colour137,bg=colour234,dim`
73
+
74
+ ### status-format[0-4]
75
+ Custom status line formats for multi-line status bars.
76
+
77
+ - **Valid Values:** Format string
78
+ - **Default:** Not set (single-line status)
79
+ - **Usage:** Allows up to 5 lines of status bar
80
+ - **Example:**
81
+ ```bash
82
+ set -g status-format[0] "#[align=left]Left side"
83
+ set -g status-format[1] "#[align=centre]Center"
84
+ ```
85
+
86
+ ---
87
+
88
+ ## STATUS BAR SECTIONS
89
+
90
+ ### LEFT SECTION
91
+
92
+ #### status-left
93
+ Content displayed on the left side of the status bar.
94
+
95
+ - **Valid Values:** Format string with variables and styles
96
+ - **Default:** `"[#S] "`
97
+ - **Common Variables:** `#S` (session), `#H` (hostname), `#h` (short hostname)
98
+ - **Example:** `set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I:#P"`
99
+
100
+ #### status-left-length
101
+ Maximum character length for the left section.
102
+
103
+ - **Valid Values:** 0 to any positive integer (0 = disable left section)
104
+ - **Default:** `10`
105
+ - **Recommendation:** `20-50` for detailed info
106
+ - **Example:** `set -g status-left-length 40`
107
+
108
+ #### status-left-style
109
+ Default style for the left section (if not using inline `#[...]` styles).
110
+
111
+ - **Valid Values:** Style specifications
112
+ - **Default:** `default`
113
+ - **Example:** `set -g status-left-style fg=colour233,bg=colour245,bold`
114
+
115
+ ### RIGHT SECTION
116
+
117
+ #### status-right
118
+ Content displayed on the right side of the status bar.
119
+
120
+ - **Valid Values:** Format string with variables and styles
121
+ - **Default:** `"#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,}\"#{=21:pane_title}\" %H:%M %d-%b-%y"`
122
+ - **Common Use:** Time, date, system info
123
+ - **Example:** `set -g status-right "#[fg=cyan]%H:%M #[fg=magenta]%d-%b-%y"`
124
+
125
+ #### status-right-length
126
+ Maximum character length for the right section.
127
+
128
+ - **Valid Values:** 0 to any positive integer (0 = disable right section)
129
+ - **Default:** `40`
130
+ - **Recommendation:** `40-80` for time/date/system info
131
+ - **Example:** `set -g status-right-length 50`
132
+
133
+ #### status-right-style
134
+ Default style for the right section.
135
+
136
+ - **Valid Values:** Style specifications
137
+ - **Default:** `default`
138
+ - **Example:** `set -g status-right-style fg=colour233,bg=colour241`
139
+
140
+ ---
141
+
142
+ ## WINDOW STATUS OPTIONS
143
+
144
+ Configuration for how windows appear in the status bar window list.
145
+
146
+ ### window-status-format
147
+ Format for inactive (non-current) windows.
148
+
149
+ - **Valid Values:** Format string
150
+ - **Default:** `"#I:#W#F"`
151
+ - **Common Variables:**
152
+ - `#I` - Window index
153
+ - `#W` - Window name
154
+ - `#F` - Window flags
155
+ - **Example:** `set -g window-status-format " #I:#W#F "`
156
+
157
+ ### window-status-style
158
+ Default style for inactive windows.
159
+
160
+ - **Valid Values:** Style specifications
161
+ - **Default:** `default`
162
+ - **Example:** `set -g window-status-style fg=colour138,bg=colour235,none`
163
+
164
+ ### window-status-current-format
165
+ Format for the currently active window.
166
+
167
+ - **Valid Values:** Format string
168
+ - **Default:** `"#I:#W#F"`
169
+ - **Common Practice:** Make bold or highlighted
170
+ - **Example:** `set -g window-status-current-format " #I:#W#F "`
171
+
172
+ ### window-status-current-style
173
+ Style for the currently active window.
174
+
175
+ - **Valid Values:** Style specifications
176
+ - **Default:** `default`
177
+ - **Example:** `set -g window-status-current-style fg=colour81,bg=colour238,bold`
178
+
179
+ ### window-status-last-style
180
+ Style for the last active window (the one you were in before current).
181
+
182
+ - **Valid Values:** Style specifications
183
+ - **Default:** `default`
184
+ - **Use Case:** Highlight recently used window
185
+ - **Example:** `set -g window-status-last-style fg=colour255,bg=colour237`
186
+
187
+ ### window-status-activity-style
188
+ Style when activity is detected in an inactive window.
189
+
190
+ - **Valid Values:** Style specifications
191
+ - **Default:** `reverse`
192
+ - **Requires:** `set -g monitor-activity on`
193
+ - **Example:** `set -g window-status-activity-style fg=colour154,bg=colour235,none`
194
+
195
+ ### window-status-bell-style
196
+ Style when a bell alert occurs in a window.
197
+
198
+ - **Valid Values:** Style specifications
199
+ - **Default:** `reverse`
200
+ - **Example:** `set -g window-status-bell-style fg=colour255,bg=colour1,bold`
201
+
202
+ ### window-status-separator
203
+ Character(s) between window entries in the status bar.
204
+
205
+ - **Valid Values:** Any string
206
+ - **Default:** `" "` (single space)
207
+ - **Common Options:** `" "`, `" | "`, `""` (no separator), `" • "`
208
+ - **Example:** `set -g window-status-separator "|"`
209
+
210
+ ---
211
+
212
+ ## PANE BORDER OPTIONS
213
+
214
+ Configuration for pane borders and their appearance.
215
+
216
+ ### pane-border-style
217
+ Style for borders of inactive panes.
218
+
219
+ - **Valid Values:** Style specifications (typically only `fg` is used)
220
+ - **Default:** `default`
221
+ - **Transparency:** Use `fg=default` for terminal default color
222
+ - **Example:** `set -g pane-border-style fg=colour240`
223
+
224
+ ### pane-active-border-style
225
+ Style for the border of the currently active pane.
226
+
227
+ - **Valid Values:** Style specifications
228
+ - **Default:** `fg=green`
229
+ - **Common Practice:** Brighter/bolder than inactive borders
230
+ - **Example:** `set -g pane-active-border-style fg=colour214,bold`
231
+
232
+ ### pane-border-format
233
+ Content displayed in pane borders when `pane-border-status` is enabled.
234
+
235
+ - **Valid Values:** Format string
236
+ - **Default:** `"#{pane_index} #{pane_current_command}"`
237
+ - **Available Variables:** `#{pane_index}`, `#{pane_title}`, `#{pane_current_path}`, `#{pane_current_command}`
238
+ - **Example:** `set -g pane-border-format " #{pane_index} #{pane_current_command} "`
239
+
240
+ ### pane-border-status
241
+ Show a status line on each pane border.
242
+
243
+ - **Valid Values:** `off`, `top`, `bottom`
244
+ - **Default:** `off`
245
+ - **Use Case:** Show pane info when working with many panes
246
+ - **Example:** `set -g pane-border-status off`
247
+
248
+ ### pane-border-lines
249
+ Visual style of the pane border lines.
250
+
251
+ - **Valid Values:**
252
+ - `single` - Single line borders (default, ASCII-safe): `─│┌┐└┘`
253
+ - `double` - Double line borders: `═║╔╗╚╝`
254
+ - `heavy` - Bold/thick line borders: `━┃┏┓┗┛`
255
+ - `simple` - Plain ASCII characters
256
+ - `number` - Show pane numbers as borders
257
+ - **Default:** `single`
258
+ - **Example:** `set -g pane-border-lines heavy`
259
+
260
+ ---
261
+
262
+ ## MESSAGE & MODE OPTIONS
263
+
264
+ ### message-style
265
+ Style for tmux messages and command prompts.
266
+
267
+ - **Valid Values:** Style specifications
268
+ - **Default:** `bg=yellow,fg=black`
269
+ - **When Shown:** Prefix+`:` commands, tmux notifications
270
+ - **Example:** `set -g message-style fg=colour232,bg=colour166,bold`
271
+
272
+ ### message-command-style
273
+ Style for the command line when typing commands.
274
+
275
+ - **Valid Values:** Style specifications
276
+ - **Default:** `bg=black,fg=yellow`
277
+ - **When Shown:** While typing after Prefix+`:`
278
+ - **Example:** `set -g message-command-style fg=blue,bg=black`
279
+
280
+ ### mode-style
281
+ Style for selection in copy mode and other modes.
282
+
283
+ - **Valid Values:** Style specifications
284
+ - **Default:** `bg=yellow,fg=black`
285
+ - **When Shown:** Selected text in copy mode
286
+ - **Example:** `set -g mode-style bg=colour214,fg=colour232,bold`
287
+
288
+ ---
289
+
290
+ ## CLOCK MODE OPTIONS
291
+
292
+ Configuration for the built-in clock display (Prefix+t).
293
+
294
+ ### clock-mode-colour
295
+ Color of the clock display.
296
+
297
+ - **Valid Values:** Any valid color (see [Style Attributes](#style-attributes))
298
+ - **Default:** `blue`
299
+ - **Example:** `set -g clock-mode-colour colour109`
300
+
301
+ ### clock-mode-style
302
+ Time format for the clock display.
303
+
304
+ - **Valid Values:**
305
+ - `12` - 12-hour format with AM/PM
306
+ - `24` - 24-hour format
307
+ - **Default:** `24`
308
+ - **Example:** `set -g clock-mode-style 24`
309
+
310
+ ---
311
+
312
+ ## FORMAT VARIABLES REFERENCE
313
+
314
+ Variables you can use in status bar formats, prefixed with `#{}` or shorthand `#`.
315
+
316
+ ### SESSION VARIABLES
317
+
318
+ | Variable | Short | Description |
319
+ |----------|-------|-------------|
320
+ | `#{session_name}` | `#S` | Session name |
321
+ | `#{session_id}` | - | Unique session ID ($0, $1, etc.) |
322
+ | `#{session_windows}` | - | Number of windows in session |
323
+ | `#{session_attached}` | - | Number of clients attached to session |
324
+ | `#{session_many_attached}` | - | 1 if multiple clients attached |
325
+ | `#{session_grouped}` | - | 1 if session is part of a group |
326
+ | `#{session_group}` | - | Name of session group |
327
+ | `#{session_group_size}` | - | Number of sessions in group |
328
+ | `#{session_created}` | - | Session creation time (Unix timestamp) |
329
+ | `#{session_activity}` | - | Time of last session activity |
330
+ | `#{session_last_attached}` | - | Time of last attachment |
331
+ | `#{session_alerts}` | - | List of window indexes with alerts |
332
+ | `#{session_stack}` | - | Window stack order |
333
+ | `#{session_path}` | - | Working directory of session |
334
+
335
+ ### WINDOW VARIABLES
336
+
337
+ | Variable | Short | Description |
338
+ |----------|-------|-------------|
339
+ | `#{window_index}` | `#I` | Window index number |
340
+ | `#{window_id}` | - | Unique window ID (@0, @1, etc.) |
341
+ | `#{window_name}` | `#W` | Window name |
342
+ | `#{window_flags}` | `#F` | Window flags (*, -, #, !, ~, M, Z) |
343
+ | `#{window_active}` | - | 1 if window is active |
344
+ | `#{window_bell_flag}` | - | 1 if bell alert occurred |
345
+ | `#{window_activity_flag}` | - | 1 if activity detected |
346
+ | `#{window_silence_flag}` | - | 1 if silence detected |
347
+ | `#{window_last_flag}` | - | 1 if this was the last active window |
348
+ | `#{window_marked_flag}` | - | 1 if window is marked |
349
+ | `#{window_zoomed_flag}` | - | 1 if window has a zoomed pane |
350
+ | `#{window_panes}` | - | Number of panes in window |
351
+ | `#{window_width}` | - | Width of window in cells |
352
+ | `#{window_height}` | - | Height of window in cells |
353
+ | `#{window_layout}` | - | Window layout description |
354
+ | `#{window_linked}` | - | 1 if window is linked to other sessions |
355
+ | `#{window_start_flag}` | - | 1 if first window in session |
356
+ | `#{window_end_flag}` | - | 1 if last window in session |
357
+ | `#{window_stack_index}` | - | Position in window stack |
358
+
359
+ #### Window Flags (#F)
360
+
361
+ - `*` - Current window
362
+ - `-` - Last window (previously active)
363
+ - `#` - Activity detected
364
+ - `!` - Bell alert detected
365
+ - `~` - Silence detected (monitor-silence)
366
+ - `M` - Marked window
367
+ - `Z` - Zoomed pane exists
368
+
369
+ ### PANE VARIABLES
370
+
371
+ | Variable | Short | Description |
372
+ |----------|-------|-------------|
373
+ | `#{pane_id}` | `#D` | Unique pane ID (%0, %1, etc.) |
374
+ | `#{pane_index}` | `#P` | Pane index number |
375
+ | `#{pane_title}` | `#T` | Title of pane |
376
+ | `#{pane_current_command}` | - | Current command running in pane |
377
+ | `#{pane_current_path}` | - | Current working directory |
378
+ | `#{pane_pid}` | - | PID of the pane process |
379
+ | `#{pane_tty}` | - | Pseudo terminal of pane |
380
+ | `#{pane_width}` | - | Width of pane in cells |
381
+ | `#{pane_height}` | - | Height of pane in cells |
382
+ | `#{pane_top}` | - | Top edge position |
383
+ | `#{pane_left}` | - | Left edge position |
384
+ | `#{pane_right}` | - | Right edge position |
385
+ | `#{pane_bottom}` | - | Bottom edge position |
386
+ | `#{pane_at_left}` | - | 1 if pane is at left edge |
387
+ | `#{pane_at_right}` | - | 1 if pane is at right edge |
388
+ | `#{pane_at_top}` | - | 1 if pane is at top edge |
389
+ | `#{pane_at_bottom}` | - | 1 if pane is at bottom edge |
390
+ | `#{pane_active}` | - | 1 if pane is active |
391
+ | `#{pane_marked}` | - | 1 if pane is marked |
392
+ | `#{pane_dead}` | - | 1 if pane has exited |
393
+ | `#{pane_dead_status}` | - | Exit status if pane is dead |
394
+ | `#{pane_in_mode}` | - | 1 if pane is in a mode (copy, etc.) |
395
+ | `#{pane_synchronized}` | - | 1 if pane input is synchronized |
396
+ | `#{pane_start_command}` | - | Command pane was started with |
397
+
398
+ ### CLIENT VARIABLES
399
+
400
+ | Variable | Description |
401
+ |----------|-------------|
402
+ | `#{client_name}` | Name of client |
403
+ | `#{client_session}` | Session client is attached to |
404
+ | `#{client_last_session}` | Last session name |
405
+ | `#{client_prefix}` | **1 if prefix key has been pressed** ⭐ |
406
+ | `#{client_key_table}` | Current key table |
407
+ | `#{client_tty}` | Client terminal device |
408
+ | `#{client_termname}` | Terminal name |
409
+ | `#{client_termtype}` | Terminal type |
410
+ | `#{client_width}` | Width of client terminal |
411
+ | `#{client_height}` | Height of client terminal |
412
+ | `#{client_pid}` | PID of client process |
413
+ | `#{client_activity}` | Time of last client activity |
414
+ | `#{client_created}` | Time client was created |
415
+ | `#{client_readonly}` | 1 if client is read-only |
416
+ | `#{client_control_mode}` | 1 if client is in control mode |
417
+ | `#{client_utf8}` | 1 if client uses UTF-8 |
418
+
419
+ **⭐ Important:** `#{client_prefix}` is the key variable for creating prefix indicators!
420
+
421
+ ### HOST VARIABLES
422
+
423
+ | Variable | Short | Description |
424
+ |----------|-------|-------------|
425
+ | `#{host}` | `#H` | Hostname (full FQDN) |
426
+ | `#{host_short}` | `#h` | Hostname (short, up to first `.`) |
427
+
428
+ ### SERVER & SYSTEM VARIABLES
429
+
430
+ | Variable | Description |
431
+ |----------|-------------|
432
+ | `#{pid}` | tmux server PID |
433
+ | `#{socket_path}` | Path to tmux socket |
434
+ | `#{start_time}` | Server start time |
435
+ | `#{version}` | tmux version string |
436
+ | `#{uid}` | Server user ID |
437
+ | `#{user}` | Username of server user |
438
+
439
+ ### BUFFER VARIABLES
440
+
441
+ | Variable | Description |
442
+ |----------|-------------|
443
+ | `#{buffer_name}` | Name of paste buffer |
444
+ | `#{buffer_sample}` | Sample content from buffer |
445
+ | `#{buffer_size}` | Size of buffer in bytes |
446
+ | `#{buffer_created}` | Time buffer was created |
447
+
448
+ ---
449
+
450
+ ## STYLE ATTRIBUTES
451
+
452
+ ### COLORS
453
+
454
+ #### Named Colors
455
+ Basic terminal colors:
456
+ ```
457
+ black, red, green, yellow, blue, magenta, cyan, white
458
+ ```
459
+
460
+ Bright variants:
461
+ ```
462
+ brightblack (or grey/gray), brightred, brightgreen, brightyellow,
463
+ brightblue, brightmagenta, brightcyan, brightwhite
464
+ ```
465
+
466
+ Special:
467
+ ```
468
+ default - Use terminal's default color (creates transparency)
469
+ ```
470
+
471
+ #### Indexed Colors (256-color palette)
472
+ ```bash
473
+ colour0 through colour255 # or color0 through color255
474
+ ```
475
+
476
+ **Color Palette Quick Reference:**
477
+ - `0-15` - Standard terminal colors
478
+ - `16-231` - 216 RGB colors (6×6×6 cube)
479
+ - `232-255` - 24 grayscale colors (dark → light)
480
+
481
+ **Common Colors:**
482
+ ```
483
+ Blacks/Grays: 232 (darkest) → 255 (lightest)
484
+ Reds: 88, 124, 160, 196, 203
485
+ Greens: 28, 34, 40, 46, 82, 118, 148, 154
486
+ Blues: 17, 18, 19, 20, 21, 33, 39, 45, 51, 81, 117
487
+ Yellows: 136, 142, 148, 184, 190, 214, 220, 226
488
+ Purples: 54, 90, 91, 92, 93, 98, 105, 141, 177
489
+ Cyans: 37, 44, 51, 80, 87, 109, 116, 123
490
+ Oranges: 130, 166, 172, 202, 208, 214
491
+ Pinks: 125, 161, 168, 197, 201, 205, 212, 219
492
+ ```
493
+
494
+ #### RGB/Hex Colors
495
+ ```bash
496
+ #RGB # 4-bit RGB (e.g., #f00 = bright red)
497
+ #RRGGBB # 8-bit RGB (e.g., #ff0000 = red)
498
+ ```
499
+
500
+ ### TEXT ATTRIBUTES
501
+
502
+ #### Enabling Attributes
503
+ ```
504
+ none - No attributes (reset all)
505
+ bold (or bright) - Bold/bright text
506
+ dim - Dimmed text
507
+ underscore - Single underline
508
+ double-underscore - Double underline
509
+ blink - Blinking text
510
+ reverse - Swap foreground/background
511
+ hidden - Invisible text
512
+ italics - Italic text
513
+ strikethrough - Strikethrough text
514
+ overline - Overlined text
515
+ ```
516
+
517
+ #### Disabling Attributes
518
+ Prefix with `no` to disable:
519
+ ```
520
+ nobold, nodim, nounderscore, nodouble-underscore, noblink,
521
+ noreverse, nohidden, noitalics, nostrikethrough, nooverline
522
+ ```
523
+
524
+ ### COMBINING STYLES
525
+
526
+ Combine multiple attributes with commas:
527
+ ```bash
528
+ # Foreground + Background + Attributes
529
+ set -g status-style fg=colour223,bg=colour237,bold,dim
530
+
531
+ # Multiple attributes
532
+ set -g window-status-current-style fg=white,bg=blue,bold,underscore
533
+
534
+ # Using default for transparency
535
+ set -g status-style fg=colour223,bg=default # Transparent background
536
+ ```
537
+
538
+ ### ALIGNMENT & SPECIAL ATTRIBUTES
539
+
540
+ ```
541
+ align=left - Left align text
542
+ align=centre - Center align text (or align=center)
543
+ align=right - Right align text
544
+ fill=X - Fill remaining space with character X
545
+ ```
546
+
547
+ ---
548
+
549
+ ## FORMAT MODIFIERS & CONDITIONALS
550
+
551
+ Powerful formatting options for dynamic status bars.
552
+
553
+ ### CONDITIONAL FORMATTING
554
+
555
+ #### Basic Conditional
556
+ ```bash
557
+ #{?CONDITION,TRUE_VALUE,FALSE_VALUE}
558
+ ```
559
+
560
+ **Example:**
561
+ ```bash
562
+ # Show different text based on window zoom state
563
+ #{?window_zoomed_flag,ZOOMED,NORMAL}
564
+
565
+ # Change color when prefix is pressed
566
+ #{?client_prefix,#[fg=red],#[fg=green]}
567
+ ```
568
+
569
+ ### COMPARISON OPERATORS
570
+
571
+ ```bash
572
+ #{==:value1,value2} # Equal
573
+ #{!=:value1,value2} # Not equal
574
+ #{<:value1,value2} # Less than
575
+ #{>:value1,value2} # Greater than
576
+ #{<=:value1,value2} # Less than or equal
577
+ #{>=:value1,value2} # Greater than or equal
578
+ ```
579
+
580
+ **Examples:**
581
+ ```bash
582
+ # Check if window has more than 3 panes
583
+ #{?#{>:#{window_panes},3},MANY,FEW}
584
+
585
+ # Check if session name equals "main"
586
+ #{?#{==:#{session_name},main},MAIN SESSION,OTHER}
587
+ ```
588
+
589
+ ### LOGICAL OPERATORS
590
+
591
+ ```bash
592
+ #{||:cond1,cond2} # Logical OR
593
+ #{&&:cond1,cond2} # Logical AND
594
+ #{!:condition} # Logical NOT
595
+ ```
596
+
597
+ **Examples:**
598
+ ```bash
599
+ # Check if zoomed OR has many panes
600
+ #{?#{||:#{window_zoomed_flag},#{>:#{window_panes},3}},COMPLEX,SIMPLE}
601
+
602
+ # Check if NOT active
603
+ #{?#{!:#{pane_active}},INACTIVE,ACTIVE}
604
+ ```
605
+
606
+ ### PATTERN MATCHING
607
+
608
+ ```bash
609
+ #{m:pattern,value} # Match glob pattern
610
+ #{m/r:regex,value} # Match regex pattern
611
+ ```
612
+
613
+ **Examples:**
614
+ ```bash
615
+ # Check if command contains "vim"
616
+ #{?#{m:*vim*,#{pane_current_command}},VIM,OTHER}
617
+
618
+ # Check if path is in home directory
619
+ #{?#{m:$HOME*,#{pane_current_path}},HOME,AWAY}
620
+ ```
621
+
622
+ ### STRING OPERATIONS
623
+
624
+ ```bash
625
+ #{l:variable} # Literal value (don't expand)
626
+ #{q:variable} # Quote shell special characters
627
+ #{E:variable} # Expand format variables
628
+ #{b:variable} # Basename of path
629
+ #{d:variable} # Directory name of path
630
+ #{s/old/new:variable} # Substitute first occurrence
631
+ #{s/old/new/g:variable} # Substitute all occurrences (global)
632
+ ```
633
+
634
+ **Examples:**
635
+ ```bash
636
+ # Get basename of current path
637
+ #{b:pane_current_path}
638
+
639
+ # Get directory only
640
+ #{d:pane_current_path}
641
+
642
+ # Replace "bash" with "sh" in command name
643
+ #{s/bash/sh:pane_current_command}
644
+
645
+ # Quote path for shell safety
646
+ #{q:pane_current_path}
647
+ ```
648
+
649
+ ### PADDING & TRUNCATION
650
+
651
+ ```bash
652
+ #{=N:variable} # Limit to N characters, left-aligned
653
+ #{=-N:variable} # Limit to N characters, right-aligned
654
+ #{=|N:variable} # Limit to N characters, center-aligned
655
+ #{=/N/fill:variable} # Limit to N with custom fill character
656
+ ```
657
+
658
+ **Examples:**
659
+ ```bash
660
+ # Limit session name to 15 characters
661
+ #{=15:session_name}
662
+
663
+ # Right-align and limit to 20
664
+ #{=-20:pane_current_path}
665
+
666
+ # Center-align window name in 10 chars
667
+ #{=|10:window_name}
668
+
669
+ # Limit with custom fill
670
+ #{=/20/.:pane_title}
671
+ ```
672
+
673
+ ### LOOPS
674
+
675
+ ```bash
676
+ #{W:format} # Loop over windows
677
+ #{P:format} # Loop over panes
678
+ #{S:format} # Loop over sessions
679
+ ```
680
+
681
+ **Examples:**
682
+ ```bash
683
+ # List all window indexes
684
+ #{W:#{window_index} }
685
+
686
+ # Show all pane IDs
687
+ #{P:#{pane_id} }
688
+ ```
689
+
690
+ ### TIME FORMATTING
691
+
692
+ ```bash
693
+ #{t:variable} # Format Unix timestamp as time
694
+ #{T:variable} # Format as time string
695
+ #{t/f:variable} # Format with custom strftime format
696
+ ```
697
+
698
+ **Examples:**
699
+ ```bash
700
+ # Format session creation time
701
+ #{t:session_created}
702
+
703
+ # Custom time format
704
+ #{t/f/%Y-%m-%d:session_created}
705
+ ```
706
+
707
+ ### ARITHMETIC OPERATIONS
708
+
709
+ ```bash
710
+ #{e:expression} # Evaluate arithmetic expression
711
+ ```
712
+
713
+ **Operators:**
714
+ - Arithmetic: `+`, `-`, `*`, `/`, `%` (modulo)
715
+ - Comparison: `==`, `!=`, `<`, `>`, `<=`, `>=`
716
+ - Logical: `||`, `&&`, `!`
717
+ - Bitwise: `&`, `|`, `^`, `~`, `<<`, `>>`
718
+
719
+ **Examples:**
720
+ ```bash
721
+ # Double the number of panes
722
+ #{e:#{window_panes}*2}
723
+
724
+ # Calculate percentage
725
+ #{e:#{pane_width}*100/#{window_width}}
726
+ ```
727
+
728
+ ---
729
+
730
+ ## TIME & DATE FORMATS
731
+
732
+ Format specifiers for use with `strftime` in status bar (with `%` prefix).
733
+
734
+ ### DATE FORMATS
735
+
736
+ ```
737
+ %Y - Year (4-digit) # 2025
738
+ %y - Year (2-digit) # 25
739
+ %C - Century # 20
740
+ %m - Month (numeric) # 01-12
741
+ %B - Month (full name) # January, February
742
+ %b - Month (abbreviated) # Jan, Feb
743
+ %h - Same as %b # Jan, Feb
744
+ %d - Day of month # 01-31
745
+ %e - Day of month (space) # 1-31
746
+ %j - Day of year # 001-366
747
+ %u - Weekday (1-7, Mon=1) # 1-7
748
+ %w - Weekday (0-6, Sun=0) # 0-6
749
+ %a - Weekday (abbreviated) # Mon, Tue
750
+ %A - Weekday (full) # Monday, Tuesday
751
+ %W - Week number # 00-53
752
+ ```
753
+
754
+ ### TIME FORMATS
755
+
756
+ ```
757
+ %H - Hour (24-hour) # 00-23
758
+ %I - Hour (12-hour) # 01-12
759
+ %k - Hour (24, space) # 0-23
760
+ %l - Hour (12, space) # 1-12
761
+ %M - Minute # 00-59
762
+ %S - Second # 00-59
763
+ %p - AM/PM (uppercase) # AM, PM
764
+ %P - am/pm (lowercase) # am, pm
765
+ %s - Unix timestamp # 1706198400
766
+ %z - Timezone offset # +0000, -0500
767
+ %Z - Timezone name # UTC, EST
768
+ ```
769
+
770
+ ### COMBINED FORMATS
771
+
772
+ ```
773
+ %F - Date (%Y-%m-%d) # 2025-01-26
774
+ %D - Date (%m/%d/%y) # 01/26/25
775
+ %x - Locale date # 01/26/2025
776
+ %R - Time (%H:%M) # 14:30
777
+ %T - Time (%H:%M:%S) # 14:30:45
778
+ %r - 12-hour time # 02:30:45 PM
779
+ %X - Locale time # 14:30:45
780
+ ```
781
+
782
+ ### SPECIAL CHARACTERS
783
+
784
+ ```
785
+ %n - Newline
786
+ %t - Tab
787
+ %% - Literal %
788
+ ```
789
+
790
+ ### PRACTICAL DATE/TIME EXAMPLES
791
+
792
+ ```bash
793
+ # ISO 8601 format
794
+ "%Y-%m-%d %H:%M:%S" # 2025-01-26 14:30:45
795
+
796
+ # US format with 12-hour time
797
+ "%m/%d/%Y %I:%M %p" # 01/26/2025 02:30 PM
798
+
799
+ # Short format
800
+ "%b %d %H:%M" # Jan 26 14:30
801
+
802
+ # Day and time
803
+ "%a %H:%M" # Mon 14:30
804
+
805
+ # Full verbose
806
+ "%A, %B %d, %Y at %I:%M %p" # Monday, January 26, 2025 at 02:30 PM
807
+ ```
808
+
809
+ ---
810
+
811
+ ## PRACTICAL EXAMPLES
812
+
813
+ ### BASIC STATUS BARS
814
+
815
+ #### Minimal Setup
816
+ ```bash
817
+ set -g status on
818
+ set -g status-style bg=black,fg=white
819
+ set -g status-left "#S "
820
+ set -g status-right "%H:%M"
821
+ set -g window-status-format "#I:#W"
822
+ set -g window-status-current-format "#I:#W*"
823
+ ```
824
+
825
+ #### Classic Look
826
+ ```bash
827
+ set -g status-style bg=colour234,fg=colour137
828
+ set -g status-left "#[fg=colour233,bg=colour245,bold] #S "
829
+ set -g status-right "#[fg=colour233,bg=colour245] %d/%m #[fg=colour233,bg=colour241] %H:%M:%S "
830
+ set -g window-status-format " #I:#W "
831
+ set -g window-status-current-format "#[fg=colour81,bold] #I:#W "
832
+ ```
833
+
834
+ #### Transparent Status Bar
835
+ ```bash
836
+ set -g status-style bg=default,fg=colour250
837
+ set -g status-left "#[fg=colour214,bg=default,bold] #S "
838
+ set -g status-right "#[fg=colour246,bg=default]%Y-%m-%d #[fg=colour109]%H:%M"
839
+ set -g window-status-format "#[fg=colour246,bg=default] #I:#W "
840
+ set -g window-status-current-format "#[fg=colour214,bg=default,bold] #I:#W "
841
+ ```
842
+
843
+ ### PREFIX INDICATOR EXAMPLES
844
+
845
+ **⭐ Using `#{client_prefix}` for Visual Feedback**
846
+
847
+ #### Example 1: Change Status-Left Background
848
+ ```bash
849
+ # Session name background turns RED when prefix is pressed
850
+ set -g status-left "#{?client_prefix,#[fg=colour232# bg=colour1],#[fg=colour232 bg=colour214 bold]} #S "
851
+ ```
852
+
853
+ #### Example 2: Show PREFIX Text
854
+ ```bash
855
+ # Display "PREFIX" text when pressed
856
+ set -g status-right "#{?client_prefix,#[fg=colour1 bold]PREFIX}#[fg=colour246]%Y-%m-%d %H:%M"
857
+ ```
858
+
859
+ #### Example 3: Change Entire Status Bar Color
860
+ ```bash
861
+ # Whole status bar changes color
862
+ set -g status-style "#{?client_prefix,#[fg=colour1 bg=colour237],#[fg=colour223]}"
863
+ ```
864
+
865
+ #### Example 4: Add Indicator Symbol
866
+ ```bash
867
+ # Show warning symbol when prefix is active
868
+ set -g status-left "#{?client_prefix,#[fg=colour1]⚠ ,#[fg=colour214]● }#[fg=colour232,bg=colour214,bold]#S "
869
+ ```
870
+
871
+ #### Example 5: Blink Session Name
872
+ ```bash
873
+ # Blink the session name when waiting for command
874
+ set -g status-left "#{?client_prefix,#[blink],#[noblink]}#[fg=colour232,bg=colour214,bold] #S "
875
+ ```
876
+
877
+ #### Example 6: Change Border Color
878
+ ```bash
879
+ # Active pane border changes when prefix pressed
880
+ set -g pane-active-border-style "#{?client_prefix,#[fg=colour1],#[fg=colour214]}"
881
+ ```
882
+
883
+ #### Example 7: Multiple Visual Cues
884
+ ```bash
885
+ # Combine multiple indicators
886
+ set -g status-style "#{?client_prefix,#[bg=colour1],#[bg=colour237]},#[fg=colour223]"
887
+ set -g status-left "#{?client_prefix,#[bold],#[blink]}#S#{?client_prefix, WAITING} "
888
+ set -g pane-active-border-style "#{?client_prefix,#[fg=colour1],#fg=colour214]}"
889
+ ```
890
+
891
+ ### WINDOW STATUS EXAMPLES
892
+
893
+ #### Show Zoomed State
894
+ ```bash
895
+ set -g window-status-current-format "#I:#W#{?window_zoomed_flag, 🔍,}"
896
+ ```
897
+
898
+ #### Show Pane Count
899
+ ```bash
900
+ set -g window-status-format "#I:#W(#{window_panes})"
901
+ ```
902
+
903
+ #### Conditional Window Styling
904
+ ```bash
905
+ # Different color if window has many panes
906
+ set -g window-status-format "#{?#{>:#{window_panes},3},#[fg=colour214],#[fg=colour246]} #I:#W "
907
+ ```
908
+
909
+ ### SYSTEM INFORMATION
910
+
911
+ #### Show Current Path
912
+ ```bash
913
+ set -g status-right "#[fg=colour246]#{pane_current_path} | %H:%M"
914
+ ```
915
+
916
+ #### Show Username and Hostname
917
+ ```bash
918
+ set -g status-left "#[fg=colour214]#(whoami)@#H #[fg=colour246]| #[fg=colour232,bg=colour214,bold] #S "
919
+ ```
920
+
921
+ #### Show Uptime (Linux/macOS)
922
+ ```bash
923
+ set -g status-right "#[fg=colour246]#(uptime | cut -d ',' -f 3-) | %H:%M"
924
+ ```
925
+
926
+ #### Show CPU Load
927
+ ```bash
928
+ set -g status-right "#[fg=colour246]Load: #(cut -d ' ' -f 1-3 /proc/loadavg) | %H:%M"
929
+ ```
930
+
931
+ #### Show Memory Usage (Linux)
932
+ ```bash
933
+ set -g status-right "#[fg=colour246]Mem: #(free -h | awk 'NR==2{print $3\"/\"$2}') | %H:%M"
934
+ ```
935
+
936
+ #### Show Battery (macOS)
937
+ ```bash
938
+ set -g status-right "#[fg=colour246]🔋 #(pmset -g batt | grep -o '[0-9]*%') | %H:%M"
939
+ ```
940
+
941
+ #### Show Battery (Linux)
942
+ ```bash
943
+ set -g status-right "#[fg=colour246]🔋 #(cat /sys/class/power_supply/BAT0/capacity)% | %H:%M"
944
+ ```
945
+
946
+ #### Show Disk Usage
947
+ ```bash
948
+ set -g status-right "#[fg=colour246]Disk: #(df -h / | awk 'NR==2{print $5}') | %H:%M"
949
+ ```
950
+
951
+ ---
952
+
953
+ ## ADVANCED TECHNIQUES
954
+
955
+ ### SHELL COMMAND EXECUTION
956
+
957
+ Execute shell commands in status bar with `#()`:
958
+
959
+ ```bash
960
+ #(command) # Execute and insert output
961
+ ```
962
+
963
+ **Important Notes:**
964
+ - Commands run every `status-interval` seconds
965
+ - Can use pipes, redirects, and full shell syntax
966
+ - Keep commands fast to avoid status bar lag
967
+ - Output is inserted directly into status bar
968
+
969
+ **Examples:**
970
+ ```bash
971
+ # Get current Git branch
972
+ #(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD 2>/dev/null)
973
+
974
+ # Check if VPN is connected
975
+ #(ifconfig | grep -q tun0 && echo "VPN" || echo "No VPN")
976
+
977
+ # Show kubernetes context
978
+ #(kubectl config current-context 2>/dev/null)
979
+
980
+ # Weather information
981
+ #(curl -s wttr.in/?format=3)
982
+
983
+ # Docker container count
984
+ #(docker ps -q | wc -l) containers
985
+ ```
986
+
987
+ ### NESTED CONDITIONALS
988
+
989
+ Combine multiple conditions for complex logic:
990
+
991
+ ```bash
992
+ # Show different text based on multiple conditions
993
+ #{?#{&&:#{window_zoomed_flag},#{>:#{window_panes},1}},ZOOMED+MULTI,\
994
+ #{?window_zoomed_flag,ZOOMED,\
995
+ #{?#{>:#{window_panes},1},MULTI,SINGLE}}}
996
+ ```
997
+
998
+ ### DYNAMIC COLORS
999
+
1000
+ Change colors based on conditions:
1001
+
1002
+ ```bash
1003
+ # Color based on window pane count
1004
+ set -g window-status-format "\
1005
+ #{?#{>:#{window_panes},3},#[fg=red],\
1006
+ #{?#{>:#{window_panes},1},#[fg=yellow],#[fg=green]}} #I:#W "
1007
+ ```
1008
+
1009
+ ### POWERLINE-STYLE SEPARATORS
1010
+
1011
+ Create sleek, connected status bars:
1012
+
1013
+ ```bash
1014
+ # Left section with powerline separator
1015
+ set -g status-left "\
1016
+ #[fg=colour232,bg=colour214,bold] #S \
1017
+ #[fg=colour214,bg=colour237,nobold]\
1018
+ "
1019
+
1020
+ # Right section with powerline separator
1021
+ set -g status-right "\
1022
+ #[fg=colour246,bg=colour237]\
1023
+ #[fg=colour237,bg=colour246] %H:%M \
1024
+ "
1025
+ ```
1026
+
1027
+ **Powerline Symbols** (requires powerline font):
1028
+ - `` - Right arrow
1029
+ - `` - Left arrow
1030
+ - `` - Right filled triangle
1031
+ - `` - Left filled triangle
1032
+
1033
+ ### MULTI-LINE STATUS BARS
1034
+
1035
+ Create status bars with multiple lines:
1036
+
1037
+ ```bash
1038
+ set -g status 2
1039
+ set -g status-format[0] "#[align=left]Line 1 content"
1040
+ set -g status-format[1] "#[align=centre]Line 2 content"
1041
+ ```
1042
+
1043
+ ### REAL-TIME INDICATORS
1044
+
1045
+ #### Git Branch Indicator
1046
+ ```bash
1047
+ set -g status-right "#[fg=colour246]#(cd #{pane_current_path}; git branch 2>/dev/null | grep '*' | cut -d ' ' -f2) | %H:%M"
1048
+ ```
1049
+
1050
+ #### SSH Connection Indicator
1051
+ ```bash
1052
+ set -g status-right "#{?#{==:#{pane_current_command},ssh},#[fg=red]SSH ,}%H:%M"
1053
+ ```
1054
+
1055
+ #### Docker Status
1056
+ ```bash
1057
+ set -g status-left "#[fg=colour214]#S #[fg=colour246]#(docker ps -q | wc -l) 🐳 "
1058
+ ```
1059
+
1060
+ ### PERFORMANCE OPTIMIZATION
1061
+
1062
+ **Tips for fast status bars:**
1063
+
1064
+ 1. **Limit command frequency:**
1065
+ ```bash
1066
+ set -g status-interval 5 # Don't update too frequently
1067
+ ```
1068
+
1069
+ 2. **Cache expensive operations:**
1070
+ ```bash
1071
+ # Use shell script that caches results
1072
+ #(~/.tmux/scripts/cached_status.sh)
1073
+ ```
1074
+
1075
+ 3. **Avoid heavy commands:**
1076
+ ```bash
1077
+ # Good: Direct file read
1078
+ #(cat /proc/loadavg | cut -d ' ' -f1)
1079
+
1080
+ # Bad: Heavy processing
1081
+ #(find / -name "*.txt" 2>/dev/null | wc -l)
1082
+ ```
1083
+
1084
+ ### DEBUGGING STATUS BAR
1085
+
1086
+ Check what tmux is interpreting:
1087
+
1088
+ ```bash
1089
+ # Show current status-left value
1090
+ tmux show-options -g status-left
1091
+
1092
+ # Display all status options
1093
+ tmux show-options -g | grep status
1094
+
1095
+ # Test format string
1096
+ tmux display-message -p "#{client_prefix}"
1097
+ ```
1098
+
1099
+ ---
1100
+
1101
+ ## QUICK REFERENCE CHEATSHEET
1102
+
1103
+ ### Most Common Variables
1104
+
1105
+ ```bash
1106
+ #S - Session name
1107
+ #I - Window index
1108
+ #W - Window name
1109
+ #P - Pane index
1110
+ #F - Window flags
1111
+ #H - Hostname (full)
1112
+ #h - Hostname (short)
1113
+ #T - Pane title
1114
+ #{pane_current_path} - Current directory
1115
+ #{pane_current_command} - Running command
1116
+ #{client_prefix} - Prefix pressed indicator
1117
+ ```
1118
+
1119
+ ### Most Common Styles
1120
+
1121
+ ```bash
1122
+ bg=colour237,fg=colour223 # Background and foreground
1123
+ bg=default,fg=colour223 # Transparent background
1124
+ fg=colour214,bg=colour237,bold # With attributes
1125
+ ```
1126
+
1127
+ ### Most Common Conditionals
1128
+
1129
+ ```bash
1130
+ #{?client_prefix,TRUE,FALSE} # Prefix indicator
1131
+ #{?window_zoomed_flag,ZOOMED,NORMAL} # Zoom state
1132
+ #{?#{>:#{window_panes},1},MANY,ONE} # Pane count
1133
+ ```
1134
+
1135
+ ### Most Common Time Formats
1136
+
1137
+ ```bash
1138
+ %Y-%m-%d # 2025-01-26
1139
+ %H:%M # 14:30
1140
+ %H:%M:%S # 14:30:45
1141
+ %d-%b-%y # 26-Jan-25
1142
+ %I:%M %p # 02:30 PM
1143
+ ```
1144
+
1145
+ ---
1146
+
1147
+ ## ADDITIONAL RESOURCES
1148
+
1149
+ ### Official Documentation
1150
+ - Manual page: `man tmux`
1151
+ - tmux GitHub: https://github.com/tmux/tmux
1152
+ - tmux Wiki: https://github.com/tmux/tmux/wiki
1153
+
1154
+ ### Testing Your Configuration
1155
+ ```bash
1156
+ # Reload configuration
1157
+ tmux source-file ~/.tmux.conf
1158
+
1159
+ # Test a format string
1160
+ tmux display-message -p "#{your_format_here}"
1161
+
1162
+ # Show current option value
1163
+ tmux show-options -g status-left
1164
+ ```
1165
+
1166
+ ### Debugging
1167
+ ```bash
1168
+ # Start tmux with verbose logging
1169
+ tmux -vv new-session
1170
+
1171
+ # Check for errors in config
1172
+ tmux source-file ~/.tmux.conf
1173
+ ```
1174
+
1175
+ ---
1176
+
1177
+ **Document Version:** 2.0
1178
+ **Last Updated:** January 2025
1179
+ **tmux Version:** 3.3+
1180
+
1181
+ ---
1182
+
1183
+ *This reference covers tmux 3.0+. Some features may not be available in older versions.*