ALACRITTY(5)

okay bestie, welcome to ALACRITTY(5) β€” straight out of the File Formats Manual, and it's giving the TOML config glow-up πŸ’…βœ¨

🌸 NAME 🌸

Alacritty β€” the TOML configuration file format. That's it, that's the name, and yes she's iconic for it πŸ‘‘


πŸ¦‹ SYNTAX πŸ¦‹

Alacritty's config file uses the TOML format, periodt. The full spec lives at https://toml.io/en/v1.0.0 if you wanna go read the whole thing like the main character you are πŸ“–


πŸŽ€ LOCATION πŸŽ€

So here's the tea: Alacritty does not create the config file for you. She's not your mom, she's your bestie. She just looks for one in these spots on UNIX systems, in this exact order:

  1. $XDG_CONFIG_HOME/alacritty/alacritty.toml
  2. $XDG_CONFIG_HOME/alacritty.toml
  3. $HOME/.config/alacritty/alacritty.toml
  4. $HOME/.alacritty.toml
  5. /etc/alacritty/alacritty.toml

On Windows, the config file will be looked for in:

  1. %APPDATA%\alacritty\alacritty.toml

✨ GENERAL ✨

This section documents the [general] table of the configuration file. Lowkey the control room of the whole vibe πŸŽ›οΈ

  • import = ["<string>",] β€” Import additional configuration files.

Imports are loaded in order, skipping all missing files, with the importing file being loaded last. If a field is already present in a previous import, it will be replaced. (So like, last one to the group chat wins πŸ’€)

All imports must either be absolute paths starting with /, paths relative to the user's home directory starting with ~/, or paths relative from the current config file.

Example:

import = [
     "~/.config/alacritty/base16-dark.toml",
     "~/.config/alacritty/keybindings.toml",
     "alacritty-theme/themes/gruvbox_dark.toml",
]
  • working_directory = "<string>" | "None" β€” Directory the shell is started in. When this is unset, or "None", the working directory of the parent process will be used.

Default: "None"

  • live_config_reload = true | false β€” Live config reload (changes require restart).

Default: true

  • ipc_socket = true | false # (unix only) β€” Offer IPC using alacritty msg.

Default: true


🌈 ENV 🌈

Every single key-value pair in the [env] section gets added as environment variables for any process spawned by Alacritty, including its shell 🐚 Some entries may override variables set by alacritty itself β€” so like, watch out, she's got opinions.

Example:

[env]
WINIT_X11_SCALE_FACTOR = "1.0"

πŸ’œ WINDOW πŸ’œ

This section documents the [window] table of the configuration file. This is where you make her look ✨expensive✨

  • dimensions = { columns = <integer>, lines = <integer> } β€” Window dimensions (changes require restart).

Number of lines/columns (not pixels!) in the terminal. Both lines and columns must be non-zero for this to take effect. The number of columns must be at least 2, while using a value of 0 for columns and lines will fall back to the window manager's recommended size.

Default: { columns = 0, lines = 0 }

  • position = "None" | { x = <integer>, y = <integer> } # (has no effect on Wayland) β€” Window startup position.

Specified in number of pixels.

If the position is "None", the window manager will handle placement.

Default: "None"

  • padding = { x = <integer>, y = <integer> } β€” Blank space added around the window in pixels. This padding is scaled by DPI and the specified value is always added at both opposing sides.

Default: { x = 0, y = 0 }

  • dynamic_padding = true | false β€” Spread additional padding evenly around the terminal content.

Default: false

  • decorations = "Full" | "None" | "Transparent" | "Buttonless" β€” Window decorations.
    • Full β€” Borders and title bar.
    • None β€” Neither borders nor title bar.
    • Transparent (macOS only) β€” Title bar, transparent background and title bar buttons.
    • Buttonless (macOS only) β€” Title bar, transparent background and no title bar buttons.

Default: "Full"

  • opacity = <float> β€” Background opacity as a floating point number from 0.0 to 1.0. The value 0.0 is completely transparent and 1.0 is opaque.

Default: 1.0

  • blur = true | false # (works on macOS/KDE Wayland) β€” Request compositor to blur content behind transparent windows.

