# GENERAL

import = [
    "~/.config/alacritty/themes/catpuccin-latte.toml",
]

live_config_reload = true

# ipc_socket = true | false # (unix only)
# Offer IPC using alacritty msg
# Default: true

# ipc_socket = true




# ENV

[env]
#TERM = "xterm-256color"
TERM = "alacritty"



# WINDOW

[window]
startup_mode = "Windowed"
title = "eTerm"
dynamic_title = true
dynamic_padding = true
decorations = "Full"
decorations_theme_variant = "Dark"
opacity = 0.8
blur = true
dimensions = { columns = 160, lines = 45 }



# SCROLLING

[scrolling]
history = 100000
multiplier = 3


# FONT
[font]
normal = { family = "Hack Nerd Font Mono" }
size = 13
builtin_box_drawing = true


# COLORS

[colors]

[colors.search]
matches = { foreground = "#181818", background = "#ac4242" }
focused_match = { foreground = "#181818", background = "#f4bf75" }

[colors.dim]
black = "#0f0f0f"
red = "#712b2b"
green = "#5f6f3a"
yellow = "#a17e4d"
blue = "#456877"
magenta = "#704d68"
cyan = "#4d7770"
white = "#8e8e8e"

## Cobalt2 theme
[colors.primary]
background = '#122637'
foreground = '#ffffff'

[colors.cursor]
text = '#122637'
cursor = '#f0cb09'

# Normal colors
[colors.normal]
black   = '#000000'
red     = '#ff0000'
green   = '#37dd21'
yellow  = '#fee409'
blue    = '#1460d2'
magenta = '#ff005d'
cyan    = '#00bbbb'
white   = '#bbbbbb'

# Bright colors
[colors.bright]
black   = '#545454'
red     = '#f40d17'
green   = '#3bcf1d'
yellow  = '#ecc809'
blue    = '#5555ff'
magenta = '#ff55ff'
cyan    = '#6ae3f9'
white   = '#ffffff'
# BELL

[bell]
animation = "EaseOutExpo"
duration = 0
#color = "#ffffff"
#command = "None"


# SELECTION

[selection]
semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
save_to_clipboard = true


# CURSOR

[cursor]
style = { shape = "Beam", blinking = "on" }
unfocused_hollow = true
thickness = 0.15


# MOUSE

[mouse]
hide_when_typing = false


# HINTS
# This section documents the [hints] table of the configuration file.
# Terminal hints can be used to find text or hyperlinks in the visible part of the terminal and pipe it to other applications.

# alphabet = "<string>"
# Keys used for the hint labels.
# Default: "jfkdls;ahgurieowpq"

# enabled = [{ <regex>, <hyperlinks>, <post_processing>, <persist>, <action>, <command> <binding>, <mouse> },]
# Array with all available hints.
# Each hint must have at least one of regex or hyperlinks and either an action or a command.

# regex = "<string>"
# Regex each line will be compared against.

# hyperlinks = true | false
# When this is true, all OSC 8 escape sequence hyperlinks will be included in the hints.

# post_processing = true | false
# When this is true, heuristics will be used to shorten the match if there are characters likely not to be part of the hint (e.g. a trailing .). This is most useful for URIs and applies only to regex matches.

# persist = true | false
# When this is true, hints remain persistent after selection.

# action = "Copy" | "Paste" | "Select" | "MoveViModeCursor"
# Copy
# Copy the hint's text to the clipboard.

# Paste
# Paste the hint's text to the terminal or search.

# Select
# Select the hint's text.

# MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint.

# command = "<string>" | { program = "<string>", args = ["<string>",] }
# Command which will be executed when the hint is clicked or selected with the binding.
# The hint's text is always attached as the last argument.

# binding = { key = "<string>", mods = "<string>", mode = "<string>" }
# See keyboard.bindings for documentation on available values.
# This controls which key binding is used to start the keyboard hint selection process.

# mouse = { mods = "<string>", enabled = true | false }
# See keyboard.bindings for documentation on available mods.
# The enabled field controls if the hint should be underlined when hovering over the hint text with all mods pressed.

# Default:

# [[hints.enabled]]
# command = "xdg-open" # On Linux/BSD
# # command = "open" # On macOS
# hyperlinks = true
# post_processing = true
# persist = false
# mouse.enabled = true
# binding = { key = "U", mods = "Control|Shift" }
# regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"

#[hints]

