{ homeManager, inputs, moduleNameSpace, ... }: { config, lib, pkgs, ... }: let cfg = config.${moduleNameSpace}.windowManagers; scripts = import ../scripts.nix { inherit pkgs config; }; eyecandy = cfg.eyeCandy.enable; in { imports = if homeManager then [ inputs.mango.hmModules.mango ] else [ inputs.mango.nixosModules.mango ]; config = lib.mkIf cfg.mango.enable ( if homeManager then { wayland.windowManager.mango = { enable = true; systemd.enable = true; systemd.variables = [ "--all" ]; extraConfig = '' ${lib.optionalString (config.beeMods.matugen.enable && cfg.beeConfig.enable && !cfg.noctalia) '' source = ~/.config/mango/colors.conf ''} ${lib.optionalString (!cfg.beeConfig.enable && cfg.noctalia) '' source = ~/.config/mango/noctalia.conf ''} blur=${if eyecandy && cfg.eyeCandy.window.blur.enable then "1" else "0"} blur_layer=0 blur_optimized=1 blur_params_num_passes = ${if eyecandy then toString cfg.eyeCandy.window.blur.passes else "0"} blur_params_radius = ${if eyecandy then toString cfg.eyeCandy.window.blur.radius else "0"} blur_params_noise = 0.02 blur_params_brightness = 0.9 blur_params_contrast = 0.9 blur_params_saturation = 1.1 shadows=${if eyecandy && cfg.eyeCandy.window.shadows.enable then "1" else "0"} layer_shadows = 0 shadow_only_floating = 1 shadows_size = 10 shadows_blur = 15 shadows_position_x = 0 shadows_position_y = 0 border_radius=${if eyecandy then toString cfg.eyeCandy.window.borderRadius else "0"} no_radius_when_single=0 focused_opacity=${if eyecandy then toString cfg.eyeCandy.window.opacity else "1.0"} unfocused_opacity=${if eyecandy then toString cfg.eyeCandy.window.opacity else "1.0"} # Scroller configuration scroller_structs=15 scroller_default_proportion=0.6 scroller_focus_center=0 scroller_prefer_center=0 edge_scroller_pointer_focus=1 scroller_default_proportion_single=1.0 scroller_ignore_proportion_single=0 scroller_proportion_preset=0.5,0.8,1.0 # Master-Stack Layout Setting new_is_master=0 default_mfact=0.55 default_nmaster=1 smartgaps=0 # Overview Setting hotarea_size=10 enable_hotarea=0 ov_tab_mode=1 overviewgappi=5 overviewgappo=30 # Misc no_border_when_single=0 axis_bind_apply_timeout=100 focus_on_activate=1 idleinhibit_ignore_visible=0 sloppyfocus=1 warpcursor=1 focus_cross_monitor=0 focus_cross_tag=0 enable_floating_snap=0 snap_distance=30 drag_tile_to_tile=1 xwayland_persistence=0 syncobj_enable=1 allow_tearing=2 # keyboard repeat_delay=300; repeat_rate=50; numlockon=0 xkb_rules_layout=us # Trackpad # need relogin to make it apply disable_trackpad=0 tap_to_click=1 tap_and_drag=1 drag_lock=1 trackpad_natural_scrolling=1 disable_while_typing=1 left_handed=0 middle_button_emulation=0 swipe_min_threshold=1 mouse_natural_scrolling=0 gappih=4 gappiv=4 gappoh=4 gappov=4 scratchpad_width_ratio=0.8 scratchpad_height_ratio=0.9 borderpx=2 #Keymaps # beeConfig keymaps ${lib.optionalString (config.beeMods.matugen.enable && cfg.beeConfig.enable && !cfg.noctalia) '' bind=SUPER,y,spawn,${scripts.dostuff} wall bind=SUPER,a,spawn,rofi -show drun bind=SUPER,c,spawn,sh -c 'fyi "Clock" "$(date)"' bind=SUPER,comma,spawn,${scripts.dostuff} settings bind=NONE,XF86AudioRaiseVolume,spawn,${scripts.volume} up bind=NONE,XF86AudioLowerVolume,spawn,${scripts.volume} down bind=NONE,XF86AudioMute,spawn,${scripts.volume} toggle bind=NONE,XF86AudioMicMute,spawn,${scripts.micToggle} bind=NONE,XF86MonBrightnessUp,spawn,${scripts.brightness} up bind=NONE,XF86MonBrightnessDown,spawn,${scripts.brightness} down bind=NONE,Print,spawn,${scripts.screenshot} full bind=SUPER,Print,spawn,${scripts.screenshot} selection bind=SUPER+SHIFT,Print,spawn,${scripts.screenshot} window ''} ${lib.optionalString (!cfg.beeConfig.enable && cfg.noctalia) '' bind=SUPER,y,spawn,noctalia msg panel-toggle wallpaper bind=SUPER,a,spawn,noctalia msg panel-toggle launcher bind=SUPER,c,spawn,sh -c 'fyi "Clock" "$(date)"' bind=SUPER,v,spawn,noctalia msg panel-toggle clipboard bind=SUPER,comma,spawn,noctalia msg settings-toggle bind=NONE,XF86AudioRaiseVolume,spawn,noctalia msg volume-up bind=NONE,XF86AudioLowerVolume,spawn,noctalia msg volume-down bind=NONE,XF86AudioMute,spawn,noctalia msg volume-mute bind=NONE,XF86AudioMicMute,spawn,noctalia msg mic-mute bind=NONE,XF86MonBrightnessUp,spawn,noctalia msg brightness-up bind=NONE,XF86MonBrightnessDown,spawn,noctalia msg brightness-down bind=NONE,Print,spawn,noctalia msg screenshot-fullscreen ''} bind=SUPER,r,reload_config bind=SUPER,Return,spawn,${config.beeMods.terminal.default} bind=SUPER,F12,spawn,gnome-calculator bind=SUPER,b,spawn,librewolf bind=SUPER,e,spawn,nautilus bind=SUPER,m,quit bind=SUPER,q,killclient, bind=SUPER,h,focusdir,left bind=SUPER,l,focusdir,right bind=SUPER,k,focusdir,up bind=SUPER,j,focusdir,down bind=SUPER+SHIFT,k,exchange_client,up bind=SUPER+SHIFT,j,exchange_client,down bind=SUPER+SHIFT,h,exchange_client,left bind=SUPER+SHIFT,l,exchange_client,right bind=SUPER,g,toggleglobal, bind=ALT,Tab,toggleoverview, bind=SUPER,space,togglefloating, bind=SUPER,d,togglemaximizescreen, bind=SUPER,f,togglefullscreen, bind=ALT+SHIFT,f,togglefakefullscreen, bind=SUPER,i,minimized, bind=SUPER,o,toggleoverlay, bind=SUPER+SHIFT,I,restore_minimized bind=SUPER,s,toggle_scratchpad bind=ALT,e,set_proportion,1.0 bind=ALT,x,switch_proportion_preset, bind=SUPER,1,view,1,0 bind=SUPER,2,view,2,0 bind=SUPER,3,view,3,0 bind=SUPER,4,view,4,0 bind=SUPER,5,view,5,0 bind=SUPER,6,view,6,0 bind=SUPER,7,view,7,0 bind=SUPER,8,view,8,0 bind=SUPER,9,view,9,0 bind=SUPER+SHIFT,1,tag,1,0 bind=SUPER+SHIFT,2,tag,2,0 bind=SUPER+SHIFT,3,tag,3,0 bind=SUPER+SHIFT,4,tag,4,0 bind=SUPER+SHIFT,5,tag,5,0 bind=SUPER+SHIFT,6,tag,6,0 bind=SUPER+SHIFT,7,tag,7,0 bind=SUPER+SHIFT,8,tag,8,0 bind=SUPER+SHIFT,9,tag,9,0 bind=alt+shift,Left,focusmon,left bind=alt+shift,Right,focusmon,right bind=SUPER+Alt,Left,tagmon,left bind=SUPER+Alt,Right,tagmon,right bind=SUPER,Up,movewin,+0,-50 bind=SUPER,Down,movewin,+0,+50 bind=SUPER,Left,movewin,-50,+0 bind=SUPER,Right,movewin,+50,+0 bind=ALT,k,resizewin,+0,-50 bind=ALT,j,resizewin,+0,+50 bind=ALT,h,resizewin,-50,+0 bind=ALT,l,resizewin,+50,+0 bind=NONE,XF86AudioPlay,spawn,playerctl play-pause bind=NONE,XF86AudioNext,spawn,playerctl next bind=NONE,XF86AudioPrev,spawn,playerctl previous bind=NONE,XF86AudioStop,spawn,playerctl stop mousebind=SUPER,btn_left,moveresize,curmove mousebind=NONE,btn_middle,togglemaximizescreen,0 mousebind=SUPER,btn_right,moveresize,curresize axisbind=SUPER,UP,viewtoleft_have_client axisbind=SUPER,DOWN,viewtoright_have_client windowrule=tags:1,appid:^(zen|firefox|librewolf|obsidian)$ windowrule=tags:2,appid:^(foot|footclient|alacritty|dev.zed.Zed)$ windowrule=tags:3,appid:^(vesktop|discord|thunderbird|Element|equibop)$ windowrule=tags:4,appid:^steam$ windowrule=scroller_proportion:0.3,appid:^steam$,title:^Friends List$ windowrule=scroller_proportion:0.5,appid:^steam$,title:.*(Settings|Properties).* windowrule=isfloating:1,appid:^steam$,title:^Steam - News$ windowrule=isfloating:1,appid:^(org.gnome.Calculator|org.pulseaudio.pavucontrol|Pinentry-gtk)$ windowrule=isoverlay:1,appid:^com.gabm.satty$ # Tag rules tagrule=id:1,layout_name:scroller tagrule=id:2,layout_name:fair tagrule=id:3,layout_name:scroller tagrule=id:4,layout_name:scroller tagrule=id:5,layout_name:grid tagrule=id:6,layout_name:tile tagrule=id:7,layout_name:tile tagrule=id:8,layout_name:tile tagrule=id:9,layout_name:tile env=ELECTRON_OZONE_PLATFORM_HINT,auto env=QT_QPA_PLATFORMTHEME,qt6ct env=QT_QPA_PLATFORM,wayland env=QT_AUTO_SCREEN_SCALE_FACTOR,1 env=XDG_SESSION_TYPE,wayland env=GDK_BACKEND,wayland,x11 env=GDK_SCALE,1 env=NVD_BACKEND,direct animations=${if eyecandy && cfg.eyeCandy.animations.enable then "1" else "0"} layer_animations=0 animation_type_open=slide animation_type_close=zoom animation_fade_in=0 animation_fade_out=1 tag_animation_direction=1 zoom_initial_ratio=0.8 zoom_end_ratio=0.8 fadein_begin_opacity=0.5 fadeout_begin_opacity=0.5 animation_duration_move=200 animation_duration_open=200 animation_duration_tag=150 animation_duration_close=100 animation_duration_focus=0 animation_curve_open=0.05,0.7,0.1,1.0 animation_curve_move=0.46,1.0,0.29,1 animation_curve_tag=0.46,1.0,0.29,1 animation_curve_close=0.0,0.0,1.0,1.0 animation_curve_focus=0.05,0.7,0.1,1.0 animation_curve_opafadeout=0.5,0.5,0.5,0.5 animation_curve_opafadein=0.46,1.0,0.29,1 ''; autostart_sh = '' gnome-keyring-daemon --start --components=secrets,ssh,pkcs11 & ${lib.optionalString cfg.beeConfig.enable '' wl-paste --type text --watch cliphist store & awww-daemon & dunst & ''} ${lib.optionalString cfg.beeConfig.waybar '' waybar & ''} ''; }; } else { programs.mango.enable = true; } ); }