local wezterm = require("wezterm")

local maps = require("maps")

require("statusbar").setup()
require("events").setup()

local function file_exists(name)
	local f = io.open(name, "r")
	if f ~= nil then
		io.close(f)
		return true
	else
		return false
	end
end

-- automatically reload colors file
local colorsfile = (os.getenv("XDG_STATE_HOME") or (os.getenv("HOME") .. "/.local/state")) .. "/wezterm/colors.toml"
local colors = {}
if file_exists(colorsfile) == true then
	wezterm.add_to_config_reload_watch_list(colorsfile)
	colors = wezterm.color.load_scheme(colorsfile)
end

local settings = {
	enable_wayland = true,
	enable_tab_bar = true,
	hide_tab_bar_if_only_one_tab = true,
	use_fancy_tab_bar = false,
	tab_bar_at_bottom = true,
	window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
	colors = colors,
	color_scheme = "Nord (base16)", -- will be overwritten by colors
	-- default_prog = {"nu"},
	scrollback_lines = 10000,
	font = wezterm.font("Iosevka Nerd Font"),
	-- add cursive italic font from Victor font for all weights
	font_rules = {
		{
			intensity = "Bold",
			italic = true,
			font = wezterm.font({
				family = "VictorMono Nerd Font",
				weight = "Bold",
				style = "Italic",
			}),
		},
		{
			italic = true,
			intensity = "Half",
			font = wezterm.font({
				family = "VictorMono Nerd Font",
				weight = "DemiBold",
				style = "Italic",
			}),
		},
		{
			italic = true,
			intensity = "Normal",
			font = wezterm.font({
				family = "VictorMono Nerd Font",
				style = "Italic",
			}),
		},
	},
	line_height = 1.0,
	leader = { key = "a", mods = "CTRL", timeout_milliseconds = 1500 },
	keys = maps.keys,
	key_tables = maps.key_tables,
	mouse_bindings = {
		{
			event = { Up = { streak = 1, button = "Left" } },
			mods = "NONE",
			action = wezterm.action.CompleteSelectionOrOpenLinkAtMouseCursor("ClipboardAndPrimarySelection"),
		},
	},
}
return settings