# KEYBOARD
# This section documents the [keyboard] table of the configuration file.

# bindings = [{ <key>, <mods>, <mode>, <action> | <chars> },]

# To unset a default binding, you can use the action "ReceiveChar" to remove it or "None" to inhibit any action.
# Multiple keybindings can be triggered by a single key press and will be executed in the order they are defined in.

# key = "<string>"

# The regular keys like "A", "0", and "Я" can be mapped directly without any special syntax. Full list of named keys like "F1" and the syntax for dead keys can be found here:

    # https://docs.rs/winit/latest/winit/keyboard/enum.NamedKey.html
    # https://docs.rs/winit/latest/winit/keyboard/enum.Key.html#variant.Dead

# Numpad keys are prefixed by Numpad: "NumpadEnter" | "NumpadAdd" | "NumpadComma" | "NumpadDivide" | "NumpadEquals" | "NumpadSubtract" | "NumpadMultiply" | "Numpad[0-9]".
# The key field also supports using scancodes, which are specified as a decimal number.

# mods = "Command" | "Control" | "Option" | "Super" | "Shift" | "Alt"
# Multiple modifiers can be combined using |, like this: "Control | Shift".

# mode = "AppCursor" | "AppKeypad" | "Search" | "Alt" | "Vi"
# This defines a terminal mode which must be active for this binding to have an effect.
# Prepending ~ to a mode will require the mode to not = be active for the binding to take effect.
# Multiple modes can be combined using |, like this: "~Vi|Search".

# chars = "<string>"
# Writes the specified string to the terminal.

# LIST OF ACTIONS

# format:
# action name
# description of action function

# Expandable List:

    # None
    # No action.

    # Paste
    # Paste contents of system clipboard.

    # Copy
    # Store current selection into clipboard.

    # ReceiveChar
    # Allow receiving char input.

    # IncreaseFontSize
    # Increase font size.

    # DecreaseFontSize
    # Decrease font size.

    # ResetFontSize
    # Reset font size to the config value.

    # ScrollPageUp
    # Scroll exactly one page up.

    # ScrollPageDown
    # Scroll exactly one page down.

    # ScrollHalfPageUp
    # Scroll half a page up.

    # ScrollHalfPageDown
    # Scroll half a page down.

    # ScrollLineUp
    # Scroll one line up.

    # ScrollLineDown
    # Scroll one line down.

    # ScrollToTop
    # Scroll all the way to the top.

    # ScrollToBottom
    # Scroll all the way to the bottom.

    # ClearHistory
    # Clear the display buffer(s) to remove history.

    # Hide
    # Hide the Alacritty window.

    # Minimize
    # Minimize the Alacritty window.

    # Quit
    # Quit Alacritty.

    # ClearLogNotice
    # Clear warning and error notices.

    # SpawnNewInstance
    # Spawn a new instance of Alacritty.

    # CreateNewWindow
    # Create a new Alacritty window.

    # ToggleFullscreen
    # Toggle fullscreen.

    # ToggleMaximized
    # Toggle maximized.

    # ClearSelection
    # Clear active selection.

    # ToggleViMode
    # Toggle vi mode.

    # SearchForward
    # Start a forward buffer search.

    # SearchBackward
    # Start a backward buffer search.

#

