From 64fc8a13d3fa7f700947874b0fd29c71b43a0a1a Mon Sep 17 00:00:00 2001 From: Ismo Vuorinen Date: Tue, 5 Sep 2023 00:17:40 +0300 Subject: [PATCH] feat(config): alacritty configuration --- config/alacritty/alacritty.yml | 310 +++++++++++++++++++++++++++++++++ 1 file changed, 310 insertions(+) create mode 100644 config/alacritty/alacritty.yml diff --git a/config/alacritty/alacritty.yml b/config/alacritty/alacritty.yml new file mode 100644 index 0000000..a8f5c95 --- /dev/null +++ b/config/alacritty/alacritty.yml @@ -0,0 +1,310 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty it self. +env: + # TERM env customization. + # + # If this property is not set, alacritty will set it to xterm-256color. + # + # Note that some xterm terminfo databases don't declare support for italics. + # You can verify this by checking for the presence of `smso` and `sitm` in + # `infocmp xterm-256color`. + TERM: xterm-256color + +# Window dimensions in character columns and lines +# (changes require restart) +window: + dimensions: + columns: 130 + lines: 40 + + # Adds this many blank pixels of padding around the window + # Units are physical pixels; this is not DPI aware. + # (change requires restart) + padding: + x: 5 + y: 5 + + decorations: buttonless + + opacity: 0.85 + +# When true, bold text is drawn using the bright variant of colors. +draw_bold_text_with_bright_colors: true + +# Font configuration (changes require restart) +font: + # The normal (roman) font face to use. + normal: + family: JetBrainsMono Nerd Font + # Style can be specified to pick a specific face. + # style: Regular + + # The bold font face + bold: + family: JetBrainsMono Nerd Font + # Style can be specified to pick a specific face. + style: Bold + + # The italic font face + italic: + family: JetBrainsMono Nerd Font + # Style can be specified to pick a specific face. + style: Italic + + # Point size of the font + size: 14.0 + + # Offset is the extra space around each character. offset.y can be thought of + # as modifying the linespacing, and offset.x as modifying the letter spacing. + offset: + x: 0 + y: 0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increase the x offset to move the glyph to + # the right, increase the y offset to move the glyph upward. + glyph_offset: + x: 0 + y: 0 + +# Should display the render timer +debug.render_timer: false + +# https://github.com/catppuccin/alacritty +colors: + primary: + background: "#1E1E2E" # base + foreground: "#CDD6F4" # text + # Bright and dim foreground colors + dim_foreground: "#CDD6F4" # text + bright_foreground: "#CDD6F4" # text + + # Cursor colors + cursor: + text: "#1E1E2E" # base + cursor: "#F5E0DC" # rosewater + vi_mode_cursor: + text: "#1E1E2E" # base + cursor: "#B4BEFE" # lavender + + # Search colors + search: + matches: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + focused_match: + foreground: "#1E1E2E" # base + background: "#A6E3A1" # green + footer_bar: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + + # Keyboard regex hints + hints: + start: + foreground: "#1E1E2E" # base + background: "#F9E2AF" # yellow + end: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + + # Selection colors + selection: + text: "#1E1E2E" # base + background: "#F5E0DC" # rosewater + + # Normal colors + normal: + black: "#45475A" # surface1 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#BAC2DE" # subtext1 + + # Bright colors + bright: + black: "#585B70" # surface2 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#A6ADC8" # subtext0 + + # Dim colors + dim: + black: "#45475A" # surface1 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#BAC2DE" # subtext1 + + indexed_colors: + - { index: 16, color: "#FAB387" } + - { index: 17, color: "#F5E0DC" } + +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Possible values for `animation` +# `Ease` +# `EaseOut` +# `EaseOutSine` +# `EaseOutQuad` +# `EaseOutCubic` +# `EaseOutQuart` +# `EaseOutQuint` +# `EaseOutExpo` +# `EaseOutCirc` +# `Linear` +# +# To completely disable the visual bell, set its duration to 0. +# +# visual_bell: +# animation: EaseOutExpo +# duration: 0 + +# Key bindings +# +# Each binding is defined as an object with some properties. Most of the +# properties are optional. All of the alphabetical keys should have a letter for +# the `key` value such as `V`. Function keys are probably what you would expect +# as well (F1, F2, ..). The number keys above the main keyboard are encoded as +# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`, +# etc. These all match the glutin::VirtualKeyCode variants. +# +# Possible values for `mods` +# `Command`, `Super` refer to the super/command/windows key +# `Control` for the control key +# `Shift` for the Shift key +# `Alt` and `Option` refer to alt/option +# +# mods may be combined with a `|`. For example, requiring control and shift +# looks like: +# +# mods: Control|Shift +# +# The parser is currently quite sensitive to whitespace and capitalization - +# capitalization must match exactly, and piped items must not have whitespace +# around them. +# +# Either an `action`, `chars`, or `command` field must be present. +# `action` must be one of `Paste`, `PasteSelection`, `Copy`, or `Quit`. +# `chars` writes the specified string every time that binding is activated. +# These should generally be escape sequences, but they can be configured to +# send arbitrary strings of bytes. +# `command` must be a map containing a `program` string, and `args` array of +# strings. For example: +# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } } +key_bindings: + - { key: V, mods: Command, action: Paste } + - { key: C, mods: Command, action: Copy } + - { key: Q, mods: Command, action: Quit } + - { key: W, mods: Command, action: Quit } + - { key: N, mods: Command, action: SpawnNewInstance } + - { key: Home, chars: "\eOH", mode: AppCursor } + - { key: Home, chars: "\e[1~", mode: ~AppCursor } + - { key: End, chars: "\eOF", mode: AppCursor } + - { key: End, chars: "\e[4~", mode: ~AppCursor } + - { key: PageUp, mods: Shift, chars: "\e[5;2~" } + - { key: PageUp, mods: Control, chars: "\e[5;5~" } + - { key: PageUp, chars: "\e[5~" } + - { key: PageDown, mods: Shift, chars: "\e[6;2~" } + - { key: PageDown, mods: Control, chars: "\e[6;5~" } + - { key: PageDown, chars: "\e[6~" } + - { key: Left, mods: Shift, chars: "\e[1;2D" } + - { key: Left, mods: Control, chars: "\e[1;5D" } + - { key: Left, mods: Alt, chars: "\e[1;3D" } + - { key: Left, chars: "\e[D", mode: ~AppCursor } + - { key: Left, chars: "\eOD", mode: AppCursor } + - { key: Right, mods: Shift, chars: "\e[1;2C" } + - { key: Right, mods: Control, chars: "\e[1;5C" } + - { key: Right, mods: Alt, chars: "\e[1;3C" } + - { key: Right, chars: "\e[C", mode: ~AppCursor } + - { key: Right, chars: "\eOC", mode: AppCursor } + - { key: Up, mods: Shift, chars: "\e[1;2A" } + - { key: Up, mods: Control, chars: "\e[1;5A" } + - { key: Up, mods: Alt, chars: "\e[1;3A" } + - { key: Up, chars: "\e[A", mode: ~AppCursor } + - { key: Up, chars: "\eOA", mode: AppCursor } + - { key: Down, mods: Shift, chars: "\e[1;2B" } + - { key: Down, mods: Control, chars: "\e[1;5B" } + - { key: Down, mods: Alt, chars: "\e[1;3B" } + - { key: Down, chars: "\e[B", mode: ~AppCursor } + - { key: Down, chars: "\eOB", mode: AppCursor } + - { key: Tab, mods: Shift, chars: "\e[Z" } + - { key: F1, chars: "\eOP" } + - { key: F2, chars: "\eOQ" } + - { key: F3, chars: "\eOR" } + - { key: F4, chars: "\eOS" } + - { key: F5, chars: "\e[15~" } + - { key: F6, chars: "\e[17~" } + - { key: F7, chars: "\e[18~" } + - { key: F8, chars: "\e[19~" } + - { key: F9, chars: "\e[20~" } + - { key: F10, chars: "\e[21~" } + - { key: F11, chars: "\e[23~" } + - { key: F12, chars: "\e[24~" } + - { key: Back, chars: "" } + - { key: Back, mods: Alt, chars: "\e" } + - { key: Insert, chars: "\e[2~" } + - { key: Delete, chars: "\e[3~" } + + # shortcuts for tmux. the leader key is control-b (0x02) + - { key: W, mods: Command, chars: "\x02&" } # close tab (kill) + - { key: T, mods: Command, chars: "\x02c" } # new tab + - { key: RBracket, mods: Command|Shift, chars: "\x02n" } # select next tab + - { key: LBracket, mods: Command|Shift, chars: "\x02p" } # select previous tab + - { key: RBracket, mods: Command, chars: "\x02o" } # select next pane + - { key: LBracket, mods: Command, chars: "\x02;" } # select last (previously used) pane + - { key: F, mods: Command, chars: "\x02/" } # search (upwards) (see tmux.conf) + +# Mouse bindings +# +# Currently doesn't support modifiers. Both the `mouse` and `action` fields must +# be specified. +# +# Values for `mouse`: +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# Values for `action`: +# - Paste +# - PasteSelection +# - Copy (TODO) +mouse_bindings: + - { mouse: Middle, action: PasteSelection } + +mouse: + double_click: { threshold: 300 } + triple_click: { threshold: 300 } + +selection: + semantic_escape_chars: ',│`|:"'' ()[]{}<>' + +# Shell +# +# You can set shell.program to the path of your favorite shell, e.g. /bin/fish. +# Entries in shell.args are passed unmodified as arguments to the shell. +# +#shell: +# program: /bin/bash +# args: +# - --login