Default: false

  • startup_mode = "Windowed" | "Maximized" | "Fullscreen" | "SimpleFullscreen" β€” Startup mode (changes require restart).
    • Windowed β€” Regular window.
    • Maximized β€” The window will be maximized on startup.
    • Fullscreen β€” The window will be fullscreened on startup.
    • SimpleFullscreen (macOS only) β€” Same as Fullscreen, but you can stack windows on top.

Default: "Windowed"

  • title = "<string>" β€” Window title.

Default: "Alacritty"

  • dynamic_title = true | false β€” Allow terminal applications to change Alacritty's window title.

Default: true

  • class = { instance = "<string>", general = "<string>" } # (Linux/BSD only) β€” Window class.

On Wayland, general is used as app_id and instance is ignored.

Default: { instance = "Alacritty", general = "Alacritty" }

  • decorations_theme_variant = "Dark" | "Light" | "None" β€” Override the variant of the System theme/GTK theme/Wayland client side decorations. Set this to "None" to use the system's default theme variant.

Default: "None"

  • resize_increments = true | false # (works on macOS/X11/Wayland) β€” Prefer resizing window by discrete steps equal to cell dimensions.

Default: false

  • option_as_alt = "OnlyLeft" | "OnlyRight" | "Both" | "None" # (macOS only) β€” Make Option key behave as Alt.

Default: "None"

  • level = "Normal" | "AlwaysOnTop" β€” Sets window level.
    • Normal β€” Window adheres to system's default z-order.
    • AlwaysOnTop β€” Window is a toplevel window.

Default: "Normal"

Example:

[window]
padding = { x = 3, y = 3 }
dynamic_padding = true
opacity = 0.9

πŸ“ SCROLLING πŸ“

This section documents the [scrolling] table of the configuration file. Scroll up, scroll down, it's a whole journey πŸŒ€

  • history = <integer> β€” Maximum number of lines in the scrollback buffer. Specifying 0 will disable scrolling. Limited to 100000.

Default: 10000

  • multiplier = <integer> β€” Number of line scrolled for every input scroll increment.

Default: 3


🧚 FONT 🧚

This section documents the [font] table of the configuration file. This is the outfit of your terminal, fr fr ✨

  • normal = { family = "<string>", style = "<string>" }

Default:

Linux/BSD: { family = "monospace", style = "Regular" }
Windows:   { family = "Consolas",  style = "Regular" }
macOS:     { family = "Menlo",     style = "Regular" }
  • bold = { family = "<string>", style = "<string>" }

If the family is not specified, it will fall back to the value specified for the normal font.

Default: { style = "Bold" }

  • italic = { family = "<string>", style = "<string>" }

If the family is not specified, it will fall back to the value specified for the normal font.

Default: { style = "Italic" }

  • bold_italic = { family = "<string>", style = "<string>" }

If the family is not specified, it will fall back to the value specified for the normal font.

Default: { style = "Bold Italic" }

  • size = <float> β€” Font size in points.

Default: 11.25

  • offset = { x = <integer>, y = <integer> } β€” Offset is the extra space around each character. y can be thought of as modifying the line spacing, and x as modifying the letter spacing.

Default: { x = 0, y = 0 }

  • glyph_offset = { x = <integer>, y = <integer> } β€” Glyph offset determines the locations of the glyphs within their cells with the default being at the bottom. Increasing x moves the glyph to the right, increasing y moves the glyph upward.
  • builtin_box_drawing = true | false β€” When true, Alacritty will use a custom built-in font for box drawing characters (Unicode points U+2500 - U+259F), legacy computing symbols (U+1FB00 - U+1FB3B), and powerline symbols (U+E0B0 - U+E0B3).

Default: true

🌈 COLORS 🌈

Okay bestie, this section is literally the whole [colors] table of the config file. It's giving makeup palette energy. 🎨

Colors are written as hexadecimal values with a # prefix: #RRGGBB. That's it, that's the whole format, no cap. ✨

πŸ’– primary πŸ’–

