work on hyprland
This commit is contained in:
		
							parent
							
								
									2cf287d570
								
							
						
					
					
						commit
						a2441e0d13
					
				
					 4 changed files with 327 additions and 3 deletions
				
			
		
							
								
								
									
										10
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -7,10 +7,14 @@ | ||||||
|       nix-colors.url = "github:misterio77/nix-colors"; |       nix-colors.url = "github:misterio77/nix-colors"; | ||||||
| 
 | 
 | ||||||
|       firefox-addons = { |       firefox-addons = { | ||||||
|     url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; |         url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; | ||||||
|     inputs.nixpkgs.follows = "nixpkgs"; |         inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|       }; |       }; | ||||||
|        |        | ||||||
|  |       hyprwm-contrib = { | ||||||
|  |         url = "github:hyprwm/contrib"; | ||||||
|  |         inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     outputs = { self, nixpkgs, home-manager, ... }@inputs: |     outputs = { self, nixpkgs, home-manager, ... }@inputs: | ||||||
|  | @ -25,6 +29,8 @@ | ||||||
| 
 | 
 | ||||||
|       homeManagerModules = import ./modules/home-manager; |       homeManagerModules = import ./modules/home-manager; | ||||||
| 
 | 
 | ||||||
|  |       wallpapers = import ./home/ooks/wallpapers | ||||||
|  | 
 | ||||||
|       nixosConfigurations = { |       nixosConfigurations = { | ||||||
|         # X1 Carbon |         # X1 Carbon | ||||||
|         ooksx1 =  lib.nixosSystem { |         ooksx1 =  lib.nixosSystem { | ||||||
|  |  | ||||||
							
								
								
									
										139
									
								
								home/ooks/opt/desktop/hyprland/binds.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								home/ooks/opt/desktop/hyprland/binds.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,139 @@ | ||||||
|  | { | ||||||
|  |   wayland.windowManager.hyprland.settings = { | ||||||
|  |     bind = let | ||||||
|  |        | ||||||
|  |       terminal = config.home.sessionVariables.TERMINAL; | ||||||
|  |       browser = config.home.sessionVariables.BROWSER; | ||||||
|  |       editor = config.home.sessionVariables.EDITOR; | ||||||
|  | 
 | ||||||
|  |       makoctl = "${config.services.mako.package}/bin/makoctl"; | ||||||
|  | 
 | ||||||
|  |       playerctl = "${config.services.playerctld.package}/bin/playerctl"; | ||||||
|  |       playerctld = "${config.services.playerctld.package}/bin/playerctld"; | ||||||
|  |       pactl = "${pkgs.pulseaudio}/bin/pactl"; | ||||||
|  |     in [ | ||||||
|  | 
 | ||||||
|  |     # Program Launch | ||||||
|  |     "SUPER,b,exec,${browser}"; | ||||||
|  |     "SUPER,return,exec,${terminal}"; | ||||||
|  |     "SUPER,e,exec,${editor}"; | ||||||
|  | 
 | ||||||
|  |     #Media | ||||||
|  | 
 | ||||||
|  |     ",XF86AudioNext,exec,${playerctl} next"; | ||||||
|  |     ",XF86AudioPrev,exec,${playerctl} previous"; | ||||||
|  |     ",XF86AudioPlay,exec,${playerctl} play-pause"; | ||||||
|  |     ",XF86AudioStop,exec,${playerctl} stop"; | ||||||
|  |      | ||||||
|  |     # Window Management | ||||||
|  |      | ||||||
|  |     "SUPER,Q,killactive"; | ||||||
|  |     "SUPERSHIFT ALT,delete,exit"; | ||||||
|  |     "SUPER,F,fullscreen"; | ||||||
|  |     "SUPER,Space,togglefloating"; | ||||||
|  |     "SUPER,P,pseudo"; # dwindle | ||||||
|  |     "SUPER,S,togglesplit"; # dwindle | ||||||
|  | 
 | ||||||
|  |     # Focus | ||||||
|  | 
 | ||||||
|  |     "SUPER,left,movefocus,l"; | ||||||
|  |     "SUPER,right,movefocus,r"; | ||||||
|  |     "SUPER,up,movefocus,u"; | ||||||
|  |     "SUPER,down,movefocus,d"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # ----- MULTIMEDIA KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | binde=, XF86AudioRaiseVolume, exec, ~/.scripts/volume_notify.sh 5%+ | ||||||
|  | binde=, XF86AudioLowerVolume, exec, ~/.scripts/volume_notify.sh 5%- | ||||||
|  | bind=, XF86AudioMute, exec, ~/.scripts/sounddeviceswap.sh | ||||||
|  | bind = SUPER, bracketleft, exec, playerctl --player=spotify_player previous | ||||||
|  | bind = SUPER, bracketright, exec, playerctl --player=spotify_player next | ||||||
|  | bind = SUPER, backslash, exec, playerctl --player=spotify_player play-pause | ||||||
|  | 
 | ||||||
|  | # ----- SCREENSHOT KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER CTRL, escape, exec, hyprshot -m window | ||||||
|  | bind = SUPER, escape, exec, hyprshot -m region | ||||||
|  | 
 | ||||||
|  | # ----- MISC KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER SHIFT, X, exec, hyprpicker -a -n | ||||||
|  | 
 | ||||||
|  | # ----- WINDOW MANAGEMENT KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER, Q, killactive, | ||||||
|  | bind = SUPERSHIFT ALT, delete, exit, | ||||||
|  | bind = SUPER, F, fullscreen, | ||||||
|  | bind = SUPER, Space, togglefloating, | ||||||
|  | bind = SUPER, P, pseudo, # dwindle | ||||||
|  | bind = SUPER, S, togglesplit, # dwindle | ||||||
|  | 
 | ||||||
|  | # ----- FOCUS KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER, left, movefocus, l | ||||||
|  | bind = SUPER, right, movefocus, r | ||||||
|  | bind = SUPER, up, movefocus, u | ||||||
|  | bind = SUPER, down, movefocus, d | ||||||
|  | 
 | ||||||
|  | # ----- MOVE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER SHIFT, left, movewindow, l | ||||||
|  | bind = SUPER SHIFT, right, movewindow, r | ||||||
|  | bind = SUPER SHIFT, up, movewindow, u | ||||||
|  | bind = SUPER SHIFT, down, movewindow, d | ||||||
|  | 
 | ||||||
|  | # ----- RESIZE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER CTRL, left, resizeactive, -20 0 | ||||||
|  | bind = SUPER CTRL, right, resizeactive, 20 0 | ||||||
|  | bind = SUPER CTRL, up, resizeactive, 0 -20 | ||||||
|  | bind = SUPER CTRL, down, resizeactive, 0 20 | ||||||
|  | 
 | ||||||
|  | # ----- TOGGLE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind= SUPER, g, togglegroup | ||||||
|  | bind= SUPER, tab, changegroupactive | ||||||
|  | 
 | ||||||
|  | # ----- SPECIAL WORKSPACE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | # ----- SWITCH WORKSPACE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER, 1, workspace, 1 | ||||||
|  | bind = SUPER, 2, workspace, 2 | ||||||
|  | bind = SUPER, 3, workspace, 3 | ||||||
|  | bind = SUPER, 4, workspace, 4 | ||||||
|  | bind = SUPER, 5, workspace, 5 | ||||||
|  | bind = SUPER, 6, workspace, 6 | ||||||
|  | bind = SUPER, 7, workspace, 7 | ||||||
|  | bind = SUPER, 8, workspace, 8 | ||||||
|  | bind = SUPER, 9, workspace, 9 | ||||||
|  | bind = SUPER, 0, workspace, 10 | ||||||
|  | bind = SUPER ALT, up, workspace, e+1 | ||||||
|  | bind = SUPER ALT, down, workspace, e-1 | ||||||
|  | bind = SUPER, tab, focusCurrentOrLast | ||||||
|  | 
 | ||||||
|  | # ----- MOVE TO WORKSPACE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bind = SUPER SHIFT, 1, movetoworkspace, 1 | ||||||
|  | bind = SUPER SHIFT, 2, movetoworkspace, 2 | ||||||
|  | bind = SUPER SHIFT, 3, movetoworkspace, 3 | ||||||
|  | bind = SUPER SHIFT, 4, movetoworkspace, 4 | ||||||
|  | bind = SUPER SHIFT, 5, movetoworkspace, 5 | ||||||
|  | bind = SUPER SHIFT, 6, movetoworkspace, 6 | ||||||
|  | bind = SUPER SHIFT, 7, movetoworkspace, 7 | ||||||
|  | bind = SUPER SHIFT, 8, movetoworkspace, 8 | ||||||
|  | bind = SUPER SHIFT, 9, movetoworkspace, 9 | ||||||
|  | bind = SUPER SHIFT, 0, movetoworkspace, 10 | ||||||
|  | 
 | ||||||
|  | # ----- MOUSE KEYBINDS ----- # | ||||||
|  | 
 | ||||||
|  | bindm = SUPER, mouse:272, movewindow | ||||||
|  | bindm = SUPER, mouse:273, resizewindow | ||||||
|  | bind = SUPER, mouse_down, workspace, e+1 | ||||||
|  | bind = SUPER, mouse_up, workspace, e-1 | ||||||
|  | 
 | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     }; | ||||||
|  |   } | ||||||
							
								
								
									
										160
									
								
								home/ooks/opt/desktop/hyprland/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								home/ooks/opt/desktop/hyprland/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,160 @@ | ||||||
|  | { lib, config, pkgs, ... }: { | ||||||
|  |   imports = [ | ||||||
|  |     ../standard | ||||||
|  |     ../standard/wayland | ||||||
|  | 
 | ||||||
|  |     ./tty-init.nix | ||||||
|  |     ./basic-binds.nix | ||||||
|  |     ./systemd-fixes.nix | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   home.packages = with pkgs; [ | ||||||
|  |     inputs.hyprwm-contrib.grimblast | ||||||
|  |     hyprslurp | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   wayland.windowManager.hyprland = { | ||||||
|  |     enable = true; | ||||||
|  | 
 | ||||||
|  |     settings = { | ||||||
|  |       general = { | ||||||
|  |         gaps_in = 15; | ||||||
|  |         gaps_out = 20; | ||||||
|  |         border_size = 2; | ||||||
|  |         cursor_inactive_timeout = 4; | ||||||
|  |         "col.active_border" = "0xff${config.colorscheme.colors.base0C}"; | ||||||
|  |         "col.inactive_border" = "0xff${config.colorscheme.colors.base02}"; | ||||||
|  |         "col.group_border_active" = "0xff${config.colorscheme.colors.base0B}"; | ||||||
|  |         "col.group_border" = "0xff${config.colorscheme.colors.base04}"; | ||||||
|  |       }; | ||||||
|  |       input = { | ||||||
|  |         kb_layout = "us"; | ||||||
|  |         touchpad.disable_while_typing = false; | ||||||
|  |       }; | ||||||
|  |       dwindle.split_width_multiplier = 1.35; | ||||||
|  |       misc.vfr = "on"; | ||||||
|  | 
 | ||||||
|  |       decoration = { | ||||||
|  |         active_opacity = 0.94; | ||||||
|  |         inactive_opacity = 0.84; | ||||||
|  |         fullscreen_opacity = 1.0; | ||||||
|  |         rounding = 5; | ||||||
|  |         blur = true; | ||||||
|  |         blur_size = 5; | ||||||
|  |         blur_passes = 3; | ||||||
|  |         blur_new_optimizations = true; | ||||||
|  |         blur_ignore_opacity = true; | ||||||
|  |         drop_shadow = true; | ||||||
|  |         shadow_range = 12; | ||||||
|  |         shadow_offset = "3 3"; | ||||||
|  |         "col.shadow" = "0x44000000"; | ||||||
|  |         "col.shadow_inactive" = "0x66000000"; | ||||||
|  |       }; | ||||||
|  |       animations = { | ||||||
|  |         enabled = true; | ||||||
|  |         bezier = [ | ||||||
|  |           "easein,0.11, 0, 0.5, 0" | ||||||
|  |           "easeout,0.5, 1, 0.89, 1" | ||||||
|  |           "easeinback,0.36, 0, 0.66, -0.56" | ||||||
|  |           "easeoutback,0.34, 1.56, 0.64, 1" | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |         animation = [ | ||||||
|  |           "windowsIn,1,3,easeoutback,slide" | ||||||
|  |           "windowsOut,1,3,easeinback,slide" | ||||||
|  |           "windowsMove,1,3,easeoutback" | ||||||
|  |           "workspaces,1,2,easeoutback,slide" | ||||||
|  |           "fadeIn,1,3,easeout" | ||||||
|  |           "fadeOut,1,3,easein" | ||||||
|  |           "fadeSwitch,1,3,easeout" | ||||||
|  |           "fadeShadow,1,3,easeout" | ||||||
|  |           "fadeDim,1,3,easeout" | ||||||
|  |           "border,1,3,easeout" | ||||||
|  |         ]; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       exec = [ | ||||||
|  |        # need to fix "${pkgs.swaybg}/bin/swaybg -i --mode fill" | ||||||
|  |       ]; | ||||||
|  | 
 | ||||||
|  |       bind = let | ||||||
|  |         playerctl = "${config.services.playerctld.package}/bin/playerctl"; | ||||||
|  |         playerctld = "${config.services.playerctld.package}/bin/playerctld"; | ||||||
|  |         makoctl = "${config.services.mako.package}/bin/makoctl"; | ||||||
|  | 
 | ||||||
|  |         grimblast = "${pkgs.inputs.hyprwm-contrib.grimblast}/bin/grimblast"; | ||||||
|  |         pactl = "${pkgs.pulseaudio}/bin/pactl"; | ||||||
|  | 
 | ||||||
|  |         gtk-launch = "${pkgs.gtk3}/bin/gtk-launch"; | ||||||
|  |         xdg-mime = "${pkgs.xdg-utils}/bin/xdg-mime"; | ||||||
|  |         defaultApp = type: "${gtk-launch} $(${xdg-mime} query default ${type})"; | ||||||
|  | 
 | ||||||
|  |         terminal = config.home.sessionVariables.TERMINAL; | ||||||
|  |         browser = defaultApp "x-scheme-handler/https"; | ||||||
|  |         editor = defaultApp "text/plain"; | ||||||
|  |       in [ | ||||||
|  |         # Program bindings | ||||||
|  |         "SUPER,Return,exec,${terminal}" | ||||||
|  |         "SUPER,e,exec,${editor}" | ||||||
|  |         "SUPER,b,exec,${browser}" | ||||||
|  |         # Brightness control (only works if the system has lightd) | ||||||
|  |         ",XF86MonBrightnessUp,exec,light -A 10" | ||||||
|  |         ",XF86MonBrightnessDown,exec,light -U 10" | ||||||
|  |         # Volume | ||||||
|  |         ",XF86AudioRaiseVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ +5%" | ||||||
|  |         ",XF86AudioLowerVolume,exec,${pactl} set-sink-volume @DEFAULT_SINK@ -5%" | ||||||
|  |         ",XF86AudioMute,exec,${pactl} set-sink-mute @DEFAULT_SINK@ toggle" | ||||||
|  |         "SHIFT,XF86AudioMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle" | ||||||
|  |         ",XF86AudioMicMute,exec,${pactl} set-source-mute @DEFAULT_SOURCE@ toggle" | ||||||
|  |         # Screenshotting | ||||||
|  |         ",Print,exec,${grimblast} --notify copy output" | ||||||
|  |         "SHIFT,Print,exec,${grimblast} --notify copy active" | ||||||
|  |         "CONTROL,Print,exec,${grimblast} --notify copy screen" | ||||||
|  |         "SUPER,Print,exec,${grimblast} --notify copy window" | ||||||
|  |         "ALT,Print,exec,${grimblast} --notify copy area" | ||||||
|  |       ] ++ | ||||||
|  | 
 | ||||||
|  |       (lib.optionals config.services.playerctld.enable [ | ||||||
|  |         # Media control | ||||||
|  |         ",XF86AudioNext,exec,${playerctl} next" | ||||||
|  |         ",XF86AudioPrev,exec,${playerctl} previous" | ||||||
|  |         ",XF86AudioPlay,exec,${playerctl} play-pause" | ||||||
|  |         ",XF86AudioStop,exec,${playerctl} stop" | ||||||
|  |         "ALT,XF86AudioNext,exec,${playerctld} shift" | ||||||
|  |         "ALT,XF86AudioPrev,exec,${playerctld} unshift" | ||||||
|  |         "ALT,XF86AudioPlay,exec,systemctl --user restart playerctld" | ||||||
|  |       ]) ++ | ||||||
|  |       # Screen lock | ||||||
|  |       (lib.optionals config.programs.swaylock.enable [ | ||||||
|  |         ",XF86Launch5,exec,${swaylock} -S" | ||||||
|  |         ",XF86Launch4,exec,${swaylock} -S" | ||||||
|  |         "SUPER,backspace,exec,${swaylock} -S" | ||||||
|  |       ]) ++ | ||||||
|  |       # Notification manager | ||||||
|  |       (lib.optionals config.services.mako.enable [ | ||||||
|  |         "SUPER,w,exec,${makoctl} dismiss" | ||||||
|  |       ]) ++ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |       monitor = map (m: let | ||||||
|  |         resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}"; | ||||||
|  |         position = "${toString m.x}x${toString m.y}"; | ||||||
|  |       in | ||||||
|  |         "${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}" | ||||||
|  |       ) (config.monitors); | ||||||
|  | 
 | ||||||
|  |       workspace = map (m: | ||||||
|  |         "${m.name},${m.workspace}" | ||||||
|  |       ) (lib.filter (m: m.enabled && m.workspace != null) config.monitors); | ||||||
|  | 
 | ||||||
|  |     }; | ||||||
|  |     # This is order sensitive, so it has to come here. | ||||||
|  |     extraConfig = '' | ||||||
|  |       # Passthrough mode (e.g. for VNC) | ||||||
|  |       bind=SUPER,P,submap,passthrough | ||||||
|  |       submap=passthrough | ||||||
|  |       bind=SUPER,P,submap,reset | ||||||
|  |       submap=reset | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								home/ooks/opt/desktop/hyprland/tty-init.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								home/ooks/opt/desktop/hyprland/tty-init.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | { | ||||||
|  |   programs = { | ||||||
|  |     fish.loginShellInit = '' | ||||||
|  |       if test (tty) = "/dev/tty1" | ||||||
|  |         exec Hyprland &> /dev/null | ||||||
|  |       end | ||||||
|  |     ''; | ||||||
|  |     zsh.loginExtra = '' | ||||||
|  |       if [ "$(tty)" = "/dev/tty1" ]; then | ||||||
|  |         exec Hyprland &> /dev/null | ||||||
|  |       fi | ||||||
|  |     ''; | ||||||
|  |     zsh.profileExtra = '' | ||||||
|  |       if [ "$(tty)" = "/dev/tty1" ]; then | ||||||
|  |         exec Hyprland &> /dev/null | ||||||
|  |       fi | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue