# Default Contour Configuration File.

# Overrides the auto-detected platform plugin to be loaded.
#
# Possible (incomplete list of) values are:
# - auto        The platform will be auto-detected.
# - xcb         Uses XCB plugin (for X11 environment).
# - cocoa       Used to be run on Mac OS/X.
# - direct2d    Windows platform plugin using Direct2D.
# - winrt       Windows platform plugin using WinRT.
#
# Default: auto
platform_plugin: auto

# VT Renderer configuration.
# ADVANCED! Do not touch unless you know what you are doing.
renderer:
  # Backend to use for rendering the terminal onto the screen
  #
  # Possible values are:
  # - default     Uses the default rendering option as decided by the terminal.
  # - software    Uses software-based rendering.
  # - OpenGL      Use (possibly) hardware accelerated OpenGL
  backend: OpenGL

  # Number of hashtable slots to map to the texture tiles.
  # Larger values may increase performance, but too large may also decrease.
  # This value is rounded up to a value equal to the power of two.
  #
  # Default: 4096
  tile_hashtable_slots: 4096

  # Number of tiles that must fit at lest into the texture atlas.
  #
  # This does not include direct mapped tiles (US-ASCII glyphs,
  # cursor shapes and decorations), if tile_direct_mapping is set to true).
  #
  # Value must be at least as large as grid cells available in the terminal view.
  # This value is automatically adjusted if too small.
  #
  # Default: 4000
  tile_cache_count: 4000

  # Enables/disables the use of direct-mapped texture atlas tiles for
  # the most often used ones (US-ASCII, cursor shapes, underline styles)
  # You most likely do not want to touch this.
  #
  # Default: true
  tile_direct_mapping: true

# Word delimiters when selecting word-wise.
word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│"

# Default PTY read buffer size.
#
# This is an advance option. Use with care!
# Default: 16384
read_buffer_size: 16384

# Size in bytes per PTY Buffer Object.
#
# This is an advanced option of an internal storage. Only change with care!
pty_buffer_size: 1048576

default_profile: main

# Flag to determine whether to spawn new process or not when creating new terminal
# Default: false
spawn_new_process: false

# Whether or not to reflow the lines on terminal resize events.
# Default: true
reflow_on_resize: true

# Section of experimental features.
# All experimental features are disabled by default and must be explicitly enabled here.
# NOTE: Contour currently has no experimental features behind this configuration wall.
# experimental:
#     # Enables experimental support for feature X/Y/Z
#     feature_xyz: true

# This keyboard modifier can be used to bypass the terminal's mouse protocol,
# which can be used to select screen content even if the an application
# mouse protocol has been activated (Default: Shift).
#
# The same modifier values apply as with input modifiers (see below).
bypass_mouse_protocol_modifier: Shift

# Modifier to be pressed in order to initiate block-selection
# using the left mouse button.
#
# This is usually the Control modifier, but on OS/X that is not possible,
# so Alt or Meta would be recommended instead.
#
# Supported modifiers:
# - Alt
# - Control
# - Shift
# - Meta
#
# Default: Control
mouse_block_selection_modifier: Control

# Selects an action to perform when a text selection has been made.
#
# Possible values are:
#
# - None                        Does nothing
# - CopyToClipboard             Copies the selection to the primary clipboard.
# - CopyToSelectionClipboard    Copies the selection to the selection clipboard.
#                               This is not supported on all platforms.
#
# Default: CopyToSelectionClipboard
on_mouse_select: CopyToSelectionClipboard

# Determines whether the instance is reloading the configuration files whenever it is changing or not.
#
# Default: false
live_config: false

# Inline image related default configuration and limits
# -----------------------------------------------------
images:
  # Enable or disable sixel scrolling (SM/RM ?80 default)
  sixel_scrolling: true
  # Configures the maximum number of color registers available when rendering Sixel graphics.
  sixel_register_count: 4096
  # maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width)
  max_width: 0
  # maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height)
  max_height: 0

