{ lib, config, ... }: with lib; let cfg = config.mjallen.programs.kitty; palette = import cfg.theme.file; in { imports = [ ./options.nix ]; config = mkIf cfg.enable { programs.kitty = { enable = true; shellIntegration.enableZshIntegration = true; font = { name = cfg.font.name; package = cfg.font.package; size = cfg.font.size; }; settings = { bold_font = "auto"; italic_font = "auto"; bold_italic_font = "auto"; mouse_hide_wait = "2.0"; cursor_shape = "block"; url_style = "dotted"; confirm_os_window_close = "0"; background_opacity = "0.85"; # The basic colors foreground = palette.colors.text; background = palette.colors.bg; selection_foreground = palette.colors.bg; selection_background = palette.colors.accent; # Cursor colors cursor = palette.colors.accent; cursor_text_color = palette.colors.bg; # URL underline color when hovering with mouse url_color = palette.colors.accent; # Kitty window border colors active_border_color = palette.colors.primary; inactive_border_color = palette.colors.bgAlt; bell_border_color = palette.colors.warning; # OS Window titlebar colors wayland_titlebar_color = palette.colors.bg; macos_titlebar_color = palette.colors.bg; # Tab bar colors active_tab_foreground = palette.colors.border; active_tab_background = palette.colors.accent; inactive_tab_foreground = palette.colors.text; inactive_tab_background = palette.colors.bgAlt; tab_bar_background = palette.colors.border; # Colors for marks (marked text in the terminal) mark1_foreground = palette.colors.bg; mark1_background = palette.colors.primary; mark2_foreground = palette.colors.bg; mark2_background = palette.colors.accent; mark3_foreground = palette.colors.bg; mark3_background = palette.colors.info; # The 16 terminal colors # black color0 = palette.colors.bg; # Autosuggestion color8 = palette.colors.primary; # red color1 = palette.colors.danger; color9 = palette.colors.danger; # green color2 = palette.colors.success; color10 = palette.colors.success; # yellow color3 = palette.colors.warning; color11 = palette.colors.warning; # blue color4 = palette.colors.primary; color12 = palette.colors.primary; # magenta color5 = palette.colors.accent; color13 = palette.colors.accent; # cyan color6 = palette.colors.info; color14 = palette.colors.info; # white color7 = palette.colors.textMuted; color15 = palette.colors.text; }; }; }; }