Fix COMMANDS.md and bug_report.md linting errors

Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-18 10:17:34 +00:00
parent 9c8dad29ae
commit 91f2cfdd08
4 changed files with 307 additions and 18 deletions

View file

@ -18,11 +18,15 @@ mango version:
wlroots version:
## Crash track
1.you need to build mango by enable asan flag.
```bash
meson build -Dprefix=/usr -Dasan=true
``
```
2.run mango in tty.
```bash
export ASAN_OPTIONS="detect_leaks=1:halt_on_error=0:log_path=/home/xxx/asan.log"
mango

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,11 @@
# Mango Wayland Compositor
<div>
<img src="https://github.com/DreamMaoMao/mangowc/blob/main/assets/mango-transparency-256.png" alt="MangoWC Logo" width="120"/>
</div>
This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
1. **Lightweight & Fast Build**
- _Mango_ is as lightweight as _dwl_, and can be built completely within a few seconds. Despite this, _Mango_ does not compromise on functionality.
@ -25,7 +25,7 @@ This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
- Window effects from scenefx (blur, shadow, corner radius, opacity)
- Zero flickering - every frame is perfect.
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
@ -36,6 +36,7 @@ MangoWC is a **Wayland compositor** - a program that manages windows and display
## First Steps After Installation
1. **Copy the default configuration:**
```bash
mkdir -p ~/.config/mango
cp /usr/share/mango/config.conf ~/.config/mango/config.conf
@ -53,6 +54,7 @@ MangoWC is a **Wayland compositor** - a program that manages windows and display
- `Super + R` - Reload configuration (after making changes)
4. **Create an autostart script** (optional):
```bash
# Create ~/.config/mango/autostart.sh
#!/bin/bash
@ -66,6 +68,7 @@ MangoWC is a **Wayland compositor** - a program that manages windows and display
# Start notification daemon
swaync &
```
Make it executable: `chmod +x ~/.config/mango/autostart.sh`
## Key Concepts
@ -80,6 +83,7 @@ Unlike traditional workspaces, **tags** are more flexible:
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.)
@ -101,6 +105,7 @@ MangoWC supports 9 different layouts:
| **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`)
@ -114,6 +119,7 @@ The **scratchpad** is a hidden workspace for temporary windows:
- Scratchpad windows float centered on screen
**Usage example:**
1. Open a terminal (`Alt + Return`)
2. Move it to scratchpad (`Alt + Z`)
3. It disappears
@ -161,18 +167,21 @@ Windows can have multiple states:
### 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
@ -180,12 +189,14 @@ Windows can have multiple states:
```
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
@ -194,16 +205,19 @@ Windows can have multiple states:
### 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
@ -250,6 +264,7 @@ mmsg -d spawn firefox
### Scripting Examples
**Auto-save workspace state:**
```bash
#!/bin/bash
# Save current tags to file
@ -257,6 +272,7 @@ mmsg -t > ~/mango-state.txt
```
**Tag-specific wallpapers:**
```bash
#!/bin/bash
# In a loop, change wallpaper based on active tag
@ -268,6 +284,7 @@ done
```
**Quick window layout toggle:**
```bash
#!/bin/bash
# Toggle between tile and monocle layouts
@ -284,18 +301,21 @@ fi
### 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
@ -311,6 +331,7 @@ fi
### Keybindings not working
1. **Find correct key name:**
```bash
# Install wev to see key names
wev
@ -324,12 +345,14 @@ fi
### 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
@ -338,6 +361,7 @@ fi
### Performance issues
1. **Disable effects:**
```conf
# In config.conf
animations=0
@ -346,6 +370,7 @@ fi
```
2. **Check GPU drivers:**
```bash
# Ensure proper graphics drivers are installed
glxinfo | grep "OpenGL"
@ -354,6 +379,7 @@ fi
### Screen sharing not working
Install portal packages:
```bash
sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr
```
@ -366,6 +392,7 @@ sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr
- **Issues**: [GitHub Issues](https://github.com/DreamMaoMao/mangowc/issues)
# Our discord
[mangowc](https://discord.gg/CPjbDxesh5)
---
@ -393,13 +420,16 @@ sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr
- libxcb
## Arch Linux
The package is in the Arch User Repository and is available for manual download [here](https://aur.archlinux.org/packages/mangowc-git) or through a AUR helper like yay:
```bash
yay -S mangowc-git
```
## Gentoo Linux
The package is in the community-maintained repository called GURU.
First, add GURU repository:
@ -418,6 +448,7 @@ emerge --ask --verbose gui-wm/mangowc
```
## Fedora Linux
The package is in the third-party Terra repository.
First, add the [Terra Repository](https://terra.fyralabs.com/).
@ -428,6 +459,7 @@ dnf install mangowc
```
## GuixSD
The package definition is described in the source repository.
First, add `mangowc` channel to `channels.scm` file:
@ -477,9 +509,11 @@ sudo ninja -C build install
## Suggested Tools
### Hybrid component
- [dms-shell](https://github.com/AvengeMedia/DankMaterialShell)
### Independent component
- Application launcher (rofi, bemenu, wmenu, fuzzel)
- Terminal emulator (foot, wezterm, alacritty, kitty, ghostty)
- Status bar (waybar, eww, quickshell, ags), waybar is preferred
@ -570,6 +604,7 @@ sudo ninja -C build install
## My Dotfiles
### Daily
- Dependencies
```bash
@ -577,23 +612,26 @@ yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist w
```
### Dms
- Dependencies
```bash
yay -S foot xdg-desktop-portal-wlr swaybg wl-clip-persist cliphist wl-clipboard sway-audio-idle-inhibit-git brightnessctl grim slurp satty matugen-bin dms-shell-git
```
- use my dms config
```bash
git clone -b dms https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
```
- use my daily config
```bash
git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
```
## Documentation
MangoWC comes with comprehensive documentation to help you get started and master the compositor:
@ -727,24 +765,23 @@ Read The Friendly Manual on packaging software in your distribution first.
# Thanks to These Reference Repositories
- https://gitlab.freedesktop.org/wlroots/wlroots - Implementation of Wayland protocol
- <https://gitlab.freedesktop.org/wlroots/wlroots> - Implementation of Wayland protocol
- https://github.com/dqrk0jeste/owl - Basal window animation
- <https://github.com/dqrk0jeste/owl> - Basal window animation
- https://codeberg.org/dwl/dwl - Basal dwl feature
- <https://codeberg.org/dwl/dwl> - Basal dwl feature
- https://github.com/swaywm/sway - Sample of Wayland protocol
- https://github.com/wlrfx/scenefx - Make it simple to add window effect.
- <https://github.com/swaywm/sway> - Sample of Wayland protocol
- <https://github.com/wlrfx/scenefx> - Make it simple to add window effect.
# Sponsor
At present, I can only accept sponsorship through an encrypted connection.
If you find this project helpful to you, you can offer sponsorship in the following ways.
<img width="650" height="870" alt="image" src="https://github.com/user-attachments/assets/8c860317-90d2-4071-971d-f1a92b674469" />
Thanks to the following friends for their sponsorship of this project
[@tonybanters](https://github.com/tonybanters)

View file

@ -50,6 +50,7 @@ Super + M → Exit MangoWC
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
@ -57,6 +58,7 @@ Tags are like workspaces, but more flexible. Think of them as labels you can app
### Basic Tag Usage
**Switch to a tag:**
```
Ctrl + 1 → View tag 1
Ctrl + 2 → View tag 2
@ -64,12 +66,14 @@ Ctrl + 2 → View tag 2
```
**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
@ -78,11 +82,13 @@ 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
@ -91,6 +97,7 @@ 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)
@ -101,6 +108,7 @@ 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
@ -118,6 +126,7 @@ tagrule=id:5,layout_name:monocle
MangoWC includes 9 built-in layouts:
#### 1. Tile (Master-Stack)
```
┌────────┬────┐
│ │ 1 │
@ -125,23 +134,28 @@ MangoWC includes 9 built-in layouts:
│ │ 2 │
└────────┴────┘
```
**Best for:** General multitasking, coding with docs
**Switch to:** Cycle with `Super + N` (or add `bind=Super,t,setlayout,tile` to config)
#### 2. Scroller (Horizontal)
```
┌───┬────┬───┬───┐
│ 1 │ 2 │ 3 │ 4 │...
└───┴────┴───┴───┘
```
**Best for:** Terminals, wide content, many windows
**Switch to:** Cycle with `Super + N` (or add `bind=Super,s,setlayout,scroller` to config)
**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)
```
┌──────────────┐
│ │
@ -149,11 +163,13 @@ MangoWC includes 9 built-in layouts:
│ (fullscrn) │
└──────────────┘
```
**Best for:** Focus work, browsing, media
**Switch to:** Cycle with `Super + N`
**Navigate:** Use `Super + Tab` to cycle through windows
#### 4. Grid
```
┌─────┬─────┐
│ 1 │ 2 │
@ -161,20 +177,24 @@ MangoWC includes 9 built-in layouts:
│ 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 │
@ -182,10 +202,12 @@ MangoWC includes 9 built-in layouts:
│3 │ │4 │
└──┴──────┴──┘
```
**Best for:** Symmetrical workflow, coding
**Switch to:** Cycle with `Super + N`
#### 7. Vertical Tile
```
┌──────────────┐
│ Master │
@ -193,12 +215,14 @@ MangoWC includes 9 built-in layouts:
│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
```
@ -206,6 +230,7 @@ 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)
@ -214,6 +239,7 @@ Super + Minus → Fewer windows in master (add to config)
```
Add to config.conf:
```conf
bind=Super,h,setmfact,-0.05
bind=Super,l,setmfact,+0.05
@ -222,6 +248,7 @@ bind=Super,minus,incnmaster,-1
```
For **scroller** layout:
```
Alt + E → Set window to full width
Alt + X → Cycle width presets
@ -234,17 +261,20 @@ Alt + X → Cycle width presets
### 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)
```
@ -252,21 +282,25 @@ 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
@ -275,28 +309,33 @@ 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,
```
@ -304,6 +343,7 @@ bind=Super,c,centerwin,
### Window States
**Common states:**
```
Alt + \ → Floating
Alt + F → Fullscreen
@ -314,6 +354,7 @@ Super + O → Overlay (always on top)
```
**Minimize/Restore:**
```
Super + I → Minimize window
Super + Shift + I → Restore minimized
@ -326,6 +367,7 @@ Super + Shift + I → Restore minimized
### What is the Scratchpad?
The scratchpad is a hidden workspace for temporary windows. It's perfect for:
- Calculator
- Music player
- Notes/Todo list
@ -335,12 +377,14 @@ The scratchpad is a hidden workspace for temporary windows. It's perfect for:
### 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
```
@ -348,6 +392,7 @@ The scratchpad is a hidden workspace for temporary windows. It's perfect for:
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
@ -358,6 +403,7 @@ The scratchpad is a hidden workspace for temporary windows. It's perfect for:
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
@ -365,6 +411,7 @@ 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
@ -387,6 +434,7 @@ mmsg -d toggle_scratchpad
```
Bind it:
```conf
bind=Super,equal,spawn_shell,~/.config/mango/scripts/scratchpad-calc.sh
```
@ -394,6 +442,7 @@ 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
@ -411,11 +460,13 @@ Overview mode shows all windows at once, similar to GNOME's Activities or macOS
### 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
@ -425,6 +476,7 @@ Alt + Tab → Toggle overview mode
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
@ -447,11 +499,13 @@ overviewgappo=30 # Gap from screen edges
### Basic Multi-Monitor Commands
**Focus different monitor:**
```
Alt + Shift + ←→ → Focus adjacent monitor
```
**Move window to other monitor:**
```
Super + Alt + ←→ → Move window to adjacent monitor
```
@ -459,16 +513,19 @@ 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
@ -478,16 +535,19 @@ Super + Alt + ←→ → Move window to adjacent monitor
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
```
@ -566,6 +626,7 @@ unfocused_opacity=0.95 # Unfocused window opacity
Create `~/.config/mango/scripts/` directory:
**Example: Screenshot script**
```bash
#!/bin/bash
# ~/.config/mango/scripts/screenshot.sh
@ -574,11 +635,13 @@ 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
@ -591,6 +654,7 @@ 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
@ -604,6 +668,7 @@ bind=NONE,XF86AudioMute,spawn_shell,~/.config/mango/scripts/volume.sh mute
### Workflow 1: Web Development
**Setup:**
```
Tag 1: Browser (monocle) → Testing
Tag 2: Code editor (center_tile) → Development
@ -612,6 +677,7 @@ Scratchpad: Documentation, notes
```
**Workflow:**
1. Start on Tag 2, write code
2. `Ctrl + 1` → View in browser
3. `Ctrl + 3` → Run build/dev server
@ -621,6 +687,7 @@ Scratchpad: Documentation, notes
### Workflow 2: Writing and Research
**Setup:**
```
Tag 1: Writing app (monocle)
Tag 2: Research browser (tile)
@ -629,6 +696,7 @@ 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
@ -637,6 +705,7 @@ Scratchpad: Notes, citations
### Workflow 3: Communication and Work
**Setup:**
```
Tag 1: Email (monocle)
Tag 2: Slack/Discord (tile)
@ -646,6 +715,7 @@ 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
@ -654,6 +724,7 @@ Global: Music player
### Workflow 4: System Administration
**Setup:**
```
Tag 1: Terminals (scroller) → Multiple SSH sessions
Tag 2: Monitoring (grid) → htop, iotop, etc.
@ -662,6 +733,7 @@ Scratchpad: Calculator, quick commands
```
**Workflow:**
1. Open terminals in scroller layout
2. `Alt + X` to adjust column widths
3. `Ctrl + 2` for monitoring overview
@ -670,6 +742,7 @@ Scratchpad: Calculator, quick commands
### Workflow 5: Video/Audio Editing
**Setup:**
```
Tag 1: Editor (monocle) → Full-screen editing
Tag 2: File browser (tile) → Asset management
@ -677,6 +750,7 @@ 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
@ -687,6 +761,7 @@ Tag 3: Preview (monocle) → Testing output
## Quick Reference Card
### Essential Shortcuts
```
Alt + Return Terminal
Alt + Space Launcher
@ -710,6 +785,7 @@ Super + G Global window
```
### When Things Go Wrong
```
Super + R Reload config (fixes most issues)
Super + M Exit MangoWC
@ -729,6 +805,7 @@ Now that you understand the basics:
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