From 017970f03326f33807c73cacdb4165b95125e5cb Mon Sep 17 00:00:00 2001 From: Ruixi-rebirth Date: Mon, 11 May 2026 13:57:16 +0800 Subject: [PATCH] refactor: README --- README.md | 370 +++++++++++------------------------------------------- 1 file changed, 70 insertions(+), 300 deletions(-) diff --git a/README.md b/README.md index 37c96c6c..1707850c 100644 --- a/README.md +++ b/README.md @@ -1,332 +1,102 @@ -# Mango Wayland Compositor -
- MangoWM Logo +
+ Mango Logo + +

Mango Wayland Compositor

+ +

A fast, feature-rich Wayland compositor built on dwl

+ +Stars +License +Packaged in +Discord +
-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. - -2. **Feature Highlights** - - In addition to basic WM functionality, Mango provides: - - Excellent xwayland support. - - Base tags not workspaces (supports separate window layouts for each tag) - - Smooth and customizable complete animations (window open/move/close, tag enter/leave,layer open/close/move) - - Excellent input method support (text input v2/v3) - - Flexible window layouts with easy switching (scroller, master-stack, monocle,center-master, etc.) - - Rich window states (swallow, minimize, maximize, unglobal, global, fakefullscreen, overlay, etc.) - - Simple yet powerful external configuration(support shortcuts hot-reload) - - Sway-like scratchpad and named scratchpad - - Ipc support(get/send message from/to compositor by external program) - - Hycov-like overview - - 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 -# Mango's Vision +> See all layouts in action at [mangowm.github.io](https://mangowm.github.io/) -**Mango's primary goal is stability**: After months of testing and development—and aside from a few lingering GPU compatibility issues—it should now be stable enough. I don't plan on making many breaking changes. +## Why Mango? -**Mango's preference is practicality**: I tend to add features that genuinely help with daily workflows—things that make our work more convenient. +Mango starts where dwl ends. It keeps the lightweight, fast-build philosophy while adding the features that make a compositor actually usable day-to-day — without the bloat. -**Mango won't cater to every user preference**: For niche feature requests, I'll take a wait-and-see approach. I'll only consider adding them if they get a significant number of upvotes. +- **Lightweight & fast** — as lean as dwl, builds in seconds, no functionality compromised +- **Excellent xwayland support** — run X11 apps without friction +- **Tags, not workspaces** — each tag maintains its own independent window layout +- **Smooth animations** — window open/move/close, tag transitions, layer surfaces +- **Flexible layouts** — scroller, master-stack, monocle, dwindle, grid, and more +- **Rich window states** — swallow, minimize, maximize, global, overlay, fakefullscreen +- **Window effects** — blur, shadow, corner radius, opacity (via scenefx) +- **Excellent input method support** — text-input v2/v3 +- **Sway-like scratchpad** — named scratchpad support included +- **Hycov-style overview** — see all windows at a glance +- **IPC** — send/receive messages from external programs +- **Hot-reload config** — no restart needed for keybinding changes +- **Zero flickering** — every frame is correct -# Our discord -[mangowm](https://discord.gg/CPjbDxesh5) +## Vision -# Supported layouts -- tile -- scroller -- monocle -- grid -- deck -- center_tile -- vertical_tile -- vertical_grid -- vertical_scroller -- dwindle +**Stability first.** After months of testing, Mango is solid enough for daily use. Breaking changes will be minimal. -# Installation +**Practicality over novelty.** Features get added when they genuinely improve daily workflows — not for the sake of completeness. + +**Focused scope.** Niche requests are evaluated by community interest. Significant upvotes move things forward. + +## Installation [![Packaging status](https://repology.org/badge/vertical-allrepos/mangowm.svg)](https://repology.org/project/mangowm/versions) -## Dependencies +### Arch Linux -- wayland -- wayland-protocols -- libinput -- libdrm -- libxkbcommon -- pixman -- libdisplay-info -- libliftoff -- hwdata -- seatd -- pcre2 -- xorg-xwayland -- libxcb - -## Arch Linux -The package is in the Arch User Repository and is available for manual download [here](https://aur.archlinux.org/packages/mangowm-git) or through a AUR helper like yay: ```bash yay -S mangowm-git - ``` -## Gentoo Linux -The package is in the community-maintained repository called GURU. -First, add GURU repository: +### Other distributions -```bash -emerge --ask --verbose eselect-repository -eselect repository enable guru -emerge --sync guru -``` +See the [Installation Guide](https://mangowm.github.io/docs/installation) for Fedora, Gentoo, Guix, NixOS, openSUSE, PikaOS, AerynOS, and building from source. -Then, add `gui-libs/scenefx` and `gui-wm/mangowm` to the `package.accept_keywords`. +## Documentation -Finally, install the package: +- **[mangowm.github.io](https://mangowm.github.io/)** — website docs with configuration reference, keybindings, layouts, IPC, and more +- **[GitHub Wiki](https://github.com/mangowm/mango/wiki/)** — community-maintained wiki -```bash -emerge --ask --verbose gui-wm/mangowm -``` +## Community -## openSUSE -The package is in the community-maintained repository called obs. +Join us on **[Discord](https://discord.gg/CPjbDxesh5)** -```bash -sudo opi in mangowm -``` -## Fedora Linux -The package is in the third-party Terra repository. -First, add the [Terra Repository](https://terra.fyralabs.com/). +## Acknowledgements -Then, install the package: +- [wlroots](https://gitlab.freedesktop.org/wlroots/wlroots) — Wayland protocol implementation +- [dwl](https://codeberg.org/dwl/dwl) — the foundation Mango builds on +- [scenefx](https://github.com/wlrfx/scenefx) — window effects library +- [owl](https://github.com/dqrk0jeste/owl) — animation groundwork +- [sway](https://github.com/swaywm/sway) — protocol reference -```bash -dnf install mangowm -``` +## Sponsor -## Guix System -The package definition is described in the source repository. -First, add `mangowm` channel to `channels.scm` file: +If Mango makes your desktop better, consider supporting its development. -```scheme -;; In $HOME/.config/guix/channels.scm -(cons (channel - (name 'mangowm) - (url "https://github.com/mangowm/mango.git") - (branch "main")) - ... ;; Your other channels - %default-channels) -``` +Thanks to everyone who has sponsored this project: -Then, run `guix pull` and after update you can either run -`guix install mangowm` or add it to your configuration via: + + + + + +
+ +
+ tonybanters +
+
-```scheme -(use-modules (mangowm)) ;; Add mangowm module +Crypto donations accepted — scan the QR code or send to the address shown: -;; Add mangowm to packages list -(packages (cons* - mangowm-git - ... ;; Other packages you specified - %base-packages)) -``` - -And then rebuild your system. - -## Other - -```bash -git clone -b 0.19.3 https://gitlab.freedesktop.org/wlroots/wlroots.git -cd wlroots -meson build -Dprefix=/usr -sudo ninja -C build install - -git clone -b 0.4.1 https://github.com/wlrfx/scenefx.git -cd scenefx -meson build -Dprefix=/usr -sudo ninja -C build install - -git clone https://github.com/mangowm/mango.git -cd mango -meson build -Dprefix=/usr -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 -- Wallpaper setup (swww, swaybg) -- Notification daemon (swaync, dunst,mako) -- 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) - -## Some Common Default Keybindings - -- 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 - -## My Dotfiles - -### Daily -- Dependencies - -```bash -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 -``` - -### 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 -``` - - -## Config Documentation - -Refer to the repo wiki [wiki](https://github.com/mangowm/mango/wiki/) - -or the website docs [docs](https://mangowm.github.io/) - -# NixOS + Home-manager - -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. - -Here's an example of using the modules in a flake: - -```nix -{ - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - flake-parts.url = "github:hercules-ci/flake-parts"; - mango = { - url = "github:mangowm/mango"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - outputs = - inputs@{ self, flake-parts, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - debug = true; - systems = [ "x86_64-linux" ]; - flake = { - nixosConfigurations = { - hostname = inputs.nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - inputs.home-manager.nixosModules.home-manager - - # Add mango nixos module - inputs.mango.nixosModules.mango - { - programs.mango.enable = true; - } - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - backupFileExtension = "backup"; - users."username".imports = - [ - ( - { ... }: - { - wayland.windowManager.mango = { - enable = true; - settings = '' - # see config.conf - ''; - autostart_sh = '' - # see autostart.sh - # Note: here no need to add shebang - ''; - }; - } - ) - ] - ++ [ - # Add mango hm module - inputs.mango.hmModules.mango - ]; - }; - } - ]; - }; - }; - }; - }; -} -``` - -# Packaging mango - -To package mango for other distributions, you can check the reference setup for: - -- [nix](https://github.com/mangowm/mango/blob/main/nix/default.nix) -- [arch](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=mangowm-git). -- [gentoo](https://data.gpo.zugaina.org/guru/gui-wm/mangowm) - -You might need to package `scenefx` for your distribution, check availability [here](https://github.com/wlrfx/scenefx.git). - -If you encounter build errors when packaging `mango`, feel free to create an issue and ask a question, but -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://github.com/dqrk0jeste/owl - Basal window animation - -- 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. - - -# 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. - -image - - -Thanks to the following friends for their sponsorship of this project: - -

- -

\ No newline at end of file +
+Show QR code +
+sponsor QR +