diff --git a/config.conf b/config.conf index 6cbb3a2..fe20768 100644 --- a/config.conf +++ b/config.conf @@ -1,257 +1,647 @@ -# More option see https://github.com/DreamMaoMao/mango/wiki/ +# ============================================================================== +# mangowc config.conf +# ============================================================================== +# For more detailed information and additional config options visit: +# https://mangowc.vercel.app/ +# https://github.com/DreamMaoMao/mangowc/wiki -# Window effect -blur=0 -blur_layer=0 -blur_optimized=1 +# The default config path is: ~/.config/mango/config.conf +# The default fallback path is: /etc/mango/config.conf + +# You can make your config modular by sourcing other files: +# An example of using an absolute path +# source = ~/.config/mango/bind.conf +# An example of using a relative path +# source = ./bind.conf + +# You can also start mango using a custom configuration path: +# $ mango -c /path/to/config + +# ------------------------------------------------------------------------------ +# Startup Apps & Environment Variables +# ------------------------------------------------------------------------------ +# exec-once = discord +# Only run when first starting mango +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP = wlroots +# Runs every time the config is reloaded +# exec = bash reloadsomething.sh + +# exec-once = waybar + +# You can set system environment variables that reset on each config reload. +# For example: +# env = LANG, en_US.UTF-8 +# env = XDG_SCREENSHOTS_DIR, ~/Pictures/Screenshots + +# ------------------------------------------------------------------------------ +# Monitor Rules +# ------------------------------------------------------------------------------ +# Warning: If using xwayland do not set any display to negative coordinates. +# It will cause the click event to be abnormal. Refer to: https://gitlab.freedesktop.org/xorg/xserver/-/issues/899 +# The layout set in `tagrule` has a higher priority than the layout set in `monitorrule` and will override it. +# Example format: +# monitorrule = , , , , , , , , , , + +# Example dual monitor setup: +# monitorrule = DP-1, 0.50, 1, tgmix, 0, 1, 1920, 0, 1920, 1080, 60 +# monitorrule = DP-3, 0.50, 1, scroller, 0, 1, 0, 0, 1920, 1080, 144 + +# The transform values are: +# 0: no transform +# 1: 90 degrees counter-clockwise +# 2: 180 degrees counter-clockwise +# 3: 270 degrees counter-clockwise +# 4: 180 degrees vertical flip +# 5: Vertical flip + 90 degrees counter-clockwise +# 6: Vertical flip + 180 degrees counter-clockwise +# 7: Vertical flip + 270 counter-clockwise + +# ------------------------------------------------------------------------------ +# Window Effects (Blur & Shadows)(Requires SceneFX version) +# ------------------------------------------------------------------------------ +# Enable/disable window background blur +blur = 0 + +# Enable/disable blur on shell layers (like panels/menus) +blur_layer = 0 + +# Use optimized blur shader for better performance +blur_optimized = 1 + +# Quality of blur (higher = smoother but heavier) blur_params_num_passes = 2 + +# Strength of the blur effect blur_params_radius = 5 + +# Dithering/noise to prevent color banding in blur blur_params_noise = 0.02 + +# Adjust brightness of the blurred area blur_params_brightness = 0.9 + +# Adjust contrast of the blurred area blur_params_contrast = 0.9 + +# Adjust color intensity of the blurred area blur_params_saturation = 1.2 +# Enable/disable window shadows shadows = 0 + +# Enable/disable shadows on shell layers layer_shadows = 0 + +# Only draw shadows on floating (non-tiled) windows shadow_only_floating = 1 + +# The spread/size of the shadow shadows_size = 10 + +# The softness of the shadow edges shadows_blur = 15 + +# Horizontal offset of the shadow shadows_position_x = 0 + +# Vertical offset of the shadow shadows_position_y = 0 -shadowscolor= 0x000000ff -border_radius=6 -no_radius_when_single=0 -focused_opacity=1.0 -unfocused_opacity=1.0 +# Shadow color in HEX (RGBA) +shadowscolor = 0x000000ff -# Animation Configuration(support type:zoom,slide) -# tag_animation_direction: 1-horizontal,0-vertical -animations=1 -layer_animations=1 -animation_type_open=slide -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=500 -animation_duration_open=400 -animation_duration_tag=350 -animation_duration_close=800 -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 +# ------------------------------------------------------------------------------ +# Animations (Open, Close, Move, Tag Switch) +# ------------------------------------------------------------------------------ +# Master toggle for window animations +animations = 1 -# Scroller Layout Setting -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 +# Toggle animations for layers (menus/popups) +layer_animations = 1 -# Master-Stack Layout Setting -new_is_master=1 -default_mfact=0.55 -default_nmaster=1 -smartgaps=0 +# Animation style for opening (zoom or slide) +animation_type_open = slide -# Overview Setting -hotarea_size=10 -enable_hotarea=1 -ov_tab_mode=0 -overviewgappi=5 -overviewgappo=30 +# Animation style for closing (zoom or slide) +animation_type_close = slide -# 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 -cursor_size=24 -drag_tile_to_tile=1 +# Enable fade-in effect during open +animation_fade_in = 1 -# keyboard -repeat_rate=25 -repeat_delay=600 -numlockon=0 -xkb_rules_layout=us +# Enable fade-out effect during close +animation_fade_out = 1 + +# 1 for horizontal sliding, 0 for vertical sliding +tag_animation_direction = 1 + +# Ratios & Opacity + +# Starting size multiplier for zoom animation +zoom_initial_ratio = 0.3 + +# Ending size multiplier for zoom animation +zoom_end_ratio = 0.8 + +# Starting opacity for fade-in +fadein_begin_opacity = 0.5 + +# Starting opacity for fade-out +fadeout_begin_opacity = 0.8 + +# Durations (in milliseconds) + +# Time taken to move/resize a window +animation_duration_move = 500 + +# Time taken to open a window +animation_duration_open = 400 + +# Time taken to switch between tags (workspaces) +animation_duration_tag = 350 + +# Time taken to close a window +animation_duration_close = 800 + +# Time taken to animate focus changes +animation_duration_focus = 0 + +# Animation Curves (Cubic Bezier: x1, y1, x2, y2) +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 + +# ------------------------------------------------------------------------------ +# Layout Settings (Scroller, Master-Stack, Gaps) +# ------------------------------------------------------------------------------ +# Scroller Layout + +# Maximum internal structures for scroller +scroller_structs = 20 + +# Default window width in scroller mode +scroller_default_proportion = 0.8 + +# Keep focused window centered +scroller_focus_center = 0 + +# Favor center positioning for new windows +scroller_prefer_center = 0 + +# Focus window under pointer at screen edges +edge_scroller_pointer_focus = 1 + +# Width proportion when only one window exists +scroller_default_proportion_single = 1.0 + +# Cycling presets for window sizing +scroller_proportion_preset = 0.5, 0.8, 1.0 + +# Master-Stack Layout + +# New windows become the master (left side) +new_is_master = 1 + +# Default master area width percentage +default_mfact = 0.55 + +# Default number of windows in the master area +default_nmaster = 1 + +# Hide gaps if only one window is visible +smartgaps = 0 + +# Appearance & Gaps + +# Horizontal inner gap (between windows) +gappih = 5 + +# Vertical inner gap (between windows) +gappiv = 5 + +# Horizontal outer gap (window to screen edge) +gappoh = 10 + +# Vertical outer gap (window to screen edge) +gappov = 10 + +# Window border thickness in pixels +borderpx = 4 + +# Rounding of window corners +border_radius = 6 + +# Disable corner rounding for single windows +no_radius_when_single = 0 + +# Disable borders for single windows +no_border_when_single = 0 + +# ------------------------------------------------------------------------------ +# Workspace (Tag) Rules +# ------------------------------------------------------------------------------ +# Default layout for each tag +# (tile, scroller, monocle, grid, deck, center_tile, vertical_tile, vertical_grid, vertical_scroller, tgmix) +# tagrule = id:1, layout_name:tgmix +# tagrule = id:2, layout_name:tgmix +tagrule = id:3, layout_name:tgmix +tagrule = id:4, layout_name:tgmix +tagrule = id:5, layout_name:tgmix +tagrule = id:6, layout_name:tgmix +tagrule = id:7, layout_name:tgmix +tagrule = id:8, layout_name:tgmix +tagrule = id:9, layout_name:tgmix + +# ------------------------------------------------------------------------------ +# Colors (Hex RGBA) +# ------------------------------------------------------------------------------ +# Desktop background color +rootcolor = 0x201b14ff + +# Inactive window border color +bordercolor = 0x444444ff + +# Focused window border color +focuscolor = 0xc9b890ff + +# Color hint when a window is maximized +maximizescreencolor = 0x89aa61ff + +# Border color for windows requesting attention +urgentcolor = 0xad401fff + +# Border color for scratchpad windows +scratchpadcolor = 0x516c93ff + +# Border color for global windows +globalcolor = 0xb153a7ff + +# Border color for overlay windows +overlaycolor = 0x14a57cff + +# ------------------------------------------------------------------------------ +# Input Configuration (Keyboard, Mouse, Trackpad) +# ------------------------------------------------------------------------------ +# Keyboard + +# Keys per second when held down +repeat_rate = 25 + +# Delay before key repeat starts (ms) +repeat_delay = 600 + +# Enable NumLock on startup +numlockon = 0 + +# Keyboard layout +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=0 -disable_while_typing=1 -left_handed=0 -middle_button_emulation=0 -swipe_min_threshold=1 -# mouse -# need relogin to make it apply -mouse_natural_scrolling=0 +# Set to 1 to disable trackpad +disable_trackpad = 0 -# Appearance -gappih=5 -gappiv=5 -gappoh=10 -gappov=10 -scratchpad_width_ratio=0.8 -scratchpad_height_ratio=0.9 -borderpx=4 -rootcolor=0x201b14ff -bordercolor=0x444444ff -focuscolor=0xc9b890ff -maximizescreencolor=0x89aa61ff -urgentcolor=0xad401fff -scratchpadcolor=0x516c93ff -globalcolor=0xb153a7ff -overlaycolor=0x14a57cff +# Enable tapping to click +tap_to_click = 1 -# layout support: -# tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller -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 +# Tap and then immediately drag +tap_and_drag = 1 +# Keep dragging after finger lift +drag_lock = 1 + +# Reverse scroll direction +trackpad_natural_scrolling = 0 + +# Prevent accidental trackpad input +disable_while_typing = 1 + +# Swap left/right buttons +left_handed = 0 + +# Tap both buttons for middle click +middle_button_emulation = 0 + +# Minimum distance for swipe gestures +swipe_min_threshold = 1 + +# Mouse + +# Reverse scroll direction for mouse wheel +mouse_natural_scrolling = 0 + +# ------------------------------------------------------------------------------ +# Miscellaneous System Settings +# ------------------------------------------------------------------------------ +# Size of the screen corner "hot area" +hotarea_size = 10 + +# Enable triggers when mouse hits screen corners +enable_hotarea = 1 + +# Overview tab behavior mode +ov_tab_mode = 0 + +# Inner gaps in Overview mode +overviewgappi = 5 + +# Outer gaps in Overview mode +overviewgappo = 30 + +# (0 or 1) Enable xwayland persistence (needs a relogin to take effect) +xwayland_persistence = 1 + +# (0 or 1) Enable drm_syncobj (needs a relogin to take effect). Can improve game performance. +syncobj_enable = 0 + +# (0 or 1) Enable variable refresh rate(vrr). Can improve game performance. +adaptive_sync = 0 + +# (0 or 1) Allow shortcuts to be inhibited by clients +allow_shortcuts_inhibit = 1 + +# (0 or 1 or 2) Allow tearing. Can improve game performance. +allow_tearing = 0 + +# (0 or 1) Enable transparent lock screen +allow_lock_transparent = 0 + +# Detect the intervals of consecutive scroll for axisbind +axis_bind_apply_timeout = 100 + +# (0.1-10.0) Scroll factor for axis scroll speed +axis_scroll_factor = 1.0 + +# (0 or 1) Focus window when window send activate event (0-disable, 1-enable) +focus_on_activate = 1 + +# (0 or 1) Invisible clients can also trigger idle inhibit +idleinhibit_ignore_visible = 0 + +# (0 or 1) Focus follow mouse move +sloppyfocus = 1 + +# (0 or 1) Cursor warping when focus change +warpcursor = 1 + +# (0 or 1) Focus across monitors +focus_cross_monitor = 0 + +# (0 or 1) exchange two clients across monitors +exchange_cross_monitor = 0 + +# (0 or 1) all monitors have the same scratchpad +scratchpad_cross_monitor = 0 + +# (0 or 1) Focus across tags +focus_cross_tag = 0 + +# (0 or 1) View current tag will auto back to prev view tag +view_current_to_back = 1 + +# (0 or 1) Enable floating window snap +enable_floating_snap = 0 + +# (0 - 9999) The max distance to trigger floating window snap +snap_distance = 30 + +# (0 - 9999) Set cursor size +cursor_size = 24 + +# Set cursor theme +# cursor_theme = - + +# (0 or 1) Don't render border when the window is alone in the tag +no_border_when_single = 0 + +# (0 - 9999) Time spent idle until cursor hides +cursor_hide_timeout = 0 + +# (0 or 1) If the dragged window is a tiled window, it will retile when the drag ends +drag_tile_to_tile = 0 + +# only show one out of named scratchpads or the normal scratchpad +single_scratchpad = 1 + +# Confine `switch_layout` to a specific group of layouts +# circle_layout = - + +# ------------------------------------------------------------------------------ # Key Bindings -# key name refer to `xev` or `wev` command output, -# mod keys name: super,ctrl,alt,shift,none +# ------------------------------------------------------------------------------ +# Refer to `xev` or `wev` to find key names +# You can use `spawn_shell` in place of `spawn` to use more advanced shell commands with piping # reload config -bind=SUPER,r,reload_config +bind = Super, r, reload_config # menu and terminal -bind=Alt,space,spawn,rofi -show drun -bind=Alt,Return,spawn,foot +bind = Alt, space, spawn, rofi -show drun +bind = Alt, Return, spawn, foot # exit -bind=SUPER,m,quit -bind=ALT,q,killclient, +bind = Super+Shift+Ctrl, m, quit +bind = Alt, q, killclient # switch window focus -bind=SUPER,Tab,focusstack,next -bind=ALT,Left,focusdir,left -bind=ALT,Right,focusdir,right -bind=ALT,Up,focusdir,up -bind=ALT,Down,focusdir,down +bind = Super, Tab, focusstack, next +bind = Alt, Left, focusdir, left +bind = Alt, Right, focusdir, right +bind = Alt, Up, focusdir, up +bind = Alt, Down, focusdir, down # swap window -bind=SUPER+SHIFT,Up,exchange_client,up -bind=SUPER+SHIFT,Down,exchange_client,down -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, Left, exchange_client, left +bind = Super+Shift, Right, exchange_client, right # switch window status -bind=SUPER,g,toggleglobal, -bind=ALT,Tab,toggleoverview, -bind=ALT,backslash,togglefloating, -bind=ALT,a,togglemaximizescreen, -bind=ALT,f,togglefullscreen, -bind=ALT+SHIFT,f,togglefakefullscreen, -bind=SUPER,i,minimized, -bind=SUPER,o,toggleoverlay, -bind=SUPER+SHIFT,I,restore_minimized -bind=ALT,z,toggle_scratchpad +bind = Super, g, toggleglobal +bind = Alt, Tab, toggleoverview +bind = Alt, backslash, togglefloating +bind = Alt, a, togglemaximizescreen +bind = Alt, f, togglefullscreen +bind = Alt+Shift, f, togglefakefullscreen +bind = Super, i, minimized +bind = Super, o, toggleoverlay +bind = Super+Shift, i, restore_minimized +bind = Alt, z, toggle_scratchpad # scroller layout -bind=ALT,e,set_proportion,1.0 -bind=ALT,x,switch_proportion_preset, +bind = Alt, e, set_proportion, 1.0 +bind = Alt, x, switch_proportion_preset +bind = Alt+Ctrl+Shift, left, scroller_stack, left +bind = Alt+Ctrl+Shift, h, scroller_stack, left +bind = Alt+Ctrl+Shift, right, scroller_stack, right +bind = Alt+Ctrl+Shift, l, scroller_stack, right +bind = Alt+Ctrl+Shift, up, scroller_stack, up +bind = Alt+Ctrl+Shift, k, scroller_stack, up +bind = Alt+Ctrl+Shift, down, scroller_stack, down +bind = Alt+Ctrl+Shift, j, scroller_stack, down # switch layout -bind=SUPER,n,switch_layout +bind = Super, n, switch_layout # tag switch -bind=SUPER,Left,viewtoleft,0 -bind=CTRL,Left,viewtoleft_have_client,0 -bind=SUPER,Right,viewtoright,0 -bind=CTRL,Right,viewtoright_have_client,0 -bind=CTRL+SUPER,Left,tagtoleft,0 -bind=CTRL+SUPER,Right,tagtoright,0 +bind = Super, Left, viewtoleft, 0 +bind = Ctrl, Left, viewtoleft_have_client, 0 +bind = Super, Right, viewtoright, 0 +bind = Ctrl, Right, viewtoright_have_client, 0 +bind = Ctrl+Super, Left, tagtoleft, 0 +bind = Ctrl+Super, Right, tagtoright, 0 -bind=Ctrl,1,view,1,0 -bind=Ctrl,2,view,2,0 -bind=Ctrl,3,view,3,0 -bind=Ctrl,4,view,4,0 -bind=Ctrl,5,view,5,0 -bind=Ctrl,6,view,6,0 -bind=Ctrl,7,view,7,0 -bind=Ctrl,8,view,8,0 -bind=Ctrl,9,view,9,0 +bind = Ctrl, 1, view, 1, 0 +bind = Ctrl, 2, view, 2, 0 +bind = Ctrl, 3, view, 3, 0 +bind = Ctrl, 4, view, 4, 0 +bind = Ctrl, 5, view, 5, 0 +bind = Ctrl, 6, view, 6, 0 +bind = Ctrl, 7, view, 7, 0 +bind = Ctrl, 8, view, 8, 0 +bind = Ctrl, 9, view, 9, 0 # tag: move client to the tag and focus it # tagsilent: move client to the tag and not focus it -# bind=Alt,1,tagsilent,1 -bind=Alt,1,tag,1,0 -bind=Alt,2,tag,2,0 -bind=Alt,3,tag,3,0 -bind=Alt,4,tag,4,0 -bind=Alt,5,tag,5,0 -bind=Alt,6,tag,6,0 -bind=Alt,7,tag,7,0 -bind=Alt,8,tag,8,0 -bind=Alt,9,tag,9,0 +bind = Alt, 1, tag, 1, 0 +bind = Alt, 1, tag, 1, 0 +bind = Alt, 2, tag, 2, 0 +bind = Alt, 3, tag, 3, 0 +bind = Alt, 4, tag, 4, 0 +bind = Alt, 5, tag, 5, 0 +bind = Alt, 6, tag, 6, 0 +bind = Alt, 7, tag, 7, 0 +bind = Alt, 8, tag, 8, 0 +bind = Alt, 9, tag, 9, 0 # monitor switch -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 = Alt+Shift, Left, focusmon, left +bind = Alt+Shift, Right, focusmon, right +bind = Super+Alt, Left, tagmon, left +bind = Super+Alt, Right, tagmon, right # gaps -bind=ALT+SHIFT,X,incgaps,1 -bind=ALT+SHIFT,Z,incgaps,-1 -bind=ALT+SHIFT,R,togglegaps +bind = Alt+Shift, X, incgaps, 1 +bind = Alt+Shift, Z, incgaps, -1 +bind = Alt+Shift, R, togglegaps # movewin -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 +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 # resizewin -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 +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 -# Mouse Button Bindings -# NONE mode key only work in ov mode -mousebind=SUPER,btn_left,moveresize,curmove -mousebind=NONE,btn_middle,togglemaximizescreen,0 -mousebind=SUPER,btn_right,moveresize,curresize -mousebind=NONE,btn_left,toggleoverview,1 -mousebind=NONE,btn_right,killclient,0 +# Audio control +bind = none, XF86AudioRaiseVolume, spawn, wpctl set-volume @DEFAULT_SINK@ 5%+ +bind = none, XF86AudioLowerVolume, spawn, wpctl set-volume @DEFAULT_SINK@ 5%- +bind = none, XF86AudioMute, spawn, wpctl set-mute @DEFAULT_SINK@ toggle +bind = none, XF86AudioMicMute, spawn, wpctl set-mute @DEFAULT_SOURCE@ toggle -# Axis Bindings -axisbind=SUPER,UP,viewtoleft_have_client -axisbind=SUPER,DOWN,viewtoright_have_client +# `bind[flag]` can also be used in the following combinations: +# `bindl`: apply bind while screen is locked +# `binds`: use keysym instead of keycode for bind +# `bindr`: use bind on keyrelease instead of keypress +# `bindp`: pass key event to client +# Example: +# bindl = Super, l, quit -# layer rule -layerrule=animation_type_open:zoom,layer_name:rofi -layerrule=animation_type_close:zoom,layer_name:rofi +# Flags can also be combined: +# bindls = Super, s, quit + +# Binds can also use keycodes directly, such as `code:24`, etc. + +# ------------------------------------------------------------------------------ +# Mouse & Layer Rules +# ------------------------------------------------------------------------------ +mousebind = Super, btn_left, moveresize, curmove +mousebind = Super, btn_right, moveresize, curresize +mousebind = NONE, btn_middle, toggleoverview, 1 + +# You can also use axis bindings for the mouse wheel: +# axisbind = , , , +axisbind = Super, UP, viewtoleft_have_client +axisbind = Super, DOWN, viewtoright_have_client + +# Specialized animation rules for specific apps (e.g., Rofi) +# You can use `mmsg -e` to get the last open layer name +layerrule = animation_type_open:zoom, layer_name:rofi +layerrule = animation_type_close:zoom, layer_name:rofi + +# ------------------------------------------------------------------------------ +# Switch Bindings (For laptop lid open/close toggles) +# ------------------------------------------------------------------------------ +# To utilize switch bindings you need to disable `lidhandle` in /etc/systemd/logind.conf +# HandleLidSwitch = ignore +# HandleLidSwitchExternalPower = ignore +# HandleLidSwitchDocked = ignore + +# Format: switchbind = , , +# Examples: +# switchbind = fold, spawn, swaylock -f -c 000000 +# switchbind = unfold, spawn, wlr-dpms on + +# ------------------------------------------------------------------------------ +# Gesture Bindings (For laptop/touchpad gestures) +# ------------------------------------------------------------------------------ +# Format: gesturebind = , , , , + +# Examples: +# gesturebind = none, left, 3, focusdir, left +# gesturebind = none, right, 3, focusdir, right +# gesturebind = none, up, 3, focusdir, up +# gesturebind = none, down, 3, focusdir, down +# gesturebind = none, left, 4, viewtoleft_have_client +# gesturebind = none, right, 4, viewtoright_have_client +# gesturebind = none, up, 4, toggleoverview +# gesturebind = none, down, 4, toggleoverview + +# ------------------------------------------------------------------------------ +# Window Rules +# ------------------------------------------------------------------------------ +# https://github.com/DreamMaoMao/mangowc/wiki#window-rules +# All parameters can be set in one line +# If you set both `appid` and `title` the window will only follow the rules when they match each other +# Examples: +# windowrule = Parameter:Values, title:Values +# windowrule = Parameter:Values, Parameter:Values, appid:Values, title:Values +# windowrule = force_tearing:1, title:vkcube # Enable window tearing for specific application + +# ------------------------------------------------------------------------------ +# Keymodes Example +# ------------------------------------------------------------------------------ +# Keymodes allow you to enter a "state" where keys perform different actions. +# Useful for a "Resize Mode" or "Launcher Mode." +# Set the keymode before the bind, then the bind will apply to the keymode. +# If no keymode is explicitly set before a bind, then the default keymode is `keymode = default`. +# Binds under `keymode = common` will be usable in ALL keymodes. +# keymode = common +# bind = Super, r, reload_config # Bind works in all keymodes + +# keymode = default +# bind = Alt, Return, spawn, st +# bind = Super, f, setkeymode, test + +# keymode = test +# bind = Alt, Return, spawn, foot +# bind = Super, f, setkeymode, default + +# ------------------------------------------------------------------------------ +# MMSG IPC Examples +# ------------------------------------------------------------------------------ +# mangowc supports IPC via the `mmsg` command to control the compositor from +# external scripts or the terminal. +# Example Shell Commands: +# mmsg -g: get message from mango +# mmsg -d reload_config: hot reload the configuration file +# mmsg -d quit: exit mango to tty or login screen. +# For more information about mmsg visit: https://github.com/DreamMaoMao/mangowc/wiki/mango-ipc-(mmsg)