# Terminal Profiles
# -----------------
#
# Dominates how your terminal visually looks like. You will need at least one terminal profile.
profiles:
  main:
    # You can override the process to be started inside the terminal.
    # If nothing is specified, the users' default login shell will be used.
    # But you may as well log in to a remote host.
    # shell: "ssh ubuntu-vm"
    # shell: "/bin/bash"
    # arguments: ["some", "optional", "arguments", "for", "the", "shell"]

    # If this terminal is being executed from within Flatpak, enforces sandboxing
    # then this boolean indicates whether or not that sandbox should be escaped or not.
    #
    # Default value is true.
    #
    # It only makes sense to set this value to false if you really know what you are doing.
    escape_sandbox: true

    # Advanced value that is useful when CopyPreviousMarkRange is used
    # with multiline-prompts. This offset value is being added to the
    # current cursor's line number minus 1 (i.e. the line above the current cursor).
    #
    # Default value is 0.
    copy_last_mark_range_offset: 0

    # Sets initial working directory when spawning a new terminal.
    # A leading ~ is expanded to the user's home directory.
    # Default value is the user's home directory.
    initial_working_directory: "~"

    # When this profile is *activated*, this flag decides
    # whether or not the title bar will be shown
    show_title_bar: false
    # When this profile is being *activated*, this flag decides
    # whether or not to put the terminal's screen into fullscreen mode.
    #
    # It is activated during startup as well as when switching from another profile to this one.
    fullscreen: false

    # When this profile is *activated*, this flag decides
    # whether or not to put the window into maximized mode.
    maximized: false

    # Defines the class part of the WM_CLASS property of the window.
    wm_class: "contour"

    # Environment variables to be passed to the shell.
    # environment:
    #     TERM: contour
    #     COLORTERM: truecolor

    # Determines the terminal type that is being advertised.
    # Possible values are:
    #   - VT100
    #   - VT220
    #   - VT240
    #   - VT330
    #   - VT340
    #   - VT320
    #   - VT420
    #   - VT510
    #   - VT520
    #   - VT525
    # Default: VT525
    terminal_id: VT525

    # Determines the initial terminal size in characters.
    terminal_size:
      columns: 80
      lines: 25

    history:
      # Number of lines to preserve (-1 for infinite).
      limit: 1000
      # Boolean indicating whether or not to scroll down to the bottom on screen updates.
      auto_scroll_on_update: true
      # Number of lines to scroll on ScrollUp & ScrollDown events.
      # Default: 3
      scroll_multiplier: 3

    # visual scrollbar support
    scrollbar:
      # scroll bar position: Left, Right, Hidden (ignore-case)
      position: Hidden
      # whether or not to hide the scrollbar when in alt-screen.
      hide_in_alt_screen: true

    # mouse setting
    mouse:
      # whether or not to hide mouse when typing
      #
      # Default value: true
      hide_while_typing: true

    # Some VT sequences should need access permissions.
    #
    # These can be to:
    # - allow     Allows the given functionality
    # - deny      Denies the given functionality
    # - ask       Asks the user interactively via popup dialog for permission of the given action.
    #
    # Default for all of these entries should be: "ask".
    permissions:
      # Allows changing the font via `OSC 50 ; Pt ST`.
      change_font: ask
      # Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`.
      # The response can be read from stdin as sequence `OSC 314 ; <screen capture> ST`
      capture_buffer: ask
      # Allows displaying the "Host Writable Statusline" programmatically using `DECSSDT 2`.
      display_host_writable_statusline: ask

    # If enabled, and you double-click on a word in the primary screen,
    # all other words matching this word will be highlighted as well.
    # So the double-clicked word will be selected as well as highlighted, along with
    # all other words being simply highlighted.
    #
    # This is currently implemented by initiating a search on the double-clicked word.
    # Therefore one can even use FocusNextSearchMatch and FocusPreviousSearchMatch to
    # jump to the next/previous same word, also outside of the current viewport.
    #
    # Default: true
    highlight_word_and_matches_on_double_click: true

    # Font related configuration (font face, styles, size, rendering mode).
    font:
      # Initial font size in pixels.
      size: 20

      # DPI scaling factor applied on top of the system configured on (default: 1.0).
      dpi_scale: 1.0

      # Font Locator API
      # Selects an engine to use for locating font files on the system.
      # This is implicitly also responsible for font fallback
      # Possible values are:
      # - native          : automatically choose the best available on the current platform
      # - fontconfig      : uses fontconfig to select fonts
      # - CoreText        : uses OS/X CoreText to select fonts.
      # - DirectWrite     : selects DirectWrite engine (Windows only)
      locator: native

      # Text shaping related settings
      text_shaping:
        # Selects which text shaping and font rendering engine to use.
        # Supported values are:
        # - native      : automatically choose the best available on the current platform.
        # - DirectWrite : selects DirectWrite engine (Windows only)
        # - CoreText    : selects CoreText engine (Mac OS/X only) (currently not implemented)
        # - OpenShaper  : selects OpenShaper (harfbuzz/freetype/fontconfig, available on all
        #                 platforms)
        engine: native

      # Uses builtin textures for pixel-perfect box drawing.
      # If disabled, the font's provided box drawing characters
      # will be used (Default: true).
      builtin_box_drawing: true

      # Font render modes tell the font rasterizer engine what rendering technique to use.
      #
      # Modes available are:
      # - lcd          Uses a subpixel rendering technique optimized for LCD displays.
      # - light        Uses a subpixel rendering technique in gray-scale.
      # - gray         Uses standard gray-scaled anti-aliasing.
      # - monochrome   Uses pixel-perfect bitmap rendering.
      render_mode: gray

      # Indicates whether or not to include *only* monospace fonts in the font and
      # font-fallback list (Default: true).
      strict_spacing: false

      # Font family to use for displaying text.
      #
      # A font can be either described in detail as below or as a
      # simple string value (e.g. "monospace" with the appropriate
      # weight/slant applied automatically).
      regular:
        # Font family defines the font family name, such as:
        # Fira Code", "Courier New", or "monospace" (default).
        family: "Iosevka Term SS09 Light"

        # Font weight can be one of:
        #   thin, extra_light, light, demilight, book, normal,
        #   medium, demibold, bold, extra_bold, black, extra_black.
        weight: light

        # Font slant can be one of: normal, italic, oblique.
        slant: normal

        # Set of optional font features to be enabled. This
        # is usually a 4-letter code, such as ss01 or ss02 etc.
        #
        # Please see your font's documentation to find out what it
        # supports.
        #
        # Default: []
        features: [ss09]

      # If bold/italic/bold_italic are not explicitly specified, the regular font with
      # the respective weight and slant will be used.
      bold:
        family: "Iosevka Term SS09"
        features: [ss09]
        weight: demibold
      italic:
        family: "Iosevka Term Curly Slab"
        weight: light
        slant: italic
      bold_italic:
        family: "Iosevka Term Curly Slab Ex"
        weight: regular
        slant: italic
      #bold: "Hack"
      #italic: "Hack"
      #bold_italic: "Hack"

      # This is a special font to be used for displaying unicode symbols
      # that are to be rendered in emoji presentation.
      # Defaults to "emoji".
      emoji: "Noto Color Emoji"

    # Indicates whether or not bold text should be rendered in bright colors,
    # for indexed colors.
    #
    # If disabled, normal color will be used instead.
    #
    # Default: false
    draw_bold_text_with_bright_colors: false

    # Terminal cursor display configuration
    cursor:
      # Supported shapes are:
      #
      # - block         a filled rectangle
      # - rectangle     just the outline of a block
      # - underscore    a line under the text
      # - bar:          the well known i-Beam
      shape: "bar"
      # Determines whether or not the cursor will be blinking over time.
      blinking: false
      # Blinking interval (in milliseconds) to use when cursor is blinking.
      blinking_interval: 500

    # vi-like normal-mode specific settings.
    # Note, currently only the cursor can be customized.
    normal_mode:
      cursor:
        shape: block
        blinking: false
        blinking_interval: 500

    # vi-like visual/visual-line/visual-block mode specific settings.
    # Note, currently only the cursor can be customized.
    visual_mode:
      cursor:
        shape: block
        blinking: false
        blinking_interval: 500

    # Time duration in milliseconds for which yank highlight is shown.
    vi_mode_highlight_timeout: 300

    # Configures a `scrolloff` for cursor movements in normal and visual (block) modes.
    #
    # Default: 8
    vi_mode_scrolloff: 8

    status_line:
      # Either none or indicator.
      # This only reflects the initial state of the status line, as it can
      # be changed at any time during runtime by the user or by an application.
      display: none

      # Position to place the status line to, if it is to be shown.
      # This can be either value `top` or value `bottom`.
      # Default: bottom
      position: bottom

      # Synchronize the window title with the Host Writable status_line if
      # and only if the host writable status line was denied to be shown.
      # Default: false
      sync_to_window_title: false

    # Background configuration
    background:
      # Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully
      # transparent. Only values between 0.0 and 1.0 are allowed.
      opacity: 1.0
      # Some platforms can blur the transparent background (currently only Windows 10 is supported).
      blur: false

    # Specifies a colorscheme to use (alternatively the colors can be inlined).
    colors: "default"

    # Hyperlinks (via OSC-8) can be stylized and colorized on hover.
    hyperlink_decoration:
      normal: dotted
      hover: underline