This one documents the [colors.primary] table, iykyk.

  • foreground = "<string>" β€” Default: "#d8d8d8"
  • background = "<string>" β€” Default: "#181818"
  • dim_foreground = "<string>" β€” If you don't set this, it gets automatically calculated based on the foreground color. Default: "#828482"
  • bright_foreground = "<string>" β€” This color is only used when draw_bold_text_with_bright_colors is true. If you don't set it, the normal foreground gets used instead. Default: "None"

πŸ–±οΈ cursor = { text = "<string>", cursor = "<string>" } πŸ–±οΈ

The colors used to draw the terminal cursor. Main character behavior, honestly.

Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell.

Default: { text = "CellBackground", cursor = "CellForeground" }

🧚 vi_mode_cursor = { text = "<string>", cursor = "<string>" } 🧚

Same deal but for when vi mode is active.

Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell.

Default: { text = "CellBackground", cursor = "CellForeground" }

This section documents the [colors.search] table of the configuration.

Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell.

  • matches = { foreground = "<string>", background = "<string>" } β€” Default: { foreground = "#181818", background = "#ac4242" }
  • focused_match = { foreground = "<string>", background = "<string>" } β€” Default: { foreground = "#181818", background = "#f4bf75" }

πŸ’… hints πŸ’…

This section documents the [colors.hints] table of the configuration.

  • start = { foreground = "<string>", background = "<string>" } β€” The first character in the hint label. Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell. Default: { foreground = "#181818", background = "#f4bf75" }
  • end = { foreground = "<string>", background = "<string>" } β€” All the characters after the first one in the hint label. Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell. Default: { foreground = "#181818", background = "#ac4242" }

πŸ“ line_indicator = { foreground = "<string>", background = "<string>" } πŸ“

The color used for the indicator showing your position in history during search and vi mode.

Setting this to "None" will use the opposing primary color.

Default: { foreground = "None", background = "None" }

The color used for the footer bar at the bottom β€” used by search regex input, hyperlink URI preview, etc.

Default: { foreground = "#181818", background = "#d8d8d8" }

βœ‚οΈ selection = { text = "<string>", background = "<string>" } βœ‚οΈ

The colors used for drawing selections. So iconic.

Allowed values are hexadecimal colors like #ff00ff, or CellForeground/CellBackground, which references the affected cell.

Default: { text = "CellBackground", background = "CellForeground" }

🌈 normal 🌈

This section documents the [colors.normal] table of the configuration.

  • black = "<string>" β€” Default: "#181818"
  • red = "<string>" β€” Default: "#ac4242"
  • green = "<string>" β€” Default: "#90a959"
  • yellow = "<string>" β€” Default: "#f4bf75"
  • blue = "<string>" β€” Default: "#6a9fb5"
  • magenta = "<string>" β€” Default: "#aa759f"
  • cyan = "<string>" β€” Default: "#75b5aa"
  • white = "<string>" β€” Default: "#d8d8d8"

✨ bright ✨

This section documents the [colors.bright] table of the configuration.

  • black = "<string>" β€” Default: "#6b6b6b"
  • red = "<string>" β€” Default: "#c55555"
  • green = "<string>" β€” Default: "#aac474"
  • yellow = "<string>" β€” Default: "#feca88"
  • blue = "<string>" β€” Default: "#82b8c8"
  • magenta = "<string>" β€” Default: "#c28cb8"
  • cyan = "<string>" β€” Default: "#93d3c3"
  • white = "<string>" β€” Default: "#f8f8f8"

🌸 dim 🌸

This section documents the [colors.dim] table of the configuration.

If the dim colors aren't set, they get calculated automatically based on the normal colors. So chill.

  • black = "<string>" β€” Default: "#0f0f0f"
  • red = "<string>" β€” Default: "#712b2b"
  • green = "<string>" β€” Default: "#5f6f3a"
  • yellow = "<string>" β€” Default: "#a17e4d"
  • blue = "<string>" β€” Default: "#456877"
  • magenta = "<string>" β€” Default: "#704d68"
  • cyan = "<string>" β€” Default: "#4d7770"
  • white = "<string>" β€” Default: "#8e8e8e"

