{pkgs-unstable, ...}: { programs.foot = { enable = true; package = pkgs-unstable.foot; server.enable = true; settings = let none = "\"\""; in { main = { term = "foot"; # set $TERM login-shell = "no"; title = "foot"; locked-title = "no"; # font = "GeistMono Nerd Font:size=12"; # font = "Mononoki Nerd Font Mono:size=12"; # font = "0xProto Nerd Font Mono:size=12"; font = "JetBrainsMonoNL Nerd Font:size=12"; # font-bold = ""; # font-italice = ""; # font-bold-italice = ""; # font-size-adjustment = 0.5; # line-height = ...; # letter-spacing = 0; # horizontal-letter-offset = 0; # vertical-letter-offset = 0; # underline-offset = ...; # underline-thickness = ...; # strikeout-thickness = ...; box-drawings-uses-font-glyphs = "no"; dpi-aware = "no"; gamma-correct-blending = "no"; initial-color-theme = "1"; # initial-window-size-pixels = "700x500"; # pixel COLSxROWS initial-window-size-chars = "90x26"; # char COLSxROWS initial-window-mode = "windowed"; pad = "32x32 center-when-maximized-and-fullscreen"; resize-by-cells = "yes"; resize-keep-grid = "yes"; resize-delay-ms = "100"; bold-text-in-bright = "no"; word-delimiters = ",│`|:\"'()[]{}<>"; selection-target = "primary"; # workers = ...; # number of logical CPUs }; # environment = { # name = "value"; # } security = { osc52 = "enabled"; }; bell = { system = "no"; urgent = "no"; notify = "no"; visual = "no"; # command = ...; # command-focused = "no"; }; desktop-notifications = { command = "notify-send --wait --app-name \${app-id} --icon \${app-id} --category \${category} --urgency \${urgency} --expire-time \${expire-time} --hint STRING:image-path:\${icon} --hint BOOLEAN:suppress-sound:\${muted} --hint STRING:sound-name:\${sound-name} --replace-id \${replace-id} \${action-argument} --print-id -- \${title} \${body}"; command-action-argument = "--action \${action-name=\${action-label}}"; close = none; inhibit-when-focused = "no"; }; scrollback = { lines = 1000; multiplier = 1.0; indicator-position = "relative"; indicator-format = none; }; url = { launch = "xdg-open \${url}"; label-letters = "sadfjklewcmpgh"; osc8-underline = "url-mode"; regex = "(((https?://|mailto:|ftp://|file:|ssh:|ssh://|git://|tel:|magnet:|ipfs://|ipns://|gemini://|gopher://|news:)|www\\.)([0-9a-zA-Z:/?#@!$&*+,;=.~_%^\\-]+|\\([]\\[\"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\\)|\\[[\\(\\)\"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\\]|\"[]\\[\\(\\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\"|'[]\\[\\(\\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\\-]*')+([0-9a-zA-Z/#@$&*+=~_%^\\-]|\\([]\\[\"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\\)|\\[[\\(\\)\"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\\]|\"[]\\[\\(\\)0-9a-zA-Z:/?#@!$&'*+,;=.~_%^\\-]*\"|'[]\\[\\(\\)0-9a-zA-Z:/?#@!$&*+,;=.~_%^\\-]*'))"; }; # "regex:your-fancy-name" = { # regex = ...; # launch = "[path to script/application] \${match}" # }; # # key-bindings = { # regex-launch = "[your-fancy-name] Control+Shift+q"; # regex-copy = "[your-fancy-name] Control+Alt+shift+q"; # }; cursor = { style = "block"; blink = "no"; # blink-rate = 500; beam-thickness = 1.0; # underline-thickness = ...; }; mouse = { hide-when-typing = "yes"; alternate-scroll-mode = "yes"; }; touch = { long-press-delay = 400; }; # Theme: Dracula # REF: https://github.com/dracula/foot colors = { alpha = 1.0; alpha-mode = "default"; # default/matching/all background = "282a36"; foreground = "f8f8f2"; ## Normal/regular colors (color palette 0-7) regular0 = "21222c"; # black regular1 = "ff5555"; # red regular2 = "50fa7b"; # green regular3 = "f1fa8c"; # yellow regular4 = "bd93f9"; # blue regular5 = "ff79c6"; # magenta regular6 = "8be9fd"; # cyan regular7 = "f8f8f2"; # white ## Bright colors (color palette 8-15) bright0 = "6272a4"; # bright black bright1 = "ff6e6e"; # bright red bright2 = "69ff94"; # bright green bright3 = "ffffa5"; # bright yellow bright4 = "d6acff"; # bright blue bright5 = "ff92df"; # bright magenta bright6 = "a4ffff"; # bright cyan bright7 = "ffffff"; # bright white ## Misc colors selection-foreground = "ffffff"; selection-background = "44475a"; # jump-labels= # black-on-yellow # scrollback-indicator= # black-on-bright-blue # search-box-no-match= # black-on-red # search-box-match= # black-on-yellow urls = "8be9fd"; flash = "7f7f00"; flash-alpha = 0.5; }; # Alternative colour palette (see `man 5 foot.ini`) colors2 = { alpha = 1.0; alpha-mode = "default"; background = "191724"; foreground = "e0def4"; regular0 = "26233a"; # black (Overlay) regular1 = "eb6f92"; # red (Love) regular2 = "9ccfd8"; # green (Foam) regular3 = "f6c177"; # yellow (Gold) regular4 = "31748f"; # blue (Pine) regular5 = "c4a7e7"; # magenta (Iris) regular6 = "ebbcba"; # cyan (Rose) regular7 = "e0def4"; # white (Text) bright0 = "47435d"; # bright black (lighter Overlay) bright1 = "ff98ba"; # bright red (lighter Love) bright2 = "c5f9ff"; # bright green (lighter Foam) bright3 = "ffeb9e"; # bright yellow (lighter Gold) bright4 = "5b9ab7"; # bright blue (lighter Pine) bright5 = "eed0ff"; # bright magenta (lighter Iris) bright6 = "ffe5e3"; # bright cyan (lighter Rose) bright7 = "fefcff"; # bright white (lighter Text) selection-foreground = "ffffff"; selection-background = "393553"; urls = "ebbcba"; # Rose flash = "f6c177"; # yellow (Gold) flash-alpha = 0.5; cursor = "191724 e0def4"; }; # csd = { # preferred = "server"; # size = 26; # font = ...; # color = ...; # foreground color # hide-when-maximized = "no"; # border-width = 0; # border-color = ...; # button-width = 26; # button-color = ...; # background color # button-minimize-color = ...; # button-maximize-color = ...; # button-close-color = ...; # }; key-bindings = { scrollback-up-page = "Shift+Page_Up Shift+KP_Page_Up"; # scrollback-up-half-page = "none"; # scrollback-up-line = "none"; scrollback-down-page = "Shift+Page_Down Shift+KP_Page_Down"; # scrollback-down-half-page = "none"; # scrollback-down-line = "none"; # scrollback-home = "none"; # scrollback-end = "none"; clipboard-copy = "Control+Shift+c XF86Copy"; clipboard-paste = "Control+Shift+v XF86Paste"; primary-paste = "Shift+Insert"; search-start = "Control+Shift+r"; font-increase = "Control+plus Control+equal Control+KP_Add"; font-decrease = "Control+minus Control+KP_Subtract"; font-reset = "Control+0 Control+KP_0"; spawn-terminal = "Control+Shift+n"; # minimize = "none"; # maximize = "none"; # fullscreen = "none"; pipe-visible = "[sh -c \"xurls | fuzzel | xargs -r firefox\"] none"; pipe-scrollback = "[sh -c \"xurls | fuzzel | xargs -r firefox\"] none"; pipe-selected = "[xargs -r firefox] none"; pipe-command-output = "[wl-copy] none"; show-urls-launch = "Control+Shift+o"; # show-urls-copy = "none"; # show-urls-persistent = "none"; prompt-prev = "Control+Shift+z"; prompt-next = "Control+Shift+x"; unicode-input = "Control+Shift+u"; # color-theme-switch-1 = "none"; # color-theme-switch-2 = "none"; color-theme-toggle = "Control+Alt+p"; # noop = "none"; # quit = "none"; }; search-bindings = { cancel = "Control+g Control+c Escape"; commit = "Return KP_Enter"; find-prev = "Control+r"; find-next = "Control+s"; cursor-left = "Left Control+b"; cursor-left-word = "Control+Left Mod1+b"; cursor-right = "Right Control+f"; cursor-right-word = "Control+Right Mod1+f"; cursor-home = "Home Control+a"; cursor-end = "End Control+e"; delete-prev = "BackSpace"; delete-prev-word = "Mod1+BackSpace Control+BackSpace"; delete-next = "Delete"; delete-next-word = "Mod1+d Control+Delete"; delete-to-start = "Control+u"; delete-to-end = "Control+k"; extend-char = "Shift+Right"; extend-to-word-boundary = "Control+w Control+Shift+Right"; extend-to-next-whitespace = "Control+Shift+w"; extend-line-down = "Shift+Down"; extend-backward-char = "Shift+Left"; extend-backward-to-word-boundary = "Control+Shift+Left"; # extend-backward-to-next-whitespace = "none"; extend-line-up = "Shift+Up"; clipboard-paste = "Control+v Control+Shift+v Control+y XF86Paste"; primary-paste = "Shift+Insert"; # unicode-input = "none"; scrollback-up-page = "Shift+Page_Up Shift+KP_Page_Up"; # scrollback-up-half-page = "none"; # scrollback-up-line = "none"; scrollback-down-page = "Shift+Page_Down Shift+KP_Page_Down"; # scrollback-down-half-page = "none"; # scrollback-down-line = "none"; # scrollback-home = "none"; # scrollback-end = "none"; }; url-bindings = { cancel = "Control+g Control+c Control+d Escape"; toggle-url-visible = "t"; }; text-bindings = { "\\x03" = "Mod4+c"; # map Super+c -> Control+c }; mouse-bindings = { scrollback-up-mouse = "BTN_WHEEL_BACK"; scrollback-down-mouse = "BTN_WHEEL_FORWARD"; font-increase = "Control+BTN_WHEEL_BACK"; font-decrease = "Control+BTN_WHEEL_FORWARD"; selection-override-modifiers = "Shift"; primary-paste = "BTN_MIDDLE"; select-begin = "BTN_LEFT"; select-begin-block = "Control+BTN_LEFT"; select-extend = "BTN_RIGHT"; select-extend-character-wise = "Control+BTN_RIGHT"; select-word = "BTN_LEFT-2"; select-word-whitespace = "Control+BTN_LEFT-2"; select-quote = "BTN_LEFT-3"; select-row = "BTN_LEFT-4"; }; }; }; }