@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.
- package/LICENSE +21 -0
- package/README.md +176 -0
- package/dist/index.mjs +1445 -0
- package/dotfiles/macos/.claude/CLAUDE.md +13 -0
- package/dotfiles/macos/.claude/settings.json +38 -0
- package/dotfiles/macos/.claude.json +32 -0
- package/dotfiles/macos/.config/bat/config +27 -0
- package/dotfiles/macos/.config/bat/themes/Vercel.tmTheme +308 -0
- package/dotfiles/macos/.config/bat/themes/Vesper.tmTheme +357 -0
- package/dotfiles/macos/.config/btop/btop.conf +272 -0
- package/dotfiles/macos/.config/btop/themes/Solarized_Dark.theme +89 -0
- package/dotfiles/macos/.config/btop/themes/Vercel.theme +89 -0
- package/dotfiles/macos/.config/btop/themes/Vesper.theme +89 -0
- package/dotfiles/macos/.config/fish/conf.d/00-platform.fish +19 -0
- package/dotfiles/macos/.config/fish/conf.d/10-homebrew.fish +33 -0
- package/dotfiles/macos/.config/fish/conf.d/20-environment.fish +12 -0
- package/dotfiles/macos/.config/fish/conf.d/30-aliases.fish +52 -0
- package/dotfiles/macos/.config/fish/conf.d/40-fzf.fish +120 -0
- package/dotfiles/macos/.config/fish/conf.d/50-tools.fish +51 -0
- package/dotfiles/macos/.config/fish/conf.d/60-tmux.fish +19 -0
- package/dotfiles/macos/.config/fish/conf.d/70-tide.fish +31 -0
- package/dotfiles/macos/.config/fish/config.fish +30 -0
- package/dotfiles/macos/.config/fish/functions/_tide_palette_heyitsiveen.fish +101 -0
- package/dotfiles/macos/.config/fish/functions/_tide_palette_vercel.fish +94 -0
- package/dotfiles/macos/.config/fish/functions/_tide_palette_vesper.fish +100 -0
- package/dotfiles/macos/.config/fish/functions/backup.fish +43 -0
- package/dotfiles/macos/.config/fish/functions/fish_greeting.fish +5 -0
- package/dotfiles/macos/.config/fish/functions/reload-fish.fish +4 -0
- package/dotfiles/macos/.config/fish/functions/tide_palette.fish +21 -0
- package/dotfiles/macos/.config/ghostty/config +46 -0
- package/dotfiles/macos/.config/nvim/.neoconf.json +15 -0
- package/dotfiles/macos/.config/nvim/init.lua +2 -0
- package/dotfiles/macos/.config/nvim/lazy-lock.json +42 -0
- package/dotfiles/macos/.config/nvim/lazyvim.json +11 -0
- package/dotfiles/macos/.config/nvim/lua/config/autocmds.lua +8 -0
- package/dotfiles/macos/.config/nvim/lua/config/keymaps.lua +21 -0
- package/dotfiles/macos/.config/nvim/lua/config/lazy.lua +72 -0
- package/dotfiles/macos/.config/nvim/lua/config/options.lua +13 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/colorscheme.lua +12 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/editor.lua +366 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/example.lua +197 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/mason.lua +11 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/oxc.lua +64 -0
- package/dotfiles/macos/.config/nvim/lua/plugins/ui.lua +123 -0
- package/dotfiles/macos/.config/nvim/stylua.toml +3 -0
- package/dotfiles/macos/.config/ripgrep/config +9 -0
- package/dotfiles/macos/.config/tmux/STATUSBAR REFERENCE.md +1183 -0
- package/dotfiles/macos/.config/tmux/keybinds.conf +124 -0
- package/dotfiles/macos/.config/tmux/notifications.conf +39 -0
- package/dotfiles/macos/.config/tmux/pane.conf +33 -0
- package/dotfiles/macos/.config/tmux/popup-window.conf +27 -0
- package/dotfiles/macos/.config/tmux/statusbar.conf +281 -0
- package/dotfiles/macos/.config/tmux/tmux.conf +94 -0
- package/dotfiles/macos/.config/wezterm/wezterm.lua +143 -0
- package/dotfiles/windows/.claude/CLAUDE.md +13 -0
- package/dotfiles/windows/.claude/settings.json +38 -0
- package/dotfiles/windows/.claude.json +32 -0
- package/dotfiles/windows/.config/bat/config +27 -0
- package/dotfiles/windows/.config/bat/themes/Vercel.tmTheme +308 -0
- package/dotfiles/windows/.config/bat/themes/Vesper.tmTheme +357 -0
- package/dotfiles/windows/.config/btop/btop.conf +251 -0
- package/dotfiles/windows/.config/btop/themes/Solarized_Dark.theme +89 -0
- package/dotfiles/windows/.config/btop/themes/Vercel.theme +89 -0
- package/dotfiles/windows/.config/btop/themes/Vesper.theme +89 -0
- package/dotfiles/windows/.config/nvim/.neoconf.json +15 -0
- package/dotfiles/windows/.config/nvim/init.lua +2 -0
- package/dotfiles/windows/.config/nvim/lazy-lock.json +42 -0
- package/dotfiles/windows/.config/nvim/lazyvim.json +11 -0
- package/dotfiles/windows/.config/nvim/lua/config/autocmds.lua +8 -0
- package/dotfiles/windows/.config/nvim/lua/config/keymaps.lua +21 -0
- package/dotfiles/windows/.config/nvim/lua/config/lazy.lua +72 -0
- package/dotfiles/windows/.config/nvim/lua/config/options.lua +13 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/colorscheme.lua +12 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/editor.lua +366 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/example.lua +197 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/mason.lua +11 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/oxc.lua +64 -0
- package/dotfiles/windows/.config/nvim/lua/plugins/ui.lua +123 -0
- package/dotfiles/windows/.config/nvim/stylua.toml +3 -0
- package/dotfiles/windows/.config/omp-themes/solarized-dark.omp.toml +197 -0
- package/dotfiles/windows/.config/omp-themes/vercel.omp.toml +197 -0
- package/dotfiles/windows/.config/omp-themes/vesper.omp.toml +197 -0
- package/dotfiles/windows/.config/ripgrep/config +9 -0
- package/dotfiles/windows/.config/wezterm/wezterm.lua +88 -0
- package/dotfiles/windows/powershell/Profile.ps1 +36 -0
- package/dotfiles/windows/powershell/functions/Switch-PromptPalette.ps1 +37 -0
- package/dotfiles/windows/powershell/functions/backup.ps1 +39 -0
- package/dotfiles/windows/powershell/functions/reload-shell.ps1 +8 -0
- package/dotfiles/windows/powershell/modules/aliases.ps1 +44 -0
- package/dotfiles/windows/powershell/modules/environment.ps1 +13 -0
- package/dotfiles/windows/powershell/modules/fzf.ps1 +82 -0
- package/dotfiles/windows/powershell/modules/prompt.ps1 +25 -0
- package/dotfiles/windows/powershell/modules/tools.ps1 +52 -0
- 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.*
|