# Color Profiles
# --------------
#
# Here you can configure your color profiles, whereas a color can be expressed in standard web format,
# with a leading # followed by red/green/blue values, 7 characters in total.
# You may alternatively use 0x as prefix instead of #.
# For example 0x102030 is equal to '#102030'.
color_schemes:
  default:
    # Default colors
    default:
      # Default background color (this can be made transparent, see above).
      background: "#11171d"
      # Default foreground text color.
      foreground: "#e3e0cd"

    # Background image support.
    background_image:
      # Full path to the image to use as background.
      #
      # Default: empty string (disabled)
      # path: '/Users/trapni/Pictures/bg.png'

      # Image opacity to be applied to make the image not look to intense
      # and not get too distracted by the background image.
      # Default: 0.5
      opacity: 0.5

      # Optionally blurs background image to make it less distracting
      # and keep the focus on the actual terminal contents.
      #
      # Default: false
      blur: false

    # Mandates the color of the cursor and potentially overridden text.
    #
    # The color can be specified in RGB as usual, plus
    # - CellForeground: Selects the cell's foreground color.
    # - CellBackground: Selects the cell's background color.
    cursor:
      # Specifies the color to be used for the actual cursor shape.
      #
      # Default: CellForeground
      default: "#00d992"
      # Specifies the color to be used for the characters that would
      # be covered otherwise.
      #
      # Default: CellBackground
      text: CellBackground

    # color to pick for hyperlinks decoration, when hovering
    hyperlink_decoration:
      normal: "#f0f000"
      hover: "#ff0000"

    # Color to pick for vi_mode highlights.
    # The value format is equivalent to how selection colors and alpha contribution is defined.
    vi_mode_highlight:
      foreground: CellForeground
      foreground_alpha: 1.0
      background: "#ffa500"
      background_alpha: 0.5

    # Color override for the current cursor's line when in vi_mode:
    # The value format is equivalent to how selection colors and alpha contribution is defined.
    # To disable cursorline in vi_mode, set foreground to CellForeground and background to CellBackground.
    vi_mode_cursorline:
      foreground: "#ffffff"
      foreground_alpha: 0.2
      background: "#808080"
      background_alpha: 0.4

    # The text selection color can be customized here.
    # Leaving a value empty will default to the inverse of the content's color values.
    #
    # The color can be specified in RGB as usual, plus
    # - CellForeground: Selects the cell's foreground color.
    # - CellBackground: Selects the cell's background color.
    selection:
      # Specifies the color to be used for the selected text.
      #
      # Default: CellBackground
      foreground: CellForeground
      # Specifies the alpha value (between 0.0 and 1.0) the configured foreground color
      # will contribute to the original color.
      #
      # A value of 1.0 will paint over, whereas a value of 0.5 will give
      # a look of a half-transparently painted grid cell.
      foreground_alpha: 1.0
      # Specifies the color to be used for the selected background.
      #
      # Default: CellForeground
      background: "#4040f0"
      # Specifies the alpha value (between 0.0 and 1.0) the configured background color
      # will contribute to the original color.
      #
      # A value of 1.0 will paint over, whereas a value of 0.5 will give
      # a look of a half-transparently painted grid cell.
      background_alpha: 0.5

    # Search match highlighting. Similar to selection highlighting.
    search_highlight:
      foreground: CellBackground
      background: CellForeground
      foreground_alpha: 1.0
      background_alpha: 1.0

    # Search match highlighting (focused term). Similar to selection highlighting.
    search_highlight_focused:
      foreground: CellBackground
      background: CellForeground
      foreground_alpha: 1.0
      background_alpha: 1.0

    # Coloring for the word that is highlighted due to double-clicking it.
    #
    # The format is similar to selection highlighting.
    word_highlight_current:
      foreground: CellForeground
      background: "#909090"
      foreground_alpha: 1.0
      background_alpha: 0.5

    # Coloring for the word that is highlighted due to double-clicking
    # another word that matches this word.
    #
    # The format is similar to selection highlighting.
    word_highlight_other:
      foreground: CellForeground
      background: "#909090"
      foreground_alpha: 1.0
      background_alpha: 0.5

    # Defines the colors to be used for the Indicator status line.
    # Values must be in RGB form.
    indicator_statusline:
      # Default: default background
      foreground: "#808080"
      # Default: default foreground
      background: "#000000"

    # Alternate colors to be used for the indicator status line when
    # this terminal is currently not in focus.
    indicator_statusline_inactive:
      # Default: default background
      foreground: "#808080"
      # Default: default foreground
      background: "#000000"

    # Colors for the IME (Input Method Editor) area.
    input_method_editor:
      # Default: default #FFFFFF
      foreground: "#FFFFFF"
      # Default: default #FF0000
      background: "#FF0000"

    # Normal colors
    normal:
      black: "#000000"
      red: "#ff0035"
      green: "#85ff00"
      yellow: "#ffc900"
      blue: "#00a7ff"
      magenta: "#cb01ff"
      cyan: "#00e0ff"
      white: "#f0f0f0"

    # Bright colors
    bright:
      black: "#000000"
      red: "#ffb4af"
      green: "#d2ffba"
      yellow: "#ffebb7"
      blue: "#b1deff"
      magenta: "#edb5ff"
      cyan: "#bdf4ff"
      white: "#ffffff"
    # Dim (faint) colors, if not set, they're automatically computed based on normal colors.
    # dim:
    #     black:   '#1d1f21'
    #     red:     '#cc342b'
    #     green:   '#198844'
    #     yellow:  '#fba922'
    #     blue:    '#3971ed'
    #     magenta: '#a36ac7'
    #     cyan:    '#3971ed'
    #     white:   '#c5c8c6'

