1
0
Fork
You've already forked mangowm
0
Unofficial mirror of MangoWM on Github https://mangowm.github.io
  • C 95.7%
  • Nix 3.1%
  • Meson 0.8%
  • Scheme 0.4%
2026年04月14日 09:45:49 +08:00
.github fix: simplify sync commit message to use source URL only 2026年03月15日 18:20:50 +05:30
assets opt: change zoom_initial_ratio default to 0.4 2026年03月25日 16:20:07 +08:00
docs docs: update recommended package name 2026年04月08日 10:32:20 +08:00
mmsg refactor(mmsg): simplify dispatch arguments parsing 2026年04月11日 07:00:22 +08:00
nix feat(nix): add build-time configuration validation 2026年04月03日 18:14:50 +08:00
protocols Fix wayland protocol directory variable retrieval 2026年02月15日 07:08:35 -03:00
src fix: fix potential memory leaks 2026年04月06日 15:39:39 +08:00
.clang-format format code index to tab no space 2025年06月07日 14:40:13 +08:00
.gitignore change: change project name to mango 2025年07月30日 15:03:10 +08:00
flake.lock nix: merge mmsg to mangowc project 2025年10月18日 15:12:02 +08:00
flake.nix nix: fix warning by replacing pkgs.system with pkgs.stdenv.hostPlatform.system 2025年11月03日 13:17:25 +08:00
format.sh project: merge mmsg meson.build file into mango meson.build 2025年10月19日 18:13:11 +08:00
LICENSE change: change project name to mango 2025年07月30日 15:03:10 +08:00
LICENSE.dwl add dwl license 2025年02月28日 21:54:18 +08:00
LICENSE.dwm init 2025年02月03日 23:18:47 +08:00
LICENSE.sway init 2025年02月03日 23:18:47 +08:00
LICENSE.tinywl init 2025年02月03日 23:18:47 +08:00
LICENSE.wlroots comment: Add a reference declaration 2025年08月26日 16:24:26 +08:00
mangowm.scm fix(guix): pin wlroots version 2026年04月05日 18:43:49 +08:00
meson.build bump version to 0.12.8 2026年03月29日 08:40:40 +08:00
meson_options.txt feat: make asan as the debug type feature 2025年08月14日 12:58:55 +08:00
README.md added opensuse instructions 2026年04月14日 09:45:49 +08:00

Mango Wayland Compositor

MangoWM Logo

This project's development is based on 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

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.

Mango's preference is practicality: I tend to add features that genuinely help with daily workflows—things that make our work more convenient.

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.

Our discord

mangowm

Supported layouts

  • tile
  • scroller
  • monocle
  • grid
  • deck
  • center_tile
  • vertical_tile
  • vertical_grid
  • vertical_scroller
  • tgmix

Installation

Packaging status

Dependencies

  • 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 or through a AUR helper like yay:

yay -S mangowm-git

Gentoo Linux

The package is in the community-maintained repository called GURU. First, add GURU repository:

emerge --ask --verbose eselect-repository
eselect repository enable guru
emerge --sync guru

Then, add gui-libs/scenefx and gui-wm/mangowm to the package.accept_keywords.

Finally, install the package:

emerge --ask --verbose gui-wm/mangowm

openSUSE

The package is in the community-maintained repository called obs.

sudo opi in mangowm

Fedora Linux

The package is in the third-party Terra repository. First, add the Terra Repository.

Then, install the package:

dnf install mangowm

Guix System

The package definition is described in the source repository. First, add mangowm channel to channels.scm file:

;; In $HOME/.config/guix/channels.scm
(cons (channel
 (name 'mangowm)
 (url "https://github.com/mangowm/mango.git")
 (branch "main"))
 ... ;; Your other channels
 %default-channels)

Then, run guix pull and after update you can either run guix install mangowm or add it to your configuration via:

(use-modules (mangowm)) ;; Add mangowm module
;; Add mangowm to packages list
(packages (cons*
 mangowm-git
 ... ;; Other packages you specified
 %base-packages))

And then rebuild your system.

Other

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 mangowm
meson build -Dprefix=/usr
sudo ninja -C build install

Suggested Tools

Hybrid component

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
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
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
git clone -b dms https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
  • use my daily config
git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango

Config Documentation

Refer to the repo wiki wiki

or the website docs docs

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:

{
 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:

You might need to package scenefx for your distribution, check availability here.

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

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

@tonybanters