291 lines
No EOL
12 KiB
Text
291 lines
No EOL
12 KiB
Text
# ╔══════════════════════════════════════════════════════════════╗
|
|
# ║ MangoWM Config ║
|
|
# ║ ~/.config/mango/config.conf ║
|
|
# ╚══════════════════════════════════════════════════════════════╝
|
|
|
|
# ── Environment (NVIDIA-specific) ────────────────────────────
|
|
env=GBM_BACKEND,nvidia-drm
|
|
env=__GLX_VENDOR_LIBRARY_NAME,nvidia
|
|
env=WLR_NO_HARDWARE_CURSORS,1
|
|
env=LIBVA_DRIVER_NAME,nvidia-drm
|
|
env=XDG_SESSION_TYPE,wayland
|
|
env=XDG_CURRENT_DESKTOP,wlroots
|
|
env=QT_QPA_PLATFORM,wayland
|
|
env=QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
|
env=MOZ_ENABLE_WAYLAND,1
|
|
|
|
# ── Autostart ────────────────────────────────────────────────
|
|
exec-once=bash ~/.config/mango/autostart.sh
|
|
|
|
# ── General / Miscellaneous ──────────────────────────────────
|
|
sloppyfocus=1
|
|
smartgaps=0
|
|
default_mfact=0.55
|
|
default_nmaster=1
|
|
new_is_master=0
|
|
|
|
# ── Appearance ───────────────────────────────────────────────
|
|
borderpx=2
|
|
gappih=12
|
|
gappiv=12
|
|
gappoh=12
|
|
gappov=12
|
|
|
|
# ── Scroller Layout (default — like Niri) ────────────────────
|
|
# All tags default to scroller via tag rules below
|
|
scroller_structs=20
|
|
scroller_default_proportion=0.9
|
|
scroller_focus_center=0
|
|
scroller_prefer_center=1
|
|
scroller_prefer_overspread=0
|
|
edge_scroller_pointer_focus=1
|
|
scroller_proportion_preset=0.5,0.8,1.0
|
|
scroller_ignore_proportion_single=1
|
|
|
|
# ── Animations (full eye candy) ──────────────────────────────
|
|
animations=1
|
|
layer_animations=1
|
|
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
|
|
fadein_begin_opacity=0.5
|
|
fadeout_begin_opacity=0.5
|
|
animation_duration_move=350
|
|
animation_duration_open=300
|
|
animation_duration_tag=250
|
|
animation_duration_close=200
|
|
animation_duration_focus=0
|
|
animation_curve_open=0.22,1.0,0.36,1.0
|
|
animation_curve_move=0.22,1.0,0.36,1.0
|
|
animation_curve_tag=0.22,1.0,0.36,1.0
|
|
animation_curve_close=0.22,1.0,0.36,1.0
|
|
tag_animation_direction=1
|
|
|
|
# ── Window Effects (blur + shadows) ─────────────────────────
|
|
blur=1
|
|
blur_layer=1
|
|
blur_optimized=1
|
|
blur_params_radius=6
|
|
blur_params_num_passes=2
|
|
blur_params_noise=0.02
|
|
blur_params_brightness=0.9
|
|
blur_params_contrast=0.9
|
|
blur_params_saturation=1.1
|
|
|
|
shadows=1
|
|
layer_shadows=0
|
|
shadow_only_floating=1
|
|
shadows_size=12
|
|
shadows_blur=18
|
|
shadows_position_x=0
|
|
shadows_position_y=2
|
|
|
|
|
|
# ── Tag Rules (all tags default to scroller) ─────────────────
|
|
tagrule=id:1,layout_name:scroller
|
|
tagrule=id:2,layout_name:scroller
|
|
tagrule=id:3,layout_name:scroller
|
|
tagrule=id:4,layout_name:scroller
|
|
tagrule=id:5,layout_name:scroller
|
|
tagrule=id:6,layout_name:scroller
|
|
tagrule=id:7,layout_name:scroller
|
|
tagrule=id:8,layout_name:scroller
|
|
tagrule=id:9,layout_name:scroller
|
|
|
|
# ── Window Rules ─────────────────────────────────────────────
|
|
# Float common game launchers / popups
|
|
# windowrule=appid:lutris,float:1
|
|
|
|
# ── Keyboard ─────────────────────────────────────────────────
|
|
xkb_rules_layout=us,sk
|
|
repeat_rate=50
|
|
repeat_delay=300
|
|
xkb_rules_options=grp:caps_toggle
|
|
# xkb_rules_options=ctrl:nocaps
|
|
# xkb_rules_options=grp:alt_altgr_toggle,caps:hyper
|
|
numlockon=0
|
|
|
|
# ── Trackpad ─────────────────────────────────────────────────
|
|
disable_trackpad=0
|
|
tap_to_click=1
|
|
tap_and_drag=1
|
|
drag_lock=1
|
|
mouse_natural_scrolling=0
|
|
trackpad_natural_scrolling=1
|
|
disable_while_typing=1
|
|
left_handed=0
|
|
middle_button_emulation=0
|
|
swipe_min_threshold=1
|
|
accel_profile=2
|
|
accel_speed=0.2
|
|
# scroll_button=274
|
|
# scroll_method=1
|
|
|
|
# ── Monitor (adjust to your setup) ──────────────────────────
|
|
# Uncomment and edit for your display:
|
|
# monitorrule=name:DP-1,res:2560x1440@165,pos:0x0,scale:1
|
|
|
|
# ═══════════════════════════════════════════════════════════════
|
|
# KEY BINDINGS
|
|
# ═══════════════════════════════════════════════════════════════
|
|
|
|
# ── Essentials ───────────────────────────────────────────────
|
|
bind=SUPER,t,spawn,alacritty
|
|
bind=SUPER,Return,spawn,alacritty
|
|
bind=SUPER,q,killclient
|
|
bind=SUPER,d,spawn,fuzzel
|
|
bind=SUPER+SHIFT,r,reload_config
|
|
bind=SUPER+SHIFT,e,quit
|
|
bind=SUPER+SHIFT,q,quit
|
|
bind=CTRL+ALT,Delete,quit
|
|
bind=SUPER+ALT,l,spawn,waylock
|
|
bind=SUPER,v,spawn,sh -c "cliphist list | fuzzel --dmenu --with-nth=2 --width 80 | cliphist decode | wl-copy"
|
|
|
|
# ── Focus (arrow keys — natural for scroller) ────────────────
|
|
bind=SUPER,Left,focusdir,left
|
|
bind=SUPER,Right,focusdir,right
|
|
bind=SUPER,Up,focusdir,up
|
|
bind=SUPER,Down,focusdir,down
|
|
|
|
# ── Focus (vim keys) ─────────────────────────────────────────
|
|
bind=SUPER,h,focusdir,left
|
|
bind=SUPER,l,focusdir,right
|
|
bind=SUPER,k,focusdir,up
|
|
bind=SUPER,j,focusdir,down
|
|
|
|
# ── Move windows ─────────────────────────────────────────────
|
|
bind=SUPER+SHIFT,Left,exchange_client,left
|
|
bind=SUPER+SHIFT,Right,exchange_client,right
|
|
bind=SUPER+SHIFT,Up,exchange_client,up
|
|
bind=SUPER+SHIFT,Down,exchange_client,down
|
|
|
|
bind=SUPER+SHIFT,h,exchange_client,left
|
|
bind=SUPER+SHIFT,l,exchange_client,right
|
|
bind=SUPER+SHIFT,k,exchange_client,up
|
|
bind=SUPER+SHIFT,j,exchange_client,down
|
|
|
|
# ── Scroller width cycling ───────────────────────────────────
|
|
bind=SUPER,equal,switch_proportion_preset
|
|
bind=SUPER,minus,set_proportion,0.5
|
|
bind=SUPER,f,togglefullscreen
|
|
bind=SUPER+SHIFT,f,togglefakefullscreen
|
|
bind=SUPER,m,togglemaximizescreen
|
|
|
|
# ── Layout switching ─────────────────────────────────────────
|
|
bind=SUPER,n,switch_layout
|
|
#bind=SUPER,s,setlayout,scroller
|
|
#bind=SUPER,t,setlayout,tile
|
|
#bind=SUPER,y,setlayout,monocle
|
|
|
|
# ── Floating ─────────────────────────────────────────────────
|
|
bind=SUPER,z,togglefloating
|
|
bind=SUPER,c,centerwin
|
|
|
|
# ── Tags (workspaces) ───────────────────────────────────────
|
|
bind=SUPER,1,view,1
|
|
bind=SUPER,2,view,2
|
|
bind=SUPER,3,view,3
|
|
bind=SUPER,4,view,4
|
|
bind=SUPER,5,view,5
|
|
bind=SUPER,6,view,6
|
|
bind=SUPER,7,view,7
|
|
bind=SUPER,8,view,8
|
|
bind=SUPER,9,view,9
|
|
bind=SUPER,0,view,0
|
|
|
|
# Move window to tag
|
|
bind=SUPER+SHIFT,1,tag,1
|
|
bind=SUPER+SHIFT,2,tag,2
|
|
bind=SUPER+SHIFT,3,tag,3
|
|
bind=SUPER+SHIFT,4,tag,4
|
|
bind=SUPER+SHIFT,5,tag,5
|
|
bind=SUPER+SHIFT,6,tag,6
|
|
bind=SUPER+SHIFT,7,tag,7
|
|
bind=SUPER+SHIFT,8,tag,8
|
|
bind=SUPER+SHIFT,9,tag,9
|
|
bind=SUPER+SHIFT,0,toggletag,0
|
|
|
|
# Quick tag navigation
|
|
bind=SUPER,bracketleft,viewtoleft
|
|
bind=SUPER,bracketright,viewtoright
|
|
bind=SUPER+SHIFT,bracketleft,tagtoleft
|
|
bind=SUPER+SHIFT,bracketright,tagtoright
|
|
|
|
# Workspace navigation (U/I and Page_Up/Down like niri)
|
|
bind=SUPER,Page_Down,viewtoright
|
|
bind=SUPER,Page_Up,viewtoleft
|
|
bind=SUPER,u,viewtoleft
|
|
bind=SUPER,i,viewtoright
|
|
bind=SUPER+CTRL,Page_Down,tagtoright
|
|
bind=SUPER+CTRL,Page_Up,tagtoleft
|
|
bind=SUPER+CTRL,u,tagtoleft
|
|
bind=SUPER+CTRL,i,tagtoright
|
|
|
|
# Move window to tag (Ctrl+number like niri)
|
|
bind=SUPER+CTRL,1,tag,1
|
|
bind=SUPER+CTRL,2,tag,2
|
|
bind=SUPER+CTRL,3,tag,3
|
|
bind=SUPER+CTRL,4,tag,4
|
|
bind=SUPER+CTRL,5,tag,5
|
|
bind=SUPER+CTRL,6,tag,6
|
|
bind=SUPER+CTRL,7,tag,7
|
|
bind=SUPER+CTRL,8,tag,8
|
|
bind=SUPER+CTRL,9,tag,9
|
|
|
|
# ── Monitor focus ────────────────────────────────────────────
|
|
bind=SUPER,comma,focusmon,left
|
|
bind=SUPER,period,focusmon,right
|
|
bind=SUPER+SHIFT,comma,tagmon,left
|
|
bind=SUPER+SHIFT,period,tagmon,right
|
|
|
|
# ── Gaps ─────────────────────────────────────────────────────
|
|
bind=SUPER+ALT,equal,incgaps,+2
|
|
bind=SUPER+ALT,minus,incgaps,-2
|
|
bind=SUPER+ALT,0,togglegaps
|
|
|
|
# ── Scratchpad ───────────────────────────────────────────────
|
|
bind=SUPER,i,minimized
|
|
bind=ALT,z,toggle_scratchpad
|
|
bind=SUPER+SHIFT,i,restore_minimized
|
|
|
|
# ── Overview ─────────────────────────────────────────────────
|
|
bind=SUPER,Tab,toggleoverview
|
|
bind=SUPER,o,toggleoverview
|
|
|
|
# ── Media keys ───────────────────────────────────────────────
|
|
bind=NONE,XF86AudioRaiseVolume,spawn,wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+
|
|
bind=NONE,XF86AudioLowerVolume,spawn,wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-
|
|
bind=NONE,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
bind=NONE,XF86AudioMicMute,spawn,wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
|
bind=NONE,XF86MonBrightnessUp,spawn,brightnessctl set 10+%
|
|
bind=NONE,XF86MonBrightnessDown,spawn,brightnessctl set 10-%
|
|
bind=NONE,XF86Display,spawn,wlopm --toggle \*
|
|
|
|
# ── Screenshots ──────────────────────────────────────────────
|
|
bind=NONE,Print,spawn,sh -c 'grim ~/Pictures/Screenshots/$(date +"Screenshot from %Y-%m-%d %H-%M-%S").png'
|
|
bind=CTRL,Print,spawn,sh -c 'grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +"Screenshot from %Y-%m-%d %H-%M-%S").png'
|
|
bind=ALT,Print,spawn,sh -c 'grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +"Screenshot from %Y-%m-%d %H-%M-%S").png'
|
|
bind=SUPER,Print,spawn,sh -c "wl-paste | swappy -f -"
|
|
|
|
# ── Mouse bindings ───────────────────────────────────────────
|
|
mousebind=SUPER,BTN_LEFT,moveresize,move
|
|
mousebind=SUPER,BTN_RIGHT,moveresize,resize
|
|
|
|
# 3-finger: Window focus
|
|
gesturebind=none,left,3,focusdir,left
|
|
gesturebind=none,right,3,focusdir,right
|
|
gesturebind=none,up,3,focusdir,up
|
|
gesturebind=none,down,3,focusdir,down
|
|
|
|
# 4-finger: Workspace navigation
|
|
gesturebind=none,left,4,viewtoleft_have_client
|
|
gesturebind=none,right,4,viewtoright_have_client
|
|
gesturebind=none,up,4,toggleoverview
|
|
gesturebind=none,down,4,toggleoverview
|
|
|
|
# ── Switch Bindings ─────────────────────────────────────────────
|
|
switchbind=fold,spawn,swaylock -f -c 000000
|
|
switchbind=unfold,spawn,wlr-dpms on |