diff --git a/COMMANDS.md b/COMMANDS.md new file mode 100644 index 00000000..1f83da95 --- /dev/null +++ b/COMMANDS.md @@ -0,0 +1,1038 @@ +# MangoWC Command Reference + +This document lists all available commands that can be used in keybindings, mousebindings, or via IPC (mmsg). + +## How to Use Commands + +### In Configuration File (config.conf) + +```conf +# Syntax: bind=MODIFIERS,KEY,COMMAND,ARGUMENTS +bind=Alt,Return,spawn,foot +bind=Alt,q,killclient, +bind=Ctrl,1,view,1,0 +``` + +### Via IPC (mmsg) + +```bash +# Syntax: mmsg -d COMMAND ARGUMENTS +mmsg -d spawn firefox +mmsg -d view 3 +mmsg -d reload_config +``` + +--- + +## Window Management Commands + +### killclient +Close the focused window. + +**Syntax:** `killclient,` + +**Example:** +```conf +bind=Alt,q,killclient, +``` + +### focusstack +Focus next/previous window in the stack. + +**Arguments:** `next` or `prev` + +**Example:** +```conf +bind=Super,Tab,focusstack,next +bind=Super+Shift,Tab,focusstack,prev +``` + +### focusdir +Focus window in a specific direction. + +**Arguments:** `left`, `right`, `up`, or `down` + +**Example:** +```conf +bind=Alt,Left,focusdir,left +bind=Alt,Right,focusdir,right +bind=Alt,Up,focusdir,up +bind=Alt,Down,focusdir,down +``` + +### focuslast +Focus the previously focused window. + +**Syntax:** `focuslast,` + +**Example:** +```conf +bind=Super,grave,focuslast, +``` + +### exchange_client +Swap the focused window with another window in a direction. + +**Arguments:** `left`, `right`, `up`, or `down` + +**Example:** +```conf +bind=Super+Shift,Left,exchange_client,left +bind=Super+Shift,Right,exchange_client,right +``` + +### exchange_stack_client +Swap window position in the stack. + +**Arguments:** Stack position parameters + +**Example:** +```conf +bind=Super,s,exchange_stack_client,1 +``` + +### zoom +Move focused window to master position. + +**Syntax:** `zoom,` + +**Example:** +```conf +bind=Super,Return,zoom, +``` + +--- + +## Window State Commands + +### togglefloating +Toggle between floating and tiled mode. + +**Syntax:** `togglefloating,` + +**Example:** +```conf +bind=Alt,backslash,togglefloating, +``` + +### togglefullscreen +Toggle fullscreen mode. + +**Syntax:** `togglefullscreen,` + +**Example:** +```conf +bind=Alt,f,togglefullscreen, +``` + +### togglefakefullscreen +Toggle fake fullscreen (fullscreen within layout). + +**Syntax:** `togglefakefullscreen,` + +**Example:** +```conf +bind=Alt+Shift,f,togglefakefullscreen, +``` + +### togglemaximizescreen +Toggle maximized state. + +**Syntax:** `togglemaximizescreen,` + +**Example:** +```conf +bind=Alt,a,togglemaximizescreen, +``` + +### toggleglobal +Toggle global state (visible on all tags). + +**Syntax:** `toggleglobal,` + +**Example:** +```conf +bind=Super,g,toggleglobal, +``` + +### toggleoverlay +Toggle overlay state (always on top). + +**Syntax:** `toggleoverlay,` + +**Example:** +```conf +bind=Super,o,toggleoverlay, +``` + +### minimized +Minimize the focused window. + +**Syntax:** `minimized,` + +**Example:** +```conf +bind=Super,i,minimized, +``` + +### restore_minimized +Restore the last minimized window. + +**Syntax:** `restore_minimized` + +**Example:** +```conf +bind=Super+Shift,I,restore_minimized +``` + +--- + +## Tag (Workspace) Commands + +### view +Switch to a specific tag. + +**Arguments:** +- `tag_number` (1-9) +- `follow` (0 or 1, whether to follow window movements) + +**Example:** +```conf +bind=Ctrl,1,view,1,0 +bind=Ctrl,2,view,2,0 +``` + +**IPC Example:** +```bash +mmsg -d view 3 +``` + +### tag +Move focused window to a tag and switch to it. + +**Arguments:** +- `tag_number` (1-9) +- `follow` (0 or 1) + +**Example:** +```conf +bind=Alt,1,tag,1,0 +bind=Alt,2,tag,2,0 +``` + +**IPC Example:** +```bash +mmsg -d tag 5 +``` + +### tagsilent +Move focused window to a tag without switching to it. + +**Arguments:** `tag_number` (1-9) + +**Example:** +```conf +bind=Alt+Shift,1,tagsilent,1 +``` + +### toggletag +Toggle tag visibility (view multiple tags). + +**Arguments:** `tag_number` (1-9) + +**Example:** +```conf +bind=Super,1,toggletag,1 +``` + +### toggleview +Toggle viewing of a tag (add/remove from view). + +**Arguments:** `tag_number` (1-9) + +**Example:** +```conf +bind=Super+Ctrl,1,toggleview,1 +``` + +### comboview +View multiple tags simultaneously. + +**Arguments:** Comma-separated tag numbers + +**Example:** +```conf +bind=Super,c,comboview,1,2,3 +``` + +### viewtoleft +Switch to the previous tag. + +**Arguments:** `wrap` (0 or 1, whether to wrap around) + +**Example:** +```conf +bind=Super,Left,viewtoleft,0 +``` + +### viewtoright +Switch to the next tag. + +**Arguments:** `wrap` (0 or 1, whether to wrap around) + +**Example:** +```conf +bind=Super,Right,viewtoright,0 +``` + +### viewtoleft_have_client +Switch to previous tag that has windows. + +**Arguments:** `wrap` (0 or 1) + +**Example:** +```conf +bind=Ctrl,Left,viewtoleft_have_client,0 +``` + +### viewtoright_have_client +Switch to next tag that has windows. + +**Arguments:** `wrap` (0 or 1) + +**Example:** +```conf +bind=Ctrl,Right,viewtoright_have_client,0 +``` + +### tagtoleft +Move focused window to previous tag. + +**Arguments:** `wrap` (0 or 1) + +**Example:** +```conf +bind=Ctrl+Super,Left,tagtoleft,0 +``` + +### tagtoright +Move focused window to next tag. + +**Arguments:** `wrap` (0 or 1) + +**Example:** +```conf +bind=Ctrl+Super,Right,tagtoright,0 +``` + +### bind_to_view +Bind window to always appear on a specific tag. + +**Arguments:** `tag_number` + +**Example:** +```conf +bind=Super,b,bind_to_view,1 +``` + +--- + +## Layout Commands + +### setlayout +Set a specific layout for the current tag. + +**Arguments:** Layout name + +**Available layouts:** +- `tile` - Master-stack tiling +- `scroller` - Horizontal scrolling columns +- `monocle` - One window at a time +- `grid` - Grid arrangement +- `deck` - Stacked windows +- `center_tile` - Centered master +- `vertical_tile` - Vertical master-stack +- `vertical_scroller` - Vertical scrolling +- `vertical_grid` - Vertical grid + +**Example:** +```conf +bind=Super,t,setlayout,tile +bind=Super,s,setlayout,scroller +bind=Super,m,setlayout,monocle +``` + +**IPC Example:** +```bash +mmsg -d setlayout monocle +``` + +### switch_layout +Cycle through available layouts. + +**Syntax:** `switch_layout` + +**Example:** +```conf +bind=Super,n,switch_layout +``` + +### setmfact +Set master area size ratio. + +**Arguments:** Ratio change (e.g., `+0.05`, `-0.05`) + +**Example:** +```conf +bind=Super,h,setmfact,-0.05 +bind=Super,l,setmfact,+0.05 +``` + +### incnmaster +Change number of windows in master area. + +**Arguments:** Change amount (e.g., `+1`, `-1`) + +**Example:** +```conf +bind=Super,i,incnmaster,+1 +bind=Super,d,incnmaster,-1 +``` + +--- + +## Scroller Layout Commands + +### set_proportion +Set window width proportion in scroller layout. + +**Arguments:** Width ratio (0.0-1.0) + +**Example:** +```conf +bind=Alt,e,set_proportion,1.0 # Full width +bind=Alt,w,set_proportion,0.5 # Half width +``` + +### switch_proportion_preset +Cycle through predefined width presets. + +**Syntax:** `switch_proportion_preset,` + +**Example:** +```conf +bind=Alt,x,switch_proportion_preset, +``` + +**Note:** Presets are defined in config as: +```conf +scroller_proportion_preset=0.5,0.8,1.0 +``` + +### scroller_stack +Special scroller stacking behavior. + +**Arguments:** Stacking parameters + +**Example:** +```conf +bind=Super,s,scroller_stack,1 +``` + +--- + +## Gap Commands + +### incgaps +Increase or decrease all gaps. + +**Arguments:** Pixel change (positive or negative) + +**Example:** +```conf +bind=Alt+Shift,X,incgaps,1 # Increase by 1px +bind=Alt+Shift,Z,incgaps,-1 # Decrease by 1px +``` + +### togglegaps +Toggle gaps on/off. + +**Syntax:** `togglegaps` + +**Example:** +```conf +bind=Alt+Shift,R,togglegaps +``` + +### defaultgaps +Reset gaps to default values. + +**Syntax:** `defaultgaps` + +**Example:** +```conf +bind=Alt+Shift,D,defaultgaps +``` + +### incigaps +Increase/decrease inner gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super,equal,incigaps,1 +bind=Super,minus,incigaps,-1 +``` + +### incihgaps +Increase/decrease inner horizontal gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super+Shift,equal,incihgaps,1 +``` + +### incivgaps +Increase/decrease inner vertical gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super+Ctrl,equal,incivgaps,1 +``` + +### incogaps +Increase/decrease outer gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super+Alt,equal,incogaps,1 +``` + +### incohgaps +Increase/decrease outer horizontal gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super+Alt+Shift,equal,incohgaps,1 +``` + +### incovgaps +Increase/decrease outer vertical gaps. + +**Arguments:** Pixel change + +**Example:** +```conf +bind=Super+Alt+Ctrl,equal,incovgaps,1 +``` + +--- + +## Floating Window Commands + +### movewin +Move floating window by pixels. + +**Arguments:** `x_offset,y_offset` + +**Example:** +```conf +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 +``` + +### resizewin +Resize floating window by pixels. + +**Arguments:** `width_change,height_change` + +**Example:** +```conf +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 +``` + +### centerwin +Center the focused floating window. + +**Syntax:** `centerwin,` + +**Example:** +```conf +bind=Super,c,centerwin, +``` + +### smartmovewin +Smart move window (combines with layout logic). + +**Arguments:** Direction and parameters + +**Example:** +```conf +bind=Super,w,smartmovewin,up +``` + +### smartresizewin +Smart resize window (aware of layout). + +**Arguments:** Direction and parameters + +**Example:** +```conf +bind=Super,r,smartresizewin,right +``` + +### moveresize +Mouse-based move/resize. + +**Arguments:** +- `curmove` - Move with mouse +- `curresize` - Resize with mouse + +**Example:** +```conf +mousebind=SUPER,btn_left,moveresize,curmove +mousebind=SUPER,btn_right,moveresize,curresize +``` + +--- + +## Special Feature Commands + +### toggleoverview +Toggle overview mode (show all windows). + +**Syntax:** `toggleoverview,` + +**Example:** +```conf +bind=Alt,Tab,toggleoverview, +``` + +### toggle_scratchpad +Toggle scratchpad visibility. + +**Syntax:** `toggle_scratchpad` + +**Example:** +```conf +bind=Alt,z,toggle_scratchpad +``` + +### toggle_named_scratchpad +Toggle a named scratchpad. + +**Arguments:** Scratchpad name + +**Example:** +```conf +bind=Super,p,toggle_named_scratchpad,music +bind=Super,n,toggle_named_scratchpad,notes +``` + +**Setup named scratchpads:** +1. Open an application +2. Assign it to named scratchpad with IPC: + ```bash + mmsg -d toggle_named_scratchpad music + ``` + +### toggle_render_border +Toggle border rendering. + +**Syntax:** `toggle_render_border,` + +**Example:** +```conf +bind=Super,b,toggle_render_border, +``` + +--- + +## Monitor Commands + +### focusmon +Focus adjacent monitor. + +**Arguments:** `left` or `right` + +**Example:** +```conf +bind=Alt+Shift,Left,focusmon,left +bind=Alt+Shift,Right,focusmon,right +``` + +### tagmon +Move window to adjacent monitor. + +**Arguments:** `left` or `right` + +**Example:** +```conf +bind=Super+Alt,Left,tagmon,left +bind=Super+Alt,Right,tagmon,right +``` + +### viewcrossmon +View tag on different monitor. + +**Arguments:** Monitor and tag parameters + +**Example:** +```conf +bind=Super+Ctrl,m,viewcrossmon,1,2 +``` + +### tagcrossmon +Move window to tag on different monitor. + +**Arguments:** Monitor and tag parameters + +**Example:** +```conf +bind=Super+Shift,m,tagcrossmon,1,2 +``` + +### disable_monitor +Disable a monitor output. + +**Arguments:** Output name or identifier + +**Example:** +```bash +mmsg -d disable_monitor HDMI-A-1 +``` + +### enable_monitor +Enable a monitor output. + +**Arguments:** Output name or identifier + +**Example:** +```bash +mmsg -d enable_monitor HDMI-A-1 +``` + +### toggle_monitor +Toggle monitor on/off. + +**Arguments:** Output name or identifier + +**Example:** +```conf +bind=Super,F7,toggle_monitor,HDMI-A-1 +``` + +--- + +## Virtual Output Commands + +### create_virtual_output +Create a virtual monitor output. + +**Arguments:** Configuration parameters + +**Example:** +```bash +mmsg -d create_virtual_output 1920 1080 +``` + +### destroy_all_virtual_output +Remove all virtual outputs. + +**Syntax:** `destroy_all_virtual_output` + +**Example:** +```bash +mmsg -d destroy_all_virtual_output +``` + +--- + +## Application Commands + +### spawn +Launch an application. + +**Arguments:** Command to execute + +**Example:** +```conf +bind=Alt,Return,spawn,foot +bind=Alt,space,spawn,rofi -show drun +bind=Super,f,spawn,firefox +bind=Super,c,spawn,chromium +``` + +**IPC Example:** +```bash +mmsg -d spawn firefox +mmsg -d spawn "foot -e htop" +``` + +### spawn_shell +Launch command through shell. + +**Arguments:** Shell command + +**Example:** +```conf +bind=Super,s,spawn_shell,~/.config/mango/scripts/screenshot.sh +``` + +### spawn_on_empty +Spawn application on empty tag. + +**Arguments:** Tag number and command + +**Example:** +```conf +bind=Super,w,spawn_on_empty,2,firefox +``` + +--- + +## Input Commands + +### setkeymode +Set keyboard mode (for modal keybindings). + +**Arguments:** Mode name + +**Example:** +```conf +bind=Super,k,setkeymode,resize +``` + +### switch_keyboard_layout +Switch between keyboard layouts. + +**Syntax:** `switch_keyboard_layout` + +**Example:** +```conf +bind=Super,Space,switch_keyboard_layout +``` + +**Note:** Define layouts in config: +```conf +xkb_rules_layout=us,ru +``` + +### toggle_trackpad_enable +Enable/disable trackpad. + +**Syntax:** `toggle_trackpad_enable` + +**Example:** +```conf +bind=Super,F9,toggle_trackpad_enable +``` + +--- + +## System Commands + +### quit +Exit MangoWC. + +**Syntax:** `quit` + +**Example:** +```conf +bind=Super,m,quit +``` + +**IPC Example:** +```bash +mmsg -d quit +``` + +### reload_config +Reload configuration file. + +**Syntax:** `reload_config` + +**Example:** +```conf +bind=Super,r,reload_config +``` + +**IPC Example:** +```bash +mmsg -d reload_config +``` + +### chvt +Change virtual terminal. + +**Arguments:** VT number + +**Example:** +```conf +bind=Ctrl+Alt,F1,chvt,1 +bind=Ctrl+Alt,F2,chvt,2 +``` + +### setoption +Set a configuration option at runtime. + +**Arguments:** Option name and value + +**Example:** +```bash +mmsg -d setoption animations 0 +mmsg -d setoption blur 1 +mmsg -d setoption borderpx 2 +``` + +--- + +## Complete Example Configuration + +Here's a complete example showing various commands in use: + +```conf +# Applications +bind=Alt,Return,spawn,foot +bind=Alt,space,spawn,rofi -show drun +bind=Super,f,spawn,firefox +bind=Super,e,spawn,thunar + +# Window management +bind=Alt,q,killclient, +bind=Alt,Left,focusdir,left +bind=Alt,Right,focusdir,right +bind=Super+Shift,Left,exchange_client,left +bind=Super+Shift,Right,exchange_client,right + +# Window states +bind=Alt,backslash,togglefloating, +bind=Alt,f,togglefullscreen, +bind=Alt,a,togglemaximizescreen, +bind=Super,g,toggleglobal, +bind=Super,i,minimized, + +# Tags +bind=Ctrl,1,view,1,0 +bind=Ctrl,2,view,2,0 +bind=Alt,1,tag,1,0 +bind=Alt,2,tag,2,0 +bind=Super,Left,viewtoleft,0 +bind=Super,Right,viewtoright,0 + +# Layouts +bind=Super,n,switch_layout +bind=Super,t,setlayout,tile +bind=Super,s,setlayout,scroller + +# Special features +bind=Alt,Tab,toggleoverview, +bind=Alt,z,toggle_scratchpad + +# Gaps +bind=Alt+Shift,X,incgaps,1 +bind=Alt+Shift,Z,incgaps,-1 +bind=Alt+Shift,R,togglegaps + +# System +bind=Super,r,reload_config +bind=Super,m,quit +``` + +--- + +## Using Commands via IPC + +All commands can be executed via the `mmsg` IPC tool: + +### Basic Syntax +```bash +mmsg -d COMMAND ARGUMENTS +``` + +### Examples + +**Window management:** +```bash +mmsg -d killclient +mmsg -d togglefloating +mmsg -d togglefullscreen +``` + +**Tag switching:** +```bash +mmsg -d view 3 +mmsg -d tag 5 +mmsg -d viewtoright +``` + +**Layout control:** +```bash +mmsg -d setlayout monocle +mmsg -d switch_layout +``` + +**Application launching:** +```bash +mmsg -d spawn firefox +mmsg -d spawn "foot -e htop" +``` + +**System control:** +```bash +mmsg -d reload_config +mmsg -d setoption animations 1 +``` + +### Scripting with mmsg + +**Example 1: Toggle between two layouts** +```bash +#!/bin/bash +LAYOUT=$(mmsg -L | head -1 | grep -o "tile\|monocle") +if [ "$LAYOUT" = "tile" ]; then + mmsg -d setlayout monocle +else + mmsg -d setlayout tile +fi +``` + +**Example 2: Move all windows to tag 1** +```bash +#!/bin/bash +for i in {2..9}; do + mmsg -d view $i + while mmsg -c | grep -q "clients:"; do + mmsg -d tag 1 + done +done +mmsg -d view 1 +``` + +**Example 3: Cycle through tags with windows** +```bash +#!/bin/bash +mmsg -d viewtoright_have_client +``` + +--- + +## See Also + +- [config.conf](config.conf) - Configuration file with all keybindings +- [README.md](README.md) - General documentation and quick start guide +- [MangoWC Wiki](https://github.com/DreamMaoMao/mango/wiki/) - Comprehensive online documentation diff --git a/README.md b/README.md index 9b558fd1..27a4ea49 100644 --- a/README.md +++ b/README.md @@ -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 +# 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 [mangowc](https://discord.gg/CPjbDxesh5) -# Supported layouts - -- tile -- scroller -- monocle -- grid -- deck -- center_tile -- vertical_tile -- vertical_grid -- vertical_scroller +--- # Installation @@ -162,13 +490,82 @@ sudo ninja -C build install - Gamma control/night light (wlsunset, gammastep) - Miscellaneous (xfce-polkit, wlogout) -## Some Common Default Keybindings +## Default Keybindings Reference -- alt+return: open foot terminal -- alt+space: open rofi launcher -- alt+q: kill client -- alt+left/right/up/down: focus direction -- super+m: quit mango +> **Note**: All keybindings can be customized in `~/.config/mango/config.conf` + +### Essential Shortcuts + +| 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 diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 00000000..d2c53715 --- /dev/null +++ b/USAGE.md @@ -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! 🥭**