xref: /openbsd-src/usr.bin/tmux/options-table.c (revision c90a81c56dcebd6a1b73fe4aff9b03385b8e63b3)
1 /* $OpenBSD: options-table.c,v 1.98 2018/10/25 15:13:38 nicm Exp $ */
2 
3 /*
4  * Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
15  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
16  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #include <sys/types.h>
20 
21 #include <string.h>
22 #include <paths.h>
23 
24 #include "tmux.h"
25 
26 /*
27  * This file has a tables with all the server, session and window
28  * options. These tables are the master copy of the options with their real
29  * (user-visible) types, range limits and default values. At start these are
30  * copied into the runtime global options trees (which only has number and
31  * string types). These tables are then used to look up the real type when the
32  * user sets an option or its value needs to be shown.
33  */
34 
35 /* Choice option type lists. */
36 static const char *options_table_mode_keys_list[] = {
37 	"emacs", "vi", NULL
38 };
39 static const char *options_table_clock_mode_style_list[] = {
40 	"12", "24", NULL
41 };
42 static const char *options_table_status_keys_list[] = {
43 	"emacs", "vi", NULL
44 };
45 static const char *options_table_status_justify_list[] = {
46 	"left", "centre", "right", NULL
47 };
48 static const char *options_table_status_position_list[] = {
49 	"top", "bottom", NULL
50 };
51 static const char *options_table_bell_action_list[] = {
52 	"none", "any", "current", "other", NULL
53 };
54 static const char *options_table_visual_bell_list[] = {
55 	"off", "on", "both", NULL
56 };
57 static const char *options_table_pane_status_list[] = {
58 	"off", "top", "bottom", NULL
59 };
60 static const char *options_table_set_clipboard_list[] = {
61 	"off", "external", "on", NULL
62 };
63 static const char *options_table_window_size_list[] = {
64 	"largest", "smallest", "manual", NULL
65 };
66 
67 /* Top-level options. */
68 const struct options_table_entry options_table[] = {
69 	{ .name = "buffer-limit",
70 	  .type = OPTIONS_TABLE_NUMBER,
71 	  .scope = OPTIONS_TABLE_SERVER,
72 	  .minimum = 1,
73 	  .maximum = INT_MAX,
74 	  .default_num = 50
75 	},
76 
77 	{ .name = "command-alias",
78 	  .type = OPTIONS_TABLE_ARRAY,
79 	  .scope = OPTIONS_TABLE_SERVER,
80 	  .default_str = "split-pane=split-window,"
81 			 "splitp=split-window,"
82 			 "server-info=show-messages -JT,"
83 			 "info=show-messages -JT,"
84 			 "choose-window=choose-tree -w,"
85 			 "choose-session=choose-tree -s",
86 	  .separator = ","
87 	},
88 
89 	{ .name = "default-terminal",
90 	  .type = OPTIONS_TABLE_STRING,
91 	  .scope = OPTIONS_TABLE_SERVER,
92 	  .default_str = "screen"
93 	},
94 
95 	{ .name = "escape-time",
96 	  .type = OPTIONS_TABLE_NUMBER,
97 	  .scope = OPTIONS_TABLE_SERVER,
98 	  .minimum = 0,
99 	  .maximum = INT_MAX,
100 	  .default_num = 500
101 	},
102 
103 	{ .name = "exit-empty",
104 	  .type = OPTIONS_TABLE_FLAG,
105 	  .scope = OPTIONS_TABLE_SERVER,
106 	  .default_num = 1
107 	},
108 
109 	{ .name = "exit-unattached",
110 	  .type = OPTIONS_TABLE_FLAG,
111 	  .scope = OPTIONS_TABLE_SERVER,
112 	  .default_num = 0
113 	},
114 
115 	{ .name = "focus-events",
116 	  .type = OPTIONS_TABLE_FLAG,
117 	  .scope = OPTIONS_TABLE_SERVER,
118 	  .default_num = 0
119 	},
120 
121 	{ .name = "history-file",
122 	  .type = OPTIONS_TABLE_STRING,
123 	  .scope = OPTIONS_TABLE_SERVER,
124 	  .default_str = ""
125 	},
126 
127 	{ .name = "message-limit",
128 	  .type = OPTIONS_TABLE_NUMBER,
129 	  .scope = OPTIONS_TABLE_SERVER,
130 	  .minimum = 0,
131 	  .maximum = INT_MAX,
132 	  .default_num = 100
133 	},
134 
135 	{ .name = "set-clipboard",
136 	  .type = OPTIONS_TABLE_CHOICE,
137 	  .scope = OPTIONS_TABLE_SERVER,
138 	  .choices = options_table_set_clipboard_list,
139 	  .default_num = 1
140 	},
141 
142 	{ .name = "terminal-overrides",
143 	  .type = OPTIONS_TABLE_ARRAY,
144 	  .scope = OPTIONS_TABLE_SERVER,
145 	  .default_str = "xterm*:XT:Ms=\\E]52;%p1%s;%p2%s\\007"
146 			 ":Cs=\\E]12;%p1%s\\007:Cr=\\E]112\\007"
147 			 ":Ss=\\E[%p1%d q:Se=\\E[2 q,screen*:XT",
148 	  .separator = ","
149 	},
150 
151 	{ .name = "user-keys",
152 	  .type = OPTIONS_TABLE_ARRAY,
153 	  .scope = OPTIONS_TABLE_SERVER,
154 	  .default_str = "",
155 	  .separator = ","
156 	},
157 
158 	{ .name = "activity-action",
159 	  .type = OPTIONS_TABLE_CHOICE,
160 	  .scope = OPTIONS_TABLE_SESSION,
161 	  .choices = options_table_bell_action_list,
162 	  .default_num = ALERT_OTHER
163 	},
164 
165 	{ .name = "assume-paste-time",
166 	  .type = OPTIONS_TABLE_NUMBER,
167 	  .scope = OPTIONS_TABLE_SESSION,
168 	  .minimum = 0,
169 	  .maximum = INT_MAX,
170 	  .default_num = 1,
171 	},
172 
173 	{ .name = "base-index",
174 	  .type = OPTIONS_TABLE_NUMBER,
175 	  .scope = OPTIONS_TABLE_SESSION,
176 	  .minimum = 0,
177 	  .maximum = INT_MAX,
178 	  .default_num = 0
179 	},
180 
181 	{ .name = "bell-action",
182 	  .type = OPTIONS_TABLE_CHOICE,
183 	  .scope = OPTIONS_TABLE_SESSION,
184 	  .choices = options_table_bell_action_list,
185 	  .default_num = ALERT_ANY
186 	},
187 
188 	{ .name = "default-command",
189 	  .type = OPTIONS_TABLE_STRING,
190 	  .scope = OPTIONS_TABLE_SESSION,
191 	  .default_str = ""
192 	},
193 
194 	{ .name = "default-shell",
195 	  .type = OPTIONS_TABLE_STRING,
196 	  .scope = OPTIONS_TABLE_SESSION,
197 	  .default_str = _PATH_BSHELL
198 	},
199 
200 	{ .name = "default-size",
201 	  .type = OPTIONS_TABLE_STRING,
202 	  .scope = OPTIONS_TABLE_SESSION,
203 	  .pattern = "[0-9]*x[0-9]*",
204 	  .default_str = "80x24"
205 	},
206 
207 	{ .name = "destroy-unattached",
208 	  .type = OPTIONS_TABLE_FLAG,
209 	  .scope = OPTIONS_TABLE_SESSION,
210 	  .default_num = 0
211 	},
212 
213 	{ .name = "detach-on-destroy",
214 	  .type = OPTIONS_TABLE_FLAG,
215 	  .scope = OPTIONS_TABLE_SESSION,
216 	  .default_num = 1
217 	},
218 
219 	{ .name = "display-panes-active-colour",
220 	  .type = OPTIONS_TABLE_COLOUR,
221 	  .scope = OPTIONS_TABLE_SESSION,
222 	  .default_num = 1
223 	},
224 
225 	{ .name = "display-panes-colour",
226 	  .type = OPTIONS_TABLE_COLOUR,
227 	  .scope = OPTIONS_TABLE_SESSION,
228 	  .default_num = 4
229 	},
230 
231 	{ .name = "display-panes-time",
232 	  .type = OPTIONS_TABLE_NUMBER,
233 	  .scope = OPTIONS_TABLE_SESSION,
234 	  .minimum = 1,
235 	  .maximum = INT_MAX,
236 	  .default_num = 1000
237 	},
238 
239 	{ .name = "display-time",
240 	  .type = OPTIONS_TABLE_NUMBER,
241 	  .scope = OPTIONS_TABLE_SESSION,
242 	  .minimum = 0,
243 	  .maximum = INT_MAX,
244 	  .default_num = 750
245 	},
246 
247 	{ .name = "history-limit",
248 	  .type = OPTIONS_TABLE_NUMBER,
249 	  .scope = OPTIONS_TABLE_SESSION,
250 	  .minimum = 0,
251 	  .maximum = INT_MAX,
252 	  .default_num = 2000
253 	},
254 
255 	{ .name = "key-table",
256 	  .type = OPTIONS_TABLE_STRING,
257 	  .scope = OPTIONS_TABLE_SESSION,
258 	  .default_str = "root"
259 	},
260 
261 	{ .name = "lock-after-time",
262 	  .type = OPTIONS_TABLE_NUMBER,
263 	  .scope = OPTIONS_TABLE_SESSION,
264 	  .minimum = 0,
265 	  .maximum = INT_MAX,
266 	  .default_num = 0
267 	},
268 
269 	{ .name = "lock-command",
270 	  .type = OPTIONS_TABLE_STRING,
271 	  .scope = OPTIONS_TABLE_SESSION,
272 	  .default_str = "lock -np"
273 	},
274 
275 	{ .name = "message-attr",
276 	  .type = OPTIONS_TABLE_ATTRIBUTES,
277 	  .scope = OPTIONS_TABLE_SESSION,
278 	  .default_num = 0,
279 	  .style = "message-style"
280 	},
281 
282 	{ .name = "message-bg",
283 	  .type = OPTIONS_TABLE_COLOUR,
284 	  .scope = OPTIONS_TABLE_SESSION,
285 	  .default_num = 3,
286 	  .style = "message-style"
287 	},
288 
289 	{ .name = "message-command-attr",
290 	  .type = OPTIONS_TABLE_ATTRIBUTES,
291 	  .scope = OPTIONS_TABLE_SESSION,
292 	  .default_num = 0,
293 	  .style = "message-command-style"
294 	},
295 
296 	{ .name = "message-command-bg",
297 	  .type = OPTIONS_TABLE_COLOUR,
298 	  .scope = OPTIONS_TABLE_SESSION,
299 	  .default_num = 0,
300 	  .style = "message-command-style"
301 	},
302 
303 	{ .name = "message-command-fg",
304 	  .type = OPTIONS_TABLE_COLOUR,
305 	  .scope = OPTIONS_TABLE_SESSION,
306 	  .default_num = 3,
307 	  .style = "message-command-style"
308 	},
309 
310 	{ .name = "message-command-style",
311 	  .type = OPTIONS_TABLE_STYLE,
312 	  .scope = OPTIONS_TABLE_SESSION,
313 	  .default_str = "bg=black,fg=yellow"
314 	},
315 
316 	{ .name = "message-fg",
317 	  .type = OPTIONS_TABLE_COLOUR,
318 	  .scope = OPTIONS_TABLE_SESSION,
319 	  .default_num = 0,
320 	  .style = "message-style"
321 	},
322 
323 	{ .name = "message-style",
324 	  .type = OPTIONS_TABLE_STYLE,
325 	  .scope = OPTIONS_TABLE_SESSION,
326 	  .default_str = "bg=yellow,fg=black"
327 	},
328 
329 	{ .name = "mouse",
330 	  .type = OPTIONS_TABLE_FLAG,
331 	  .scope = OPTIONS_TABLE_SESSION,
332 	  .default_num = 0
333 	},
334 
335 	{ .name = "prefix",
336 	  .type = OPTIONS_TABLE_KEY,
337 	  .scope = OPTIONS_TABLE_SESSION,
338 	  .default_num = '\002',
339 	},
340 
341 	{ .name = "prefix2",
342 	  .type = OPTIONS_TABLE_KEY,
343 	  .scope = OPTIONS_TABLE_SESSION,
344 	  .default_num = KEYC_NONE,
345 	},
346 
347 	{ .name = "renumber-windows",
348 	  .type = OPTIONS_TABLE_FLAG,
349 	  .scope = OPTIONS_TABLE_SESSION,
350 	  .default_num = 0
351 	},
352 
353 	{ .name = "repeat-time",
354 	  .type = OPTIONS_TABLE_NUMBER,
355 	  .scope = OPTIONS_TABLE_SESSION,
356 	  .minimum = 0,
357 	  .maximum = SHRT_MAX,
358 	  .default_num = 500
359 	},
360 
361 	{ .name = "set-titles",
362 	  .type = OPTIONS_TABLE_FLAG,
363 	  .scope = OPTIONS_TABLE_SESSION,
364 	  .default_num = 0
365 	},
366 
367 	{ .name = "set-titles-string",
368 	  .type = OPTIONS_TABLE_STRING,
369 	  .scope = OPTIONS_TABLE_SESSION,
370 	  .default_str = "#S:#I:#W - \"#T\" #{session_alerts}"
371 	},
372 
373 	{ .name = "silence-action",
374 	  .type = OPTIONS_TABLE_CHOICE,
375 	  .scope = OPTIONS_TABLE_SESSION,
376 	  .choices = options_table_bell_action_list,
377 	  .default_num = ALERT_OTHER
378 	},
379 
380 	{ .name = "status",
381 	  .type = OPTIONS_TABLE_FLAG,
382 	  .scope = OPTIONS_TABLE_SESSION,
383 	  .default_num = 1
384 	},
385 
386 	{ .name = "status-attr",
387 	  .type = OPTIONS_TABLE_ATTRIBUTES,
388 	  .scope = OPTIONS_TABLE_SESSION,
389 	  .default_num = 0,
390 	  .style = "status-style"
391 	},
392 
393 	{ .name = "status-bg",
394 	  .type = OPTIONS_TABLE_COLOUR,
395 	  .scope = OPTIONS_TABLE_SESSION,
396 	  .default_num = 2,
397 	  .style = "status-style"
398 	},
399 
400 	{ .name = "status-fg",
401 	  .type = OPTIONS_TABLE_COLOUR,
402 	  .scope = OPTIONS_TABLE_SESSION,
403 	  .default_num = 0,
404 	  .style = "status-style"
405 	},
406 
407 	{ .name = "status-interval",
408 	  .type = OPTIONS_TABLE_NUMBER,
409 	  .scope = OPTIONS_TABLE_SESSION,
410 	  .minimum = 0,
411 	  .maximum = INT_MAX,
412 	  .default_num = 15
413 	},
414 
415 	{ .name = "status-justify",
416 	  .type = OPTIONS_TABLE_CHOICE,
417 	  .scope = OPTIONS_TABLE_SESSION,
418 	  .choices = options_table_status_justify_list,
419 	  .default_num = 0
420 	},
421 
422 	{ .name = "status-keys",
423 	  .type = OPTIONS_TABLE_CHOICE,
424 	  .scope = OPTIONS_TABLE_SESSION,
425 	  .choices = options_table_status_keys_list,
426 	  .default_num = MODEKEY_EMACS
427 	},
428 
429 	{ .name = "status-left",
430 	  .type = OPTIONS_TABLE_STRING,
431 	  .scope = OPTIONS_TABLE_SESSION,
432 	  .default_str = "[#S] "
433 	},
434 
435 	{ .name = "status-left-attr",
436 	  .type = OPTIONS_TABLE_ATTRIBUTES,
437 	  .scope = OPTIONS_TABLE_SESSION,
438 	  .default_num = 0,
439 	  .style = "status-left-style"
440 	},
441 
442 	{ .name = "status-left-bg",
443 	  .type = OPTIONS_TABLE_COLOUR,
444 	  .scope = OPTIONS_TABLE_SESSION,
445 	  .default_num = 8,
446 	  .style = "status-left-style"
447 	},
448 
449 	{ .name = "status-left-fg",
450 	  .type = OPTIONS_TABLE_COLOUR,
451 	  .scope = OPTIONS_TABLE_SESSION,
452 	  .default_num = 8,
453 	  .style = "status-left-style"
454 	},
455 
456 	{ .name = "status-left-length",
457 	  .type = OPTIONS_TABLE_NUMBER,
458 	  .scope = OPTIONS_TABLE_SESSION,
459 	  .minimum = 0,
460 	  .maximum = SHRT_MAX,
461 	  .default_num = 10
462 	},
463 
464 	{ .name = "status-left-style",
465 	  .type = OPTIONS_TABLE_STYLE,
466 	  .scope = OPTIONS_TABLE_SESSION,
467 	  .default_str = "default"
468 	},
469 
470 	{ .name = "status-position",
471 	  .type = OPTIONS_TABLE_CHOICE,
472 	  .scope = OPTIONS_TABLE_SESSION,
473 	  .choices = options_table_status_position_list,
474 	  .default_num = 1
475 	},
476 
477 	{ .name = "status-right",
478 	  .type = OPTIONS_TABLE_STRING,
479 	  .scope = OPTIONS_TABLE_SESSION,
480 	  .default_str = "#{?window_bigger,"
481 	                 "[#{window_offset_x}#,#{window_offset_y}] ,}"
482 	                 "\"#{=21:pane_title}\" %H:%M %d-%b-%y"
483 	},
484 
485 	{ .name = "status-right-attr",
486 	  .type = OPTIONS_TABLE_ATTRIBUTES,
487 	  .scope = OPTIONS_TABLE_SESSION,
488 	  .default_num = 0,
489 	  .style = "status-right-style"
490 	},
491 
492 	{ .name = "status-right-bg",
493 	  .type = OPTIONS_TABLE_COLOUR,
494 	  .scope = OPTIONS_TABLE_SESSION,
495 	  .default_num = 8,
496 	  .style = "status-right-style"
497 	},
498 
499 	{ .name = "status-right-fg",
500 	  .type = OPTIONS_TABLE_COLOUR,
501 	  .scope = OPTIONS_TABLE_SESSION,
502 	  .default_num = 8,
503 	  .style = "status-right-style"
504 	},
505 
506 	{ .name = "status-right-length",
507 	  .type = OPTIONS_TABLE_NUMBER,
508 	  .scope = OPTIONS_TABLE_SESSION,
509 	  .minimum = 0,
510 	  .maximum = SHRT_MAX,
511 	  .default_num = 40
512 	},
513 
514 	{ .name = "status-right-style",
515 	  .type = OPTIONS_TABLE_STYLE,
516 	  .scope = OPTIONS_TABLE_SESSION,
517 	  .default_str = "default"
518 	},
519 
520 	{ .name = "status-style",
521 	  .type = OPTIONS_TABLE_STYLE,
522 	  .scope = OPTIONS_TABLE_SESSION,
523 	  .default_str = "bg=green,fg=black"
524 	},
525 
526 	{ .name = "update-environment",
527 	  .type = OPTIONS_TABLE_ARRAY,
528 	  .scope = OPTIONS_TABLE_SESSION,
529 	  .default_str = "DISPLAY KRB5CCNAME SSH_ASKPASS SSH_AUTH_SOCK "
530 	  		 "SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
531 	},
532 
533 	{ .name = "visual-activity",
534 	  .type = OPTIONS_TABLE_CHOICE,
535 	  .scope = OPTIONS_TABLE_SESSION,
536 	  .choices = options_table_visual_bell_list,
537 	  .default_num = VISUAL_OFF
538 	},
539 
540 	{ .name = "visual-bell",
541 	  .type = OPTIONS_TABLE_CHOICE,
542 	  .scope = OPTIONS_TABLE_SESSION,
543 	  .choices = options_table_visual_bell_list,
544 	  .default_num = VISUAL_OFF
545 	},
546 
547 	{ .name = "visual-silence",
548 	  .type = OPTIONS_TABLE_CHOICE,
549 	  .scope = OPTIONS_TABLE_SESSION,
550 	  .choices = options_table_visual_bell_list,
551 	  .default_num = VISUAL_OFF
552 	},
553 
554 	{ .name = "word-separators",
555 	  .type = OPTIONS_TABLE_STRING,
556 	  .scope = OPTIONS_TABLE_SESSION,
557 	  .default_str = " -_@"
558 	},
559 
560 	{ .name = "aggressive-resize",
561 	  .type = OPTIONS_TABLE_FLAG,
562 	  .scope = OPTIONS_TABLE_WINDOW,
563 	  .default_num = 0
564 	},
565 
566 	{ .name = "allow-rename",
567 	  .type = OPTIONS_TABLE_FLAG,
568 	  .scope = OPTIONS_TABLE_WINDOW,
569 	  .default_num = 0
570 	},
571 
572 	{ .name = "alternate-screen",
573 	  .type = OPTIONS_TABLE_FLAG,
574 	  .scope = OPTIONS_TABLE_WINDOW,
575 	  .default_num = 1
576 	},
577 
578 	{ .name = "automatic-rename",
579 	  .type = OPTIONS_TABLE_FLAG,
580 	  .scope = OPTIONS_TABLE_WINDOW,
581 	  .default_num = 1
582 	},
583 
584 	{ .name = "automatic-rename-format",
585 	  .type = OPTIONS_TABLE_STRING,
586 	  .scope = OPTIONS_TABLE_WINDOW,
587 	  .default_str = "#{?pane_in_mode,[tmux],#{pane_current_command}}"
588 			 "#{?pane_dead,[dead],}"
589 	},
590 
591 	{ .name = "clock-mode-colour",
592 	  .type = OPTIONS_TABLE_COLOUR,
593 	  .scope = OPTIONS_TABLE_WINDOW,
594 	  .default_num = 4
595 	},
596 
597 	{ .name = "clock-mode-style",
598 	  .type = OPTIONS_TABLE_CHOICE,
599 	  .scope = OPTIONS_TABLE_WINDOW,
600 	  .choices = options_table_clock_mode_style_list,
601 	  .default_num = 1
602 	},
603 
604 	{ .name = "main-pane-height",
605 	  .type = OPTIONS_TABLE_NUMBER,
606 	  .scope = OPTIONS_TABLE_WINDOW,
607 	  .minimum = 1,
608 	  .maximum = INT_MAX,
609 	  .default_num = 24
610 	},
611 
612 	{ .name = "main-pane-width",
613 	  .type = OPTIONS_TABLE_NUMBER,
614 	  .scope = OPTIONS_TABLE_WINDOW,
615 	  .minimum = 1,
616 	  .maximum = INT_MAX,
617 	  .default_num = 80
618 	},
619 
620 	{ .name = "mode-attr",
621 	  .type = OPTIONS_TABLE_ATTRIBUTES,
622 	  .scope = OPTIONS_TABLE_WINDOW,
623 	  .default_num = 0,
624 	  .style = "mode-style"
625 	},
626 
627 	{ .name = "mode-bg",
628 	  .type = OPTIONS_TABLE_COLOUR,
629 	  .scope = OPTIONS_TABLE_WINDOW,
630 	  .default_num = 3,
631 	  .style = "mode-style"
632 	},
633 
634 	{ .name = "mode-fg",
635 	  .type = OPTIONS_TABLE_COLOUR,
636 	  .scope = OPTIONS_TABLE_WINDOW,
637 	  .default_num = 0,
638 	  .style = "mode-style"
639 	},
640 
641 	{ .name = "mode-keys",
642 	  .type = OPTIONS_TABLE_CHOICE,
643 	  .scope = OPTIONS_TABLE_WINDOW,
644 	  .choices = options_table_mode_keys_list,
645 	  .default_num = MODEKEY_EMACS
646 	},
647 
648 	{ .name = "mode-style",
649 	  .type = OPTIONS_TABLE_STYLE,
650 	  .scope = OPTIONS_TABLE_WINDOW,
651 	  .default_str = "bg=yellow,fg=black"
652 	},
653 
654 	{ .name = "monitor-activity",
655 	  .type = OPTIONS_TABLE_FLAG,
656 	  .scope = OPTIONS_TABLE_WINDOW,
657 	  .default_num = 0
658 	},
659 
660 	{ .name = "monitor-bell",
661 	  .type = OPTIONS_TABLE_FLAG,
662 	  .scope = OPTIONS_TABLE_WINDOW,
663 	  .default_num = 1
664 	},
665 
666 	{ .name = "monitor-silence",
667 	  .type = OPTIONS_TABLE_NUMBER,
668 	  .scope = OPTIONS_TABLE_WINDOW,
669 	  .minimum = 0,
670 	  .maximum = INT_MAX,
671 	  .default_num = 0
672 	},
673 
674 	{ .name = "other-pane-height",
675 	  .type = OPTIONS_TABLE_NUMBER,
676 	  .scope = OPTIONS_TABLE_WINDOW,
677 	  .minimum = 0,
678 	  .maximum = INT_MAX,
679 	  .default_num = 0
680 	},
681 
682 	{ .name = "other-pane-width",
683 	  .type = OPTIONS_TABLE_NUMBER,
684 	  .scope = OPTIONS_TABLE_WINDOW,
685 	  .minimum = 0,
686 	  .maximum = INT_MAX,
687 	  .default_num = 0
688 	},
689 
690 	{ .name = "pane-active-border-bg",
691 	  .type = OPTIONS_TABLE_COLOUR,
692 	  .scope = OPTIONS_TABLE_WINDOW,
693 	  .default_num = 8,
694 	  .style = "pane-active-border-style"
695 	},
696 
697 	{ .name = "pane-active-border-fg",
698 	  .type = OPTIONS_TABLE_COLOUR,
699 	  .scope = OPTIONS_TABLE_WINDOW,
700 	  .default_num = 2,
701 	  .style = "pane-active-border-style"
702 	},
703 
704 	{ .name = "pane-active-border-style",
705 	  .type = OPTIONS_TABLE_STYLE,
706 	  .scope = OPTIONS_TABLE_WINDOW,
707 	  .default_str = "fg=green"
708 	},
709 
710 	{ .name = "pane-base-index",
711 	  .type = OPTIONS_TABLE_NUMBER,
712 	  .scope = OPTIONS_TABLE_WINDOW,
713 	  .minimum = 0,
714 	  .maximum = USHRT_MAX,
715 	  .default_num = 0
716 	},
717 
718 	{ .name = "pane-border-bg",
719 	  .type = OPTIONS_TABLE_COLOUR,
720 	  .scope = OPTIONS_TABLE_WINDOW,
721 	  .default_num = 8,
722 	  .style = "pane-border-style"
723 	},
724 
725 	{ .name = "pane-border-fg",
726 	  .type = OPTIONS_TABLE_COLOUR,
727 	  .scope = OPTIONS_TABLE_WINDOW,
728 	  .default_num = 8,
729 	  .style = "pane-border-style"
730 	},
731 
732 	{ .name = "pane-border-format",
733 	  .type = OPTIONS_TABLE_STRING,
734 	  .scope = OPTIONS_TABLE_WINDOW,
735 	  .default_str = "#{?pane_active,#[reverse],}#{pane_index}#[default] "
736 			 "\"#{pane_title}\""
737 	},
738 
739 	{ .name = "pane-border-status",
740 	  .type = OPTIONS_TABLE_CHOICE,
741 	  .scope = OPTIONS_TABLE_WINDOW,
742 	  .choices = options_table_pane_status_list,
743 	  .default_num = 0
744 	},
745 
746 	{ .name = "pane-border-style",
747 	  .type = OPTIONS_TABLE_STYLE,
748 	  .scope = OPTIONS_TABLE_WINDOW,
749 	  .default_str = "default"
750 	},
751 
752 	{ .name = "remain-on-exit",
753 	  .type = OPTIONS_TABLE_FLAG,
754 	  .scope = OPTIONS_TABLE_WINDOW,
755 	  .default_num = 0
756 	},
757 
758 	{ .name = "synchronize-panes",
759 	  .type = OPTIONS_TABLE_FLAG,
760 	  .scope = OPTIONS_TABLE_WINDOW,
761 	  .default_num = 0
762 	},
763 
764 	{ .name = "window-active-style",
765 	  .type = OPTIONS_TABLE_STYLE,
766 	  .scope = OPTIONS_TABLE_WINDOW,
767 	  .default_str = "default"
768 	},
769 
770 	{ .name = "window-size",
771 	  .type = OPTIONS_TABLE_CHOICE,
772 	  .scope = OPTIONS_TABLE_WINDOW,
773 	  .choices = options_table_window_size_list,
774 	  .default_num = WINDOW_SIZE_SMALLEST
775 	},
776 
777 	{ .name = "window-style",
778 	  .type = OPTIONS_TABLE_STYLE,
779 	  .scope = OPTIONS_TABLE_WINDOW,
780 	  .default_str = "default"
781 	},
782 
783 	{ .name = "window-status-activity-attr",
784 	  .type = OPTIONS_TABLE_ATTRIBUTES,
785 	  .scope = OPTIONS_TABLE_WINDOW,
786 	  .default_num = GRID_ATTR_REVERSE,
787 	  .style = "window-status-activity-style"
788 	},
789 
790 	{ .name = "window-status-activity-bg",
791 	  .type = OPTIONS_TABLE_COLOUR,
792 	  .scope = OPTIONS_TABLE_WINDOW,
793 	  .default_num = 8,
794 	  .style = "window-status-activity-style"
795 	},
796 
797 	{ .name = "window-status-activity-fg",
798 	  .type = OPTIONS_TABLE_COLOUR,
799 	  .scope = OPTIONS_TABLE_WINDOW,
800 	  .default_num = 8,
801 	  .style = "window-status-activity-style"
802 	},
803 
804 	{ .name = "window-status-activity-style",
805 	  .type = OPTIONS_TABLE_STYLE,
806 	  .scope = OPTIONS_TABLE_WINDOW,
807 	  .default_str = "reverse"
808 	},
809 
810 	{ .name = "window-status-attr",
811 	  .type = OPTIONS_TABLE_ATTRIBUTES,
812 	  .scope = OPTIONS_TABLE_WINDOW,
813 	  .default_num = 0,
814 	  .style = "window-status-style"
815 	},
816 
817 	{ .name = "window-status-bell-attr",
818 	  .type = OPTIONS_TABLE_ATTRIBUTES,
819 	  .scope = OPTIONS_TABLE_WINDOW,
820 	  .default_num = GRID_ATTR_REVERSE,
821 	  .style = "window-status-bell-style"
822 	},
823 
824 	{ .name = "window-status-bell-bg",
825 	  .type = OPTIONS_TABLE_COLOUR,
826 	  .scope = OPTIONS_TABLE_WINDOW,
827 	  .default_num = 8,
828 	  .style = "window-status-bell-style"
829 	},
830 
831 	{ .name = "window-status-bell-fg",
832 	  .type = OPTIONS_TABLE_COLOUR,
833 	  .scope = OPTIONS_TABLE_WINDOW,
834 	  .default_num = 8,
835 	  .style = "window-status-bell-style"
836 	},
837 
838 	{ .name = "window-status-bell-style",
839 	  .type = OPTIONS_TABLE_STYLE,
840 	  .scope = OPTIONS_TABLE_WINDOW,
841 	  .default_str = "reverse"
842 	},
843 
844 	{ .name = "window-status-bg",
845 	  .type = OPTIONS_TABLE_COLOUR,
846 	  .scope = OPTIONS_TABLE_WINDOW,
847 	  .default_num = 8,
848 	  .style = "window-status-style"
849 	},
850 
851 	{ .name = "window-status-current-attr",
852 	  .type = OPTIONS_TABLE_ATTRIBUTES,
853 	  .scope = OPTIONS_TABLE_WINDOW,
854 	  .default_num = 0,
855 	  .style = "window-status-current-style"
856 	},
857 
858 	{ .name = "window-status-current-bg",
859 	  .type = OPTIONS_TABLE_COLOUR,
860 	  .scope = OPTIONS_TABLE_WINDOW,
861 	  .default_num = 8,
862 	  .style = "window-status-current-style"
863 	},
864 
865 	{ .name = "window-status-current-fg",
866 	  .type = OPTIONS_TABLE_COLOUR,
867 	  .scope = OPTIONS_TABLE_WINDOW,
868 	  .default_num = 8,
869 	  .style = "window-status-current-style"
870 	},
871 
872 	{ .name = "window-status-current-format",
873 	  .type = OPTIONS_TABLE_STRING,
874 	  .scope = OPTIONS_TABLE_WINDOW,
875 	  .default_str = "#I:#W#{?window_flags,#{window_flags}, }"
876 	},
877 
878 	{ .name = "window-status-current-style",
879 	  .type = OPTIONS_TABLE_STYLE,
880 	  .scope = OPTIONS_TABLE_WINDOW,
881 	  .default_str = "default"
882 	},
883 
884 	{ .name = "window-status-fg",
885 	  .type = OPTIONS_TABLE_COLOUR,
886 	  .scope = OPTIONS_TABLE_WINDOW,
887 	  .default_num = 8,
888 	  .style = "window-status-style"
889 	},
890 
891 	{ .name = "window-status-format",
892 	  .type = OPTIONS_TABLE_STRING,
893 	  .scope = OPTIONS_TABLE_WINDOW,
894 	  .default_str = "#I:#W#{?window_flags,#{window_flags}, }"
895 	},
896 
897 	{ .name = "window-status-last-attr",
898 	  .type = OPTIONS_TABLE_ATTRIBUTES,
899 	  .scope = OPTIONS_TABLE_WINDOW,
900 	  .default_num = 0,
901 	  .style = "window-status-last-style"
902 	},
903 
904 	{ .name = "window-status-last-bg",
905 	  .type = OPTIONS_TABLE_COLOUR,
906 	  .scope = OPTIONS_TABLE_WINDOW,
907 	  .default_num = 8,
908 	  .style = "window-status-last-style"
909 	},
910 
911 	{ .name = "window-status-last-fg",
912 	  .type = OPTIONS_TABLE_COLOUR,
913 	  .scope = OPTIONS_TABLE_WINDOW,
914 	  .default_num = 8,
915 	  .style = "window-status-last-style"
916 	},
917 
918 	{ .name = "window-status-last-style",
919 	  .type = OPTIONS_TABLE_STYLE,
920 	  .scope = OPTIONS_TABLE_WINDOW,
921 	  .default_str = "default"
922 	},
923 
924 	{ .name = "window-status-separator",
925 	  .type = OPTIONS_TABLE_STRING,
926 	  .scope = OPTIONS_TABLE_WINDOW,
927 	  .default_str = " "
928 	},
929 
930 	{ .name = "window-status-style",
931 	  .type = OPTIONS_TABLE_STYLE,
932 	  .scope = OPTIONS_TABLE_WINDOW,
933 	  .default_str = "default"
934 	},
935 
936 	{ .name = "wrap-search",
937 	  .type = OPTIONS_TABLE_FLAG,
938 	  .scope = OPTIONS_TABLE_WINDOW,
939 	  .default_num = 1
940 	},
941 
942 	{ .name = "xterm-keys",
943 	  .type = OPTIONS_TABLE_FLAG,
944 	  .scope = OPTIONS_TABLE_WINDOW,
945 	  .default_num = 1
946 	},
947 
948 	{ .name = NULL }
949 };
950