{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.x11; in { options.nixfiles.modules.x11.enable = mkEnableOption "X11"; config = mkIf cfg.enable { nixfiles.modules.fonts.enable = true; hm = { home.sessionVariables = { XCOMPOSEFILE = pkgs.writeText "XCompose" '' include "${pkgs.xorg.libX11}/share/X11/locale/en_US.UTF-8/Compose" ''; XCOMPOSECACHE = "${config.dirs.cache}/libx11/compose"; }; xresources.properties = (let font = with config.fontScheme.monospaceFont; "${family}:style=${style}:size=${toString size}"; in { "*.font" = font; "Xft.antialias" = mkDefault 1; "Xft.autohint" = mkDefault 0; "Xft.hinting" = mkDefault 1; "Xft.hintstyle" = mkDefault "hintslight"; "Xft.lcdfilter" = mkDefault "lcddefault"; "Xft.rgba" = mkDefault "rgb"; }) // (with config.colourScheme; { "*.color0" = black; "*.color8" = brightBlack; "*.color1" = red; "*.color9" = brightRed; "*.color2" = green; "*.color10" = brightGreen; "*.color3" = yellow; "*.color11" = brightYellow; "*.color4" = blue; "*.color12" = brightBlue; "*.color5" = magenta; "*.color13" = brightMagenta; "*.color6" = cyan; "*.color14" = brightCyan; "*.color7" = white; "*.color15" = brightWhite; "*.background" = background; "*.foreground" = foreground; }); services.xsettingsd = { enable = true; # https://codeberg.org/derat/xsettingsd#settings settings = let xprop = config.hm.xresources.properties; in { "Net/CursorBlink" = 1; "Net/CursorBlinkTime" = 1200; "Net/DndDragThreshold" = 0; "Net/DoubleClickDistance" = 5; "Net/DoubleClickTime" = 250; "Net/EnableEventSounds" = 1; "Net/EnableInputFeedbackSounds" = 1; "Xft/Antialias" = xprop."Xft.antialias"; "Xft/HintStyle" = xprop."Xft.hintstyle"; "Xft/Hinting" = xprop."Xft.hinting"; "Xft/RGBA" = xprop."Xft.rgba"; }; }; }; services.xserver = { enable = true; tty = mkDefault 1; autoRepeatDelay = 200; autoRepeatInterval = 25; libinput.enable = true; monitorSection = '' Option "DPMS" "false" ''; serverFlagsSection = '' Option "BlankTime" "0" Option "OffTime" "0" Option "StandbyTime" "0" Option "SuspendTime" "0" ''; inputClassSections = [ '' Identifier "Mouse" MatchIsPointer "yes" Option "AccelerationNumerator" "2" Option "AccelerationDenominator" "1" Option "AccelerationThreshold" "4" '' ]; }; }; }