{ config, lib, ... }: with lib; let cfg = config.custom.settings.dconf.gnome-shell; in { options.custom.settings.dconf.gnome-shell.enable = mkOption {default = false;}; config.home-manager.users.${config.custom.username} = mkIf cfg.enable { dconf.settings = with config.home-manager.users.${config.custom.username}.lib.gvariant; { # Extensions "org/gnome/shell" = { disable-extension-version-validation = mkBoolean false; #!! Concatenated with home-manager extensions #?? [as] enabled-extensions = mkArray type.string ["rounded-window-corners@fxgn"]; }; # Auto Move Windows "org/gnome/shell/extensions/auto-move-windows" = { application-list = mkArray type.string [ "${config.custom.browser.desktop}:1" "codium.desktop:1" "discord.desktop:1" "obsidian.desktop:1" "org.telegram.desktop.desktop:1" "signal-desktop.desktop:1" "steam.desktop:2" "youtube-music.desktop:1" ]; }; # Caffeine "org/gnome/shell/extensions/caffeine" = { show-notifications = mkBoolean false; duration-timer = mkInt32 4; #?? [as] toggle-shortcut = mkArray type.string ["Delete"]; }; # Clipboard Indicator "org/gnome/shell/extensions/clipboard-indicator" = { clear-on-boot = mkBoolean true; move-item-first = mkBoolean true; strip-text = mkBoolean true; display-mode = mkInt32 3; preview-size = mkInt32 100; #?? [as] clear-history = mkArray type.string []; next-entry = mkArray type.string []; prev-entry = mkArray type.string []; private-mode-binding = mkArray type.string []; toggle-menu = mkArray type.string ["v"]; }; # Dash to Dock "org/gnome/shell/extensions/dash-to-dock" = { animate-show-apps = mkBoolean true; application-counter-overrides-notifications = mkBoolean true; apply-custom-theme = mkBoolean false; autohide-in-fullscreen = mkBoolean false; custom-theme-shrink = mkBoolean false; dance-urgent-applications = mkBoolean true; disable-overview-on-startup = mkBoolean true; dock-fixed = mkBoolean false; hide-tooltip = mkBoolean false; hot-keys = mkBoolean false; intellihide = mkBoolean true; isolate-monitors = mkBoolean true; multi-monitor = mkBoolean true; require-pressure-to-show = mkBoolean false; running-indicator-dominant-color = mkBoolean true; scroll-to-focused-application = mkBoolean true; show-apps-always-in-the-edge = mkBoolean true; show-apps-at-top = mkBoolean true; show-dock-urgent-notify = mkBoolean false; show-favorites = mkBoolean true; show-icons-emblems = mkBoolean true; show-icons-notifications-counter = mkBoolean true; show-mounts = mkBoolean false; show-running = mkBoolean true; show-show-apps-button = mkBoolean true; show-trash = mkBoolean true; show-windows-preview = mkBoolean false; workspace-agnostic-urgent-windows = mkBoolean true; dash-max-icon-size = mkInt32 36; animation-time = mkDouble 0.2; hide-delay = mkDouble 0.2; show-delay = mkDouble 1.3877787807814457e-17; click-action = mkString "focus-minimize-or-appspread"; dock-position = mkString "BOTTOM"; intellihide-mode = mkString "ALL_WINDOWS"; middle-click-action = mkString "quit"; running-indicator-style = mkString "DOTS"; scroll-action = mkString "switch-workspace"; transparency-mode = mkString "DEFAULT"; }; # Dash2Dock Lite "org/gnome/shell/extensions/dash2dock-lite" = { apps-icon-front = mkBoolean true; autohide-dash = mkBoolean true; icon-shadow = mkBoolean false; open-app-animation = mkBoolean true; trash-icon = mkBoolean true; multi-monitor-preference = mkInt32 1; running-indicator-size = mkInt32 2; running-indicator-style = mkInt32 1; border-radius = mkDouble 8.0; animation-bounce = mkDouble 0.1; animation-magnify = mkDouble 1.0e-2; animation-rise = mkDouble 0.0; animation-spread = mkDouble 0.5; autohide-speed = mkDouble 0.0; dock-padding = mkDouble 1.0; edge-distance = mkDouble 0.5; icon-size = mkDouble 0.1; icon-spacing = mkDouble 0.2; pressure-sense-sensitivity = mkDouble 0.0; scroll-sensitivity = mkDouble 0.0; #?? (dddd) background-color = mkTuple [ (mkDouble 0.0) (mkDouble 0.16862741112709045) (mkDouble 0.21176470816135406) (mkDouble 1.0) ]; notification-badge-color = mkTuple [ (mkDouble 0.8274509906768799) (mkDouble 0.21176470816135406) (mkDouble 0.5098039507865906) (mkDouble 1.0) ]; running-indicator-color = mkTuple [ (mkDouble 0.8274509906768799) (mkDouble 0.21176470816135406) (mkDouble 0.5098039507865906) (mkDouble 1.0) ]; }; # ddterm "com/github/amezin/ddterm" = { notebook-border = mkBoolean false; override-window-animation = mkBoolean false; preserve-working-directory = mkBoolean false; scrollback-unlimited = mkBoolean true; tab-show-shortcuts = mkBoolean false; tab-switcher-popup = mkBoolean false; transparent-background = mkBoolean false; window-resizable = mkBoolean false; use-theme-colors = mkBoolean false; window-size = mkDouble 0.2; background-color = mkString "rgb(0,43,54)"; foreground-color = mkString "rgb(131,148,150)"; panel-icon-type = mkString "none"; tab-policy = mkString "automatic"; tab-position = mkString "top"; window-position = mkString "bottom"; #?? [as] ddterm-toggle-hotkey = mkArray type.string ["space"]; shortcut-move-tab-next = mkArray type.string [""]; shortcut-move-tab-prev = mkArray type.string [""]; shortcut-next-tab = mkArray type.string [""]; shortcut-prev-tab = mkArray type.string [""]; shortcut-toggle-maximize = mkArray type.string [""]; shortcut-win-new-tab = mkArray type.string ["t"]; shortcut-window-size-dec = mkArray type.string [""]; shortcut-window-size-inc = mkArray type.string [""]; palette = mkArray type.string [ "rgb(7,54,66)" "rgb(220,50,47)" "rgb(133,153,0)" "rgb(181,137,0)" "rgb(38,139,210)" "rgb(211,54,130)" "rgb(42,161,152)" "rgb(238,232,213)" "rgb(0,43,54)" "rgb(203,75,22)" "rgb(88,110,117)" "rgb(101,123,131)" "rgb(131,148,150)" "rgb(108,113,196)" "rgb(147,161,161)" "rgb(253,246,227)" ]; }; # Hide Top Bar "org/gnome/shell/extensions/hidetopbar" = { animation-time-overview = mkDouble 0.2; pressure-threshold = mkDouble 0.0; enable-active-window = mkBoolean false; mouse-sensitive = mkBoolean true; mouse-sensitive-fullscreen-window = mkBoolean false; }; # Just Perfection "org/gnome/shell/extensions/just-perfection" = { background-menu = mkBoolean false; search = mkBoolean false; switcher-popup-delay = mkBoolean false; window-demands-attention-focus = mkBoolean true; world-clock = mkBoolean false; startup-status = mkInt32 0; }; # Media Controls "org/gnome/shell/extensions/mediacontrols" = { colored-player-icon = mkBoolean true; hide-media-notification = mkBoolean true; scroll-labels = mkBoolean true; show-control-icons = mkBoolean false; show-label = mkBoolean true; show-player-icon = mkBoolean true; label-width = mkUint32 0; extension-position = mkString "Right"; mouse-action-left = mkString "PLAY_PAUSE"; mouse-action-middle = mkString "QUIT_PLAYER"; }; # Rounded Window Corners Reborn "org/gnome/shell/extensions/rounded-window-corners" = { skip-libadwaita-app = mkBoolean true; skip-libhandy-app = mkBoolean true; }; # Tiling Assistant "org/gnome/shell/extensions/tiling-assistant" = { adapt-edge-tiling-to-favorite-layout = mkBoolean true; enable-advanced-experimental-features = mkBoolean true; enable-raise-tile-group = mkBoolean false; enable-tiling-popup = mkBoolean false; maximize-with-gap = mkBoolean true; active-window-hint = mkInt32 0; default-move-mode = mkInt32 1; dynamic-keybinding-behavior = mkInt32 4; ignore-ta-mod = mkInt32 0; move-adaptive-tiling-mod = mkInt32 0; move-favorite-layout-mod = mkInt32 1; screen-bottom-gap = mkInt32 20; screen-left-gap = mkInt32 20; screen-right-gap = mkInt32 20; screen-top-gap = mkInt32 20; window-gap = mkInt32 20; active-window-hint-color = mkString "rgb(211,54,130)"; #?? [as] center-window = mkArray type.string []; favorite-layouts = mkArray type.string ["0"]; restore-window = mkArray type.string ["BackSpace"]; tile-edit-mode = mkArray type.string []; tile-maximize = mkArray type.string ["Return"]; tile-maximize-vertically = mkArray type.string []; tile-maximize-horizontally = mkArray type.string []; tile-bottom-half = mkArray type.string ["r"]; tile-bottomleft-quarter = mkArray type.string []; tile-bottomright-quarter = mkArray type.string []; tile-left-half = mkArray type.string ["a"]; tile-right-half = mkArray type.string ["s"]; tile-top-half = mkArray type.string ["w"]; tile-topleft-quarter = mkArray type.string []; tile-topright-quarter = mkArray type.string []; toggle-always-on-top = mkArray type.string []; }; }; }; }