# mango (0.12.9) configuration # Keybindings mirror the user's river (~/.config/river/init) and dwm # (~/git/dwm/config.h) setups: MOD1 (Alt) as primary modifier, dwm-style # tag handling, river-style window movement. # # Reference: https://github.com/mangowm/mango/wiki # ============================================================================ # Window effects (scenefx) # ============================================================================ blur=0 blur_layer=0 blur_optimized=1 blur_params_num_passes=2 blur_params_radius=5 blur_params_noise=0.02 blur_params_brightness=0.9 blur_params_contrast=0.9 blur_params_saturation=1.2 shadows=0 layer_shadows=0 shadow_only_floating=1 shadows_size=10 shadows_blur=15 shadows_position_x=0 shadows_position_y=0 shadowscolor=0x000000ff border_radius=0 no_radius_when_single=0 focused_opacity=1.0 unfocused_opacity=1.0 # ============================================================================ # Animations # ============================================================================ animations=1 layer_animations=0 animation_type_open=zoom animation_type_close=slide layer_animation_type_open=slide layer_animation_type_close=slide animation_fade_in=1 animation_fade_out=1 tag_animation_direction=1 zoom_initial_ratio=0.3 zoom_end_ratio=0.8 fadein_begin_opacity=0.5 fadeout_begin_opacity=0.8 animation_duration_move=200 animation_duration_open=100 animation_duration_tag=0 animation_duration_close=200 animation_duration_focus=0 animation_curve_open=0.46,1.0,0.29,1 animation_curve_move=0.46,1.0,0.29,1 animation_curve_tag=0.46,1.0,0.29,1 animation_curve_close=0.08,0.92,0,1 animation_curve_focus=0.46,1.0,0.29,1 animation_curve_opafadeout=0.5,0.5,0.5,0.5 animation_curve_opafadein=0.46,1.0,0.29,1 # ============================================================================ # Layouts # ============================================================================ # Scroller scroller_structs=20 scroller_default_proportion=0.8 scroller_focus_center=0 scroller_prefer_center=0 edge_scroller_pointer_focus=1 scroller_default_proportion_single=1.0 scroller_proportion_preset=0.5,0.8,1.0 # Master-Stack (matches river filtile main-ratio 55, main-location left) new_is_master=1 default_mfact=0.55 default_nmaster=1 smartgaps=1 # ============================================================================ # Overview # ============================================================================ hotarea_size=10 enable_hotarea=1 hotarea_corner=0 ov_tab_mode=0 overviewgappi=5 overviewgappo=30 # ============================================================================ # Misc behaviour # ============================================================================ no_border_when_single=1 axis_bind_apply_timeout=100 focus_on_activate=1 idleinhibit_ignore_visible=0 sloppyfocus=1 warpcursor=0 focus_cross_monitor=0 focus_cross_tag=0 enable_floating_snap=0 snap_distance=30 cursor_size=24 drag_tile_to_tile=1 # ============================================================================ # Keyboard (matches river: set-repeat 30 200, layout us,cz(qwerty)) # ============================================================================ repeat_rate=30 repeat_delay=200 numlockon=0 xkb_rules_layout=us,cz(qwerty) xkb_rules_options=grp:win_space_toggle # ============================================================================ # Trackpad # ============================================================================ disable_trackpad=1 tap_to_click=1 tap_and_drag=1 drag_lock=1 trackpad_natural_scrolling=0 disable_while_typing=1 left_handed=0 middle_button_emulation=0 swipe_min_threshold=1 # ============================================================================ # Mouse # ============================================================================ mouse_natural_scrolling=0 # ============================================================================ # Appearance / colors (mostly preserved from previous config) # ============================================================================ gappih=5 gappiv=5 gappoh=10 gappov=10 scratchpad_width_ratio=0.8 scratchpad_height_ratio=0.9 borderpx=1 rootcolor=0x1D1F21ff bordercolor=0x586e75ff focuscolor=0x93a1a1ff maximizescreencolor=0x89aa61ff urgentcolor=0xad401fff scratchpadcolor=0x516c93ff globalcolor=0xb153a7ff overlaycolor=0x14a57cff # ============================================================================ # Per-tag layout (default tile, matches dwm and river filtile) # Layouts available: tile, scroller, grid, deck, monocle, center_tile, # vertical_tile, vertical_scroller, dwindle # ============================================================================ tagrule=id:1,layout_name:tile tagrule=id:2,layout_name:tile tagrule=id:3,layout_name:tile tagrule=id:4,layout_name:tile tagrule=id:5,layout_name:tile tagrule=id:6,layout_name:tile tagrule=id:7,layout_name:tile tagrule=id:8,layout_name:tile tagrule=id:9,layout_name:tile # ============================================================================ # Window rules (mirrors river rule-add and dwm rules) # ============================================================================ # Floating apps (from dwm config) windowrule=isfloating:1,appid:Arandr windowrule=isfloating:1,appid:Pavucontrol windowrule=isfloating:1,appid:mpv # River rules windowrule=isfloating:1,appid:float.* windowrule=isfloating:1,title:yazi windowrule=isfloating:1,title:river # ============================================================================ # Key Bindings # # Modifier convention follows river/dwm: MOD = ALT (Mod1) # Format: bind=MODIFIERS,KEY,COMMAND,PARAMETERS # Flags: bindl = works while screen locked # ============================================================================ # --- Compositor control -------------------------------------------------- bind=SUPER,r,reload_config # river: Mod1+Shift E exit bind=ALT+SHIFT,e,quit # river/dwm: Mod1+Shift C close bind=ALT+SHIFT,c,killclient # --- Launchers ----------------------------------------------------------- # river/dwm: Mod1 p (menu) #bind=ALT,p,spawn,fuzzel bind=ALT,p,spawn,wmenu-run -F -il 16 -f 'LiterationMono Nerd Font 12' -n bbbbbbff -N 222222ff -s eeeeeeff -S 444444ff -m eeeeeeff -M 444444ff # river/dwm: Mod1+Shift Return bind=ALT+SHIFT,Return,spawn,foot # Yazi file manager in floating foot (river: Mod1 r) #bind=ALT,r,spawn,foot -T yazi -W 150x50 -e yazi bind=ALT,r,spawn,foot -T yazi -W 150x50 -e ranger # --- Focus --------------------------------------------------------------- # river: Mod1 J/K focus-view next/previous (dwm: focusstack +1/-1) bind=ALT,j,focusstack,next bind=ALT,k,focusstack,prev # Direction-based focus (mango bonus, useful complement) bind=ALT,Left,focusdir,left bind=ALT,Right,focusdir,right bind=ALT,Up,focusdir,up bind=ALT,Down,focusdir,down # --- Swap / move in stack ------------------------------------------------ # river: Mod1+Shift J/K swap next/previous (dwm: movestack) bind=ALT+SHIFT,j,exchange_stack_client,next bind=ALT+SHIFT,k,exchange_stack_client,prev # Direction-based swap bind=ALT+SHIFT,Left,exchange_client,left bind=ALT+SHIFT,Right,exchange_client,right bind=ALT+SHIFT,Up,exchange_client,up bind=ALT+SHIFT,Down,exchange_client,down # --- Master / layout tweaks (river filtile ↔ dwm) ------------------------ # river: Mod1 H/L send-layout-cmd filtile main-ratio -/+5 # dwm: MOD1 H/L setmfact -/+0.05 bind=ALT,h,setmfact,-0.05 bind=ALT,l,setmfact,+0.05 # river: Mod1 I/D main-count +/-1 dwm: incnmaster +/-1 bind=ALT,i,incnmaster,+1 bind=ALT,d,incnmaster,-1 # river: Mod1 Return zoom (bump to top of stack) bind=ALT,Return,zoom # river: Mod1 Tab focus-previous-tags dwm: MOD1 Tab view (last tags) bind=ALT,Tab,view,-1 # --- Layout switching (dwm: t=tile, m=monocle; river: M=monocle) --------- bind=ALT,t,setlayout,tile bind=ALT,m,setlayout,monocle # dwm: MOD1 Space cycles layout bind=ALT,space,switch_layout # --- Float / fullscreen -------------------------------------------------- # river: Mod1+Shift Space toggle-float dwm: MOD1+Shift Space togglefloating bind=ALT+SHIFT,space,togglefloating # river: Mod1 F toggle-fullscreen dwm: MOD1 F (was floating layout) bind=ALT,f,togglefullscreen bind=ALT+SHIFT,f,togglefakefullscreen # --- Tags 1-9 (river/dwm identical scheme) ------------------------------- # Mod1+N : view tag N # Mod1+Shift+N : send window to tag N # Mod1+Ctrl+N : toggle view of tag N # Mod1+Ctrl+Shift+N : toggle tag N on focused window bind=ALT,1,view,1 bind=ALT,2,view,2 bind=ALT,3,view,3 bind=ALT,4,view,4 bind=ALT,5,view,5 bind=ALT,6,view,6 bind=ALT,7,view,7 bind=ALT,8,view,8 bind=ALT,9,view,9 bind=ALT+SHIFT,1,tag,1 bind=ALT+SHIFT,2,tag,2 bind=ALT+SHIFT,3,tag,3 bind=ALT+SHIFT,4,tag,4 bind=ALT+SHIFT,5,tag,5 bind=ALT+SHIFT,6,tag,6 bind=ALT+SHIFT,7,tag,7 bind=ALT+SHIFT,8,tag,8 bind=ALT+SHIFT,9,tag,9 bind=ALT+CTRL,1,toggleview,1 bind=ALT+CTRL,2,toggleview,2 bind=ALT+CTRL,3,toggleview,3 bind=ALT+CTRL,4,toggleview,4 bind=ALT+CTRL,5,toggleview,5 bind=ALT+CTRL,6,toggleview,6 bind=ALT+CTRL,7,toggleview,7 bind=ALT+CTRL,8,toggleview,8 bind=ALT+CTRL,9,toggleview,9 bind=ALT+CTRL+SHIFT,1,toggletag,1 bind=ALT+CTRL+SHIFT,2,toggletag,2 bind=ALT+CTRL+SHIFT,3,toggletag,3 bind=ALT+CTRL+SHIFT,4,toggletag,4 bind=ALT+CTRL+SHIFT,5,toggletag,5 bind=ALT+CTRL+SHIFT,6,toggletag,6 bind=ALT+CTRL+SHIFT,7,toggletag,7 bind=ALT+CTRL+SHIFT,8,toggletag,8 bind=ALT+CTRL+SHIFT,9,toggletag,9 # All tags (river/dwm: 0) bind=ALT,0,view,0 bind=ALT+SHIFT,0,toggletag,0 # --- Monitor focus / move (river: Period/Comma; dwm: same) --------------- bind=ALT,period,focusmon,right bind=ALT,comma,focusmon,left bind=ALT+SHIFT,period,tagmon,right bind=ALT+SHIFT,comma,tagmon,left # --- Overview (mango bonus) ---------------------------------------------- bind=SUPER,Tab,toggleoverview # --- Scratchpad ---------------------------------------------------------- bind=ALT,z,toggle_scratchpad bind=SUPER,i,minimized bind=SUPER+SHIFT,i,restore_minimized # --- Window state extras ------------------------------------------------- bind=SUPER,g,toggleglobal bind=SUPER,o,toggleoverlay bind=ALT,a,togglemaximizescreen # --- Gaps ---------------------------------------------------------------- bind=ALT+SHIFT,x,incgaps,1 bind=ALT+SHIFT,z,incgaps,-1 bind=ALT+SHIFT,r,togglegaps # --- Move / resize floating windows (river-style snap & arrow nudge) ----- # river: Mod1+Super H/J/K/L move 100 here: ctrl+shift arrows nudge 50 bind=CTRL+SHIFT,Up,movewin,+0,-50 bind=CTRL+SHIFT,Down,movewin,+0,+50 bind=CTRL+SHIFT,Left,movewin,-50,+0 bind=CTRL+SHIFT,Right,movewin,+50,+0 # river: Mod1+Super+Shift H/J/K/L resize bind=CTRL+ALT,Up,resizewin,+0,-50 bind=CTRL+ALT,Down,resizewin,+0,+50 bind=CTRL+ALT,Left,resizewin,-50,+0 bind=CTRL+ALT,Right,resizewin,+50,+0 # --- Lock screen (river: Mod1+Shift L spawn waylock) --------------------- # Wrapper script: locks immediately, then runs a 10 s idle blanker while # locked (kanshi paused during blank to avoid Lenovo dock profile flip). bindl=ALT+SHIFT,l,spawn,~/.config/mango/scripts/lock.sh # --- Media keys (work in any mode) --------------------------------------- bindl=NONE,XF86AudioRaiseVolume,spawn,pamixer -i 5 bindl=NONE,XF86AudioLowerVolume,spawn,pamixer -d 5 bindl=NONE,XF86AudioMute,spawn,pamixer --toggle-mute bindl=NONE,XF86AudioPlay,spawn,playerctl play-pause bindl=NONE,XF86AudioPrev,spawn,playerctl previous bindl=NONE,XF86AudioNext,spawn,playerctl next bindl=NONE,XF86AudioMedia,spawn,playerctl play-pause # --- Screenshots (grim/slurp, mirrors river) ----------------------------- bind=NONE,Print,spawn_shell,grim - | tee /home/$USER/scrot/$(date +"%F_%T").png | wl-copy bind=ALT,Print,spawn_shell,grim -g "$(slurp -d)" - | tee /home/$USER/scrot/$(date +"%F_%T").png | wl-copy bind=ALT+SHIFT,Print,spawn,hyprpicker -anl # ============================================================================ # Mouse bindings (river: Mod1 left=move, right=resize, middle=toggle float) # ============================================================================ mousebind=ALT,btn_left,moveresize,curmove mousebind=ALT,btn_right,moveresize,curresize mousebind=ALT,btn_middle,togglefloating # Maximize/restore on plain middle-click anywhere (overview/title contexts) mousebind=SUPER,btn_middle,togglemaximizescreen,0 # ============================================================================ # Axis (scroll) bindings — wheel over root cycles tags # ============================================================================ axisbind=SUPER,UP,viewtoleft_have_client axisbind=SUPER,DOWN,viewtoright_have_client # ============================================================================ # Layer rules # ============================================================================ layerrule=animation_type_open:zoom,layer_name:fuzzel layerrule=animation_type_close:zoom,layer_name:fuzzel # ============================================================================ # Autostart (mirrors river spawn ... block) # ============================================================================ env=XDG_CURRENT_DESKTOP,mango env=XDG_SESSION_TYPE,wayland exec-once=dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once=/usr/lib/xdg-desktop-portal-wlr exec-once=/usr/lib/xdg-desktop-portal # Audio exec-once=pipewire #exec-once=pipewire-pulse exec-once=pkill waybar_audio_event_bridge exec-once=/home/fr/.local/bin/waybar_audio_event_bridge # Services exec-once=dunst exec-once=udiskie -ANt # Color temperature exec-once=wlsunset -l 50.08 -L 14.42 -t 5000 -T 6500 # Wallpaper exec-once=swaybg -c 1D1F21 # Status bar (mango-specific waybar config; river bar config is left intact) exec-once=waybar -c ~/.config/waybar/config-mango.jsonc # Idle: blank after 20 min when unlocked (no auto-lock). Manual lock # (Alt+Shift+L) and suspend route through ~/.config/mango/scripts/lock.sh # which adds a 10 s idle blanker for the locked session. Kanshi is # STOP/CONT-bracketed around every wlopm cycle to keep the Lenovo # USB-C dock from re-triggering monitor profile switches when DPMS # drops the DP-MST link. exec-once=swayidle -w timeout 1200 'pkill -STOP kanshi 2>/dev/null; wlopm --off "*"' resume 'wlopm --on "*"; sleep 0.5; pkill -CONT kanshi 2>/dev/null' before-sleep '~/.config/mango/scripts/lock.sh &' # Multi-monitor configuration exec-once=kanshi