# Vi mode actions
# Expandable List:

    # Up
    # Move up.

    # Down
    # Move down.

    # Left
    # Move left.

    # Right
    # Move right.

    # First
    # First column, or beginning of the line when already at the first column.

    # Last
    # Last column, or beginning of the line when already at the last column.

    # FirstOccupied
    # First non-empty cell in this terminal row, or first non-empty cell of the line when already at the first cell of the row.

    # High
    # Move to top of screen.

    # Middle
    # Move to center of screen.

    # Low
    # Move to bottom of screen.

    # SemanticLeft
    # Move to start of semantically separated word.

    # SemanticRight
    # Move to start of next semantically separated word.

    # SemanticLeftEnd
    # Move to end of previous semantically separated word.

    # SemanticRightEnd
    # Move to end of semantically separated word.

    # WordLeft
    # Move to start of whitespace separated word.

    # WordRight
    # Move to start of next whitespace separated word.

    # WordLeftEnd
    # Move to end of previous whitespace separated word.

    # WordRightEnd
    # Move to end of whitespace separated word.

    # Bracket
    # Move to opposing bracket.

    # ToggleNormalSelection
    # Toggle normal vi selection.

    # ToggleLineSelection
    # Toggle line vi selection.

    # ToggleBlockSelection
    # Toggle block vi selection.

    # ToggleSemanticSelection
    # Toggle semantic vi selection.

    # SearchNext
    # Jump to the beginning of the next match.

    # SearchPrevious
    # Jump to the beginning of the previous match.

    # SearchStart
    # Jump to the next start of a match to the left of the origin.

    # SearchEnd
    # Jump to the next end of a match to the right of the origin.

    # Open
    # Launch the URL below the vi mode cursor.

    # CenterAroundViCursor
    # Centers the screen around the vi mode cursor.

    # InlineSearchForward
    # Search forward within the current line.

    # InlineSearchBcakward
    # Search backward within the current line.

    # InlineSearchForwardShort
    # Search forward within the current line, stopping just short of the character.

    # InlineSearchBackwardShort
    # Search backward within the current line, stopping just short of the character.

    # InlineSearchNext
    # Jump to the next inline search match.

    # InlineSearchPrevious
    # Jump to the previous inline search match.

    # Search actions:
    # SearchFocusNext

    # Move the focus to the next search match.
    # SearchFocusPrevious

    # Move the focus to the previous search match.
    # SearchConfirm

    # Confirm the active search.
    # SearchCancel

    # Cancel the active search.
    # SearchClear

    # Reset the search regex.
    # SearchDeleteWord

    # Delete the last word in the search regex.
    # SearchHistoryPrevious

    # Go to the previous regex in the search history.
    # SearchHistoryNext

    # Go to the next regex in the search history.
    # macOS exclusive:

    # ToggleSimpleFullscreen
    # Enter fullscreen without occupying another space.

    # HideOtherApplications
    # Hide all windows other than Alacritty.

    # CreateNewTab
    # Create new window in a tab.

    # SelectNextTab
    # Select next tab.

    # SelectPreviousTab
    # Select previous tab.

    # SelectTab1
    # Select the first tab.

    # SelectTab2
    # Select the second tab.

    # SelectTab3
    # Select the third tab.

    # SelectTab4
    # Select the fourth tab.

    # SelectTab5
    # Select the fifth tab.

    # SelectTab6
    # Select the sixth tab.

    # SelectTab7
    # Select the seventh tab.

    # SelectTab8
    # Select the eighth tab.

    # SelectTab9
    # Select the ninth tab.

    # SelectLastTab
    # Select the last tab.

    # Linux/BSD exclusive:
    # CopySelection

    # Copy from the selection buffer.
    # PasteSelection

    # Paste from the selection buffer.
    # Default: See alacritty-bindings(5)


#

# Example:

# [keyboard]
# bindings = [
# { key = "N", mods = "Control|Shift", action = "CreateNewWindow" },
# { key = "L", mods = "Control|Shift", chars = "l" },
# ]

#[keyboard]


# DEBUG
# This section documents the [debug] table of the configuration file.
# Debug options are meant to help troubleshoot issues with Alacritty. These can change or be removed entirely without warning, so their stability shouldn't be relied upon.

# render_timer = true | false
# Display the time it takes to draw each frame.
# Default: false

# persistent_logging = true | false
# Keep the log file after quitting Alacritty.
# Default: false
# log_level = "Off" | "Error" | "Warn" | "Info" | "Debug" | "Trace"
# Default: "Warn"

# To add extra libraries to logging ALACRITTY_EXTRA_LOG_TARGETS variable can be used.
# Example:

# ALACRITTY_EXTRA_LOG_TARGETS="winit;vte" alacritty -vvv

# renderer = "glsl3" | "gles2" | "gles2_pure" | "None"
# Force use of a specific renderer, "None" will use the highest available one.
# Default: "None"

# print_events = true | false
# Log all received window events.
# Default: false

# highlight_damage = true | false
# Highlight window damage information.
# Default: false

# prefer_egl = true | false
# Use EGL as display API if the current platform allows it. Note that transparency may not work with EGL on Linux/BSD.
# Default: false

#[debug]


# SEE ALSO
# alacritty(1), alacritty-msg(1), alacritty-bindings(5)

# BUGS
# Found a bug? Please report it at https://github.com/alacritty/alacritty/issues.

# MAINTAINERS
# · Christian Duerr <contact@christianduerr.com>
# · Kirill Chibisov <contact@kchibisov.com>
