{ config, lib, pkgs, ... }: { options = { profiles.desktop.gnome = { enable = lib.mkEnableOption "gnome"; }; }; config = lib.mkIf config.profiles.desktop.gnome.enable { profiles.desktop.enable = true; home.file.".sessions/start-gnome".source = pkgs.writeShellApplication { name = "start-gnome"; runtimeInputs = [ pkgs.xorg.xinit ]; text = '' startx ${pkgs.writeShellScript "gnome-internal" '' gnome-session pid=$! wait $pid systemctl stop --user graphical-session.target ''} ''; } + "/bin/start-gnome"; dconf.settings = { "org/gnome/shell" = { favorite-apps = [ "Alacritty.desktop" "firefox.desktop" "emacs.desktop" "org.gnome.Nautilus.desktop" "discord.desktop" "telegram-desktop.desktop" "blueman-manager.desktop" "pavucontrol.desktop" ]; disable-user-extensions = false; enabled-extensions = [ "paperwm@paperwm.github.com" "auto-move-windows@gnome-shell-extensions.gcampax.github.com" "launch-new-instance@gnome-shell-extensions.gcampax.github.com" "native-window-placement@gnome-shell-extensions.gcampax.github.com" "places-menu@gnome-shell-extensions.gcampax.github.com" "drive-menu@gnome-shell-extensions.gcampax.github.com" "Vitals@CoreCoding.com" "clipboard-history@alexsaveau.dev" "switcher@landau.fi" "fullscreen-avoider@noobsai.github.com" "instantworkspaceswitcher@amalantony.net" ]; }; "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; enable-hot-corners = false; clock-show-weekday = true; #gtk-theme = "Adwaita-dark"; }; "org/gnome/desktop/privacy" = { report-technical-problems = "false"; }; "org/gnome/desktop/calendar" = { show-weekdate = true; }; "org/gnome/desktop/wm/preferences" = { action-right-click-titlebar = "toggle-maximize"; action-middle-click-titlebar = "minimize"; resize-with-right-button = true; mouse-button-modifier = ""; button-layout = ":minimize,close"; num-workspaces = 9; }; # "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); "org/gnome/shell/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-application-${builtins.toString i}"; value = ["@as []"]; }) (builtins.genList (y: y + 1) 9)); "org/gnome/desktop/wm/keybindings" = builtins.listToAttrs (builtins.map (i: { name = "switch-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // builtins.listToAttrs (builtins.map (i: { name = "move-to-workspace-${builtins.toString i}"; value = ["${builtins.toString i}"]; }) (builtins.genList (y: y + 1) 9)) // { move-to-workspace-left = ["a"]; move-to-workspace-right = ["d"]; close = ["w" "F4"]; toggle-fullscreen = ["f"]; panel-run-dialog = ["@as []"]; }; "org/gnome/settings-daemon/plugins/power" = { sleep-interactive-ac-type = "nothing"; }; "org/gnome/settings-daemon/plugins/media-keys" = { custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" ]; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { binding = "Return"; command = "alacritty"; name = "open-terminal"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { binding = "e"; command = "emacs-client"; name = "open-emacs"; }; "org/gnome/shell/extensions/paperwm" = { restore-workspaces-only-on-primary = false; window-gap = 10; winprops = [ "{\"wm_class\":\"Spotify\",\"scratch_layer\":true}" ]; }; "org/gnome/shell/extensions/paperwm/keybindings" = { move-left = ["k"]; move-right = ["j"]; switch-previous = ["k"]; switch-next = ["j"]; move-monitor-left = ["a"]; move-monitor-below = ["s"]; move-monitor-right = ["d"]; move-monitor-above = ["w"]; swap-monitor-left = ["a"]; swap-monitor-below = ["s"]; swap-monitor-right = ["d"]; swap-monitor-above = ["w"]; switch-monitor-left = ["a"]; switch-monitor-below = ["s"]; switch-monitor-right = ["d"]; switch-monitor-above = ["w"]; new-window = ["n"]; paper-toggle-fullscreen = ["f"]; toggle-maximize-width = ["f"]; toggle-scratch = ["g"]; toggle-scratch-layer = ["g"]; }; "org/gnome/shell/extensions/switcher" = { show-switcher = ["semicolon"]; }; }; }; }