From b2719228b39a4352a58bd52722c0649fef530075 Mon Sep 17 00:00:00 2001 From: Frantisek Bohacek Date: Sat, 18 Nov 2023 18:22:49 +0100 Subject: [PATCH] feat: add gnome extensions, tiling keybindings --- modules/desktop/gnome/default.nix | 6 + modules/desktop/gnome/home.nix | 214 ++++++++++++------------------ 2 files changed, 90 insertions(+), 130 deletions(-) diff --git a/modules/desktop/gnome/default.nix b/modules/desktop/gnome/default.nix index e136043..0580752 100644 --- a/modules/desktop/gnome/default.nix +++ b/modules/desktop/gnome/default.nix @@ -26,6 +26,12 @@ gnome.dconf-editor gnome.gnome-tweaks gnome.adwaita-icon-theme + gnomeExtensions.paperwm + gnomeExtensions.fullscreen-avoider + gnomeExtensions.vitals + gnomeExtensions.openweather + gnomeExtensions.clipboard-history + gnomeExtensions.forge ]; gnome.excludePackages = (with pkgs; [ # Gnome ignored packages gnome-tour diff --git a/modules/desktop/gnome/home.nix b/modules/desktop/gnome/home.nix index 9d5fa58..a54331a 100644 --- a/modules/desktop/gnome/home.nix +++ b/modules/desktop/gnome/home.nix @@ -10,24 +10,25 @@ dconf.settings = { "org/gnome/shell" = { favorite-apps = [ - "org.gnome.Settings.desktop" "Alacritty.desktop" "firefox.desktop" "emacs.desktop" "org.gnome.Nautilus.desktop" - "smartcode-stremio.desktop" "discord.desktop" "telegram-desktop.desktop" - "steam.desktop" - "retroarch.desktop" - "com.parsecgaming.parsec.desktop" - "org.remmina.Remmina.desktop" - "virt-manager.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" ]; }; @@ -49,154 +50,107 @@ resize-with-right-button = true; mouse-button-modifier = ""; button-layout = ":minimize,close"; + num-workspaces = 9; + }; + "org/gnome/shell/keybindings" = { + switch-to-application-1 = ["@as []"]; + switch-to-application-2 = ["@as []"]; + switch-to-application-3 = ["@as []"]; + switch-to-application-4 = ["@as []"]; + switch-to-application-5 = ["@as []"]; + switch-to-application-6 = ["@as []"]; + switch-to-application-7 = ["@as []"]; + switch-to-application-8 = ["@as []"]; + switch-to-application-9 = ["@as []"]; }; "org/gnome/desktop/wm/keybindings" = { - # maximize = ["Up"]; # For floating - # unmaximize = ["Down"]; - maximize = ["@as []"]; # For tilers - unmaximize = ["@as []"]; - switch-to-workspace-left = ["Left"]; - switch-to-workspace-right = ["Right"]; - switch-to-workspace-1 = ["1"]; - switch-to-workspace-2 = ["2"]; - switch-to-workspace-3 = ["3"]; - switch-to-workspace-4 = ["4"]; - switch-to-workspace-5 = ["5"]; - move-to-workspace-left = ["Left"]; - move-to-workspace-right = ["Right"]; - move-to-workspace-1 = ["1"]; - move-to-workspace-2 = ["2"]; - move-to-workspace-3 = ["3"]; - move-to-workspace-4 = ["4"]; - move-to-workspace-5 = ["5"]; - move-to-monitor-left = ["Left"]; - move-to-monitor-right = ["Right"]; - close = ["q" "F4"]; + switch-to-workspace-1 = ["1"]; + switch-to-workspace-2 = ["2"]; + switch-to-workspace-3 = ["3"]; + switch-to-workspace-4 = ["4"]; + switch-to-workspace-5 = ["5"]; + switch-to-workspace-6 = ["6"]; + switch-to-workspace-7 = ["7"]; + switch-to-workspace-8 = ["8"]; + switch-to-workspace-9 = ["9"]; + + move-to-workspace-left = ["a"]; + move-to-workspace-right = ["d"]; + + move-to-workspace-1 = ["1"]; + move-to-workspace-2 = ["2"]; + move-to-workspace-3 = ["3"]; + move-to-workspace-4 = ["4"]; + move-to-workspace-5 = ["5"]; + move-to-workspace-6 = ["6"]; + move-to-workspace-7 = ["7"]; + move-to-workspace-8 = ["8"]; + move-to-workspace-9 = ["9"]; + + close = ["w" "F4"]; toggle-fullscreen = ["f"]; - }; - "org/gnome/mutter" = { - workspaces-only-on-primary = false; - center-new-windows = true; - edge-tiling = false; # Disabled when tiling - }; - "org/gnome/mutter/keybindings" = { - #toggle-tiled-left = ["Left"]; # For floating - #toggle-tiled-right = ["Right"]; - toggle-tiled-left = ["@as []"]; # For tilers - toggle-tiled-right = ["@as []"]; + panel-run-dialog = "semicolon"; }; "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/custom2/" ]; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - binding = "Return"; + binding = "Return"; command = "alacritty"; name = "open-terminal"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { - binding = "t"; - command = "emacs"; - name = "open-editor"; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = { binding = "e"; - command = "nautilus"; - name = "open-file-browser"; + command = "emacs-client"; + name = "open-emacs"; }; - "org/gnome/shell/extension/dash-to-panel" = { # Possibly need to set this manually - panel-position = ''{"0":"TOP","1":"Top"}''; - panel-sizes = ''{"0":24,"1":24}''; - panel-element-positions-monitors-sync = true; - appicon-margin = 0; - appicon-padding = 4; - dot-position = "TOP"; - dot-style-focused = "SOLID"; - dot-style-unfocused = "DOTS"; - animate-appicon-hover = true; - animate-appicon-hover-animation-travel = "{'SIMPLE': 0.14999999999999999, 'RIPPLE': 0.40000000000000002, 'PLANK': 0.0}"; - isolate-monitors = true; - }; - "org/gnome/shell/extensions/just-perfection" = { - theme = true; - activities-button = false; - app-menu = false; - clock-menu-position = 1; - clock-menu-position-offset = 7; - }; - "org/gnome/shell/extensions/caffeine" = { - enable-fullscreen = true; - restore-state = true; - show-indicator = true; - show-notification = false; - }; - "org/gnome/shell/extensions/blur-my-shell" = { - brightness = 0.9; - }; - "org/gnome/shell/extensions/blur-my-shell/panel" = { - customize = true; - sigma = 0; - }; - "org/gnome/shell/extensions/blur-my-shell/overview" = { # Temporary = D2D Bug - customize = true; - sigma = 0; - }; - "org/gnome/shell/extensions/horizontal-workspace-indicator" = { - widget-position = "left"; - widget-orientation = "horizontal"; - icons-style = "circles"; + "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/bluetooth-quick-connect" = { - show-battery-icon-on = true; - show-battery-value-on = true; - }; - "org/gnome/shell/extensions/pip-on-top" = { - stick = true; - }; - "org/gnome/shell/extensions/forge" = { - window-gap-size = 8; - dnd-center-layout = "stacked"; - }; - "org/gnome/shell/extensions/forge/keybindings" = { # Set active colors manually - focus-border-toggle = true; - float-always-on-top-enabled = true; - window-focus-up = ["Up"]; - window-focus-down = ["Down"]; - window-focus-left = ["Left"]; - window-focus-right = ["Right"]; - # window-swap-up = ["Up"]; - # window-swap-down = ["Down"]; - # window-swap-left = ["Left"]; - # window-swap-right = ["Right"]; - window-move-up = ["Up"]; - window-move-down = ["Down"]; - window-move-left = ["Left"]; - window-move-right = ["Right"]; - window-swap-last-active = ["@as []"]; - window-toggle-float = ["f"]; + + "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/dash-to-dock" = { # If dock if preferred - # multi-monitor = true; - # dock-fixed = true; - # dash-max-icon-size = 16; - # custom-theme-shrink = true; - # transparency-mode = "FIXED"; - # background-opacity = 0.0; - # show-apps-at-top = true; - # show-trash = true; - # hot-keys = false; - # click-action = "previews"; - # scroll-action = "cycle-windows"; - # }; }; home.packages = with pkgs; [ -- 2.48.1