Last active
February 15, 2024 14:34
-
-
Save tony/28e74f834a80c05c878ab63cb08ea825 to your computer and use it in GitHub Desktop.
libtmux / python: Schema of tmux options (tmux 3.4)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import enum | |
import typing as t | |
from dataclasses import dataclass, field | |
from libtmux._internal.dataclasses import SkipDefaultFieldsReprMixin | |
class ServerOptions(enum.Enum): | |
backspace = "backspace" | |
buffer_limit = "buffer-limit" | |
command_alias = "command-alias" | |
default_terminal = "default-terminal" | |
copy_command = "copy-command" | |
escape_time = "escape-time" | |
editor = "editor" | |
exit_empty = "exit-empty" | |
exit_unattached = "exit-unattached" | |
extended_keys = "extended-keys" | |
focus_events = "focus-events" | |
history_file = "history-file" | |
message_limit = "message-limit" | |
prompt_history_limit = "prompt-history-limit" | |
set_clipboard = "set-clipboard" | |
terminal_features = "terminal-features" | |
terminal_overrides = "terminal-overrides" | |
user_keys = "user-keys" | |
class SessionOptions(enum.Enum): | |
activity_action = "activity-action" | |
assume_paste_time = "assume-paste-time" | |
base_index = "base-index" | |
bell_action = "bell-action" | |
default_command = "default-command" | |
default_shell = "default-shell" | |
default_size = "default-size" | |
destroy_unattached = "destroy-unattached" | |
detach_on_destroy = "detach-on-destroy" | |
display_panes_active_colour = "display-panes-active-colour" | |
display_panes_colour = "display-panes-colour" | |
display_panes_time = "display-panes-time" | |
display_time = "display-time" | |
history_limit = "history-limit" | |
key_table = "key-table" | |
lock_after_time = "lock-after-time" | |
lock_command = "lock-command" | |
menu_style = "menu-style" | |
menu_selected_style = "menu-selected-style" | |
menu_border_style = "menu-border-style" | |
menu_border_lines = "menu-border-lines" | |
message_command_style = "message-command-style" | |
message_line = "message-line" | |
message_style = "message-style" | |
mouse = "mouse" | |
prefix = "prefix" | |
prefix2 = "prefix2" | |
renumber_windows = "renumber-windows" | |
repeat_time = "repeat-time" | |
set_titles = "set-titles" | |
set_titles_string = "set-titles-string" | |
silence_action = "silence-action" | |
status = "status" | |
status_format = "status-format[]" | |
status_interval = "status-interval" | |
status_justify = "status-justify" | |
status_keys = "status-keys" | |
status_left = "status-left" | |
status_left_length = "status-left-length" | |
status_left_style = "status-left-style" | |
status_position = "status-position" | |
status_right = "status-right" | |
status_right_length = "status-right-length" | |
status_right_style = "status-right-style" | |
status_style = "status-style" | |
update_environment = "update-environment[]" | |
visual_activity = "visual-activity" | |
visual_bell = "visual-bell" | |
visual_silence = "visual-silence" | |
word_separators = "word-separators" | |
class WindowOptions(enum.Enum): | |
aggressive_resize = "aggressive-resize" | |
automatic_rename = "automatic-rename" | |
automatic_rename_format = "automatic-rename-format" | |
clock_mode_colour = "clock-mode-colour" | |
clock_mode_style = "clock-mode-style" | |
fill_character = "fill-character" | |
main_pane_height = "main-pane-height" | |
main_pane_width = "main-pane-width" | |
copy_mode_match_style = "copy-mode-match-style" | |
copy_mode_mark_style = "copy-mode-mark-style" | |
copy_mode_current_match_style = "copy-mode-current-match-style" | |
mode_keys = "mode-keys" | |
mode_style = "mode-style" | |
monitor_activity = "monitor-activity" | |
monitor_bell = "monitor-bell" | |
monitor_silence = "monitor-silence" | |
other_pane_height = "other-pane-height" | |
other_pane_width = "other-pane-width" | |
pane_active_border_style = "pane-active-border-style" | |
pane_base_index = "pane-base-index" | |
pane_border_format = "pane-border-format" | |
pane_border_indicators = "pane-border-indicators" | |
pane_border_lines = "pane-border-lines" | |
pane_border_status = "pane-border-status" | |
pane_border_style = "pane-border-style" | |
popup_style = "popup-style" | |
popup_border_style = "popup-border-style" | |
popup_border_lines = "popup-border-lines" | |
window_status_activity_style = "window-status-activity-style" | |
window_status_bell_style = "window-status-bell-style" | |
window_status_current_format = "window-status-current-format" | |
window_status_current_style = "window-status-current-style" | |
window_status_format = "window-status-format" | |
window_status_last_style = "window-status-last-style" | |
window_status_separator = "window-status-separator" | |
window_status_style = "window-status-style" | |
window_size = "window-size" | |
wrap_search = "wrap-search" | |
class PaneOptions(enum.Enum): | |
allow_passthrough = "allow-passthrough" | |
allow_rename = "allow-rename" | |
alternate_screen = "alternate-screen" | |
cursor_colour = "cursor-colour" | |
pane_colours = "pane-colours[]" | |
cursor_style = "cursor-style" | |
remain_on_exit = "remain-on-exit" | |
remain_on_exit_format = "remain-on-exit-format" | |
scroll_on_clear = "scroll-on-clear" | |
synchronize_panes = "synchronize-panes" | |
window_active_style = "window-active-style" | |
window_style = "window-style" | |
class PaneOptionsDict(t.TypedDict, total=False): | |
allow_passthrough: t.Optional[t.Literal["on", "off", "all"]] | |
allow_rename: t.Optional[t.Literal["on", "off"]] | |
alternate_screen: t.Optional[t.Literal["on", "off"]] | |
cursor_colour: t.Optional[str] # Assuming colour is specified as a string | |
pane_colours: t.Optional[ | |
t.List[str] | |
] # Assuming each colour in the palette is specified as a string | |
cursor_style: t.Optional[ | |
t.Literal[ | |
"default", | |
"blinking-block", | |
"block", | |
"blinking-underline", | |
"underline", | |
"blinking-bar", | |
"bar", | |
] | |
] | |
remain_on_exit: t.Optional[t.Literal["on", "off", "failed"]] | |
remain_on_exit_format: t.Optional[str] | |
scroll_on_clear: t.Optional[t.Literal["on", "off"]] | |
synchronize_panes: t.Optional[t.Literal["on", "off"]] | |
window_active_style: t.Optional[ | |
str | |
] # Style specifications are assumed to be strings | |
window_style: t.Optional[str] # Style specifications are assumed to be strings | |
class WindowOptionsDict(t.TypedDict, total=False): | |
aggressive_resize: t.Optional[t.Literal["on", "off"]] | |
automatic_rename: t.Optional[t.Literal["on", "off"]] | |
automatic_rename_format: t.Optional[str] | |
clock_mode_colour: t.Optional[str] # Assuming colour is specified as a string | |
clock_mode_style: t.Optional[t.Literal["12", "24"]] | |
fill_character: t.Optional[str] | |
main_pane_height: t.Optional[ | |
t.Union[int, str] | |
] # Int for fixed size, str for percentage | |
main_pane_width: t.Optional[ | |
t.Union[int, str] | |
] # Int for fixed size, str for percentage | |
copy_mode_match_style: t.Optional[str] | |
copy_mode_mark_style: t.Optional[str] | |
copy_mode_current_match_style: t.Optional[str] | |
mode_keys: t.Optional[t.Literal["vi", "emacs"]] | |
mode_style: t.Optional[str] | |
monitor_activity: t.Optional[t.Literal["on", "off"]] | |
monitor_bell: t.Optional[t.Literal["on", "off"]] | |
monitor_silence: t.Optional[int] # Assuming seconds as int | |
other_pane_height: t.Optional[ | |
t.Union[int, str] | |
] # Int for fixed size, str for percentage | |
other_pane_width: t.Optional[ | |
t.Union[int, str] | |
] # Int for fixed size, str for percentage | |
pane_active_border_style: t.Optional[str] | |
pane_base_index: t.Optional[int] | |
pane_border_format: t.Optional[str] | |
pane_border_indicators: t.Optional[t.Literal["off", "colour", "arrows", "both"]] | |
pane_border_lines: t.Optional[ | |
t.Literal["single", "double", "heavy", "simple", "number"] | |
] | |
pane_border_status: t.Optional[t.Literal["off", "top", "bottom"]] | |
pane_border_style: t.Optional[str] | |
popup_style: t.Optional[str] | |
popup_border_style: t.Optional[str] | |
popup_border_lines: t.Optional[ | |
t.Literal["single", "rounded", "double", "heavy", "simple", "padded", "none"] | |
] | |
window_status_activity_style: t.Optional[str] | |
window_status_bell_style: t.Optional[str] | |
window_status_current_format: t.Optional[str] | |
window_status_current_style: t.Optional[str] | |
window_status_format: t.Optional[str] | |
window_status_last_style: t.Optional[str] | |
window_status_separator: t.Optional[str] | |
window_status_style: t.Optional[str] | |
window_size: t.Optional[t.Literal["largest", "smallest", "manual", "latest"]] | |
wrap_search: t.Optional[t.Literal["on", "off"]] | |
class SessionOptionsDict(t.TypedDict, total=False): | |
activity_action: t.Optional[t.Literal["any", "none", "current", "other"]] | |
assume_paste_time: t.Optional[int] # Milliseconds | |
base_index: t.Optional[int] | |
bell_action: t.Optional[t.Literal["any", "none", "current", "other"]] | |
default_command: t.Optional[str] | |
default_shell: t.Optional[str] | |
default_size: t.Optional[str] # Format "XxY" | |
destroy_unattached: t.Optional[t.Literal["on", "off"]] | |
detach_on_destroy: t.Optional[ | |
t.Literal["off", "on", "no-detached", "previous", "next"] | |
] | |
display_panes_active_colour: t.Optional[ | |
str | |
] # Assuming colour is specified as a string | |
display_panes_colour: t.Optional[str] # Assuming colour is specified as a string | |
display_panes_time: t.Optional[int] # Milliseconds | |
display_time: t.Optional[int] # Milliseconds | |
history_limit: t.Optional[int] | |
key_table: t.Optional[str] | |
lock_after_time: t.Optional[int] # Seconds | |
lock_command: t.Optional[str] | |
menu_style: t.Optional[str] | |
menu_selected_style: t.Optional[str] | |
menu_border_style: t.Optional[str] | |
menu_border_lines: t.Optional[ | |
t.Literal["single", "rounded", "double", "heavy", "simple", "padded", "none"] | |
] | |
message_command_style: t.Optional[str] | |
message_line: t.Optional[t.Literal[0, 1, 2, 3, 4]] | |
message_style: t.Optional[str] | |
mouse: t.Optional[t.Literal["on", "off"]] | |
prefix: t.Optional[str] # Could be a key symbol or 'None' | |
prefix2: t.Optional[str] # Could be a key symbol or 'None' | |
renumber_windows: t.Optional[t.Literal["on", "off"]] | |
repeat_time: t.Optional[int] # Milliseconds | |
set_titles: t.Optional[t.Literal["on", "off"]] | |
set_titles_string: t.Optional[str] | |
silence_action: t.Optional[t.Literal["any", "none", "current", "other"]] | |
status: t.Optional[t.Literal["off", "on", 2, 3, 4, 5]] | |
status_format: t.Optional[t.List[str]] | |
status_interval: t.Optional[int] # Seconds | |
status_justify: t.Optional[t.Literal["left", "centre", "right", "absolute-centre"]] | |
status_keys: t.Optional[t.Literal["vi", "emacs"]] | |
status_left: t.Optional[str] | |
status_left_length: t.Optional[int] | |
status_left_style: t.Optional[str] | |
status_position: t.Optional[t.Literal["top", "bottom"]] | |
status_right: t.Optional[str] | |
status_right_length: t.Optional[int] | |
status_right_style: t.Optional[str] | |
status_style: t.Optional[str] | |
update_environment: t.Optional[t.List[str]] | |
visual_activity: t.Optional[t.Literal["on", "off", "both"]] | |
visual_bell: t.Optional[t.Literal["on", "off", "both"]] | |
visual_silence: t.Optional[t.Literal["on", "off", "both"]] | |
word_separators: t.Optional[str] | |
class ServerOptionsDict(t.TypedDict, total=False): | |
backspace: t.Optional[str] | |
buffer_limit: t.Optional[int] | |
command_alias: t.Optional[t.Dict[str, str]] | |
default_terminal: t.Optional[str] | |
copy_command: t.Optional[str] | |
escape_time: t.Optional[int] # Milliseconds | |
editor: t.Optional[str] | |
exit_empty: t.Optional[t.Literal["on", "off"]] | |
exit_unattached: t.Optional[t.Literal["on", "off"]] | |
extended_keys: t.Optional[t.Literal["on", "off", "always"]] | |
focus_events: t.Optional[t.Literal["on", "off"]] | |
history_file: t.Optional[str] | |
message_limit: t.Optional[int] | |
prompt_history_limit: t.Optional[int] | |
set_clipboard: t.Optional[t.Literal["on", "external", "off"]] | |
terminal_features: t.Optional[ | |
t.Dict[str, t.List[str]] | |
] # terminal type pattern to features list | |
terminal_overrides: t.Optional[ | |
t.Dict[str, str] | |
] # terminal type pattern to terminfo overrides | |
user_keys: t.Optional[t.Dict[int, str]] # User-defined key escape sequences | |
@dataclass(repr=False) | |
class ServerOptionsDataClass( | |
SkipDefaultFieldsReprMixin, | |
): | |
backspace: t.Optional[str] = field(default=None) | |
buffer_limit: t.Optional[int] = field(default=None) | |
command_alias: t.Optional[t.Dict[str, str]] = field(default=None) | |
default_terminal: t.Optional[str] = field(default=None) | |
copy_command: t.Optional[str] = field(default=None) | |
escape_time: t.Optional[int] = field(default=None) | |
editor: t.Optional[str] = field(default=None) | |
exit_empty: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
exit_unattached: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
extended_keys: t.Optional[t.Literal["on", "off", "always"]] = field(default=None) | |
focus_events: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
history_file: t.Optional[str] = field(default=None) | |
message_limit: t.Optional[int] = field(default=None) | |
prompt_history_limit: t.Optional[int] = field(default=None) | |
set_clipboard: t.Optional[t.Literal["on", "external", "off"]] = field(default=None) | |
terminal_features: t.Optional[t.Dict[str, t.List[str]]] = field(default=None) | |
terminal_overrides: t.Optional[t.Dict[str, str]] = field(default=None) | |
user_keys: t.Optional[t.Dict[int, str]] = field(default=None) | |
def __init__(self, **kwargs: object) -> None: | |
# Convert hyphenated keys to underscored attribute names and assign values | |
for key, value in kwargs.items(): | |
key_underscored = key.replace("-", "_") | |
setattr(self, key_underscored, value) | |
@dataclass(repr=False) | |
class SessionOptionsDataClass( | |
SkipDefaultFieldsReprMixin, | |
): | |
activity_action: t.Optional[t.Literal["any", "none", "current", "other"]] = field( | |
default=None | |
) | |
assume_paste_time: t.Optional[int] = field(default=None) | |
base_index: t.Optional[int] = field(default=None) | |
bell_action: t.Optional[t.Literal["any", "none", "current", "other"]] = field( | |
default=None | |
) | |
default_command: t.Optional[str] = field(default=None) | |
default_shell: t.Optional[str] = field(default=None) | |
default_size: t.Optional[str] = field(default=None) # Format "XxY" | |
destroy_unattached: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
detach_on_destroy: t.Optional[ | |
t.Literal["off", "on", "no-detached", "previous", "next"] | |
] = field(default=None) | |
display_panes_active_colour: t.Optional[str] = field(default=None) | |
display_panes_colour: t.Optional[str] = field(default=None) | |
display_panes_time: t.Optional[int] = field(default=None) | |
display_time: t.Optional[int] = field(default=None) | |
history_limit: t.Optional[int] = field(default=None) | |
key_table: t.Optional[str] = field(default=None) | |
lock_after_time: t.Optional[int] = field(default=None) | |
lock_command: t.Optional[str] = field(default=None) | |
menu_style: t.Optional[str] = field(default=None) | |
menu_selected_style: t.Optional[str] = field(default=None) | |
menu_border_style: t.Optional[str] = field(default=None) | |
menu_border_lines: t.Optional[ | |
t.Literal["single", "rounded", "double", "heavy", "simple", "padded", "none"] | |
] = field(default=None) | |
message_command_style: t.Optional[str] = field(default=None) | |
message_line: t.Optional[int] = field(default=None) | |
message_style: t.Optional[str] = field(default=None) | |
mouse: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
prefix: t.Optional[str] = field(default=None) | |
prefix2: t.Optional[str] = field(default=None) | |
renumber_windows: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
repeat_time: t.Optional[int] = field(default=None) | |
set_titles: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
set_titles_string: t.Optional[str] = field(default=None) | |
silence_action: t.Optional[t.Literal["any", "none", "current", "other"]] = field( | |
default=None | |
) | |
status: t.Optional[t.Union[t.Literal["off", "on"], int]] = field(default=None) | |
status_format: t.Optional[t.List[str]] = field(default=None) | |
status_interval: t.Optional[int] = field(default=None) | |
status_justify: t.Optional[ | |
t.Literal["left", "centre", "right", "absolute-centre"] | |
] = field(default=None) | |
status_keys: t.Optional[t.Literal["vi", "emacs"]] = field(default=None) | |
status_left: t.Optional[str] = field(default=None) | |
status_left_length: t.Optional[int] = field(default=None) | |
status_left_style: t.Optional[str] = field(default=None) | |
status_position: t.Optional[t.Literal["top", "bottom"]] = field(default=None) | |
status_right: t.Optional[str] = field(default=None) | |
status_right_length: t.Optional[int] = field(default=None) | |
status_right_style: t.Optional[str] = field(default=None) | |
status_style: t.Optional[str] = field(default=None) | |
update_environment: t.Optional[t.List[str]] = field(default=None) | |
visual_activity: t.Optional[t.Literal["on", "off", "both"]] = field(default=None) | |
visual_bell: t.Optional[t.Literal["on", "off", "both"]] = field(default=None) | |
visual_silence: t.Optional[t.Literal["on", "off", "both"]] = field(default=None) | |
word_separators: t.Optional[str] = field(default=None) | |
def __init__(self, **kwargs: object) -> None: | |
# Convert hyphenated keys to underscored attribute names and assign values | |
for key, value in kwargs.items(): | |
key_underscored = key.replace("-", "_") | |
setattr(self, key_underscored, value) | |
@dataclass(repr=False) | |
class WindowOptionsDataClass( | |
SkipDefaultFieldsReprMixin, | |
): | |
aggressive_resize: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
automatic_rename: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
automatic_rename_format: t.Optional[str] = field(default=None) | |
clock_mode_colour: t.Optional[str] = field(default=None) | |
clock_mode_style: t.Optional[t.Literal["12", "24"]] = field(default=None) | |
fill_character: t.Optional[str] = field(default=None) | |
main_pane_height: t.Optional[t.Union[int, str]] = field(default=None) | |
main_pane_width: t.Optional[t.Union[int, str]] = field(default=None) | |
copy_mode_match_style: t.Optional[str] = field(default=None) | |
copy_mode_mark_style: t.Optional[str] = field(default=None) | |
copy_mode_current_match_style: t.Optional[str] = field(default=None) | |
mode_keys: t.Optional[t.Literal["vi", "emacs"]] = field(default=None) | |
mode_style: t.Optional[str] = field(default=None) | |
monitor_activity: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
monitor_bell: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
monitor_silence: t.Optional[int] = field(default=None) # Assuming seconds as int | |
other_pane_height: t.Optional[t.Union[int, str]] = field(default=None) | |
other_pane_width: t.Optional[t.Union[int, str]] = field(default=None) | |
pane_active_border_style: t.Optional[str] = field(default=None) | |
pane_base_index: t.Optional[int] = field(default=None) | |
pane_border_format: t.Optional[str] = field(default=None) | |
pane_border_indicators: t.Optional[ | |
t.Literal["off", "colour", "arrows", "both"] | |
] = field(default=None) | |
pane_border_lines: t.Optional[ | |
t.Literal["single", "double", "heavy", "simple", "number"] | |
] = field(default=None) | |
pane_border_status: t.Optional[t.Literal["off", "top", "bottom"]] = field( | |
default=None | |
) | |
pane_border_style: t.Optional[str] = field(default=None) | |
popup_style: t.Optional[str] = field(default=None) | |
popup_border_style: t.Optional[str] = field(default=None) | |
popup_border_lines: t.Optional[ | |
t.Literal["single", "rounded", "double", "heavy", "simple", "padded", "none"] | |
] = field(default=None) | |
window_status_activity_style: t.Optional[str] = field(default=None) | |
window_status_bell_style: t.Optional[str] = field(default=None) | |
window_status_current_format: t.Optional[str] = field(default=None) | |
window_status_current_style: t.Optional[str] = field(default=None) | |
window_status_format: t.Optional[str] = field(default=None) | |
window_status_last_style: t.Optional[str] = field(default=None) | |
window_status_separator: t.Optional[str] = field(default=None) | |
window_status_style: t.Optional[str] = field(default=None) | |
window_size: t.Optional[ | |
t.Literal["largest", "smallest", "manual", "latest"] | |
] = field(default=None) | |
wrap_search: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
def __init__(self, **kwargs: object) -> None: | |
# Convert hyphenated keys to underscored attribute names and assign values | |
for key, value in kwargs.items(): | |
key_underscored = key.replace("-", "_") | |
setattr(self, key_underscored, value) | |
@dataclass(repr=False) | |
class PaneOptionsDataClass( | |
SkipDefaultFieldsReprMixin, | |
): | |
allow_passthrough: t.Optional[t.Literal["on", "off", "all"]] = field(default=None) | |
allow_rename: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
alternate_screen: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
cursor_colour: t.Optional[str] = field(default=None) | |
pane_colours: t.Optional[t.List[str]] = field(default=None) | |
cursor_style: t.Optional[ | |
t.Literal[ | |
"default", | |
"blinking-block", | |
"block", | |
"blinking-underline", | |
"underline", | |
"blinking-bar", | |
"bar", | |
] | |
] = field(default=None) | |
remain_on_exit: t.Optional[t.Literal["on", "off", "failed"]] = field(default=None) | |
remain_on_exit_format: t.Optional[str] = field(default=None) | |
scroll_on_clear: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
synchronize_panes: t.Optional[t.Literal["on", "off"]] = field(default=None) | |
window_active_style: t.Optional[str] = field(default=None) | |
window_style: t.Optional[str] = field(default=None) | |
def __init__(self, **kwargs: object) -> None: | |
# Convert hyphenated keys to underscored attribute names and assign values | |
for key, value in kwargs.items(): | |
key_underscored = key.replace("-", "_") | |
setattr(self, key_underscored, value) | |
@dataclass(repr=False) | |
class OptionsDataClass( | |
ServerOptionsDataClass, | |
SessionOptionsDataClass, | |
WindowOptionsDataClass, | |
PaneOptionsDataClass, | |
SkipDefaultFieldsReprMixin, | |
): | |
def __init__(self, **kwargs: object) -> None: | |
# Convert hyphenated keys to underscored attribute names and assign values | |
# Remove asaterisk from inherited options | |
for key, value in kwargs.items(): | |
key_underscored = key.replace("-", "_") | |
key_asterisk_removed = key_underscored.rstrip("*") | |
setattr(self, key_asterisk_removed, value) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment