Merge pull request #3 from squassina/copilot/update-documentation-for-mangowc

Comprehensive documentation overhaul for new user onboarding
This commit is contained in:
Ricardo Squassina Lee 2026-02-18 06:12:29 -03:00 committed by GitHub
commit 2d42571423
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 2555 additions and 242 deletions

1038
COMMANDS.md Normal file

File diff suppressed because it is too large Load diff

473
README.md
View file

@ -27,20 +27,348 @@ This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
https://github.com/user-attachments/assets/bb83004a-0563-4b48-ad89-6461a9b78b1f https://github.com/user-attachments/assets/bb83004a-0563-4b48-ad89-6461a9b78b1f
# Quick Start Guide
## What is MangoWC?
MangoWC is a **Wayland compositor** - a program that manages windows and displays on modern Linux systems using the Wayland protocol. If you're familiar with window managers like i3, dwm, or awesome, MangoWC provides similar tiling window management functionality but for Wayland instead of X11.
## First Steps After Installation
1. **Copy the default configuration:**
```bash
mkdir -p ~/.config/mango
cp /usr/share/mango/config.conf ~/.config/mango/config.conf
```
2. **Launch MangoWC:**
- From a display manager: Select "Mango" session
- From TTY: Run `mango`
3. **Essential first keybindings to know:**
- `Alt + Return` - Open terminal (foot)
- `Alt + Space` - Open application launcher (rofi)
- `Alt + Q` - Close focused window
- `Super + M` - Exit MangoWC
- `Super + R` - Reload configuration (after making changes)
4. **Create an autostart script** (optional):
```bash
# Create ~/.config/mango/autostart.sh
#!/bin/bash
# Set wallpaper
swaybg -i ~/Pictures/wallpaper.jpg &
# Start status bar
waybar &
# Start notification daemon
swaync &
```
Make it executable: `chmod +x ~/.config/mango/autostart.sh`
## Key Concepts
### Tags vs Workspaces
Unlike traditional workspaces, **tags** are more flexible:
- **Workspaces**: A window belongs to one workspace. Switching workspaces shows a different set of windows.
- **Tags**: A window can have multiple tags. You can view multiple tags at once or filter to specific tags.
Think of tags as labels you can attach to windows. You can view windows with tag 1, or tag 2, or both tags 1 and 2 simultaneously.
**Default behavior:**
- `Ctrl + 1-9` - View tag 1-9
- `Alt + 1-9` - Move current window to tag 1-9
- Each tag can have its own layout (tile, scroller, grid, etc.)
### Window Layouts
MangoWC supports 9 different layouts:
| Layout | Description | Best For |
|--------|-------------|----------|
| **tile** | Master-stack tiling (left master, right stack) | General multitasking |
| **scroller** | Horizontal scrolling columns | Wide content, terminals |
| **monocle** | One window fullscreen at a time | Focus, presentations |
| **grid** | Windows arranged in grid | Many small windows |
| **deck** | Stack of windows, one visible | Cycling through tasks |
| **center_tile** | Master centered, stack on sides | Symmetrical layout |
| **vertical_tile** | Master top, stack bottom | Wide monitors |
| **vertical_scroller** | Vertical scrolling rows | Document review |
| **vertical_grid** | Vertical grid arrangement | Vertical content |
**Switch layouts:**
- `Super + N` - Cycle through layouts for current tag
- Each tag can have its own default layout (set in `config.conf`)
### Scratchpad
The **scratchpad** is a hidden workspace for temporary windows:
- `Alt + Z` - Toggle scratchpad (hide/show)
- Windows in scratchpad are hidden but not closed
- Perfect for calculator, music player, notes, etc.
- Scratchpad windows float centered on screen
**Usage example:**
1. Open a terminal (`Alt + Return`)
2. Move it to scratchpad (`Alt + Z`)
3. It disappears
4. Press `Alt + Z` again - it appears over your current work
5. Press `Alt + Z` again - it hides again
### Overview Mode
**Overview** mode shows all windows at once (like Alt+Tab visualization):
- `Alt + Tab` - Toggle overview mode
- See all windows across all tags
- Click a window to focus it
- Move windows in overview
- Hotarea: Move mouse to top edge of screen to trigger overview
### Window States
Windows can have multiple states:
- **Floating**: Window floats above tiled windows, can be moved/resized freely
- `Alt + \` - Toggle floating
- `Super + Left-drag` - Move floating window
- `Super + Right-drag` - Resize floating window
- **Fullscreen**: Window covers entire screen, hides all others
- `Alt + F` - Toggle fullscreen
- `Alt + Shift + F` - Toggle fake fullscreen (fullscreen but stays in layout)
- **Maximized**: Window fills screen but shows borders/gaps
- `Alt + A` - Toggle maximize
- **Minimized**: Window hidden but not in scratchpad
- `Super + I` - Minimize current window
- `Super + Shift + I` - Restore last minimized window
- **Global**: Window visible on all tags
- `Super + G` - Toggle global state
- **Overlay**: Window stays on top of others
- `Super + O` - Toggle overlay state
## Day-to-Day Usage
### Typical Workflow
1. **Open applications:**
```
Alt + Space → Application launcher
Alt + Return → Terminal
```
2. **Navigate windows:**
```
Alt + Arrow Keys → Focus window in direction
Super + Tab → Focus next window in stack
```
3. **Organize windows:**
```
Super + Shift + Arrows → Swap window positions
Alt + \ → Toggle floating
Alt + 1-9 → Move to specific tag
```
4. **Adjust layout:**
```
Super + N → Change layout
Alt + Shift + X/Z → Increase/decrease gaps
```
5. **Multi-monitor:**
```
Alt + Shift + Left/Right → Focus other monitor
Super + Alt + Left/Right → Move window to other monitor
```
### Common Use Cases
**Web browsing + Terminal:**
- Open browser on tag 1, terminal on tag 2
- Use `Ctrl + 1` and `Ctrl + 2` to switch between them
**Development workflow:**
- Tag 1: Code editor (center_tile layout)
- Tag 2: Browser (monocle layout)
- Tag 3: Terminals (tile or scroller layout)
- Scratchpad: Calculator, notes
**Keeping a window visible everywhere:**
- Open music player or chat app
- Press `Super + G` to make it global
- It now appears on all tags
## IPC Control with mmsg
MangoWC includes `mmsg` - a command-line tool to control the compositor:
### Get Information
```bash
# Get current tag info
mmsg -t
# Get layout information
mmsg -L
# Get output (monitor) information
mmsg -o
# Watch for changes (real-time updates)
mmsg -w -t # Watch tags
```
### Send Commands
```bash
# Switch to tag 3
mmsg -d view 3
# Move window to tag 5
mmsg -d tag 5
# Change layout
mmsg -d setlayout tile
# Reload configuration
mmsg -d reload_config
# Spawn application
mmsg -d spawn firefox
```
### Scripting Examples
**Auto-save workspace state:**
```bash
#!/bin/bash
# Save current tags to file
mmsg -t > ~/mango-state.txt
```
**Tag-specific wallpapers:**
```bash
#!/bin/bash
# In a loop, change wallpaper based on active tag
while true; do
TAG=$(mmsg -t | grep "seltag" | cut -d: -f2)
swaybg -i ~/wallpapers/tag${TAG}.jpg &
sleep 1
done
```
**Quick window layout toggle:**
```bash
#!/bin/bash
# Toggle between tile and monocle layouts
CURRENT=$(mmsg -L | grep "layout_name:" | head -1)
if [[ $CURRENT == *"tile"* ]]; then
mmsg -d setlayout monocle
else
mmsg -d setlayout tile
fi
```
## Troubleshooting
### MangoWC won't start
1. **Check dependencies:**
```bash
# Verify wlroots and scenefx are installed
pkg-config --modversion wlroots scenefx
```
2. **Check logs:**
```bash
# Run from terminal to see error messages
mango
```
3. **XWayland issues:**
```bash
# If X11 apps won't start, rebuild with XWayland
meson configure build -Dxwayland=enabled
ninja -C build install
```
### Config changes not applying
- Run `Super + R` to reload config
- Some settings (trackpad, mouse) require logout/login
- Check config syntax: `mango --validate-config` (if available)
### Keybindings not working
1. **Find correct key name:**
```bash
# Install wev to see key names
wev
# Press keys and see their names
```
2. **Check for conflicts:**
- Look for duplicate bindings in `config.conf`
- Some apps capture keys (browsers, terminals)
### Applications not starting
1. **Missing required tools:**
```bash
# Install suggested applications
sudo pacman -S rofi foot waybar swaybg
```
2. **Check autostart script:**
```bash
# Test autostart manually
bash ~/.config/mango/autostart.sh
```
### Performance issues
1. **Disable effects:**
```conf
# In config.conf
animations=0
blur=0
shadows=0
```
2. **Check GPU drivers:**
```bash
# Ensure proper graphics drivers are installed
glxinfo | grep "OpenGL"
```
### Screen sharing not working
Install portal packages:
```bash
sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr
```
## Getting Help
- **Discord**: [MangoWC Community](https://discord.gg/CPjbDxesh5)
- **Wiki**: [Full documentation](https://github.com/DreamMaoMao/mango/wiki/)
- **Website**: [mangowc.vercel.app/docs](https://mangowc.vercel.app/docs)
- **Issues**: [GitHub Issues](https://github.com/DreamMaoMao/mangowc/issues)
# Our discord # Our discord
[mangowc](https://discord.gg/CPjbDxesh5) [mangowc](https://discord.gg/CPjbDxesh5)
# Supported layouts ---
- tile
- scroller
- monocle
- grid
- deck
- center_tile
- vertical_tile
- vertical_grid
- vertical_scroller
# Installation # Installation
@ -162,13 +490,82 @@ sudo ninja -C build install
- Gamma control/night light (wlsunset, gammastep) - Gamma control/night light (wlsunset, gammastep)
- Miscellaneous (xfce-polkit, wlogout) - Miscellaneous (xfce-polkit, wlogout)
## Some Common Default Keybindings ## Default Keybindings Reference
- alt+return: open foot terminal > **Note**: All keybindings can be customized in `~/.config/mango/config.conf`
- alt+space: open rofi launcher
- alt+q: kill client ### Essential Shortcuts
- alt+left/right/up/down: focus direction
- super+m: quit mango | Keybinding | Action | Description |
|------------|--------|-------------|
| `Alt + Return` | Open terminal | Launches foot terminal emulator |
| `Alt + Space` | Open launcher | Launches rofi application launcher |
| `Alt + Q` | Close window | Kill focused window |
| `Super + M` | Exit | Quit MangoWC |
| `Super + R` | Reload config | Apply config changes without restart |
### Window Management
| Keybinding | Action |
|------------|--------|
| `Alt + ←/→/↑/↓` | Focus window in direction |
| `Super + Tab` | Focus next window |
| `Super + Shift + ←/→/↑/↓` | Swap window with neighbor |
| `Alt + \` | Toggle floating/tiling |
| `Alt + F` | Toggle fullscreen |
| `Alt + Shift + F` | Toggle fake fullscreen |
| `Alt + A` | Toggle maximize |
| `Super + I` | Minimize window |
| `Super + Shift + I` | Restore minimized window |
| `Super + G` | Toggle global (visible all tags) |
| `Super + O` | Toggle overlay (always on top) |
### Tag (Workspace) Management
| Keybinding | Action |
|------------|--------|
| `Ctrl + 1-9` | Switch to tag 1-9 |
| `Alt + 1-9` | Move window to tag 1-9 (and follow) |
| `Super + ←/→` | Previous/next tag |
| `Ctrl + ←/→` | Previous/next tag with windows |
| `Ctrl + Super + ←/→` | Move window to previous/next tag |
### Layout Control
| Keybinding | Action |
|------------|--------|
| `Super + N` | Cycle through layouts |
| `Alt + E` | Set window to full width (scroller) |
| `Alt + X` | Cycle width presets (scroller) |
| `Alt + Shift + X/Z` | Increase/decrease gaps |
| `Alt + Shift + R` | Toggle gaps on/off |
### Special Features
| Keybinding | Action |
|------------|--------|
| `Alt + Tab` | Toggle overview mode |
| `Alt + Z` | Toggle scratchpad |
| `Super + Scroll Up/Down` | Switch tags with scroll wheel |
### Multi-Monitor
| Keybinding | Action |
|------------|--------|
| `Alt + Shift + ←/→` | Focus adjacent monitor |
| `Super + Alt + ←/→` | Move window to adjacent monitor |
### Floating Window Adjustment
| Keybinding | Action |
|------------|--------|
| `Ctrl + Shift + ←/→/↑/↓` | Move floating window by pixels |
| `Ctrl + Alt + ←/→/↑/↓` | Resize floating window by pixels |
| `Super + Left-drag` | Move floating window with mouse |
| `Super + Right-drag` | Resize floating window with mouse |
| `Middle-click` | Maximize window |
> **Tip**: Press `Super + R` after editing your config to reload without restarting!
## My Dotfiles ## My Dotfiles
@ -197,11 +594,47 @@ git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
``` ```
## Config Documentation ## Documentation
Refer to the repo wiki [wiki](https://github.com/DreamMaoMao/mango/wiki/) MangoWC comes with comprehensive documentation to help you get started and master the compositor:
or the website docs [docs](https://mangowc.vercel.app/docs) ### 📚 Documentation Files
- **[USAGE.md](USAGE.md)** - Practical guide for day-to-day usage
- Common workflows and usage patterns
- Layout explanations with diagrams
- Scratchpad and overview mode guides
- Multi-monitor workflows
- Customization tips and examples
- **[COMMANDS.md](COMMANDS.md)** - Complete command reference
- All available commands with descriptions
- Parameter documentation
- Keybinding examples
- IPC/mmsg usage and scripting examples
- **[config.conf](config.conf)** - Annotated configuration file
- All settings explained with inline comments
- Example configurations
- Default keybindings
### 🌐 Online Resources
- **[Wiki](https://github.com/DreamMaoMao/mango/wiki/)** - Comprehensive online documentation
- **[Website](https://mangowc.vercel.app/docs)** - Web-based documentation
- **[Discord](https://discord.gg/CPjbDxesh5)** - Community support and discussions
### 📖 Quick Links by Topic
- **Getting Started:** See [Quick Start Guide](#quick-start-guide) above
- **Understanding Concepts:** [Key Concepts](#key-concepts) section above
- **Daily Usage:** [USAGE.md](USAGE.md) for workflows and patterns
- **Command Reference:** [COMMANDS.md](COMMANDS.md) for all commands
- **Configuration:** [config.conf](config.conf) with inline documentation
- **Troubleshooting:** [Troubleshooting](#troubleshooting) section above
- **IPC/Scripting:** [IPC Control with mmsg](#ipc-control-with-mmsg) section above
---
# NixOS + Home-manager # NixOS + Home-manager

739
USAGE.md Normal file
View file

@ -0,0 +1,739 @@
# MangoWC Usage Guide
A practical guide to using MangoWC in your daily workflow.
## Table of Contents
- [Getting Started](#getting-started)
- [Understanding Tags](#understanding-tags)
- [Working with Layouts](#working-with-layouts)
- [Window Management Patterns](#window-management-patterns)
- [Using the Scratchpad](#using-the-scratchpad)
- [Overview Mode](#overview-mode)
- [Multi-Monitor Workflows](#multi-monitor-workflows)
- [Customization Tips](#customization-tips)
- [Common Workflows](#common-workflows)
---
## Getting Started
### Your First Session
1. **Launch MangoWC** from your display manager or run `mango` from TTY
2. **Open a terminal:** Press `Alt + Return`
3. **Open an application:** Press `Alt + Space` for the launcher
4. **Navigate windows:** Use `Alt + Arrow Keys`
5. **Close a window:** Press `Alt + Q`
### Essential First-Day Shortcuts
These are the absolute minimum you need to be productive:
```
Alt + Return → Terminal
Alt + Space → App launcher
Alt + Q → Close window
Alt + Arrow Keys → Focus different window
Ctrl + 1-9 → Switch tags (workspaces)
Alt + \ → Toggle floating
Super + R → Reload config
Super + M → Exit MangoWC
```
---
## Understanding Tags
### What Are Tags?
Tags are like workspaces, but more flexible. Think of them as labels you can apply to windows.
**Key differences from workspaces:**
- A window can have multiple tags
- You can view multiple tags at once
- Each tag can have its own layout
### Basic Tag Usage
**Switch to a tag:**
```
Ctrl + 1 → View tag 1
Ctrl + 2 → View tag 2
... and so on
```
**Move window to a tag:**
```
Alt + 1 → Move current window to tag 1 (and switch to it)
Alt + 2 → Move current window to tag 2 (and switch to it)
```
**Navigate through tags:**
```
Super + Left/Right → Previous/next tag
Ctrl + Left/Right → Previous/next tag that has windows
```
### Advanced Tag Techniques
**View multiple tags simultaneously:**
1. Switch to tag 1: `Ctrl + 1`
2. Toggle tag 2 visibility: `Super + 2` (if configured)
3. Now you see windows from both tags
**Silent tag movement** (move window without following):
```conf
# In config.conf
bind=Alt+Shift,1,tagsilent,1
```
### Organizing Your Workflow with Tags
**Example organization:**
```
Tag 1: Browsers (monocle layout)
Tag 2: Code editors (tile or center_tile layout)
Tag 3: Terminals (scroller layout)
Tag 4: Communication (grid layout)
Tag 5: Media (monocle layout)
Tag 6-9: Project-specific
```
**Setting layouts per tag in config.conf:**
```conf
tagrule=id:1,layout_name:monocle
tagrule=id:2,layout_name:center_tile
tagrule=id:3,layout_name:scroller
tagrule=id:4,layout_name:grid
tagrule=id:5,layout_name:monocle
```
---
## Working with Layouts
### Available Layouts
MangoWC includes 9 built-in layouts:
#### 1. Tile (Master-Stack)
```
┌────────┬────┐
│ │ 1 │
│ Master ├────┤
│ │ 2 │
└────────┴────┘
```
**Best for:** General multitasking, coding with docs
**Switch to:** `Super + T` or cycle with `Super + N`
#### 2. Scroller (Horizontal)
```
┌───┬────┬───┬───┐
│ 1 │ 2 │ 3 │ 4 │...
└───┴────┴───┴───┘
```
**Best for:** Terminals, wide content, many windows
**Switch to:** `Super + S` or cycle with `Super + N`
**Scroller-specific controls:**
- `Alt + E` - Set current window to full width
- `Alt + X` - Cycle through width presets (0.5, 0.8, 1.0)
#### 3. Monocle (Fullscreen Stack)
```
┌──────────────┐
│ │
│ Window 1 │
│ (fullscrn) │
└──────────────┘
```
**Best for:** Focus work, browsing, media
**Switch to:** `Super + M` or cycle with `Super + N`
**Navigate:** Use `Super + Tab` to cycle through windows
#### 4. Grid
```
┌─────┬─────┐
│ 1 │ 2 │
├─────┼─────┤
│ 3 │ 4 │
└─────┴─────┘
```
**Best for:** Viewing many windows simultaneously
**Switch to:** Cycle with `Super + N`
#### 5. Deck (Card Stack)
```
┌──────────────┐
│ Window 1 │ ← Visible
│ (2, 3 hidden)│
└──────────────┘
```
**Best for:** Cycling through options
**Switch to:** Cycle with `Super + N`
#### 6. Center Tile
```
┌──┬──────┬──┐
│1 │ │2 │
│ │Master│ │
│3 │ │4 │
└──┴──────┴──┘
```
**Best for:** Symmetrical workflow, coding
**Switch to:** Cycle with `Super + N`
#### 7. Vertical Tile
```
┌──────────────┐
│ Master │
├──┬───┬───┬───┤
│1 │ 2 │ 3 │ 4 │
└──┴───┴───┴───┘
```
**Best for:** Ultra-wide monitors
**Switch to:** Cycle with `Super + N`
### Layout Controls
**Cycle through all layouts:**
```
Super + N → Next layout
```
**Adjust layout parameters:**
For **tile/center_tile** layouts:
```
Super + H → Decrease master size (add to config)
Super + L → Increase master size (add to config)
Super + I → More windows in master (add to config)
Super + D → Fewer windows in master (add to config)
```
Add to config.conf:
```conf
bind=Super,h,setmfact,-0.05
bind=Super,l,setmfact,+0.05
bind=Super,i,incnmaster,+1
bind=Super,d,incnmaster,-1
```
For **scroller** layout:
```
Alt + E → Set window to full width
Alt + X → Cycle width presets
```
---
## Window Management Patterns
### Focus Management
**Directional focus:**
```
Alt + ←→↑↓ → Focus window in direction
```
**Stack focus:**
```
Super + Tab → Next window in stack
Super + Shift + Tab → Previous window in stack
```
**Focus last window:**
```
Super + ` → Focus previously focused window (add to config)
```
### Moving Windows
**Swap with neighbors:**
```
Super + Shift + ←→↑↓ → Swap positions
```
**Move to master:**
```
Super + Return → Move focused window to master position (add to config)
```
Add to config:
```conf
bind=Super,Return,zoom,
```
**Move between tags:**
```
Alt + 1-9 → Move to tag (and follow)
Ctrl + Super + ←→ → Move to prev/next tag
```
### Floating Windows
**Toggle floating:**
```
Alt + \ → Toggle floating/tiling
```
**Move floating windows:**
```
Ctrl + Shift + ←→↑↓ → Move by pixels
Super + Left-drag → Move with mouse
```
**Resize floating windows:**
```
Ctrl + Alt + ←→↑↓ → Resize by pixels
Super + Right-drag → Resize with mouse
```
**Center floating window:**
```
Super + C → Center window (add to config)
```
Add to config:
```conf
bind=Super,c,centerwin,
```
### Window States
**Common states:**
```
Alt + \ → Floating
Alt + F → Fullscreen
Alt + Shift + F → Fake fullscreen
Alt + A → Maximized
Super + G → Global (visible all tags)
Super + O → Overlay (always on top)
```
**Minimize/Restore:**
```
Super + I → Minimize window
Super + Shift + I → Restore minimized
```
---
## Using the Scratchpad
### What is the Scratchpad?
The scratchpad is a hidden workspace for temporary windows. It's perfect for:
- Calculator
- Music player
- Notes/Todo list
- System monitor
- Password manager
### Basic Scratchpad Usage
1. **Open an application** (e.g., terminal with calculator)
```bash
Alt + Return
# Then run: qalc (or any calculator)
```
2. **Move to scratchpad**
```
Alt + Z
```
3. **Window disappears** - it's now in the scratchpad
4. **Toggle scratchpad** to show/hide
```
Alt + Z → Shows scratchpad over current work
Alt + Z → Hides it again
```
### Named Scratchpads
You can have multiple named scratchpads:
**Setup in config.conf:**
```conf
bind=Super,p,toggle_named_scratchpad,music
bind=Super,n,toggle_named_scratchpad,notes
bind=Super,c,toggle_named_scratchpad,calc
```
**Usage:**
1. Open application (e.g., spotify)
2. Press `Super + P` - assigns it to "music" scratchpad
3. Press `Super + P` again - shows/hides music scratchpad
4. Other scratchpads are independent
### Scratchpad Tips
**Automatic scratchpad applications:**
Create a script to launch apps directly into scratchpad:
```bash
#!/bin/bash
# ~/.config/mango/scripts/scratchpad-calc.sh
# Open calculator in scratchpad
foot -e qalc &
sleep 0.5
mmsg -d toggle_scratchpad
```
Bind it:
```conf
bind=Super,equal,spawn_shell,~/.config/mango/scripts/scratchpad-calc.sh
```
**Customize scratchpad appearance:**
In config.conf:
```conf
scratchpad_width_ratio=0.8 # 80% of screen width
scratchpad_height_ratio=0.9 # 90% of screen height
scratchpadcolor=0x516c93ff # Border color for scratchpad windows
```
---
## Overview Mode
### What is Overview?
Overview mode shows all windows at once, similar to GNOME's Activities or macOS Mission Control.
### Using Overview
**Toggle overview:**
```
Alt + Tab → Toggle overview mode
```
**In overview mode:**
- Click any window to focus it
- Drag windows to rearrange
- Windows are organized visually
- All tags are shown
**Hotarea trigger:**
Move your mouse cursor to the top edge of the screen to automatically trigger overview.
**Configure hotarea:**
```conf
# In config.conf
hotarea_size=10 # Pixels from edge to trigger
enable_hotarea=1 # 1=enabled, 0=disabled
```
### Overview Settings
```conf
# In config.conf
ov_tab_mode=0 # Show windows as tabs (0=off, 1=on)
overviewgappi=5 # Gap between windows in overview
overviewgappo=30 # Gap from screen edges
```
---
## Multi-Monitor Workflows
### Basic Multi-Monitor Commands
**Focus different monitor:**
```
Alt + Shift + ←→ → Focus adjacent monitor
```
**Move window to other monitor:**
```
Super + Alt + ←→ → Move window to adjacent monitor
```
### Multi-Monitor Strategies
**Strategy 1: Dedicated monitors per task**
- Monitor 1: Development (Tag 1-3)
- Monitor 2: Communication (Tag 4-6)
- Monitor 3: Media/Reference (Tag 7-9)
**Strategy 2: Mirror similar tags**
- Both monitors show same tags
- Each monitor has different layouts
- Use global windows to span both
**Strategy 3: Independent workspaces**
- Each monitor is independent
- Use monitor focus shortcuts frequently
- Keep related work on same monitor
### Monitor Configuration
MangoWC auto-detects monitors. For custom setup:
**Disable a monitor:**
```bash
mmsg -d disable_monitor HDMI-A-1
```
**Enable a monitor:**
```bash
mmsg -d enable_monitor HDMI-A-1
```
**Find monitor names:**
```bash
mmsg -o
```
---
## Customization Tips
### Modify Keybindings
Edit `~/.config/mango/config.conf`:
```conf
# Change default terminal
bind=Alt,Return,spawn,alacritty # Instead of foot
# Add custom application shortcuts
bind=Super,f,spawn,firefox
bind=Super,c,spawn,chromium
bind=Super,e,spawn,thunar
# Add focus last window
bind=Super,grave,focuslast,
# Add center window
bind=Super,c,centerwin,
```
After editing, press `Super + R` to reload.
### Customize Animations
```conf
# In config.conf
# Speed up animations
animation_duration_open=200 # Faster (default: 400)
animation_duration_close=400 # Faster (default: 800)
# Disable animations
animations=0
# Change animation type
animation_type_open=zoom # Or "slide"
animation_type_close=zoom
```
### Customize Appearance
```conf
# In config.conf
# Colors (RGBA hex: 0xRRGGBBAA)
focuscolor=0x89b4faff # Blue focused border
bordercolor=0x313244ff # Dark unfocused border
# Borders and gaps
borderpx=3 # Border width
gappih=10 # Inner horizontal gap
gappiv=10 # Inner vertical gap
gappoh=15 # Outer horizontal gap
gappov=15 # Outer vertical gap
# Rounded corners
border_radius=10 # Corner radius
# Window effects
blur=1 # Enable blur
shadows=1 # Enable shadows
focused_opacity=1.0 # Focused window opacity
unfocused_opacity=0.95 # Unfocused window opacity
```
### Custom Scripts
Create `~/.config/mango/scripts/` directory:
**Example: Screenshot script**
```bash
#!/bin/bash
# ~/.config/mango/scripts/screenshot.sh
grim -g "$(slurp)" - | satty --filename - --fullscreen
```
**Bind it:**
```conf
bind=Print,none,spawn_shell,~/.config/mango/scripts/screenshot.sh
```
**Example: Volume control**
```bash
#!/bin/bash
# ~/.config/mango/scripts/volume.sh
case $1 in
up) pamixer -i 5 ;;
down) pamixer -d 5 ;;
mute) pamixer -t ;;
esac
```
**Bind it:**
```conf
bind=NONE,XF86AudioRaiseVolume,spawn_shell,~/.config/mango/scripts/volume.sh up
bind=NONE,XF86AudioLowerVolume,spawn_shell,~/.config/mango/scripts/volume.sh down
bind=NONE,XF86AudioMute,spawn_shell,~/.config/mango/scripts/volume.sh mute
```
---
## Common Workflows
### Workflow 1: Web Development
**Setup:**
```
Tag 1: Browser (monocle) → Testing
Tag 2: Code editor (center_tile) → Development
Tag 3: Terminals (scroller) → Commands
Scratchpad: Documentation, notes
```
**Workflow:**
1. Start on Tag 2, write code
2. `Ctrl + 1` → View in browser
3. `Ctrl + 3` → Run build/dev server
4. `Alt + Z` → Toggle docs when needed
5. Use `Super + Left/Right` to cycle between tags
### Workflow 2: Writing and Research
**Setup:**
```
Tag 1: Writing app (monocle)
Tag 2: Research browser (tile)
Tag 3: Reference PDFs (grid)
Scratchpad: Notes, citations
```
**Workflow:**
1. Research on Tags 2-3
2. `Ctrl + 1` → Switch to writing
3. `Super + G` on notes window → Make it global
4. Notes now visible on all tags
### Workflow 3: Communication and Work
**Setup:**
```
Tag 1: Email (monocle)
Tag 2: Slack/Discord (tile)
Tag 3: Work documents (tile)
Tag 4: Calendar (monocle)
Global: Music player
```
**Workflow:**
1. Open music player → `Super + G` (make global)
2. Start each app on its tag
3. Use `Ctrl + Left/Right` to jump between active tags
4. `Alt + Tab` for quick overview
### Workflow 4: System Administration
**Setup:**
```
Tag 1: Terminals (scroller) → Multiple SSH sessions
Tag 2: Monitoring (grid) → htop, iotop, etc.
Tag 3: Browser (monocle) → Documentation
Scratchpad: Calculator, quick commands
```
**Workflow:**
1. Open terminals in scroller layout
2. `Alt + X` to adjust column widths
3. `Ctrl + 2` for monitoring overview
4. `Alt + Z` for quick calculations
### Workflow 5: Video/Audio Editing
**Setup:**
```
Tag 1: Editor (monocle) → Full-screen editing
Tag 2: File browser (tile) → Asset management
Tag 3: Preview (monocle) → Testing output
```
**Workflow:**
1. Edit on Tag 1 in monocle (maximum space)
2. `Ctrl + 2` → Grab assets
3. `Ctrl + 3` → Preview output
4. Use `Alt + F` for true fullscreen when needed
---
## Quick Reference Card
### Essential Shortcuts
```
Alt + Return Terminal
Alt + Space Launcher
Alt + Q Close window
Super + R Reload config
Super + M Exit
Alt + ←→↑↓ Focus direction
Super + Shift + ←→↑↓ Swap windows
Alt + \ Toggle floating
Alt + F Fullscreen
Super + N Change layout
Ctrl + 1-9 View tag
Alt + 1-9 Move to tag
Super + ←→ Prev/next tag
Alt + Tab Overview
Alt + Z Scratchpad
Super + G Global window
```
### When Things Go Wrong
```
Super + R Reload config (fixes most issues)
Super + M Exit MangoWC
Ctrl + Alt + F2 Switch to TTY (if GUI breaks)
```
---
## Next Steps
Now that you understand the basics:
1. **Customize your config** - Edit `~/.config/mango/config.conf`
2. **Set up autostart** - Create `~/.config/mango/autostart.sh`
3. **Explore layouts** - Find what works for your workflow
4. **Learn IPC** - Automate with `mmsg` (see COMMANDS.md)
5. **Join the community** - [Discord](https://discord.gg/CPjbDxesh5)
**Additional Resources:**
- [COMMANDS.md](COMMANDS.md) - Complete command reference
- [config.conf](config.conf) - Commented configuration file
- [MangoWC Wiki](https://github.com/DreamMaoMao/mango/wiki/) - Comprehensive documentation
- [Website](https://mangowc.vercel.app/docs) - Online documentation
---
**Happy tiling! 🥭**

View file

@ -1,256 +1,359 @@
# More option see https://github.com/DreamMaoMao/mango/wiki/ # 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 effect # ============================================================================
blur=0 # WINDOW EFFECTS (requires scenefx library)
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 # Blur effects for windows and layers
layer_shadows = 0 blur=0 # Enable blur for windows (0=off, 1=on)
shadow_only_floating = 1 blur_layer=0 # Enable blur for layer surfaces (0=off, 1=on)
shadows_size = 10 blur_optimized=1 # Use optimized blur algorithm (recommended)
shadows_blur = 15
shadows_position_x = 0
shadows_position_y = 0
shadowscolor= 0x000000ff
border_radius=6 # Blur parameters - fine-tune the blur appearance
no_radius_when_single=0 blur_params_num_passes = 2 # Number of blur passes (more = smoother but slower)
focused_opacity=1.0 blur_params_radius = 5 # Blur radius in pixels
unfocused_opacity=1.0 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+)
# Animation Configuration(support type:zoom,slide) # Shadow effects for windows
# tag_animation_direction: 1-horizontal,0-vertical shadows = 0 # Enable shadows (0=off, 1=on)
animations=1 layer_shadows = 0 # Enable shadows for layer surfaces
layer_animations=1 shadow_only_floating = 1 # Only show shadows on floating windows
animation_type_open=slide shadows_size = 10 # Shadow size in pixels
animation_type_close=slide shadows_blur = 15 # Shadow blur amount
animation_fade_in=1 shadows_position_x = 0 # Shadow horizontal offset
animation_fade_out=1 shadows_position_y = 0 # Shadow vertical offset
tag_animation_direction=1 shadowscolor= 0x000000ff # Shadow color in RGBA hex format
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
# Scroller Layout Setting # Window appearance
scroller_structs=20 border_radius=6 # Corner radius in pixels (rounded corners)
scroller_default_proportion=0.8 no_radius_when_single=0 # Disable rounded corners for single window
scroller_focus_center=0 focused_opacity=1.0 # Opacity of focused window (0.0-1.0)
scroller_prefer_center=0 unfocused_opacity=1.0 # Opacity of unfocused windows (0.0-1.0)
edge_scroller_pointer_focus=1
scroller_default_proportion_single=1.0
scroller_proportion_preset=0.5,0.8,1.0
# Master-Stack Layout Setting # ============================================================================
new_is_master=1 # ANIMATIONS - Smooth transitions for windows and tags
default_mfact=0.55 # ============================================================================
default_nmaster=1
smartgaps=0
# Overview Setting animations=1 # Enable window animations (0=off, 1=on)
hotarea_size=10 layer_animations=1 # Enable animations for layer surfaces
enable_hotarea=1
ov_tab_mode=0
overviewgappi=5
overviewgappo=30
# Misc # Animation types: "zoom" (scale) or "slide" (directional)
no_border_when_single=0 animation_type_open=slide # Window open animation type
axis_bind_apply_timeout=100 animation_type_close=slide # Window close animation type
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
# keyboard animation_fade_in=1 # Fade in windows when opening
repeat_rate=25 animation_fade_out=1 # Fade out windows when closing
repeat_delay=600
numlockon=0
xkb_rules_layout=us
# Trackpad # Tag switching animation
# need relogin to make it apply tag_animation_direction=1 # Tag transition direction (1=horizontal, 0=vertical)
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 # Zoom animation parameters (when using animation_type=zoom)
# need relogin to make it apply zoom_initial_ratio=0.3 # Starting scale (0.0-1.0)
mouse_natural_scrolling=0 zoom_end_ratio=0.8 # Ending scale (0.0-1.0)
# Appearance # Fade animation parameters
gappih=5 fadein_begin_opacity=0.5 # Starting opacity for fade in
gappiv=5 fadeout_begin_opacity=0.8 # Starting opacity for fade out
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
# layout support: # Animation durations in milliseconds
# tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller animation_duration_move=500 # Window move/resize duration
tagrule=id:1,layout_name:tile animation_duration_open=400 # Window open duration
tagrule=id:2,layout_name:tile animation_duration_tag=350 # Tag switch duration
tagrule=id:3,layout_name:tile animation_duration_close=800 # Window close duration
tagrule=id:4,layout_name:tile animation_duration_focus=0 # Focus change duration (0=instant)
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
# Key Bindings # Animation curves (cubic-bezier: x1,y1,x2,y2)
# key name refer to `xev` or `wev` command output, # See: https://cubic-bezier.com for curve visualization
# mod keys name: super,ctrl,alt,shift,none 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
# reload config # ============================================================================
bind=SUPER,r,reload_config # SCROLLER LAYOUT - Horizontal scrolling window layout
# ============================================================================
# menu and terminal scroller_structs=20 # Maximum number of columns
bind=Alt,space,spawn,rofi -show drun scroller_default_proportion=0.8 # Default width ratio for new windows
bind=Alt,Return,spawn,foot 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)
# exit # ============================================================================
bind=SUPER,m,quit # MASTER-STACK LAYOUT - Traditional tiling layout (tile, center_tile, etc.)
bind=ALT,q,killclient, # ============================================================================
# switch window focus new_is_master=1 # New windows become master (1) or go to stack (0)
bind=SUPER,Tab,focusstack,next default_mfact=0.55 # Master area size ratio (0.0-1.0)
bind=ALT,Left,focusdir,left default_nmaster=1 # Number of windows in master area
bind=ALT,Right,focusdir,right smartgaps=0 # Disable gaps when only one window (0=off, 1=on)
bind=ALT,Up,focusdir,up
bind=ALT,Down,focusdir,down
# swap window # ============================================================================
bind=SUPER+SHIFT,Up,exchange_client,up # OVERVIEW MODE - Hycov-like window overview (ALT+Tab)
bind=SUPER+SHIFT,Down,exchange_client,down # ============================================================================
bind=SUPER+SHIFT,Left,exchange_client,left
bind=SUPER+SHIFT,Right,exchange_client,right
# switch window status hotarea_size=10 # Size of screen edges to trigger overview (pixels)
bind=SUPER,g,toggleglobal, enable_hotarea=1 # Enable hotarea triggering (0=off, 1=on)
bind=ALT,Tab,toggleoverview, ov_tab_mode=0 # Tab mode: show windows as tabs (0=off, 1=on)
bind=ALT,backslash,togglefloating, overviewgappi=5 # Inner gap between windows in overview
bind=ALT,a,togglemaximizescreen, overviewgappo=30 # Outer gap from screen edges in overview
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 # MISCELLANEOUS SETTINGS
bind=ALT,x,switch_proportion_preset, # ============================================================================
# switch layout no_border_when_single=0 # Hide border when only one window
bind=SUPER,n,switch_layout 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
# tag switch # ============================================================================
bind=SUPER,Left,viewtoleft,0 # KEYBOARD SETTINGS
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 repeat_rate=25 # Key repeat rate (characters per second)
bind=Ctrl,2,view,2,0 repeat_delay=600 # Delay before repeat starts (milliseconds)
bind=Ctrl,3,view,3,0 numlockon=0 # Enable numlock on startup (0=off, 1=on)
bind=Ctrl,4,view,4,0 xkb_rules_layout=us # Keyboard layout (us, gb, de, fr, etc.)
bind=Ctrl,5,view,5,0 # For multiple layouts use: "us,ru" (switch with SUPER+Space)
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 # TRACKPAD SETTINGS (requires logout/login to apply)
# 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
# monitor switch disable_trackpad=0 # Disable trackpad entirely (0=enabled, 1=disabled)
bind=alt+shift,Left,focusmon,left tap_to_click=1 # Tap to click (0=off, 1=on)
bind=alt+shift,Right,focusmon,right tap_and_drag=1 # Tap and drag to move windows/select text
bind=SUPER+Alt,Left,tagmon,left drag_lock=1 # Continue drag after lifting finger
bind=SUPER+Alt,Right,tagmon,right 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)
# gaps # ============================================================================
bind=ALT+SHIFT,X,incgaps,1 # MOUSE SETTINGS (requires logout/login to apply)
bind=ALT+SHIFT,Z,incgaps,-1 # ============================================================================
bind=ALT+SHIFT,R,togglegaps
# movewin mouse_natural_scrolling=0 # Natural/reverse scroll direction for mouse
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 # APPEARANCE - Colors, borders, and gaps
bind=CTRL+ALT,Down,resizewin,+0,+50 # ============================================================================
bind=CTRL+ALT,Left,resizewin,-50,+0
bind=CTRL+ALT,Right,resizewin,+50,+0
# Mouse Button Bindings # Gaps between windows (in pixels)
# btn_left and btn_right can't bind none mod key gappih=5 # Inner horizontal gap (between windows)
mousebind=SUPER,btn_left,moveresize,curmove gappiv=5 # Inner vertical gap (between windows)
mousebind=NONE,btn_middle,togglemaximizescreen,0 gappoh=10 # Outer horizontal gap (from screen edges)
mousebind=SUPER,btn_right,moveresize,curresize 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)
# Axis Bindings # Border appearance
axisbind=SUPER,UP,viewtoleft_have_client borderpx=4 # Border width in pixels
axisbind=SUPER,DOWN,viewtoright_have_client
# 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
# layer rule # ============================================================================
layerrule=animation_type_open:zoom,layer_name:rofi # TAG RULES - Assign default layouts to tags
layerrule=animation_type_close:zoom,layer_name:rofi # ============================================================================
# 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