180 lines
4.6 KiB
Nix
180 lines
4.6 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
inherit (config.my)
|
|
key
|
|
theme
|
|
accent
|
|
font
|
|
;
|
|
inherit (theme) color;
|
|
in
|
|
{
|
|
config = {
|
|
programs.alacritty = {
|
|
enable = true;
|
|
settings = {
|
|
font = {
|
|
size = font.size.small;
|
|
normal = {
|
|
family = font.mono;
|
|
};
|
|
};
|
|
colors = {
|
|
primary = {
|
|
background = "${color.bg}";
|
|
foreground = "${color.txt}";
|
|
};
|
|
cursor = {
|
|
text = "#000000";
|
|
cursor = "${accent.color}";
|
|
};
|
|
normal = {
|
|
black = "${color.normal.black}";
|
|
red = "${color.normal.red}";
|
|
green = "${color.normal.green}";
|
|
yellow = "${color.normal.yellow}";
|
|
blue = "${color.normal.blue}";
|
|
magenta = "${color.normal.magenta}";
|
|
cyan = "${color.normal.cyan}";
|
|
white = "${color.normal.white}";
|
|
};
|
|
draw_bold_text_with_bright_colors = false;
|
|
};
|
|
window = {
|
|
opacity = theme.opacity / 100.0;
|
|
dynamic_padding = true;
|
|
};
|
|
|
|
hints = {
|
|
alphabet = key.hints;
|
|
enabled = [
|
|
{
|
|
regex =
|
|
let
|
|
mimes = "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)";
|
|
# I fucking hate regex, look at this bullshit
|
|
delimiters = ''^\\u0000-\\u001F\\u007F-\\u009F<>"\\s{-}\\^⟨⟩`'';
|
|
# Kakoune uses these characters to represent whitespace,
|
|
# but alacritty doesn't know about them
|
|
whitespace_characters = ''¬·→'';
|
|
in
|
|
"${mimes}[${delimiters}${whitespace_characters}]+";
|
|
command = "xdg-open";
|
|
post_processing = true;
|
|
mouse = {
|
|
enabled = true;
|
|
mods = "None";
|
|
};
|
|
binding = {
|
|
key = "U";
|
|
mods = "Control|Shift";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
mouse = {
|
|
hide_when_typing = true;
|
|
};
|
|
keyboard.bindings = [
|
|
{
|
|
key = lib.toUpper key.up;
|
|
mode = "Vi|~Search";
|
|
action = "Up";
|
|
}
|
|
{
|
|
key = lib.toUpper key.down;
|
|
mode = "Vi|~Search";
|
|
action = "Down";
|
|
}
|
|
{
|
|
key = lib.toUpper key.left;
|
|
mode = "Vi|~Search";
|
|
action = "Left";
|
|
}
|
|
{
|
|
key = lib.toUpper key.right;
|
|
mode = "Vi|~Search";
|
|
action = "Right";
|
|
}
|
|
{
|
|
key = lib.toUpper key.insertMode;
|
|
mode = "Vi|~Search";
|
|
action = "ScrollToBottom";
|
|
}
|
|
{
|
|
key = lib.toUpper key.insertMode;
|
|
mode = "Vi|~Search";
|
|
action = "ToggleViMode";
|
|
}
|
|
{
|
|
key = lib.toUpper key.next;
|
|
mode = "Vi|~Search";
|
|
action = "SearchNext";
|
|
}
|
|
{
|
|
key = lib.toUpper key.next;
|
|
mods = "Shift";
|
|
mode = "Vi|~Search";
|
|
action = "SearchPrevious";
|
|
}
|
|
{
|
|
key = "Up";
|
|
mods = "Control|Shift";
|
|
mode = "~Alt";
|
|
action = "ScrollLineUp";
|
|
}
|
|
{
|
|
key = "Down";
|
|
mods = "Control|Shift";
|
|
mode = "~Alt";
|
|
action = "ScrollLineDown";
|
|
}
|
|
{
|
|
key = "PageUp";
|
|
mods = "Control|Shift";
|
|
mode = "~Alt";
|
|
action = "ScrollHalfPageUp";
|
|
}
|
|
{
|
|
key = "PageDown";
|
|
mods = "Control|Shift";
|
|
mode = "~Alt";
|
|
action = "ScrollHalfPageDown";
|
|
}
|
|
{
|
|
key = "N";
|
|
mods = "Control|Shift";
|
|
action = "SpawnNewInstance";
|
|
}
|
|
# {%@@ if key.layout == "colemak" @@%}
|
|
{
|
|
key = "T";
|
|
mode = "Vi|~Search";
|
|
action = "SemanticRightEnd";
|
|
}
|
|
# {%@@ endif @@%}
|
|
];
|
|
};
|
|
};
|
|
|
|
home.sessionVariables = {
|
|
TERMINAL = "alacritty";
|
|
};
|
|
|
|
# Look at this fucking bullshit:
|
|
# https://gitlab.gnome.org/GNOME/glib/-/blob/20c4fcb2a7246a2b205649eae3ebda4296217afc/gio/gdesktopappinfo.c#L2702
|
|
# Theres a fucking hard coded list of terminals!
|
|
home.packages = with pkgs; [
|
|
(pkgs.writeShellScriptBin "gnome-terminal" ''
|
|
[ "$1" = "--" ] && shift
|
|
exec terminal -e "$@"
|
|
'')
|
|
];
|
|
};
|
|
}
|