maomaowm/config.conf

360 lines
18 KiB
Text
Raw Normal View History

# MangoWC Configuration File
# For complete documentation see: https://github.com/DreamMaoMao/mango/wiki/
# This config supports hot-reload: press SUPER+r to apply changes without restarting
# ============================================================================
# WINDOW EFFECTS (requires scenefx library)
# ============================================================================
# Blur effects for windows and layers
blur=0 # Enable blur for windows (0=off, 1=on)
blur_layer=0 # Enable blur for layer surfaces (0=off, 1=on)
blur_optimized=1 # Use optimized blur algorithm (recommended)
# Blur parameters - fine-tune the blur appearance
blur_params_num_passes = 2 # Number of blur passes (more = smoother but slower)
blur_params_radius = 5 # Blur radius in pixels
blur_params_noise = 0.02 # Noise amount to prevent banding
blur_params_brightness = 0.9 # Brightness adjustment (0.0-1.0+)
blur_params_contrast = 0.9 # Contrast adjustment (0.0-1.0+)
blur_params_saturation = 1.2 # Color saturation (0.0-1.0+)
# Shadow effects for windows
shadows = 0 # Enable shadows (0=off, 1=on)
layer_shadows = 0 # Enable shadows for layer surfaces
shadow_only_floating = 1 # Only show shadows on floating windows
shadows_size = 10 # Shadow size in pixels
shadows_blur = 15 # Shadow blur amount
shadows_position_x = 0 # Shadow horizontal offset
shadows_position_y = 0 # Shadow vertical offset
shadowscolor=0x000000ff # Shadow color in RGBA hex format
# Window appearance
border_radius=6 # Corner radius in pixels (rounded corners)
no_radius_when_single=0 # Disable rounded corners for single window
focused_opacity=1.0 # Opacity of focused window (0.0-1.0)
unfocused_opacity=1.0 # Opacity of unfocused windows (0.0-1.0)
# ============================================================================
# ANIMATIONS - Smooth transitions for windows and tags
# ============================================================================
animations=1 # Enable window animations (0=off, 1=on)
layer_animations=1 # Enable animations for layer surfaces
# Animation types: "zoom" (scale) or "slide" (directional)
animation_type_open=slide # Window open animation type
animation_type_close=slide # Window close animation type
animation_fade_in=1 # Fade in windows when opening
animation_fade_out=1 # Fade out windows when closing
# Tag switching animation
tag_animation_direction=1 # Tag transition direction (1=horizontal, 0=vertical)
2025-02-20 12:41:22 +08:00
# Zoom animation parameters (when using animation_type=zoom)
zoom_initial_ratio=0.3 # Starting scale (0.0-1.0)
zoom_end_ratio=0.8 # Ending scale (0.0-1.0)
# Fade animation parameters
fadein_begin_opacity=0.5 # Starting opacity for fade in
fadeout_begin_opacity=0.8 # Starting opacity for fade out
# Animation durations in milliseconds
animation_duration_move=500 # Window move/resize duration
animation_duration_open=400 # Window open duration
animation_duration_tag=350 # Tag switch duration
animation_duration_close=800 # Window close duration
animation_duration_focus=0 # Focus change duration (0=instant)
# Animation curves (cubic-bezier: x1,y1,x2,y2)
# See: https://cubic-bezier.com for curve visualization
animation_curve_open=0.46,1.0,0.29,1 # Ease-out-cubic for opening
animation_curve_move=0.46,1.0,0.29,1 # Smooth movement curve
animation_curve_tag=0.46,1.0,0.29,1 # Tag transition curve
animation_curve_close=0.08,0.92,0,1 # Gentle close curve
animation_curve_focus=0.46,1.0,0.29,1 # Focus change curve
animation_curve_opafadeout=0.5,0.5,0.5,0.5 # Opacity fade out
animation_curve_opafadein=0.46,1.0,0.29,1 # Opacity fade in
2025-04-16 08:37:08 +08:00
# ============================================================================
# SCROLLER LAYOUT - Horizontal scrolling window layout
# ============================================================================
scroller_structs=20 # Maximum number of columns
scroller_default_proportion=0.8 # Default width ratio for new windows
scroller_focus_center=0 # Keep focused window centered (0=off, 1=on)
scroller_prefer_center=0 # Prefer centering when switching focus
edge_scroller_pointer_focus=1 # Focus window under pointer at edge
scroller_default_proportion_single=1.0 # Width ratio when only one window
scroller_proportion_preset=0.5,0.8,1.0 # Preset width ratios (cycle with ALT+x)
# ============================================================================
# MASTER-STACK LAYOUT - Traditional tiling layout (tile, center_tile, etc.)
# ============================================================================
new_is_master=1 # New windows become master (1) or go to stack (0)
default_mfact=0.55 # Master area size ratio (0.0-1.0)
default_nmaster=1 # Number of windows in master area
smartgaps=0 # Disable gaps when only one window (0=off, 1=on)
# ============================================================================
# OVERVIEW MODE - Hycov-like window overview (ALT+Tab)
# ============================================================================
hotarea_size=10 # Size of screen edges to trigger overview (pixels)
enable_hotarea=1 # Enable hotarea triggering (0=off, 1=on)
ov_tab_mode=0 # Tab mode: show windows as tabs (0=off, 1=on)
overviewgappi=5 # Inner gap between windows in overview
overviewgappo=30 # Outer gap from screen edges in overview
# ============================================================================
# MISCELLANEOUS SETTINGS
# ============================================================================
no_border_when_single=0 # Hide border when only one window
axis_bind_apply_timeout=100 # Scroll binding delay (milliseconds)
focus_on_activate=1 # Focus window when activated by app
idleinhibit_ignore_visible=0 # Ignore idle inhibit when window visible
sloppyfocus=1 # Focus follows mouse pointer
warpcursor=1 # Move cursor to focused window
focus_cross_monitor=0 # Allow focus to cross monitors
focus_cross_tag=0 # Allow focus to cross tags
enable_floating_snap=0 # Snap floating windows to edges
snap_distance=30 # Snap distance in pixels
cursor_size=24 # Cursor size in pixels
drag_tile_to_tile=1 # Allow dragging tiled windows to reorder
# ============================================================================
# KEYBOARD SETTINGS
# ============================================================================
repeat_rate=25 # Key repeat rate (characters per second)
repeat_delay=600 # Delay before repeat starts (milliseconds)
numlockon=0 # Enable numlock on startup (0=off, 1=on)
xkb_rules_layout=us # Keyboard layout (us, gb, de, fr, etc.)
# For multiple layouts use: "us,ru" (switch with SUPER+Space)
# ============================================================================
# TRACKPAD SETTINGS (requires logout/login to apply)
# ============================================================================
disable_trackpad=0 # Disable trackpad entirely (0=enabled, 1=disabled)
tap_to_click=1 # Tap to click (0=off, 1=on)
tap_and_drag=1 # Tap and drag to move windows/select text
drag_lock=1 # Continue drag after lifting finger
trackpad_natural_scrolling=0 # Natural/reverse scrolling direction
disable_while_typing=1 # Disable trackpad while typing
left_handed=0 # Swap left/right buttons
middle_button_emulation=0 # Two-finger tap = middle click
swipe_min_threshold=1 # Minimum swipe threshold (sensitivity)
# ============================================================================
# MOUSE SETTINGS (requires logout/login to apply)
# ============================================================================
mouse_natural_scrolling=0 # Natural/reverse scroll direction for mouse
2025-05-03 15:18:33 +08:00
# ============================================================================
# APPEARANCE - Colors, borders, and gaps
# ============================================================================
# Gaps between windows (in pixels)
gappih=5 # Inner horizontal gap (between windows)
gappiv=5 # Inner vertical gap (between windows)
gappoh=10 # Outer horizontal gap (from screen edges)
gappov=10 # Outer vertical gap (from screen edges)
# Scratchpad window dimensions
scratchpad_width_ratio=0.8 # Width as ratio of screen (0.0-1.0)
scratchpad_height_ratio=0.9 # Height as ratio of screen (0.0-1.0)
# Border appearance
borderpx=4 # Border width in pixels
# Colors in RGBA hex format (0xRRGGBBAA)
rootcolor=0x201b14ff # Background color
bordercolor=0x444444ff # Normal window border
focuscolor=0xc9b890ff # Focused window border
maximizescreencolor=0x89aa61ff # Maximized window border
urgentcolor=0xad401fff # Urgent window border (notifications, etc.)
scratchpadcolor=0x516c93ff # Scratchpad window border
globalcolor=0xb153a7ff # Global window border (visible on all tags)
overlaycolor=0x14a57cff # Overlay window border
# ============================================================================
# TAG RULES - Assign default layouts to tags
# ============================================================================
# Available layouts: tile, scroller, grid, deck, monocle, center_tile,
# vertical_tile, vertical_scroller, vertical_grid
tagrule=id:1,layout_name:tile # Tag 1 uses tile layout
tagrule=id:2,layout_name:tile # Tag 2 uses tile layout
tagrule=id:3,layout_name:tile # Tag 3 uses tile layout
tagrule=id:4,layout_name:tile # Tag 4 uses tile layout
tagrule=id:5,layout_name:tile # Tag 5 uses tile layout
tagrule=id:6,layout_name:tile # Tag 6 uses tile layout
tagrule=id:7,layout_name:tile # Tag 7 uses tile layout
tagrule=id:8,layout_name:tile # Tag 8 uses tile layout
tagrule=id:9,layout_name:tile # Tag 9 uses tile layout
# ============================================================================
# KEY BINDINGS
# ============================================================================
#
# Syntax: bind=MODIFIERS,KEY,COMMAND,ARGS...
#
# Modifier keys: SUPER (Windows/Command key), CTRL, ALT, SHIFT, NONE
# - Combine modifiers with +: SUPER+SHIFT, CTRL+ALT, etc.
# - Find key names with: wev (Wayland) or xev (X11)
#
# Common commands:
# - spawn: Run a program
# - killclient: Close focused window
# - view: Switch to a tag
# - tag: Move window to a tag
# - focusdir: Focus window in direction (left/right/up/down)
# - togglefloating: Toggle floating/tiling mode
# - togglefullscreen: Toggle fullscreen
# - reload_config: Reload this config file (hot-reload)
#
# See COMMANDS.md for a complete command reference
# ============================================================================
# Config and system
bind=SUPER,r,reload_config # Reload config without restarting
# Applications
bind=Alt,space,spawn,rofi -show drun # Application launcher
bind=Alt,Return,spawn,foot # Terminal emulator
# Window manager control
bind=SUPER,m,quit # Exit mangowc
bind=ALT,q,killclient, # Close focused window
# Window focus
bind=SUPER,Tab,focusstack,next # Cycle to next window
bind=ALT,Left,focusdir,left # Focus window to the left
bind=ALT,Right,focusdir,right # Focus window to the right
bind=ALT,Up,focusdir,up # Focus window above
bind=ALT,Down,focusdir,down # Focus window below
# Window movement (swap positions with other windows)
bind=SUPER+SHIFT,Up,exchange_client,up # Swap with window above
bind=SUPER+SHIFT,Down,exchange_client,down # Swap with window below
bind=SUPER+SHIFT,Left,exchange_client,left # Swap with window on left
bind=SUPER+SHIFT,Right,exchange_client,right # Swap with window on right
# Window state toggles
bind=SUPER,g,toggleglobal, # Toggle global (visible on all tags)
bind=ALT,Tab,toggleoverview, # Toggle overview mode
bind=ALT,backslash,togglefloating, # Toggle floating/tiling
bind=ALT,a,togglemaximizescreen, # Toggle maximize
bind=ALT,f,togglefullscreen, # Toggle fullscreen
bind=ALT+SHIFT,f,togglefakefullscreen, # Toggle fake fullscreen
bind=SUPER,i,minimized, # Minimize window
bind=SUPER,o,toggleoverlay, # Toggle overlay state
bind=SUPER+SHIFT,I,restore_minimized # Restore last minimized
bind=ALT,z,toggle_scratchpad # Toggle scratchpad
# Scroller layout controls (when using scroller layout)
bind=ALT,e,set_proportion,1.0 # Set window to full width
bind=ALT,x,switch_proportion_preset, # Cycle through width presets
# Layout management
bind=SUPER,n,switch_layout # Cycle through available layouts
# Tag navigation (tags are like workspaces, but more flexible)
bind=SUPER,Left,viewtoleft,0 # Switch to previous tag
bind=CTRL,Left,viewtoleft_have_client,0 # Previous tag with windows
bind=SUPER,Right,viewtoright,0 # Switch to next tag
bind=CTRL,Right,viewtoright_have_client,0 # Next tag with windows
bind=CTRL+SUPER,Left,tagtoleft,0 # Move window to previous tag
bind=CTRL+SUPER,Right,tagtoright,0 # Move window to next tag
# Direct tag switching (view specific tags)
bind=Ctrl,1,view,1,0 # Switch to tag 1
bind=Ctrl,2,view,2,0 # Switch to tag 2
bind=Ctrl,3,view,3,0 # Switch to tag 3
bind=Ctrl,4,view,4,0 # Switch to tag 4
bind=Ctrl,5,view,5,0 # Switch to tag 5
bind=Ctrl,6,view,6,0 # Switch to tag 6
bind=Ctrl,7,view,7,0 # Switch to tag 7
bind=Ctrl,8,view,8,0 # Switch to tag 8
bind=Ctrl,9,view,9,0 # Switch to tag 9
# Move focused window to specific tags
# tag: move window and switch to that tag
# tagsilent: move window but stay on current tag
bind=Alt,1,tag,1,0 # Move window to tag 1 and follow
bind=Alt,2,tag,2,0 # Move window to tag 2 and follow
bind=Alt,3,tag,3,0 # Move window to tag 3 and follow
bind=Alt,4,tag,4,0 # Move window to tag 4 and follow
bind=Alt,5,tag,5,0 # Move window to tag 5 and follow
bind=Alt,6,tag,6,0 # Move window to tag 6 and follow
bind=Alt,7,tag,7,0 # Move window to tag 7 and follow
bind=Alt,8,tag,8,0 # Move window to tag 8 and follow
bind=Alt,9,tag,9,0 # Move window to tag 9 and follow
# Example silent mode: bind=Alt,1,tagsilent,1
# Monitor (multi-display) controls
bind=alt+shift,Left,focusmon,left # Focus monitor to the left
bind=alt+shift,Right,focusmon,right # Focus monitor to the right
bind=SUPER+Alt,Left,tagmon,left # Move window to left monitor
bind=SUPER+Alt,Right,tagmon,right # Move window to right monitor
# Gap controls (spacing between windows)
bind=ALT+SHIFT,X,incgaps,1 # Increase all gaps
bind=ALT+SHIFT,Z,incgaps,-1 # Decrease all gaps
bind=ALT+SHIFT,R,togglegaps # Toggle gaps on/off
# Floating window position adjustment (pixel-based movement)
bind=CTRL+SHIFT,Up,movewin,+0,-50 # Move up 50 pixels
bind=CTRL+SHIFT,Down,movewin,+0,+50 # Move down 50 pixels
bind=CTRL+SHIFT,Left,movewin,-50,+0 # Move left 50 pixels
bind=CTRL+SHIFT,Right,movewin,+50,+0 # Move right 50 pixels
# Floating window size adjustment (pixel-based resizing)
bind=CTRL+ALT,Up,resizewin,+0,-50 # Shrink height by 50 pixels
bind=CTRL+ALT,Down,resizewin,+0,+50 # Grow height by 50 pixels
bind=CTRL+ALT,Left,resizewin,-50,+0 # Shrink width by 50 pixels
bind=CTRL+ALT,Right,resizewin,+50,+0 # Grow width by 50 pixels
# ============================================================================
# MOUSE BUTTON BINDINGS
# ============================================================================
#
# Syntax: mousebind=MODIFIERS,BUTTON,COMMAND,ARGS
# Buttons: btn_left, btn_right, btn_middle
# Note: btn_left and btn_right require a modifier (can't use NONE)
# ============================================================================
mousebind=SUPER,btn_left,moveresize,curmove # Drag to move floating window
mousebind=NONE,btn_middle,togglemaximizescreen,0 # Middle click to maximize
mousebind=SUPER,btn_right,moveresize,curresize # Drag to resize floating window
# ============================================================================
# AXIS BINDINGS (Mouse wheel / Trackpad scrolling)
# ============================================================================
#
# Syntax: axisbind=MODIFIERS,DIRECTION,COMMAND,ARGS
# Directions: UP, DOWN, LEFT, RIGHT
# These bindings are triggered by scrolling gestures
# ============================================================================
axisbind=SUPER,UP,viewtoleft_have_client # Scroll up to switch tags
axisbind=SUPER,DOWN,viewtoright_have_client # Scroll down to switch tags
# ============================================================================
# LAYER RULES - Per-application animation overrides
# ============================================================================
#
# Syntax: layerrule=PROPERTY:VALUE,layer_name:APP_NAME
# Properties: animation_type_open, animation_type_close
# Values: zoom, slide
#
# Use this to customize animations for specific applications
# ============================================================================
layerrule=animation_type_open:zoom,layer_name:rofi # Rofi uses zoom animation
layerrule=animation_type_close:zoom,layer_name:rofi # Rofi closes with zoom