2025-08-01 10:56:39 +08:00
# MangoWC
2025-05-07 11:12:20 +08:00
2025-07-30 21:01:09 +08:00
<img width="255" height="256" alt="mango-transparency-256" src="https://github.com/user-attachments/assets/54caff2c-932f-4998-a090-2a5292ebbfa4" />
2025-06-22 03:53:43 -07:00
This project's development is based on [dwl ](https://codeberg.org/dwl/dwl/ ).
2025-05-07 11:12:20 +08:00
2025-05-08 19:25:23 +08:00
2025-06-25 18:17:44 +03:00
1. **Lightweight & Fast Build **
2025-05-07 11:12:20 +08:00
2025-07-30 14:54:59 +08:00
- _Mango_ is as lightweight as _ dwl _ , and can be built completely within a few seconds. Despite this, _ Mango _ does not compromise on functionality.
2025-06-25 18:17:44 +03:00
2. **Feature Highlights **
2025-07-30 14:54:59 +08:00
- In addition to basic WM functionality, Mango provides:
2025-06-29 16:09:48 +08:00
- Excellent xwayland support.
2025-07-01 04:05:36 -04:00
- Base tags not workspaces (supports separate window layouts for each tag)
2025-06-29 16:09:48 +08:00
- Smooth and customizable complete animations (window open/move/close, tag enter/leave,layer open/close/move)
2025-06-22 03:53:43 -07:00
- Excellent input method support (text input v2/v3)
2025-10-09 13:09:40 +08:00
- Flexible window layouts with easy switching (scroller, master-stack, monocle,center-master, etc.)
2025-06-22 03:53:43 -07:00
- Rich window states (swallow, minimize, maximize, unglobal, global, fakefullscreen, overlay, etc.)
2025-09-22 22:12:55 +08:00
- Simple yet powerful external configuration(support shortcuts hot-reload)
2025-06-22 03:53:43 -07:00
- Sway-like scratchpad and named scratchpad
2025-09-06 18:49:00 +08:00
- Ipc support(get/send message from/to compositor by external program)
2025-06-22 03:53:43 -07:00
- Hycov-like overview
2025-07-01 04:05:36 -04:00
- Window effects from scenefx (blur, shadow, corner radius, opacity)
2025-05-07 11:12:20 +08:00
2025-02-09 15:54:18 +08:00
Master-Stack Layout
2025-02-04 21:44:32 +08:00
2025-02-19 16:33:38 +08:00
https://github.com/user-attachments/assets/a9d4776e-b50b-48fb-94ce-651d8a749b8a
2025-02-09 15:54:18 +08:00
Scroller Layout
2025-02-19 16:33:38 +08:00
https://github.com/user-attachments/assets/c9bf9415-fad1-4400-bcdc-3ad2d76de85a
2025-06-20 10:52:41 +08:00
# Supported layouts
2025-06-25 18:17:44 +03:00
2025-08-15 13:26:21 +08:00
- tile
- scroller
- monocle
- grid
- deck
2025-09-26 21:30:45 +08:00
- center_tile
2025-08-15 13:26:21 +08:00
- vertical_tile
2025-10-11 16:27:54 +08:00
- vertical_grid
2025-08-15 13:26:21 +08:00
- vertical_scroller
2025-03-24 12:34:17 +08:00
2025-06-22 03:53:43 -07:00
# Installation
2025-03-24 12:34:17 +08:00
2025-06-22 03:53:43 -07:00
## Dependencies
2025-03-15 10:26:11 +08:00
2025-06-25 18:17:44 +03:00
- glibc
- wayland
- wayland-protocols
- libinput
- libdrm
- libxkbcommon
- pixman
- git
- meson
- ninja
- libdisplay-info
- libliftoff
- hwdata
- seatd
- pcre2
2025-03-24 12:34:17 +08:00
2025-06-22 03:53:43 -07:00
## Arch Linux
2025-10-20 11:20:15 +02:00
The package is in the Arch User Repository and is availble for manual download [here ](https://aur.archlinux.org/packages/mangowc-git ) or through a AUR helper like yay:
2025-04-13 09:05:09 +08:00
``` bash
2025-08-01 10:56:39 +08:00
yay -S mangowc-git
2025-03-24 12:34:17 +08:00
2025-02-03 23:18:47 +08:00
```
2025-07-08 07:49:50 +03:00
## Gentoo Linux
The package is in the community-maintained repository called GURU.
First, add GURU repository:
``` bash
emerge --ask --verbose eselect-repository
eselect repository enable guru
emerge --sync guru
```
2025-08-10 14:12:16 +03:00
Then, add `gui-libs/scenefx` and `gui-wm/mangowc` to the `package.accept_keywords` .
2025-07-08 07:49:50 +03:00
Finally, install the package:
``` bash
2025-08-10 14:12:16 +03:00
emerge --ask --verbose gui-wm/mangowc
2025-07-08 07:49:50 +03:00
```
2025-06-22 03:53:43 -07:00
## Other
2025-06-25 18:17:44 +03:00
2025-04-13 09:05:09 +08:00
``` bash
2025-09-26 12:00:26 +08:00
git clone -b 0.19.1 https://gitlab.freedesktop.org/wlroots/wlroots.git
2025-06-08 10:38:51 +08:00
cd wlroots
meson build -Dprefix= /usr
sudo ninja -C build install
2025-06-24 14:55:18 +08:00
git clone https://github.com/wlrfx/scenefx.git
cd scenefx
meson build -Dprefix= /usr
sudo ninja -C build install
2025-08-01 10:56:39 +08:00
git clone https://github.com/DreamMaoMao/mangowc.git
cd mangowc
2025-02-03 23:18:47 +08:00
meson build -Dprefix= /usr
sudo ninja -C build install
2025-03-03 08:33:19 +08:00
```
2025-02-20 08:47:56 +08:00
2025-06-22 03:53:43 -07:00
## Suggested Tools
2025-03-24 12:34:17 +08:00
2025-09-08 10:20:30 +08:00
- Application launcher (rofi, bemenu, wmenu, fuzzel)
2025-06-25 18:17:44 +03:00
- Terminal emulator (foot, wezterm, alacritty, kitty, ghostty)
- Status bar (waybar, eww, quickshell, ags), waybar is preferred
- Wallpaper setup (swww, swaybg)
- Notification daemon (swaync, dunst)
- Desktop portal (xdg-desktop-portal, xdg-desktop-portal-wlr, xdg-desktop-portal-gtk)
- Clipboard (wl-clipboard, wl-clip-persist, cliphist)
- Gamma control/night light (wlsunset, gammastep)
- Miscellaneous (xfce-polkit, wlogout)
2025-03-11 09:44:00 +08:00
2025-06-22 03:53:43 -07:00
## Some Common Default Keybindings
2025-06-25 18:17:44 +03:00
2025-04-28 22:58:00 +08:00
- alt+return: open foot terminal
2025-08-18 19:42:52 +08:00
- alt+space: open rofi launcher
2025-04-28 22:58:00 +08:00
- alt+q: kill client
- alt+left/right/up/down: focus direction
2025-07-30 14:54:59 +08:00
- super+m: quit mango
2025-03-24 12:34:17 +08:00
2025-06-22 03:53:43 -07:00
## My Dotfiles
2025-06-25 18:17:44 +03:00
2025-06-22 03:53:43 -07:00
- Dependencies
2025-06-25 18:17:44 +03:00
2025-06-24 16:22:25 +08:00
``` bash
2025-09-08 10:20:30 +08:00
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset xfce-polkit swaync pamixer wlr-dpms sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout sox
2025-04-29 21:20:37 +08:00
```
2025-06-25 18:17:44 +03:00
2025-06-24 16:22:25 +08:00
- use my config
2025-06-25 18:17:44 +03:00
2025-06-24 16:22:25 +08:00
``` bash
2025-07-30 14:54:59 +08:00
git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
2025-04-29 21:20:37 +08:00
```
2025-06-25 18:17:44 +03:00
2025-02-23 19:55:42 +08:00
2025-07-01 04:05:36 -04:00
## Config Documentation
2025-02-23 19:55:42 +08:00
2025-07-30 14:54:59 +08:00
Refer to the [wiki ](https://github.com/DreamMaoMao/mango/wiki/ )
2025-03-07 20:57:34 +08:00
2025-06-22 03:53:43 -07:00
# NixOS + Home-manager
2025-03-24 12:34:17 +08:00
2025-07-30 14:54:59 +08:00
The repo contains a flake that provides a NixOS module and a home-manager module for mango.
Use the NixOS module to install mango with other necessary components of a working Wayland environment.
Use the home-manager module to declare configuration and autostart for mango.
2025-03-24 12:50:27 +08:00
Here's an example of using the modules in a flake:
2025-02-25 22:05:29 +08:00
``` nix
{
inputs = {
nixpkgs . url = " g i t h u b : N i x O S / n i x p k g s / n i x o s - u n s t a b l e " ;
home-manager = {
url = " g i t h u b : n i x - c o m m u n i t y / h o m e - m a n a g e r " ;
inputs . nixpkgs . follows = " n i x p k g s " ;
} ;
flake-parts . url = " g i t h u b : h e r c u l e s - c i / f l a k e - p a r t s " ;
2025-07-30 14:54:59 +08:00
mango . url = " g i t h u b : D r e a m M a o M a o / m a n g o " ;
2025-02-25 22:05:29 +08:00
} ;
outputs =
inputs @ { self , flake-parts , . . . }:
flake-parts . lib . mkFlake { inherit inputs ; } {
debug = true ;
systems = [ " x 8 6 _ 6 4 - l i n u x " ] ;
flake = {
nixosConfigurations = {
hostname = inputs . nixpkgs . lib . nixosSystem {
system = " x 8 6 _ 6 4 - l i n u x " ;
modules = [
inputs . home-manager . nixosModules . home-manager
2025-03-24 12:50:27 +08:00
2025-07-30 14:54:59 +08:00
# Add mango nixos module
inputs . mango . nixosModules . mango
2025-03-24 12:50:27 +08:00
{
2025-07-30 14:54:59 +08:00
programs . mango . enable = true ;
2025-03-24 12:50:27 +08:00
}
2025-02-25 22:05:29 +08:00
{
home-manager = {
useGlobalPkgs = true ;
useUserPackages = true ;
backupFileExtension = " b a c k u p " ;
users . " u s e r n a m e " . imports =
[
(
{ . . . }:
{
2025-07-30 14:54:59 +08:00
wayland . windowManager . mango = {
2025-02-25 22:05:29 +08:00
enable = true ;
settings = ''
# s e e c o n f i g . c o n f
'' ;
autostart_sh = ''
# s e e a u t o s t a r t . s h
2025-02-25 22:37:34 +08:00
# N o t e : h e r e n o n e e d t o a d d s h e b a n g
2025-02-25 22:05:29 +08:00
'' ;
} ;
}
)
]
++ [
2025-07-30 14:54:59 +08:00
# Add mango hm module
inputs . mango . hmModules . mango
2025-02-25 22:05:29 +08:00
] ;
} ;
}
] ;
} ;
} ;
} ;
} ;
}
```
2025-10-14 11:29:27 +08:00
# Sponsor
My current device is a bit outdated and doesn't support certain features like HDR or VRR. If you'd like to support this project, here's how you can help. Thanks!

2025-07-30 14:54:59 +08:00
# Packaging mango
2025-06-25 18:17:44 +03:00
2025-07-30 14:54:59 +08:00
To package mango for other distributions, you can check the reference setup for:
2025-06-25 18:17:44 +03:00
2025-09-26 12:15:08 +08:00
- [nix ](https://github.com/DreamMaoMao/mangowc/blob/main/nix/default.nix )
- [arch ](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=mangowc-git ).
2025-08-10 14:12:16 +03:00
- [gentoo ](https://data.gpo.zugaina.org/guru/gui-wm/mangowc )
2025-06-25 18:17:44 +03:00
2025-09-26 12:00:26 +08:00
You might need to package `scenefx` for your distribution, check availability [here ](https://github.com/wlrfx/scenefx.git ).
2025-06-25 18:17:44 +03:00
2025-07-30 14:54:59 +08:00
If you encounter build errors when packaging `mango` , feel free to create an issue and ask a question, but
2025-06-25 18:17:44 +03:00
Read The Friendly Manual on packaging software in your distribution first.
2025-06-22 03:53:43 -07:00
# Thanks to These Reference Repositories
2025-02-14 14:32:20 +08:00
2025-06-22 03:53:43 -07:00
- https://gitlab.freedesktop.org/wlroots/wlroots - Implementation of Wayland protocol
2025-02-14 14:32:20 +08:00
2025-06-22 03:53:43 -07:00
- https://github.com/dqrk0jeste/owl - Basal window animation
2025-02-14 14:32:20 +08:00
2025-06-22 03:53:43 -07:00
- https://codeberg.org/dwl/dwl - Basal dwl feature
2025-03-01 21:34:05 +08:00
2025-06-22 03:53:43 -07:00
- https://github.com/swaywm/sway - Sample of Wayland protocol
2025-06-24 14:55:18 +08:00
2025-06-24 16:22:25 +08:00
- https://github.com/wlrfx/scenefx - Make it simple to add window effect.