# Key Bindings
# ------------
#
# In this section you can customize key bindings.
# Each array element in `input_mapping` represents one key binding,
# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as
# the `key` or `mouse` -  in order to activate the corresponding action,
#
# Additionally one can filter input mappings based on special terminal modes using the `modes` option:
# - Alt       : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer.
# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode).
# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode).
# - Select    : The terminal has currently an active grid cell selection (such as selected text).
# - Insert    : The Insert input mode is active, that is the default and one way to test
#               that the input mode is not in normal mode or any of the visual select modes.
# - Search    : There is a search term currently being edited or already present.
# - Trace     : The terminal is currently in trace-mode, i.e., each VT sequence can be interactively
#               single-step executed using custom actions. See TraceEnter/TraceStep/TraceLeave actions.
#
# You can combine these modes by concatenating them via | and negate a single one
# by prefixing with ~.
#
# The `modes` option defaults to not filter at all (the input mappings always
# match based on modifier and key press / mouse event).
#
# `key` represents keys on your keyboard, and `mouse` represents buttons
# as well as the scroll wheel.
#
# Modifiers:
# - Alt
# - Control
# - Shift
# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else)
#
# Keys can be expressed case-insensitively symbolic:
#   APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET,
#   MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE
#   Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
#   DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown,
#   Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock,
#   Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal,
#   Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4,
#   Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9
# or in case of standard characters, just the character.
#
# Mouse buttons can be one of the following self-explanatory ones:
#   Left, Middle, Right, WheelUp, WheelDown
#
# Actions:
# - CancelSelection   Cancels currently active selection, if any.
# - ChangeProfile     Changes the profile to the given profile `name`.
# - ClearHistoryAndReset    Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application.
# - CopyPreviousMarkRange   Copies the most recent range that is delimited by vertical line marks into clipboard.
# - CopySelection     Copies the current selection into the clipboard buffer.
# - DecreaseFontSize  Decreases the font size by 1 pixel.
# - DecreaseOpacity   Decreases the default-background opacity by 5%.
# - FocusNextSearchMatch     Focuses the next search match (if any).
# - FocusPreviousSearchMatch Focuses the next previous match (if any).
# - FollowHyperlink   Follows the hyperlink that is exposed via OSC 8 under the current cursor position.
# - IncreaseFontSize  Increases the font size by 1 pixel.
# - IncreaseOpacity   Increases the default-background opacity by 5%.
# - NewTerminal       Spawns a new terminal at the current terminals current working directory.
# - NoSearchHighlight Disables current search highlighting, if anything is still highlighted due to a prior search.
# - OpenConfiguration Opens the configuration file.
# - OpenFileManager   Opens the current working directory in a system file manager.
# - PasteClipboard    Pastes clipboard to standard input. Pass boolean parameter 'strip' to indicate whether or not to strip repetitive whitespaces down to one and newlines to whitespaces.
# - PasteSelection    Pastes current selection to standard input.
# - Quit              Quits the application.
# - ReloadConfig      Forces a configuration reload.
# - ResetConfig       Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite!
# - ResetFontSize     Resets font size to what is configured in the config file.
# - ScreenshotVT      Takes a screenshot in form of VT escape sequences.
# - ScrollDown        Scrolls down by the multiplier factor.
# - ScrollMarkDown    Scrolls one mark down (if none present, bottom of the screen)
# - ScrollMarkUp      Scrolls one mark up
# - ScrollOneDown     Scrolls down by exactly one line.
# - ScrollOneUp       Scrolls up by exactly one line.
# - ScrollPageDown    Scrolls a page down.
# - ScrollPageUp      Scrolls a page up.
# - ScrollToBottom    Scrolls to the bottom of the screen buffer.
# - ScrollToTop       Scrolls to the top of the screen buffer.
# - ScrollUp          Scrolls up by the multiplier factor.
# - SearchReverse     Initiates search mode (starting to search at current cursor position, moving upwards).
# - SendChars         Writes given characters in `chars` member to the applications input.
# - ToggleAllKeyMaps  Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others).
# - ToggleFullScreen  Enables/disables full screen mode.
# - ToggleInputProtection Enables/disables terminal input protection.
# - ToggleStatusLine  Shows/hides the VT320 compatible Indicator status line.
# - ToggleTitleBar    Shows/Hides titlebar
# - TraceBreakAtEmptyQueue Executes any pending VT sequence from the VT sequence buffer in trace mode, then waits.
# - TraceEnter        Enables trace mode, suspending execution until explicitly requested to continue (See TraceLeave and TraceStep).
# - TraceLeave        Disables trace mode. Any pending VT sequence will be flushed out and normal execution will be resumed.
# - TraceStep         Executes a single VT sequence that is to be executed next.
# - ViNormalMode      Enters/Leaves Vi-like normal mode. The cursor can then be moved via h/j/k/l movements in normal mode and text can be selected via v, yanked via y, and clipboard pasted via p.
# - WriteScreen       Writes VT sequence in `chars` member to the screen (bypassing the application).