πŸ‘‘ indexed_colors = [{ index = <integer>, color = "<string>" },] πŸ‘‘

The indexed colors include all colors from 16 to 256. When these aren't set, they get filled with sensible defaults. Literally so thoughtful.

Default: []

🫢 transparent_background_colors = true | false 🫢

Whether or not window.opacity applies to all cell backgrounds, or only to the default background. When set to true, all cells will be transparent regardless of their background color.

Default: false

πŸ’€ draw_bold_text_with_bright_colors = true | false πŸ’€

When true, bold text is drawn using the bright color variants.

Default: false


πŸ”” BELL πŸ””

This section documents the [bell] table of the configuration file.

  • animation = "Ease" | "EaseOut" | "EaseOutSine" | "EaseOutQuad" | "EaseOutCubic" | "EaseOutQuart" | "EaseOutQuint" | "EaseOutExpo" | "EaseOutCirc" | "Linear" β€” Visual bell animation effect for flashing the screen when the visual bell is rung. Default: "Linear"
  • duration = <integer> β€” Duration of the visual bell flash in milliseconds. A duration of 0 will disable the visual bell animation. Default: 0
  • color = "<string>" β€” Visual bell animation color. Default: "#ffffff"
  • command = "<string>" | { program = "<string>", args = ["<string>",] } β€” This program is executed whenever the bell is rung. When set to "None", no command will be executed. Default: "None"

βœ‚οΈ SELECTION βœ‚οΈ

This section documents the [selection] table of the configuration file.

  • semantic_escape_chars = "<string>" β€” This string contains all the characters that are used as separators for "semantic words" in Alacritty. Default: ",β”‚|:"' ()[]{}<>\t"`
  • save_to_clipboard = true | false β€” When set to true, selected text will be copied to the primary clipboard. Default: false

πŸ–±οΈ CURSOR πŸ–±οΈ

This section documents the [cursor] table of the configuration file.

style = { <shape>, <blinking> }

  • shape = "Block" | "Underline" | "Beam" β€” Default: "Block"
  • blinking = "Never" | "Off" | "On" | "Always"
    • Never β€” Prevent the cursor from ever blinking
    • Off β€” Disable blinking by default
    • On β€” Enable blinking by default
    • Always β€” Force the cursor to always blink

Default: "Off"

vi_mode_style = { <shape>, <blinking> } | "None"

If the vi mode cursor style is "None" or not specified, it will fall back to the active value of the normal cursor.

Default: "None"

Other cursor bits πŸ’…

  • blink_interval = <integer> β€” Cursor blinking interval in milliseconds. Default: 750
  • blink_timeout = <integer> β€” Time after which the cursor stops blinking, in seconds. Specifying 0 will disable timeout for blinking. Default: 5
  • unfocused_hollow = true | false β€” When this is true, the cursor will be rendered as a hollow box when the window is not focused. Default: true
  • thickness = <float> β€” Thickness of the cursor relative to the cell width as a floating point number from 0.0 to 1.0. Default: 0.15

🐚 TERMINAL 🐚

This section documents the [terminal] table of the configuration file.

shell = "<string>" | { program = "<string>", args = ["<string>",] }

You can set shell.program to the path of your favorite shell, e.g. /bin/zsh. Entries in shell.args are passed as arguments to the shell. Bestie, customize away. πŸ’–

Default:

  • Linux/BSD/macOS: $SHELL or the user's login shell, if $SHELL is unset
  • Windows: "powershell"

Example:

shell = { program = "/bin/zsh", args = ["-l"] }

osc52 = "Disabled" | "OnlyCopy" | "OnlyPaste" | "CopyPaste"

Controls the ability to write to the system clipboard with the OSC 52 escape sequence. While this escape sequence is useful to copy contents from the remote server, allowing any application to read from the clipboard can be easily abused while not providing significant benefits over explicitly pasting text.

πŸ‘€ Okay this one is a real security vibe check β€” letting any app read your clipboard is sketchy, and it's lowkey not even worth it.

Default: "OnlyCopy"


πŸ–±οΈ MOUSE πŸ–±οΈ

