

Package Installation [#package-installation]

mangowm is available as a pre-built package on several distributions. Choose your distribution below.

***

AerynOS [#aerynos]

mangowm is available in the **AerynOS package repository**.

You can install it using the `moss` package manager:

```bash
sudo moss install mangowm
```

***

Arch Linux [#arch-linux]

mangowm is available in the &#x2A;*Arch User Repository (AUR)**.

You can install it using an AUR helper like `yay` or `paru`:

```bash
yay -S mangowm-git
```

> **Tip:** This package pulls the latest git version, ensuring you have the newest features and fixes.

***

Fedora [#fedora]

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

> **Warning:** Both commands require root privileges. Use `sudo` if needed.

```bash
dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
```

Then, install the package:

```bash
dnf install mangowm
```

***

Gentoo [#gentoo]

The package is hosted in the community-maintained **GURU** repository.

1. **Add the GURU repository**
   ```bash
   emerge --ask --verbose eselect-repository
   eselect repository enable guru
   emerge --sync guru
   ```

2. **Unmask packages**
   Add the required packages to your `package.accept_keywords` file:
   * `gui-libs/scenefx`
   * `gui-wm/mangowm`

3. **Install mango**
   ```bash
   emerge --ask --verbose gui-wm/mangowm
   ```

***

Guix System [#guix-system]

The package definition is described in the source repository.

1. **Add mango channel**
   Add to `$HOME/.config/guix/channels.scm`:
   ```scheme
   (cons (channel
           (name 'mangowm)
           (url "https://github.com/mangowm/mango.git")
           (branch "main"))
         %default-channels)
   ```

2. **Install**
   After running `guix pull`, you can install mangowm:

   ```bash
   guix install mangowm
   ```

   Or add it to your system configuration using the mangowm module:

   ```scheme
   (use-modules (mangowm))

   (packages (cons*
               mangowm-git
               ... ;; Other packages
               %base-packages))
   ```

> **Tip:** For more information, see the [Guix System documentation](https://guix.gnu.org/manual/devel/en/html_node/Channels.html).

***

NixOS [#nixos]

The repository provides a Flake with a NixOS module.

1. **Add flake input**
   ```nix
   # flake.nix
   {
     inputs = {
       nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
       mangowm = {
         url = "github:mangowm/mango";
         inputs.nixpkgs.follows = "nixpkgs";
       };
       # other inputs ...
     };
   }
   ```

2. **Import the NixOS module**

   **Option A — Import in `configuration.nix`:**

   ```nix
   # configuration.nix (or any other file that you import)
   {inputs, ...}: {
     imports = [
       inputs.mangowm.nixosModules.mango
       # .. other imports ...
     ];

     # ...
   }
   ```

   **Option B — Import directly in flake:**

   ```nix
   # flake.nix
   {
     # ...

     outputs = { self, nixpkgs, mangowm, ...}@inputs: let
       inherit (nixpkgs) lib;
       # ...
     in {
       nixosConfigurations.YourHostName = lib.nixosSystem {
         modules = [
           mangowm.nixosModules.mango # or inputs.mangowm.nixosModules.mango
           # other imports ...
         ];
       };
     }
   }
   ```

3. **Enable the module**
   ```nix
   # configuration.nix (or any other file that you import)
   {
     programs.mango.enable = true;
   }
   ```

4. **Extra options**
   * `programs.mango.package` — the mango package to use, allows usage of custom mango drvs
   * `programs.mango.addLoginEntry` (default: `true`) — adds login entry to the display manager

***

PikaOS [#pikaos]

mangowm is available in the **PikaOS package repository**.

You can install it using the `pikman` package manager:

```bash
pikman install mangowm
```

***

Building from Source [#building-from-source]

If your distribution isn't listed above, or you want the latest unreleased changes, you can build mangowm from source.

> **Info:** Ensure the following dependencies are installed before proceeding:
>
> * `wayland`
> * `wayland-protocols`
> * `libinput`
> * `libdrm`
> * `libxkbcommon`
> * `pixman`
> * `libdisplay-info`
> * `libliftoff`
> * `hwdata`
> * `seatd`
> * `pcre2`
> * `xorg-xwayland`
> * `libxcb`

You will need to build `wlroots` and `scenefx` manually as well.

1. **Build wlroots**
   Clone and install the specific version required (check README for latest version).
   ```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
   ```

2. **Build scenefx**
   This library handles the visual effects.
   ```bash
   git clone -b 0.4.1 https://github.com/wlrfx/scenefx.git
   cd scenefx
   meson build -Dprefix=/usr
   sudo ninja -C build install
   ```

3. **Build mangowm**
   Finally, compile the compositor itself.
   ```bash
   git clone https://github.com/mangowm/mango.git
   cd mango
   meson build -Dprefix=/usr
   sudo ninja -C build install
   ```