input_mapping:
  - { mods: [Control], mouse: Left, action: FollowHyperlink }
  - { mods: [], mouse: Middle, action: PasteSelection }
  - { mods: [], mouse: WheelDown, action: ScrollDown }
  - { mods: [], mouse: WheelUp, action: ScrollUp }
  - { mods: [Alt], key: Enter, action: ToggleFullscreen }
  - { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity }
  - { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity }
  - { mods: [Control, Alt], key: S, action: ScreenshotVT }
  - { mods: [Control, Shift], key: Plus, action: IncreaseFontSize }
  - { mods: [Control], key: "0", action: ResetFontSize }
  - { mods: [Control, Shift], key: Minus, action: DecreaseFontSize }
  - { mods: [Control, Shift], key: "_", action: DecreaseFontSize }
  - { mods: [Control, Shift], key: N, action: NewTerminal }
  - { mods: [Control, Shift], key: V, action: PasteClipboard, strip: false }
  - { mods: [Control, Alt], key: V, action: PasteClipboard, strip: true }
  - { mods: [Control], key: C, action: CopySelection, mode: "Select|Insert" }
  - { mods: [Control], key: C, action: CancelSelection, mode: "Select|Insert" }
  - {
      mods: [Control],
      key: V,
      action: PasteClipboard,
      strip: false,
      mode: "Select|Insert",
    }
  - { mods: [Control], key: V, action: CancelSelection, mode: "Select|Insert" }
  - { mods: [], key: Escape, action: CancelSelection, mode: "Select|Insert" }
  - { mods: [Control, Shift], key: Space, action: ViNormalMode, mode: "Insert" }
  - { mods: [Control, Shift], key: Comma, action: OpenConfiguration }
  - { mods: [Control, Shift], key: Q, action: Quit }
  - { mods: [Control], mouse: WheelDown, action: DecreaseFontSize }
  - { mods: [Control], mouse: WheelUp, action: IncreaseFontSize }
  - { mods: [Shift], key: DownArrow, action: ScrollOneDown }
  - { mods: [Shift], key: End, action: ScrollToBottom }
  - { mods: [Shift], key: Home, action: ScrollToTop }
  - { mods: [Shift], key: PageDown, action: ScrollPageDown }
  - { mods: [Shift], key: PageUp, action: ScrollPageUp }
  - { mods: [Shift], key: UpArrow, action: ScrollOneUp }
  - { mods: [Control, Alt], key: K, action: ScrollMarkUp, mode: "~Alt" }
  - { mods: [Control, Alt], key: J, action: ScrollMarkDown, mode: "~Alt" }
  - { mods: [Shift], mouse: WheelDown, action: ScrollPageDown }
  - { mods: [Shift], mouse: WheelUp, action: ScrollPageUp }
  - { mods: [Control, Alt], key: O, action: OpenFileManager }
  - { mods: [Control, Alt], key: ".", action: ToggleStatusLine }
  - { mods: [Control, Shift], key: "F", action: SearchReverse }
  - { mods: [Control, Shift], key: "H", action: NoSearchHighlight }
  - { mods: [], key: "F3", action: FocusNextSearchMatch }
  - { mods: [Shift], key: "F3", action: FocusPreviousSearchMatch }
#   - { mods: [Control, Meta],  key: 'E',           action: TraceEnter,             mode: "~Trace" }
#   - { mods: [Control, Meta],  key: 'E',           action: TraceLeave,             mode: "Trace" }
#   - { mods: [Control, Meta],  key: 'N',           action: TraceStep,              mode: "Trace" }
#   - { mods: [Control, Meta],  key: 'F',           action: TraceBreakAtEmptyQueue, mode: "Trace" }