From 5f441a4be1631481cbce855e4c689bcd8714d09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Sun, 28 Jul 2024 23:30:50 +0200 Subject: [PATCH] wm: river setup --- home-manager/flake.nix | 1 + home-manager/home.nix | 2 + home-manager/wm/river.nix | 83 +++++++++++++++++++++++++++++++++++++++ nixos/configuration.nix | 3 ++ 4 files changed, 89 insertions(+) create mode 100644 home-manager/wm/river.nix diff --git a/home-manager/flake.nix b/home-manager/flake.nix index 33246b3..dd7256a 100644 --- a/home-manager/flake.nix +++ b/home-manager/flake.nix @@ -27,6 +27,7 @@ inherit pkgs; modules = [ ./home.nix + ./wm/river.nix ]; extraSpecialArgs = { inherit inputs; diff --git a/home-manager/home.nix b/home-manager/home.nix index 9cff7ce..f24ae53 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -17,6 +17,8 @@ in { zed-editor # nixvim inputs.nixvim-flake.packages.${system}.default + # wm river utils + kitty swaylock fuzzel ]; file = { diff --git a/home-manager/wm/river.nix b/home-manager/wm/river.nix new file mode 100644 index 0000000..bee8f77 --- /dev/null +++ b/home-manager/wm/river.nix @@ -0,0 +1,83 @@ +let + swaylock-command = "swaylock --ignore-empty-password --show-failed-attempts --daemonize --show-keyboard-layout --color 212733"; +in +{ + wayland.windowManager.river = { + enable = true; + extraConfig = '' + rivertile -view-padding 0 -outer-padding 0 & + ''; + settings = { + border-width = 2; + keyboard-layout = "fr"; + default-layout = "rivertile"; + focus-follows-cursor = "normal"; + map = { + normal = { + # screen lock & suspend + "Control+Alt L" = "spawn '${swaylock-command}'"; + "Control+Alt+Shift L" = "spawn '${swaylock-command} & systemctl suspend'"; + # terminal + "Super Return" = "spawn kitty"; + # frequent programs + "Super Q" = "spawn firefox"; + "Super D" = "spawn discord"; + "Super G" = "spawn dolphin"; + # program launcher + "Super R" = "spawn fuzzel"; + # quit river + "Super+Alt+Control Q" = "exit"; + # manipulate current view + "Super W" = "close"; + "Super M" = "toggle-fullscreen"; + "Super S" = "toggle-float"; + "Super F" = "toggle-fullscreen"; + # view focus + "Super H" = "focus-view left"; + "Super J" = "focus-view down"; + "Super K" = "focus-view up"; + "Super L" = "focus-view right"; + "Super I" = "focus-view previous"; + "Super O" = "focus-view next"; + # view movement + "Super+Shift H" = "swap left"; + "Super+Shift J" = "swap down"; + "Super+Shift K" = "swap up"; + "Super+Shift L" = "swap right"; + "Super+Shift I" = "swap previous"; + "Super+Shift O" = "swap next"; + # tag (workspace) management + ## switch to workspace + "Super ampersand" = "set-focused-tags 1"; + "Super eacute" = "set-focused-tags 2"; + "Super quotedbl" = "set-focused-tags 4"; + "Super apostrophe" = "set-focused-tags 8"; + "Super parenleft" = "set-focused-tags 16"; + "Super minus" = "set-focused-tags 32"; + "Super egrave" = "set-focused-tags 64"; + "Super underscore" = "set-focused-tags 128"; + "Super ccedilla" = "set-focused-tags 256"; + "Super agrave" = "set-focused-tags 512"; + ## send to workspace + "Super+Shift ampersand" = "set-view-tags 1"; + "Super+Shift eacute" = "set-view-tags 2"; + "Super+Shift quotedbl" = "set-view-tags 4"; + "Super+Shift apostrophe" = "set-view-tags 8"; + "Super+Shift parenleft" = "set-view-tags 16"; + "Super+Shift minus" = "set-view-tags 32"; + "Super+Shift egrave" = "set-view-tags 64"; + "Super+Shift underscore" = "set-view-tags 128"; + "Super+Shift ccedilla" = "set-view-tags 256"; + "Super+Shift agrave" = "set-view-tags 512"; + }; + }; + map-pointer = { + normal = { + "Super BTN_LEFT" = "move-view"; + "Super BTN_RIGHT" = "resize-view"; + "Super BTN_MIDDLE" = "toggle-float"; + }; + }; + }; + }; +} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 5d71b25..436892c 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -54,6 +54,9 @@ services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true; + # does this add river to sddm menu? + programs.river.enable = true; + # Configure keymap in X11 services.xserver = { layout = "fr";