{ lib, osConfig, ... }: let inherit (lib) mkIf; cfg = osConfig.roles.desktop; in { config = mkIf cfg.enable { programs = { # https://codeberg.org/dnkl/foot/wiki#spawning-new-terminal-instances-in-the-current-working-directory bash.bashrcExtra = # bash '' osc7_cwd() { local strlen=''${#PWD} local encoded="" local pos c o for (( pos=0; pos<strlen; pos++ )); do c=''${PWD:$pos:1} case "$c" in [-/:_.!\'\(\)~[:alnum:]] ) o="$c" ;; * ) printf -v o '%%%02X' "'$c" ;; esac encoded+="''${o}" done printf '\e]7;file://%s%s\e\\' "''${HOSTNAME}" "''${encoded}" } PROMPT_COMMAND=''${PROMPT_COMMAND:+$PROMPT_COMMAND; }osc7_cwd ''; foot = { enable = true; settings = { main = { term = "xterm-256color"; font = "${cfg.fontName}:size=${ lib.strings.floatToString cfg.fontSize }"; pad = "0x10"; }; key-bindings = { spawn-terminal = "Control+Shift+Return"; }; bell = { urgent = false; notify = false; visual = false; command = null; command-focused = false; }; colors = { # BG transparency alpha = 0.8; background = "282a36"; foreground = "f8f8f2"; regular0 = "21222c"; # black regular1 = "ff5555"; # red regular2 = "50fa7b"; # green regular3 = "f1fa8c"; # yellow regular4 = "bd93f9"; # blue regular5 = "ff79c6"; # magenta regular6 = "8be9fd"; # cyan regular7 = "f8f8f2"; # white 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 selection-foreground = "ffffff"; selection-background = "44475a"; urls = "8be9fd"; }; }; }; }; }; # For accurate stack trace _file = ./foot.nix; }