This section documents the [mouse] table of the configuration file.

  • hide_when_typing = true | false β€” When this is true, the cursor is temporarily hidden when typing. Default: false
  • bindings = [{ <mouse>, <mods>, <mode>, <command> | <chars> | <action> },] β€” See keyboard.bindings for full documentation on mods, mode, command, chars, and action.

When an application running within Alacritty captures the mouse, the Shift modifier can be used to suppress mouse reporting. If no action is found for the event, actions for the event without the Shift modifier are triggered instead.

  • mouse = "Middle" | "Left" | "Right" | "Back" | "Forward" | "WheelUp" | "WheelDown" | <integer> β€” Mouse button which needs to be pressed to trigger this binding.
  • action = <keyboard.bindings.action> | "ExpandSelection"
    • ExpandSelection β€” Expand the selection to the current mouse cursor location.

Example:

[mouse]
bindings = [
     { mouse = "Right", mods = "Control", action = "Paste" },
]

✨ HINTS ✨

Okay bestie, this section is all about the [hints] table in your config file. Terminal hints = the lil' system that finds text or hyperlinks in the visible part of your terminal and pipes them off to other apps. It's giving "spot the link, click the link, slay." πŸ’…


πŸ”€ alphabet = "<string>"

These are the keys used for the hint labels. So when hints pop up, they get labelled with these characters, and you type the label to grab the thing. Cute, right? πŸŽ€

Default: "jfkdls;ahgurieowpq"


πŸ¦‹ enabled = [{ <regex>, <hyperlinks>, <post_processing>, <persist>, <action>, <command>, <binding>, <mouse> },]

This is the array with all your available hints. It's a whole list, so go wild.

Heads up though: each hint must have at least one of regex or hyperlinks, AND either an action or a command. No action and no command? That hint is not the moment. 😭

Here's everything you can put inside one of these bad boys:

🧚 regex = "<string>"

The regex that each line gets compared against. Match found β†’ hint appears.

When this is true, all OSC 8 escape sequence hyperlinks get included in the hints. Iconic behaviour honestly.

πŸͺ„ post_processing = true | false

When this is true, heuristics get used to shorten the match if there are characters that probably aren't part of the hint (like a trailing . β€” rude of it). This is most useful for URIs, and it applies only to regex matches. So no, it's not doing anything for your hyperlink hints, bestie.

πŸ‘‘ persist = true | false

When this is true, hints stay persistent after selection. They don't dip out on you.

πŸ’« action = "Copy" | "Paste" | "Select" | "MoveViModeCursor"

Pick your fighter:

  • 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>",] }

The command that gets executed when the hint is clicked or selected with the binding.

Real talk: the hint's text is always attached as the last argument. Every time. No exceptions. Periodt.

⌨️ binding = { key = "<string>", mods = "<string>", mode = "<string>" }

Go peek at keyboard.bindings for the docs on which values are available here.

This is the thing that controls which key binding starts the keyboard hint selection process. It's the glow-up moment where hints appear.

πŸ–±οΈ mouse = { mods = "<string>", enabled = true | false }

Again, see keyboard.bindings for the docs on available mods.

The enabled field controls whether the hint gets underlined when you hover over the hint text with all the mods pressed. Little underline? Little treat. 🌸


πŸŽ€ Default:

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

Look at that regex β€” it's catching ipfs:, ipns:, magnet:, mailto:, gemini://, gopher://, https://, http://, news:, file:, git://, ssh: and ftp:// links, and it's excluding all the weird control characters, whitespace, and bracket-adjacent chaos. Chef's kiss. πŸ”₯

⌨️ KEYBOARD ⌨️

Okay bestie, this is the section that documents the [keyboard] table of the config file. This is where you tell Alacritty what happens when you smash keys. It's giving ✨power✨.

bindings = [{ <key>, <mods>, <mode>, <command> | <chars> | <action> },]
  • Wanna unset a default binding? Use the action "ReceiveChar" to remove it, or "None" to inhibit any action. Yes, those are two different vibes and yes, you need to know which one you want πŸ’…
  • Multiple keybindings can be triggered by a single key press, and they get executed in the order they are defined in. Order matters, fr fr.

