2024-11-01 12:04:24 -04:00
{ pkgs , config , . . . }:
2024-10-14 17:28:31 -04:00
{
wayland . windowManager . hyprland = {
# enable = true;
# package = pkgs.hyprland;
2024-11-01 12:04:24 -04:00
# package = hyprland.packages.stdenv.hostPlatform.system}.hyprland;
2024-10-14 17:28:31 -04:00
# xwayland.enable = true;
2024-11-01 12:04:24 -04:00
systemd . enable = true ;
systemd . variables = [ " - - a l l " ] ;
2024-10-14 17:28:31 -04:00
# device {
# name = "hanvon-ugee-shortcut-remote key bindings"
# };
settings = {
" $ m o d " = " S U P E R " ;
env = [
" X D G _ S E S S I O N _ T Y P E , w a y l a n d "
" X D G _ S E S S I O N _ D E S K T O P , H y p r l a n d "
" X D G _ C U R R E N T _ D E S K T O P , H y p r l a n d "
" M O Z _ E N A B L E _ W A Y L A N D , 1 "
# "ANKI_WAYLAND,1"
2024-11-01 12:04:24 -04:00
# "QT_AUTO_SCREEN_SCALE_FACTOR,1"
# "QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
# "QT_QPA_PLATFORM=wayland,xcb" # removed ,xcb CGPT
2024-10-14 17:28:31 -04:00
# "QT_QPA_PLATFORMTHEME,qt6ct"
2024-11-01 12:04:24 -04:00
# "GDK_SCALE,1"
2024-11-29 18:31:17 -05:00
" G D K _ B A C K E N D , w a y l a n d , x 1 1 , * "
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
# "GTK_THEME,FlatColor:dark"
# "GTK2_RC_FILES,/home/hadi/.local/share/themes/FlatColor/gtk-2.0/gtkrc"
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
# "DISABLE_QT5_COMPAT,0"
# "NIXOS_OZONE_WL,1"
# "ELECTRON_OZONE_PLATFORM_HINT,auto"
# "__GL_GSYNC_ALLOWED,0"
# "__GL_VRR_ALLOWED,0"
2024-10-14 17:28:31 -04:00
" _ _ G L X _ V E N D O R _ L I B R A R Y _ N A M E , n v i d i a "
2024-11-01 12:04:24 -04:00
# "DIRENV_LOG_FORMAT,"
2024-10-14 17:28:31 -04:00
# "WLR_DRM_NO_ATOMIC,1"
# "WLR_BACKEND,vulkan"
# "WLR_RENDERER,vulkan"
# "WLR_NO_HARDWARE_CURSORS,1"
2024-11-01 12:04:24 -04:00
# "APPIMAGELAUNCHER_DISABLE,1"
# "OZONE_PLATFORM,wayland"
# "SDL_VIDEODRIVER,wayland"
# "CLUTTER_BACKEND,wayland"
2024-10-14 17:28:31 -04:00
" G B M _ B A C K E N D , n v i d i a - d r m "
" L I B V A _ D R I V E R _ N A M E , n v i d i a "
# "AQ_DRM_DEVICES,/dev/dri/card2/" # CHANGEME: Related to the GPU
# THEMING
# "HYPRCURSOR_THEME,~/.icons/Nordic-cursors"
# "HYPRCURSOR_SIZE,24x"
2024-11-01 12:04:24 -04:00
" H Y P R C U R S O R _ T H E M E , N o r d z y - c u r s o r s "
" H Y P R C U R S O R _ S I Z E , 2 4 "
" X C U R S O R _ T H E M E , N o r d z y - c u r s o r s "
" X C U R S O R _ S I Z E , 2 4 "
2024-10-14 17:28:31 -04:00
" H Y P R L A N D _ T R A C E = 1 "
2024-11-01 12:04:24 -04:00
# "QT_STYLE_OVERRIDE=kvantum"
2025-03-13 17:41:05 -04:00
# "QT_QPA_PLATFORMTHEME = qt6ct" # qt5ct no display
2024-11-01 12:04:24 -04:00
2024-10-14 17:28:31 -04:00
] ;
input = {
kb_layout = " u s " ;
# kb_variant =;
# kb_model =;
# kb_options = grp:alt_shift_toggle,caps:backspace;
# kb_rules =;
follow_mouse = 1 ;
2024-11-29 18:31:17 -05:00
mouse_refocus = false ;
2024-10-14 17:28:31 -04:00
touchpad = {
natural_scroll = " n o " ;
tap_button_map = " l m r " ;
} ;
sensitivity = 0 ;
} ;
debug = { disable_logs = false ; } ;
xwayland = { force_zero_scaling = true ; } ;
bindm = [
" $ m o d , m o u s e : 2 7 2 , m o v e w i n d o w "
" $ m o d , C o n t r o l _ L , m o v e w i n d o w "
" $ m o d , m o u s e : 2 7 3 , r e s i z e w i n d o w "
" $ m o d , A L T _ L , r e s i z e w i n d o w "
" $ m o d , m o u s e _ d o w n , w o r k s p a c e , e + 1 " # Scroll workspaces
" $ m o d , m o u s e _ u p , w o r k s p a c e , e - 1 " # Scroll workspaces
" , m o u s e : 2 7 5 , e x e c , w l - c o p y $ ( w l - p a s t e - p ) " # copy selected text
" , m o u s e : 2 7 6 , e x e c , w t y p e - M c t r l - M s h i f t v - m c t r l - m s h i f t " # paste by Ctrl+Shift+
] ;
bind = [
" A L T S H I F T , H , m o v e w i n d o w , l "
" A L T S H I F T , L , m o v e w i n d o w , r "
" A L T S H I F T , K , m o v e w i n d o w , u "
" A L T S H I F T , J , m o v e w i n d o w , d "
" A L T , H , m o v e f o c u s , l "
" A L T , L , m o v e f o c u s , r "
" A L T , K , m o v e f o c u s , u "
" A L T , J , m o v e f o c u s , d "
" $ m o d , Q , k i l l a c t i v e "
" A L T , T , t o g g l e f l o a t i n g "
" A L T , F , f u l l s c r e e n "
# Minimize window
" A L T , M , m o v e t o w o r k s p a c e , s p e c i a l : m a g i c "
" A L T , M , t o g g l e s p e c i a l w o r k s p a c e , m a g i c "
" C o n t r o l _ R + S h i f t _ R , B , e x e c , ~ / b i n / r e s t o r e _ m i n i m i z e d . s h K e y b a s e "
" C o n t r o l _ R + S h i f t _ R , X , e x e c , ~ / b i n / r e s t o r e _ m i n i m i z e d . s h o r g . k d e . k w a l l e t m a n a g e r 5 "
" C o n t r o l _ R + S h i f t _ R , N , e x e c , ~ / b i n / r e s t o r e _ m i n i m i z e d . s h c o m . n e x t c l o u d . d e s k t o p c l i e n t . n e x t c l o u d "
" C o n t r o l _ R + S h i f t _ R , Z , e x e c , ~ / b i n / r e s t o r e _ m i n i m i z e d . s h z e n - a l p h a "
" C o n t r o l _ R + S h i f t _ R , S , e x e c , ~ / b i n / r e s t o r e _ m i n i m i z e d . s h s u b l i m e _ t e x t "
# "$mod, R, exec, ~/bin/restore_minimized.sh org.kde.dolphin"
" $ m o d , F , e x e c , f i r e f o x "
" $ m o d , Z , e x e c , z e n "
" $ m o d , k , e x e c , k i t t y "
2025-03-13 17:41:05 -04:00
" $ m o d , G , e x e c , g h o s t t y "
# "$mod+SHIFT_R, k, exec, pypr toggle term"
" $ m o d + S h i f t _ R , K , e x e c , k o n s o l e "
2024-10-14 17:28:31 -04:00
" $ m o d , S , e x e c , s u b l "
# "CTRLSHIFT, K&B, exec, hyprctl dispatch exec keybase-gui %u"
# ",XF86Search, exec, wofi --show drun"
" , X F 8 6 E x p l o r e r , e x e c , d o u b l e c m d "
" , X F 8 6 S e a r c h , e x e c , p k i l l r o f i | | r o f i - s h o w d r u n - m o d i d r u n , f i l e b r o w s e r , r u n , w i n d o w , s s h "
" , X F 8 6 C a l c u l a t o r , e x e c , q a l c u l a t e - q t "
2024-11-29 18:31:17 -05:00
" $ m o d , V , e x e c , c l i p h i s t l i s t | r o f i - - d m e n u | c l i p h i s t d e c o d e | w l - c o p y "
2024-10-14 17:28:31 -04:00
" A L T , T a b , e x e c , h y p r c t l d i s p a t c h c y c l e n e x t "
" A L T S H I F T , T a b , e x e c , h y p r c t l d i s p a t c h c y c l e n e x t p r e v "
# "ALT, Tab, bringactivetotop"
# "CONTROL_ALT, L, exec, swaylock" # Need to config locker
" , X F 8 6 A u d i o M u t e , e x e c , s w a y o s d - c l i e n t - - o u t p u t - v o l u m e m u t e - t o g g l e "
" , X F 8 6 A u d i o M i c M u t e , e x e c , s w a y o s d - c l i e n t - - i n p u t - v o l u m e m u t e - t o g g l e "
" , X F 8 6 A u d i o R a i s e V o l u m e , e x e c , s w a y o s d - c l i e n t - - o u t p u t - v o l u m e 1 5 "
" , X F 8 6 A u d i o L o w e r V o l u m e , e x e c , s w a y o s d - c l i e n t - - o u t p u t - v o l u m e - 1 5 "
" $ m o d , X F 8 6 A u d i o R a i s e V o l u m e , e x e c , s w a y o s d - c l i e n t - - o u t p u t - v o l u m e r a i s e - - m a x - v o l u m e 1 2 0 "
" $ m o d , X F 8 6 A u d i o L o w e r V o l u m e , e x e c , s w a y o s d - c l i e n t - - o u t p u t - v o l u m e l o w e r - - m a x - v o l u m e 1 2 0 "
" $ m o d , - - r e l e a s e C a p s _ L o c k , e x e c , s w a y o s d - c l i e n t - - c a p s - l o c k "
" $ m o d , - - r e l e a s e C a p s _ L o c k , e x e c , s w a y o s d - c l i e n t - - c a p s - l o c k - l e d i n p u t 1 9 : : c a p s l o c k "
" $ m o d , X F 8 6 M o n B r i g h t n e s s U p , e x e c , s w a y o s d - c l i e n t - - b r i g h t n e s s r a i s e "
" $ m o d , X F 8 6 M o n B r i g h t n e s s D o w n , e x e c , s w a y o s d - c l i e n t - - b r i g h t n e s s l o w e r "
# "$mod, XF86MonBrightnessUp exec swayosd-client --brightness +10"
# "$mod, XF86MonBrightnessDown exec swayosd-client --brightness -10"
" $ m o d + S H I F T , S , e x e c , h y p r s h o t - m r e g i o n "
" $ m o d , c o d e : 1 0 , w o r k s p a c e , 1 "
" $ m o d , c o d e : 1 1 , w o r k s p a c e , 2 "
" $ m o d , c o d e : 1 2 , w o r k s p a c e , 3 "
" $ m o d , c o d e : 1 3 , w o r k s p a c e , 4 "
" $ m o d , c o d e : 1 4 , w o r k s p a c e , 5 "
" $ m o d , c o d e : 1 5 , w o r k s p a c e , 6 "
" $ m o d , c o d e : 1 6 , w o r k s p a c e , 7 "
" $ m o d , c o d e : 1 7 , w o r k s p a c e , 8 "
" $ m o d , c o d e : 1 8 , w o r k s p a c e , 9 "
" $ m o d , c o d e : 1 9 , w o r k s p a c e , 1 0 "
" A L T S H I F T , c o d e : 1 0 , m o v e t o w o r k s p a c e , 1 "
" A L T S H I F T , c o d e : 1 1 , m o v e t o w o r k s p a c e , 2 "
" A L T S H I F T , c o d e : 1 2 , m o v e t o w o r k s p a c e , 3 "
" A L T S H I F T , c o d e : 1 3 , m o v e t o w o r k s p a c e , 4 "
" A L T S H I F T , c o d e : 1 4 , m o v e t o w o r k s p a c e , 5 "
" A L T S H I F T , c o d e : 1 5 , m o v e t o w o r k s p a c e , 6 "
" A L T S H I F T , c o d e : 1 6 , m o v e t o w o r k s p a c e , 7 "
" A L T S H I F T , c o d e : 1 7 , m o v e t o w o r k s p a c e , 8 "
" A L T S H I F T , c o d e : 1 8 , m o v e t o w o r k s p a c e , 9 "
" A L T S H I F T , c o d e : 1 9 , m o v e t o w o r k s p a c e , 1 0 "
] ;
# ++ (
# builtins.concatLists (builtins.genList (i:
# let ws =i +1;
# in [
# "ALT code:1${toString i}, workspace, ${toString ws}"
# "ALTSHIFT, code:1$i{toString i}, movetoworkspace, ${toString ws}"
# ]
# )
# 9)
# );
cursor = {
# no_hardware_cursors = true;
2024-11-01 12:04:24 -04:00
default_monitor = " D P - 5 " ;
2024-10-14 17:28:31 -04:00
} ;
dwindle = {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true ; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true ; # you probably want this
2024-11-01 12:04:24 -04:00
special_scale_factor = 0 .60 ; # Fix for floaters
2024-10-14 17:28:31 -04:00
} ;
monitor = [
" D P - 3 , 1 9 2 0 x 1 0 8 0 , 0 x 6 1 6 , 1 "
2024-11-01 12:04:24 -04:00
" D P - 5 , 3 8 4 0 x 2 1 6 0 , 1 9 2 0 x 0 , 1 "
" D P - 6 , 1 9 2 0 x 1 0 8 0 , 5 7 6 0 x 2 6 6 , 1 , t r a n s f o r m , 3 " # or 3
2024-10-14 17:28:31 -04:00
] ;
workspace = [
" 4 , m o n i t o r : D P - 3 , d e f a u l t : t r u e "
" 5 , m o n i t o r : D P - 3 , p e r s i s t e n t : t r u e "
" 6 , m o n i t o r : D P - 3 , p e r s i s t e n t : t r u e "
2024-11-01 12:04:24 -04:00
" 1 , m o n i t o r : D P - 5 , d e f a u l t : t r u e , d e c o r a t e : t r u e "
" 2 , m o n i t o r : D P - 5 , p e r s i s t e n t : t r u e "
" 3 , m o n i t o r : D P - 5 , p e r s i s t e n t : t r u e "
" 1 0 , m o n i t o r : D P - 5 , p e r s i s t e n t : t r u e "
" 7 , m o n i t o r : D P - 6 , d e f a u l t : t r u e , g a p s i n : 2 "
" 8 , m o n i t o r : D P - 6 , p e r s i s t e n t : t r u e "
" 9 , m o n i t o r : D P - 6 , p e r s i s t e n t : t r u e "
2024-10-14 17:28:31 -04:00
] ;
exec-once = [
" s y s t e m c t l - - u s e r i m p o r t - e n v i r o n m e n t W A Y L A N D _ D I S P L A Y X D G _ C U R R E N T _ D E S K T O P "
" d b u s - d a e m o n - - s e s s i o n - - a d d r e s s = u n i x : p a t h = $ X D G _ R U N T I M E _ D I R / b u s "
" d b u s - u p d a t e - a c t i v a t i o n - e n v i r o n m e n t - - s y s t e m d W A Y L A N D _ D I S P L A Y X D G _ C U R R E N T _ D E S K T O P "
" s y s t e m c t l - - u s e r s t a r t p l a s m a - p o l k i t - a g e n t "
2025-04-09 20:56:29 -04:00
" / n i x / s t o r e / v g j 7 0 4 d z 4 i 6 0 c j 7 0 c v q 9 8 8 g 1 c 6 y g 3 3 l 9 - k w a l l e t - p a m - 6 . 2 . 5 / l i b e x e c / p a m _ k w a l l e t _ i n i t - - n o - s t a r t u p - i d " # Find a better path, changes on garbage collection
2024-10-14 17:28:31 -04:00
" w a y b a r & "
2024-11-01 12:04:24 -04:00
# "hyprpaper &"
2024-10-14 17:28:31 -04:00
" h y p r i d l e & "
" s w a y o s d & "
" u d i s k i e & "
" w l - p a s t e - - t y p e t e x t - - w a t c h c l i p h i s t s t o r e "
" w l - p a s t e - - t y p e i m a g e - - w a t c h c l i p h i s t s t o r e "
2025-03-13 17:41:05 -04:00
" ${ config . home . homeDirectory } / . c o n f i g / h y p r / s c r i p t s / s t a r t - i n - t r a y . s h & "
" ${ config . home . homeDirectory } / . c o n f i g / h y p r / s c r i p t s / s t a r t - k e y b a s e - g u i . s h & "
" i n p u t - r e m a p p e r - c o n t r o l - - c o m m a n d a u t o l o a d & "
2024-10-14 17:28:31 -04:00
2025-04-09 20:56:29 -04:00
" [ w o r k s p a c e 4 s i l e n t ] r e m m i n a - c r d p : / / w a y n e @ x e o n . l o c a l "
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
" [ w o r k s p a c e 7 s i l e n t ] s u b l i m e 3 "
2024-12-01 14:11:41 -05:00
" [ w o r k s p a c e 9 s i l e n t ] k e e p a s s x c "
2024-11-29 18:31:17 -05:00
" [ w o r k s p a c e 9 s i l e n t ] / h o m e / w a y n e / . n i x - p r o f i l e / b i n / n e x t c l o u d - - b a c k g r o u n d "
2025-04-09 20:56:29 -04:00
" [ w o r k s p a c e 9 s i l e n t ] / h o m e / w a y n e / . n i x - p r o f i l e / b i n / k e y b a s e - g u i % u "
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
# "/nix/store/r3fdp5rlxcihmqhpcgy91sj918wnrmrc-pyprland-2.3.4/bin/pypr --debug ~/tmp/pypr.log"
2024-10-14 17:28:31 -04:00
] ;
general = {
border_part_of_window = true ;
layout = " d w i n d l e " ;
gaps_in = 5 ;
gaps_out = 10 ;
border_size = 2 ;
resize_on_border = true ;
} ;
animations = {
enabled = 1 ;
animation = [
" w i n d o w s , 1 , 4 , d e f a u l t , s l i d e "
" b o r d e r , 1 , 5 , d e f a u l t "
" f a d e i n , 1 , 5 , d e f a u l t "
" w o r k s p a c e s , 1 , 3 , d e f a u l t , v e r t s l i d e "
] ;
} ;
decoration = {
rounding = 8 ;
drop_shadow = true ;
shadow_range = 60 ;
col . shadow = " 0 x 6 6 0 0 0 0 0 0 " ;
blur = {
enabled = true ;
size = 5 ;
passes = 1 ;
} ;
} ;
layerrule = [
" d i m a r o u n d , r o f i "
# "unset, rofi"
# "ignorezero, rofi"
" b l u r p o p u p s , n o t i f i c a t i o n s "
2024-11-01 12:04:24 -04:00
" b l u r , w a y b a r "
2024-10-14 17:28:31 -04:00
] ;
windowrule = [
2025-03-13 17:41:05 -04:00
# "opacity 0.9 override 0.5 override 0.8 override, ^(.*)$" # set opacity to 1.0 active, 0.5 inactive and 0.8 fullscreen for kitty
# "opacity 1 override 0.9 override 0.9 override, ^(zen-alpha)$" # set opacity to 1.0 active, 0.5 inactive and 0.8 fullscreen for kitty
2024-10-14 17:28:31 -04:00
# "opacity 1.0 override 0.5 override 0.8 override, ^(kitty)$" # set opacity to 1.0 active, 0.5 inactive and 0.8 fullscreen for kitty
" m o v e - 5 0 % - 5 0 % , f l o a t , ^ ( o r g . k e e p a s s x c . K e e P a s s X C ) $ "
2024-12-06 13:12:42 -05:00
" f l o a t , ^ ( N e x t c l o u d ) $ "
2024-10-14 17:28:31 -04:00
# common modals
2024-12-06 13:12:42 -05:00
## "center,title:^(Open).*$"
2024-11-01 12:04:24 -04:00
# "center,title:^(Choose Files)$"
2024-12-06 13:12:42 -05:00
## "center,title:^(Save).*$"
2024-11-01 12:04:24 -04:00
# "center,title:^(Confirm to replace files)$"
# "center,title:^(File Operation Progress)$"
2025-03-13 17:41:05 -04:00
# "opacity 1.0 override 1 override 1 override, ^(REAPER)$"
2024-10-14 17:28:31 -04:00
] ;
windowrulev2 = [
2024-12-06 13:12:42 -05:00
" m i n s i z e 1 1 , c l a s s : ^ ( s u b l i m e _ t e x t ) $ "
# REAPER Rules
# Drop down menus are very wonly and require special attention
# They only work in fullscreen but if we initially set fullscreen
# Reaper floats when we select from the toolbar?!!!
# We initially tile the window then fullscreen it to make toolbar menus work
" t i l e , c l a s s : ^ ( R E A P E R ) $ "
" m o n i t o r D P - 5 , c l a s s : ^ ( R E A P E R ) $ "
" w o r k s p a c e 3 , c l a s s : ^ ( R E A P E R ) $ "
# The following 3 lines make Dropdowns work
" f l o a t , t i t l e : ^ ( m e n u ) $ , c l a s s : ^ ( R E A P E R ) $ " # Important
" m i n s i z e 1 1 , t i t l e : ^ ( m e n u ) $ , c l a s s : ^ ( R E A P E R ) $ " # Important
" m o v e o n s c r e e n c u r s o r , t i t l e : ^ ( m e n u ) $ , c l a s s : ^ ( R E A P E R ) $ " # Important
# "focusonactivate, class:(REAPER)"
# "allowsinput, class:(REAPER)"
# "focusonactivate, class:(REAPER), title(menu)"
# "stayfocused, title:^(menu)$, class:^(REAPER)$" # Order is important
2024-10-14 17:28:31 -04:00
# "float, class:REAPER"
# "move cursor 5px 15px, class:REAPER"
# Apply stayfocused only to transient (temporary) windows in Reaper
# "stayfocused, title:^(.*)$, class:REAPER"
# "stayfocused, parent:REAPER"
2024-12-06 13:12:42 -05:00
# "noswallow, class:REAPER"
2024-10-14 17:28:31 -04:00
# "stayfocused, title:^(.*)$, class:REAPER"
# "float, title:^(Open|Choose Files|Save As|Confirm to replace files|File Operation Progress)$, class:REAPER"
# "stayfocused, title:^(Open|Choose Files|Save As|Confirm to replace files|File Operation Progress)$, class:REAPER"
# "nofocus, class:REAPER"
# "fullscreen, title:^(File|Edit|View|Options|Help)$, class:REAPER"
2024-11-01 12:04:24 -04:00
# "float,class:^(google-chrome)$,title:^(Open Files)$"
# "float,class:^(google-chrome)$,title:^(Open File)$"
" f l o a t , c l a s s : ^ ( T y p o r a ) $ , t i t l e : ^ ( O p e n F i l e ) $ "
2024-12-06 13:12:42 -05:00
" f l o a t , c l a s s : ^ ( c o m . n e x t c l o u d . d e s k t o p c l i e n t . n e x t c l o u d ) $ "
" f l o a t , c l a s s : ^ ( K e y b a s e ) $ "
" f l o a t , c l a s s : ^ ( o r g . k d e . k w a l l e t m a n a g e r 5 ) $ "
" f l o a t , c l a s s : ^ ( o r g . k e e p a s s x c . K e e P a s s X C ) $ "
" f l o a t , c l a s s : ^ ( T y p o r a ) $ "
" w o r k s p a c e s p e c i a l : m a g i c , c l a s s : ^ ( m y - a p p - c l a s s ) $ "
2024-10-14 17:28:31 -04:00
] ;
input . numlock_by_default = true ;
debug . suppress_errors = true ;
} ;
# extraConfig = {};
# plugins = [];
} ;
}