diff options
| author | Miran Bastaja <miran.bastaja04@gmail.com> | 2023-11-18 00:02:29 +0100 |
|---|---|---|
| committer | Miran Bastaja <miran.bastaja04@gmail.com> | 2023-11-18 00:11:06 +0100 |
| commit | 55e80e6c60a60f74a47ec219eb9f883e57b1ff40 (patch) | |
| tree | 8b6751c3e9b6f3b7a0d88f3515a2ef587536971e /share/home | |
| parent | a92f92f98f4602813555140c773be31e17a55426 (diff) | |
Merge hyprland and hyprdesktop modules
The hyprland module will necessarily have to contain program-specific
configuration in the form of window rules. Therefore it's better to keep
the list of installed programs close to where the rules for them are
defined.
Diffstat (limited to 'share/home')
| -rw-r--r-- | share/home/hyprdesktop.nix | 84 | ||||
| -rw-r--r-- | share/home/hyprland.nix | 81 |
2 files changed, 83 insertions, 82 deletions
diff --git a/share/home/hyprdesktop.nix b/share/home/hyprdesktop.nix index fbf406b..d095bb5 100644 --- a/share/home/hyprdesktop.nix +++ b/share/home/hyprdesktop.nix @@ -1,15 +1,90 @@ # Module containing a bunch of things that make up a `desktop environment` built # off of hyprland. I install this on all my desktop/laptop machines. +# IMPORTANT: this module requires the system to already have `programs.hyprland` +# enabled. You can enable it by importing `share/system/hyprland.nix` { pkgs, config, inputs, ... }: { imports = [ + # Custom home manager modules + ../hm-modules/wpaperd.nix + + # Config ./minimal.nix - ./hyprland.nix + ./wpaperd.nix + ./eww ./git.nix ./mpv.nix ./kitty.nix ./firefox ]; + wayland.windowManager.hyprland = { + enable = true; + extraConfig = '' + $mod = SUPER + + bind = $mod SHIFT, Return, exec, kitty + + general { + layout = master + } + + master { + mfact = 0.5 + new_is_master = false + } + + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + ${builtins.concatStringsSep "\n" (builtins.genList (x: + let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); + in '' + bind = $mod, ${ws}, workspace, ${toString (x + 1)} + bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} + '') 10)} + + bind = $mod SHIFT, C, killactive + bind = $mod SHIFT, F, togglefloating + bind = $mod SHIFT, Q, exit + bind = $mod, P, exec, rofi -show drun + bind = $mod SHIFT, P, exec, rofi -show run + + bind = $mod, H, cyclenext, prev + bind = $mod, L, cyclenext + bind = $mod SHIFT, H, swapnext, prev + bind = $mod SHIFT, L, swapnext + + # audio control + binde =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%+ + binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%- + bind =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + + # monitor brightness control + binde =, XF86MonBrightnessUp, exec, brightnessctl set +5% + binde =, XF86MonBrightnessDown, exec, brightnessctl set 5%- + + # Screenshotting + # My stupid laptop outputs these three key codes when the PrtSc key is + # pressed instead of using just one code like any sane device would + bind = SUPER SHIFT, S, exec, grim -g "$(slurp)" -t png - | wl-copy --type image/png + + input { + # focus change on cursor move + follow_mouse = 1 + accel_profile = flat + } + monitor=,preferred,auto,1 + + # set opacity to 0.9 active and 0.5 inactive for kitty + windowrule = opacity 0.9 override 0.5 override,^(kitty)$ + + # move qbittorrent to workspace 6 + # TODO: make popup windows stay on the workspace where they were created + # windowrulev2 = workspace 6,class:(org.qbittorrent.qBittorrent),floating:0 + + exec-once = eww --config ${config.programs.eww.configDir} open bar + ''; + }; + home.packages = with pkgs; [ xh # Nice to use HTTP client bc # CLI calculator @@ -22,6 +97,10 @@ winetricks inputs.scripts.packages.${pkgs.system}.image-move qemu_kvm + wireplumber # session & policy manager for pipewire + grim # screenshot utility for wayland + slurp # region selection UI for wayland + wl-clipboard # clipboard utility # TUI/GUI programs cmus # music player @@ -42,6 +121,9 @@ superTuxKart ]; + services.dunst.enable = true; + programs.rofi.enable = true; + programs.direnv = { enable = true; nix-direnv.enable = true; diff --git a/share/home/hyprland.nix b/share/home/hyprland.nix deleted file mode 100644 index 767f3cd..0000000 --- a/share/home/hyprland.nix +++ /dev/null @@ -1,81 +0,0 @@ -# IMPORTANT: this module requires the system to already have `programs.hyprland` -# enabled. You can enable it by importing `share/system/hyprland.nix` -{ pkgs, config, ... }: { - imports = [ - # Custom home manager modules - ../hm-modules/wpaperd.nix - - # Config - ./kitty.nix - ./wpaperd.nix - ./eww - ]; - - wayland.windowManager.hyprland = { - enable = true; - extraConfig = '' - $mod = SUPER - - bind = $mod SHIFT, Return, exec, kitty - - general { - layout = master - } - - master { - mfact = 0.5 - new_is_master = false - } - - # workspaces - # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} - ${builtins.concatStringsSep "\n" (builtins.genList (x: - let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); - in '' - bind = $mod, ${ws}, workspace, ${toString (x + 1)} - bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} - '') 10)} - - bind = $mod SHIFT, C, killactive - bind = $mod SHIFT, F, togglefloating - bind = $mod SHIFT, Q, exit - bind = $mod, P, exec, rofi -show drun - bind = $mod SHIFT, P, exec, rofi -show run - - bind = $mod, H, cyclenext, prev - bind = $mod, L, cyclenext - bind = $mod SHIFT, H, swapnext, prev - bind = $mod SHIFT, L, swapnext - - # audio control - binde =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%+ - binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%- - bind =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - - # monitor brightness control - binde =, XF86MonBrightnessUp, exec, brightnessctl set +5% - binde =, XF86MonBrightnessDown, exec, brightnessctl set 5%- - - # Screenshotting - # My stupid laptop outputs these three key codes when the PrtSc key is - # pressed instead of using just one code like any sane device would - bind = SUPER SHIFT, S, exec, grim -g "$(slurp)" -t png - | wl-copy --type image/png - - input { - # focus change on cursor move - follow_mouse = 1 - accel_profile = flat - } - monitor=,preferred,auto,1 - - # set opacity to 0.9 active and 0.5 inactive for kitty - windowrule = opacity 0.9 override 0.5 override,^(kitty)$ - - exec-once = eww --config ${config.programs.eww.configDir} open bar - ''; - }; - - home.packages = with pkgs; [ brightnessctl wireplumber grim slurp wl-clipboard ]; - services.dunst.enable = true; - programs.rofi.enable = true; -} |
