{ config, pkgs, lib, ... }: let vars = import ./variables.nix; c = vars.colors; in { # XFCE configuration with manual cassette futurism theming # Stylix is disabled for XFCE - all colors set manually # GTK theme - manually configured with cassette futurism colors gtk = { enable = true; theme = { name = "Adwaita-dark"; package = pkgs.gnome-themes-extra; }; iconTheme = { name = "Adwaita"; package = pkgs.adwaita-icon-theme; }; font = { name = "Noto Sans"; size = 11; }; gtk2.extraConfig = '' gtk-application-prefer-dark-theme = 1 ''; gtk3.extraConfig = { gtk-application-prefer-dark-theme = 1; }; # Custom CSS for cassette futurism aesthetic gtk3.extraCss = '' /* Cassette Futurism GTK3 Theme */ /* Hide menubars globally */ .menubar { opacity: 0; min-height: 0; padding: 0; margin: 0; } /* Base colors */ * { outline-color: ${c.cyan}; outline-width: 1px; } /* Window backgrounds */ window { background-color: ${c.background}; color: ${c.foreground}; } /* Selections */ selection { background-color: ${c.gray2}; color: ${c.cyan}; } /* Buttons */ button { background-color: ${c.gray2}; color: ${c.foreground}; border: 1px solid ${c.gray4}; } button:hover { background-color: ${c.gray3}; border-color: ${c.cyan}; } button:active { background-color: ${c.gray4}; color: ${c.cyan}; } /* Entry fields */ entry { background-color: ${c.backgroundAlt}; color: ${c.foreground}; border: 1px solid ${c.gray3}; caret-color: ${c.cyan}; } entry:focus { border-color: ${c.cyan}; } /* Scrollbars */ scrollbar { background-color: ${c.background}; } scrollbar slider { background-color: ${c.gray3}; border: 1px solid ${c.gray4}; } scrollbar slider:hover { background-color: ${c.gray4}; border-color: ${c.cyan}; } /* Tooltips */ tooltip { background-color: ${c.gray2}; color: ${c.cyan}; border: 1px solid ${c.cyan}; } /* Sidebar */ .sidebar { background-color: ${c.backgroundAlt}; } ''; gtk4.extraCss = '' /* Cassette Futurism GTK4 Theme */ /* Hide menubars */ .menubar { opacity: 0; min-height: 0; padding: 0; margin: 0; } /* Base window styling */ window { background-color: ${c.background}; color: ${c.foreground}; } ''; }; # XFCE Terminal color scheme - CRT cassette futurism programs.xfce4-terminal = { enable = true; settings = { "Configuration" = { FontName = "JetBrainsMono Nerd Font 11"; MiscAlwaysShowTabs = false; MiscBell = false; MiscBellUrgent = false; MiscBordersDefault = true; MiscCursorBlinks = true; MiscCursorShape = "TERMINAL_CURSOR_SHAPE_BLOCK"; MiscDefaultGeometry = "100x30"; MiscInheritGeometry = false; MiscMenubarDefault = false; MiscMouseAutohide = false; MiscMouseWheelZoom = true; MiscToolbarDefault = false; MiscConfirmClose = true; MiscCycleTabs = true; MiscTabCloseButtons = true; MiscTabCloseMiddleClick = true; MiscTabPosition = "GTK_POS_TOP"; MiscHighlightUrls = true; MiscMiddleClickOpensUri = false; MiscCopyOnSelect = false; MiscShowRelaunchDialog = true; MiscRewrapOnResize = true; MiscUseShiftArrowsToScroll = false; MiscSlimTabs = false; MiscNewTabAdjacent = false; ScrollingLines = 999999; # Cassette futurism colors (Base16) ColorForeground = c.foreground; ColorBackground = c.background; ColorCursor = c.cyan; ColorSelection = c.gray2; ColorSelectionUseDefault = false; # 16-color palette for terminal ColorPalette = lib.concatStringsSep ";" [ c.background # 0: black c.error # 1: red (hot pink) c.success # 2: green (CRT green) c.warning # 3: yellow (amber) c.purple # 4: blue (purple) c.magenta # 5: magenta c.cyan # 6: cyan c.foregroundAlt # 7: white (amber) c.gray3 # 8: bright black c.hotPink # 9: bright red c.foreground # 10: bright green c.yellow # 11: bright yellow c.purple # 12: bright blue c.magenta # 13: bright magenta c.cyan # 14: bright cyan "#FFFFFF" # 15: bright white ]; }; }; }; # XFCE configuration via xfconf xfconf.settings = { # Panel configuration xfce4-panel = { panels = [ { position = "p=8;x=0;y=0"; # Top panel size = 32; length = 100; autohide = false; background-style = 0; background-rgba = [0.06 0.06 0.06 0.95]; # Near-black with slight transparency } ]; # Panel plugins appearance plugins = { # Make sure clock uses system font "plugin-1" = { digital-format = "%H:%M"; }; }; }; # Window Manager (xfwm4) - cassette futurism theme xfwm4 = { general = { # Disable built-in compositor (picom handles effects) use_compositing = false; # Window snapping snap_to_border = true; snap_to_windows = true; snap_width = 10; # Fonts title_font = "JetBrainsMono Nerd Font Bold 11"; # Window decorations theme theme = "Default"; # Button layout button_layout = "O|HMC"; # Title alignment title_alignment = "left"; # Opacity settings inactive_opacity = 90; move_opacity = 85; resize_opacity = 85; popup_opacity = 95; # Focus settings click_to_focus = true; focus_new = true; raise_on_click = true; raise_on_focus = false; }; }; # Desktop settings - wallpaper and icons xfce4-desktop = { backdrop = { screen0 = { monitor0 = { workspace0 = { color-style = 0; # Solid color image-style = 3; # Scaled last-image = vars.wallpaper; # Backup color (CRT black) color1 = [0.06 0.06 0.06 1.0]; # #0F0F0F rgba1 = [0.06 0.06 0.06 1.0]; }; }; }; }; desktop-icons = { # Hide all desktop icons file-icons = { show-filesystem = false; show-home = false; show-trash = false; show-removable = false; }; # Icon appearance icon-size = 48; use-custom-font-size = true; font-size = 11; }; }; # Thunar file manager - cassette futurism styling thunar = { # Hide menubar last-menubar-visible = false; # Show hidden files by default last-show-hidden = true; # Icon view as default last-view = "ThunarIconView"; last-icon-view-zoom-level = "THUNAR_ZOOM_LEVEL_NORMAL"; # Misc settings misc-single-click = false; misc-folders-first = true; misc-directory-specific-settings = true; # Side pane last-side-pane = "ThunarShortcutsPane"; # Statusbar last-statusbar-visible = true; }; # GTK/X settings xsettings = { # Dark theme "Net/ThemeName" = "Adwaita-dark"; "Net/IconThemeName" = "Adwaita"; "Gtk/ApplicationPreferDarkTheme" = 1; # Toolbar settings "Gtk/ToolbarStyle" = 3; # Icons only "Gtk/ToolbarIconSize" = 3; # Large icons "Gtk/ButtonImages" = true; "Gtk/MenuImages" = true; # Font rendering "Xft/Antialias" = 1; "Xft/Hinting" = 1; "Xft/HintStyle" = "hintslight"; "Xft/RGBA" = "rgb"; "Xft/DPI" = 96; # Cursor "Gtk/CursorThemeName" = "Bibata-Modern-Classic"; "Gtk/CursorThemeSize" = 24; }; # Keyboard settings keyboards = { "Default" = { Numlock = true; }; }; # Mouse/touchpad settings pointers = { "Default" = { Acceleration = 2.0; Threshold = 4; }; }; }; # Home configuration home.packages = with pkgs; [ # XFCE goodies xfce.xfce4-panel xfce.xfce4-settings xfce.xfce4-power-manager xfce.xfce4-notifyd xfce.thunar xfce.thunar-volman xfce.tumbler xfce.mousepad xfce.ristretto xfce.xfce4-screenshooter # Themes gnome-themes-extra adwaita-icon-theme bibata-cursors ]; # Session variables home.sessionVariables = { # Force GTK to use our theme GTK_THEME = "Adwaita-dark"; }; }