key = "<string>"

The regular keys like "A", "0", and "Π―" can be mapped directly, no special syntax needed. The full list of named keys like "F1" and the syntax for dead keys lives here:

Numpad keys are prefixed by Numpad: "NumpadEnter" | "NumpadAdd" | "NumpadComma" | "NumpadDecimal" | "NumpadDivide" | "NumpadEquals" | "NumpadSubtract" | "NumpadMultiply" | "Numpad[0-9]".

The key field also supports using scancodes, which are specified as a decimal number. Slay πŸ”’

mods = "Command" | "Control" | "Option" | "Super" | "Shift" | "Alt"

Multiple modifiers can be combined using |, like this: "Control | Shift". Stack 'em up 🫢

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". Iconic behaviour honestly.

command = "<string>" | { program = "<string>", args = ["<string>",] }

Fork and execute the specified command. It's giving "go do a thing" πŸƒβ€β™€οΈ

chars = "<string>"

Writes the specified string to the terminal.

action

Okay here comes the big list, bestie. Buckle in 🌸

  • ReceiveChar β€” Allow receiving char input.
  • None β€” No action.
  • Paste β€” Paste contents of system clipboard.
  • Copy β€” Store current selection into clipboard.
  • 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: 🧚

  • 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.
  • ParagraphUp β€” Move above the current paragraph.
  • ParagraphDown β€” Move below the current paragraph.
  • 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.
  • InlineSearchBackward β€” 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.
  • SemanticSearchForward β€” Search forward for selection or word under the cursor.
  • SemanticSearchBackward β€” Search backward for selection or word under the cursor.

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: 🍎 (bestie if you're on Linux these simply don't apply, don't come for me)

  • 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" },
]

πŸ› 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. Read that again, bestie β€” no cap, they can just vanish πŸ’€

render_timer = true | false

Display the time it takes to draw each frame. Gotta know how fast your frames are cooking ⏱️

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, the ALACRITTY_EXTRA_LOG_TARGETS variable can be used.

Example:

ALACRITTY_EXTRA_LOG_TARGETS="winit;vte" alacritty -vvv

renderer = "glsl3" | "gles2" | "gles2pure" | "None"

Force use of a specific renderer. "None" will use the highest available one.

Default: "None"

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.

Heads up 🫢 β€” note that transparency may not work with EGL on Linux/BSD.

Default: false


🌈 SEE ALSO 🌈

alacritty(1), alacritty-msg(1), alacritty-bindings(5), alacritty-escapes(7)


πŸ’– BUGS πŸ’–

Found a bug? Please report it at https://github.com/alacritty/alacritty/issues. The devs wanna hear from you, fr fr 🫢

πŸ‘‘ MAINTAINERS πŸ‘‘

okay so who's actually running this whole operation?? the girlies keeping alacritty iconic πŸ’… these are the people you thank when your terminal is cute and fast:

  • Christian Duerr β€” <contact@christianduerr.com> 🫢
  • Kirill Chibisov β€” <contact@kchibisov.com> πŸ’œ

that's it, that's the roster. two absolute legends, no cap. send them good vibes, or better yet, send them a bug report that actually includes the steps to reproduce 😭 they deserve it fr fr πŸŽ€


and that's the whole page bestie!! you made it all the way to the end, main character energy fr ✨ this was ALACRITTY(5) β€” yes that's the manual section for config files, iykyk β€” and this version is dated 2026-04-13. go forth, edit your alacritty.toml, and slay πŸ’–πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from
  • fedora 43: alacritty 0.17.0-1.fc43 Β· (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND CC0-1.0 AND ISC AND MIT AND (MIT OR Apache-2.0 OR Zlib) AND Unicode-DFS-2016 AND (Unlicense OR MIT)
  • fedora 44: alacritty 0.17.0-1.fc44 Β· (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND CC0-1.0 AND ISC AND MIT AND (MIT OR Apache-2.0 OR Zlib) AND Unicode-DFS-2016 AND (Unlicense OR MIT)
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms