diff --git a/homes/me/default.nix b/homes/me/default.nix index 3ef0dda..fac7454 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -4,6 +4,7 @@ lib, config, pkgs, + pkgs-unstable, ... }: { imports = [ @@ -15,11 +16,12 @@ ../modules/btop.nix ../modules/term/ghostty.nix + ../modules/term/foot.nix # ../modules/term/rio.nix ../modules/firefox.nix - #../modules/hypr/hypridle.nix - ../modules/hypr/hyprlock.nix + #../modules/wm/hypr/hypridle.nix + ../modules/wm/hypr/hyprlock.nix ../modules/kanshi.nix ../modules/ags ]; diff --git a/homes/modules/term/foot.nix b/homes/modules/term/foot.nix new file mode 100644 index 0000000..348eefa --- /dev/null +++ b/homes/modules/term/foot.nix @@ -0,0 +1,327 @@ +{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"; + }; + }; + }; +} diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index e6d03fd..b1243b9 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -180,7 +180,7 @@ in { home-manager = { users.me = import ../../homes/me; - #extraSpecialArgs = {inherit inputs pkgs;}; + extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; sharedModules = [ inputs.ags.homeManagerModules.default ];