# ╔═══════════════════════════════════════════════════════════════════════╗
# ║  Alacritty 0.17 — config OTIMIZADA (tmux + Claude Code + SSH)        ║
# ║  Salva em: %APPDATA%\alacritty\alacritty.toml (Windows)              ║
# ║  Docs: https://alacritty.org/config-alacritty.html                    ║
# ╚═══════════════════════════════════════════════════════════════════════╝

# ──────────────────────────────────────────────────────────────────────────
# GENERAL — IPC socket habilitado (permite `alacritty msg` pra controle externo)
# ──────────────────────────────────────────────────────────────────────────
[general]
ipc_socket = true
# import = ["~/.config/alacritty/themes/mytheme.toml"]  # descomenta se tiver tema

# ──────────────────────────────────────────────────────────────────────────
# ENV — TERM crítico. alacritty-direct declara truecolor (RGB) + Hsu3 (hyperlinks)
# ──────────────────────────────────────────────────────────────────────────
[env]
TERM = "alacritty"
COLORTERM = "truecolor"

# ──────────────────────────────────────────────────────────────────────────
# WINDOW — visual + performance
# ──────────────────────────────────────────────────────────────────────────
[window]
opacity = 1.0                          # 1.0 = sólido (melhor performance; reduza se quiser transparência)
blur = false                           # blur atrás da janela (off = performance)
decorations = "full"                   # "full" | "none" | "transparent" | "buttonless"
dynamic_padding = true                 # centraliza conteúdo se janela > cols
dynamic_title = true                   # título atualiza com OSC 0/2 (tmux/shell podem setar)
padding = { x = 8, y = 8 }
startup_mode = "Windowed"              # "Windowed" | "Maximized" | "Fullscreen"
# option_as_alt = "OnlyLeft"           # só Mac; Windows/Linux não usa

# ──────────────────────────────────────────────────────────────────────────
# SCROLLING — buffer grande (Claude Code gera muito output)
# ──────────────────────────────────────────────────────────────────────────
[scrolling]
history = 100000                       # linhas de buffer; 100k é generoso
multiplier = 3                         # linhas por evento de scroll do mouse

# ──────────────────────────────────────────────────────────────────────────
# FONT — com ligaduras + box-drawing nativo (renderização rápida)
# Use fontes Nerd Font se quiser ícones no prompt/lazygit/etc.
# ──────────────────────────────────────────────────────────────────────────
[font]
size = 12.0
builtin_box_drawing = true             # desenha ▛▜▟▙ via GL shader (mais rápido + nítido)
# Instale uma Nerd Font primeiro: scoop install nerd-fonts/JetBrainsMono-NF
normal = { family = "JetBrainsMono Nerd Font", style = "Regular" }
bold = { family = "JetBrainsMono Nerd Font", style = "Bold" }
italic = { family = "JetBrainsMono Nerd Font", style = "Italic" }
bold_italic = { family = "JetBrainsMono Nerd Font", style = "Bold Italic" }
offset = { x = 0, y = 0 }
glyph_offset = { x = 0, y = 0 }

# ──────────────────────────────────────────────────────────────────────────
# CURSOR — feedback visual + vi-mode cursor diferente
# ──────────────────────────────────────────────────────────────────────────
[cursor]
style = { shape = "Beam", blinking = "On" }
vi_mode_style = { shape = "Block", blinking = "Off" }
blink_interval = 500
blink_timeout = 0                      # 0 = nunca para de piscar
unfocused_hollow = true
thickness = 0.15

# ──────────────────────────────────────────────────────────────────────────
# SELECTION — seleção vai DIRETO pro clipboard (sem precisar Ctrl+Shift+C)
# ──────────────────────────────────────────────────────────────────────────
[selection]
save_to_clipboard = true
semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"

# ──────────────────────────────────────────────────────────────────────────
# MOUSE — esconder cursor ao digitar + bindings
# ──────────────────────────────────────────────────────────────────────────
[mouse]
hide_when_typing = true

[[mouse.bindings]]
mouse = "Right"
action = "PasteSelection"              # botão direito = paste rápido

# ──────────────────────────────────────────────────────────────────────────
# HINTS — URLs clicáveis (OSC 8 automático + regex fallback)
# Regex captura: http, https, ssh, git, ftp, mailto, magnet, file, etc.
# ──────────────────────────────────────────────────────────────────────────
[[hints.enabled]]
regex = "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
hyperlinks = true                      # captura OSC 8 emitidos
command = { program = "cmd", args = ["/C", "start", ""] }  # Windows: abre browser/app padrão
# Linux: command = { program = "xdg-open" }
# macOS: command = { program = "open" }
post_processing = true                 # remove pontuação final tipo ")", "."
persist = false
mouse = { enabled = true, mod = "Control" }       # Ctrl+Click
binding = { key = "U", mods = "Control|Shift" }   # Ctrl+Shift+U = launcher teclado

# Segundo hint: números como PRs/issues (#123) — só se quiser, ex pra GitHub
# [[hints.enabled]]
# regex = "#[0-9]+"
# command = { program = "cmd", args = ["/C", "start", "https://github.com/SEUORG/SEUREPO/issues/"] }
# mouse = { enabled = true, mod = "Control|Shift" }

# ──────────────────────────────────────────────────────────────────────────
# KEYBOARD — Kitty Keyboard Protocol + bindings
# ──────────────────────────────────────────────────────────────────────────

# Copy/paste clássico
[[keyboard.bindings]]
key = "V"
mods = "Control|Shift"
action = "Paste"

[[keyboard.bindings]]
key = "C"
mods = "Control|Shift"
action = "Copy"

# Font size
[[keyboard.bindings]]
key = "Plus"
mods = "Control"
action = "IncreaseFontSize"

[[keyboard.bindings]]
key = "Minus"
mods = "Control"
action = "DecreaseFontSize"

[[keyboard.bindings]]
key = "Key0"
mods = "Control"
action = "ResetFontSize"

# Vi mode (search + navegação sem mouse)
[[keyboard.bindings]]
key = "Space"
mods = "Control|Shift"
action = "ToggleViMode"

# Search forward/backward (útil com buffer grande do Claude Code)
[[keyboard.bindings]]
key = "F"
mods = "Control|Shift"
action = "SearchForward"

[[keyboard.bindings]]
key = "B"
mods = "Control|Shift"
action = "SearchBackward"

# Scroll (tmux + alacritty)
[[keyboard.bindings]]
key = "PageUp"
mods = "Shift"
action = "ScrollPageUp"

[[keyboard.bindings]]
key = "PageDown"
mods = "Shift"
action = "ScrollPageDown"

[[keyboard.bindings]]
key = "Home"
mods = "Shift"
action = "ScrollToTop"

[[keyboard.bindings]]
key = "End"
mods = "Shift"
action = "ScrollToBottom"

# ──────────────────────────────────────────────────────────────────────────
# DEBUG — deixar off em produção
# ──────────────────────────────────────────────────────────────────────────
[debug]
render_timer = false
persistent_logging = false
log_level = "Warn"
