local wezterm = require("wezterm")
local act = wezterm.action

local hostname = wezterm.hostname()

--
-- Main configuration.
--

config = {

    -- Set up our font.
    font = wezterm.font_with_fallback({
        "MonoLisa",
        "Codicons",
    }),
    font_size = 14,

    -- Color scheme stuff.
    color_scheme = "Solarized Dark - Patched",

    -- Generel config.
    term = "wezterm",

    -- Get rid of the annoying update popups we can't do anything about.
    check_for_updates = false,

    -- Automatically reload our config on changes.
    automatically_reload_config = true,

    -- Improve tab viewing by disabling native wonk,
    -- and make it behave more like Tmux.
    hide_tab_bar_if_only_one_tab = true,
    use_fancy_tab_bar = false,
    tab_bar_at_bottom = true,
    tab_max_width = 32,

    -- Disable window styling, where possible.
    window_decorations = "NONE",

    -- Use WebGpu, when we can.
    front_end = "WebGpu",

    -- Tab bar styling.
    colors = {
        tab_bar = {
            background = "#002b36",
            active_tab = {
                bg_color = "#073642",
                fg_color = "#268bd2",
                intensity = "Bold",
            },
            inactive_tab = {
                bg_color = "#002b36",
                fg_color = "#586e75",
            },
            new_tab = {
                bg_color = "#002b36",
                fg_color = "#586e75",
            },
        },
    },

    -- Set up multiplexing.
    unix_domains = { { name = "unix" } },
    ssh_domains = {
        {
            name = "trailblazer",
            remote_address = "trailblazer",
            remote_wezterm_path = "/run/current-system/sw/bin/wezterm",
        },
        { name = "valere", remote_address = "valere", remote_wezterm_path = "/run/current-system/sw/bin/wezterm" },
        { name = "hinata", remote_address = "hinata", remote_wezterm_path = "/run/current-system/sw/bin/wezterm" },
    },

    -- Key bindings.
    keys = {

        -- Generic customization.
        { key = "l", mods = "SHIFT|CTRL", action = "ShowDebugOverlay" },
        { key = "Enter", mods = "ALT", action = "DisableDefaultAssignment" },
        { key = "Enter", mods = "SUPER", action = "ToggleFullScreen" },
    },
}

--
-- Font Size Tweaks
--
font_overrides = {
    miko = 10,
    hinata = 15,
    chrysalis = 12,
    utol = 13,
    trailblazer = 11,
    kanbaru = 12,
    aigis = 12,
    komashi = 12,
}

if font_overrides[hostname] ~= nil then
    config.font_size = font_overrides[hostname]
end

--
-- Increase tab bar spacing.
--
wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_width)
    -- Truncate our title so we have room for a padding space at the end.
    local title = wezterm.truncate_right(tab.active_pane.title, max_width - 6)
    local number = tostring((tab.tab_index + 1) % 10)

    -- Generate the tab format.
    return " " .. number .. ": " .. title .. " "
end)

-- Windows support.
-- Possibly replace with a per-platform equivalent?'
--if (hostname == "hinata") then
if wezterm.target_triple == "x86_64-unknown-linux-gnu" then
    config["default_prog"] = { "/run/current-system/sw/bin/zellij" }
end

return config
