You are not logged in.

#1 2026-09-12 02:22:22

hhh
Hercule Poirot
From: Belgium
Registered: 2015-09-17
Posts: 17,535
Website

(Wayland forky/sid) HowTo: Build and install mangowm from source

Carried over from https://forums.bunsenlabs.org/viewtopic.php?id=9877

These mangowm instructions assume you've built and installed niri (see the link above), which probably brought in some dependencies that this tutorial might miss.

mangowm, a Wayland fork of dwm/dwl, is not available in Debian but we can build it from source. There are no uninstall scripts, so removal is manual, but this is sid... let's see if it breaks!

The instructions for building from source om the GitHub page are fine, it's the dependencies that are a bitch. I'm a bigger, much moodier bitch though, so...

More build packages...

sudo apt install meson cmake

wlroots dependencies...

sudo apt install libdrm-dev wayland-protocols libweston-16-dev glslang-tools spirv-tool

mango dependencies...

sudo apt install libxcb-icccm4-dev libcjson-dev

scenefx should be good. Then just follow the instructions...

wl-roots...

git clone -b 0.20.2 https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots
meson build -Dprefix=/usr
sudo ninja -C build install

scenefx...

git clone -b 0.5 https://github.com/wlrfx/scenefx.git
cd scenefx
meson build -Dprefix=/usr
sudo ninja -C build install

mango...

git clone https://github.com/mangowm/mango.git
cd mango
meson build -Dprefix=/usr
sudo ninja -C build install

glslang-tools and spirv-tool, I found you! Bitches! You didn't think I'd run a build-deps on http://deb.debian.org/debian/pool/main/ … 20.2-1.dsc , did you? I LEARNED THAT TRICK OVER A DECADE AGO! IN YOUR FACES!!!

My "I got you, bitch." moment...
https://packages.debian.org/sid/libwlroots-0.20-dev

Please let me know if you try this and it either fails or succeeds. Cheers.

-edit- Looking closer at the text readout of the *.dsc I linked, spirv-tool is a dependency of glslang tools. I'll leave it in the deps line I posted, better safe than sorry and no harm no fowl.

Last edited by hhh (2026-09-12 02:54:23)


Why why why why?!!???

Offline

#2 2026-09-12 04:10:05

cog
Member
From: The Southwest
Registered: 2015-10-27
Posts: 679
Website

Re: (Wayland forky/sid) HowTo: Build and install mangowm from source

@hhh you can get mango from my repos as well.  Hatchery has been using mango with a little quickshell config I wrote for most of the year.  hatcherylinux.org or just get the repo from my live build.

https://github.com/troutcobbler/hatcher … g/archives

I’m a couple releases behind because mango releases so much but I’ll update it before too long.  At least I’m up to date with wlroots 20 and the new scenefx, plus the new mmsg rebase to json.  JSON is actually easier to parse in quickshell than a proprietary standard output.


Feel free to use my Debian source package.  Probably as you’ve realized the dependencies are the biggest hurdle.

Offline

#3 2026-09-12 05:19:37

hhh
Hercule Poirot
From: Belgium
Registered: 2015-09-17
Posts: 17,535
Website

Re: (Wayland forky/sid) HowTo: Build and install mangowm from source

@cog, much obliged! Yes, I think I was clear on that... A bitch.


Why why why why?!!???

Offline

#4 2026-09-12 06:25:16

cog
Member
From: The Southwest
Registered: 2015-10-27
Posts: 679
Website

Re: (Wayland forky/sid) HowTo: Build and install mangowm from source

No prob.  The promise of Mango was that it would be easier to maintain with a bunch of features.  That’s kind of shifted recently.  Still great but bordering on hyprland with deps.  You use to could build it with what’s in Trixie.  It’s still a great compositor so I’m still using it.

Offline

#5 Today 10:12:37

unklar
Back to the roots 1.9
From: #! BL
Registered: 2015-10-31
Posts: 3,106

Re: (Wayland forky/sid) HowTo: Build and install mangowm from source

hhh wrote:

Please let me know if you try this and it either fails or succeeds. Cheers.

^^Thank you for your excellent instructions!  smile

Unfortunately, the story ends here.  sad

mango...

...
sudo ninja -C build install

In my case, it wasn't glslang-tools and spirv-tools (you wrote spriv-tool above). Here it was:

meson.build:32:12: ERROR: Dependency "xcb-randr" not found (tried pkg-config and cmake)

Based on your suggestion: https://deb.debian.org/debian/pool/main … 20.2-1.dsc  I was able to fix that. Almost all libxcb... packages had to be installed.
The dependency debhelper-compat does not exist in sid, therefore debhelper.

yay...   big_smile

unklar@debian:~/mango$ meson build -Dprefix=/usr
The Meson build system
Version: 1.12.1
Source dir: /home/unklar/mango
Build dir: /home/unklar/mango/build
Build type: native build
Project name: mango
Project version: 0.17.4
C compiler for the host machine: cc (gcc 16.2.0 "cc (Debian 16.2.0-3) 16.2.0")
C linker for the host machine: cc ld.bfd 2.47
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program wayland-scanner found: YES (/usr/bin/wayland-scanner)
Found pkg-config: YES (/usr/bin/pkg-config) 2.5.1
Run-time dependency wayland-protocols found: YES 1.49
Library m found: YES
Run-time dependency libdrm found: YES 2.4.134
Run-time dependency xcb found: YES 1.17.0
Run-time dependency xcb-icccm found: YES 0.4.2
Run-time dependency xcb-randr found: YES 1.17.0
Run-time dependency wayland-server found: YES 1.26.0
Run-time dependency wlroots-0.20 found: YES 0.20.2
Run-time dependency xkbcommon found: YES 1.13.1
Run-time dependency libinput found: YES 1.31.3
Run-time dependency wayland-client found: YES 1.26.0
Run-time dependency libpcre2-8 found: YES 10.48
Run-time dependency scenefx-0.5 found: YES 0.5.0
Run-time dependency pixman-1 found: YES 0.46.4
Run-time dependency libcjson found: YES 1.7.19
Run-time dependency pangocairo found: YES 1.58.0
Program git found: YES (/usr/bin/git)
Program find found: YES (/usr/bin/find)
Configuring mmsg.1 using configuration
Build targets in project: 2

mango 0.17.4

  User defined options
    prefix: /usr

Found ninja-1.13.2 at /usr/bin/ninja
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.

Finally, the errors persist even after installing the libwlroots-0.20-dev package from Debian with an "undefined reference to"...  sad

unklar@debian:~/mango$ sudo ninja -C build install
ninja: Entering directory `build'
[54/55] Linking target mango
FAILED: [code=1] mango 
cc  -o mango mango.p/meson-generated_xdg-shell-protocol.c.o mango.p/meson-generated_pointer-constraints-unstable-v1-protocol.c.o mango.p/meson-generated_xdg-output-unstable-v1-protocol.c.o mango.p/meson-generated_cursor-shape-v1-protocol.c.o mango.p/meson-generated_tablet-v2-protocol.c.o mango.p/meson-generated_ext-image-copy-capture-v1-protocol.c.o mango.p/meson-generated_ext-image-capture-source-v1-protocol.c.o mango.p/meson-generated_ext-foreign-toplevel-list-v1-protocol.c.o mango.p/meson-generated_ext-workspace-v1-protocol.c.o mango.p/meson-generated_tearing-control-v1-protocol.c.o mango.p/meson-generated_wlr-foreign-toplevel-management-unstable-v1-protocol.c.o mango.p/meson-generated_wlr-layer-shell-unstable-v1-protocol.c.o mango.p/meson-generated_wlr-output-power-management-unstable-v1-protocol.c.o mango.p/src_manage_layer.c.o mango.p/src_manage_xwayland_primary.c.o mango.p/src_manage_client.c.o mango.p/src_manage_misc.c.o mango.p/src_manage_monitor.c.o mango.p/src_ipc_ipc.c.o mango.p/src_draw_text-node.c.o mango.p/src_draw_dim-node.c.o mango.p/src_main.c.o mango.p/src_overview_overview.c.o mango.p/src_ext-protocol_xdg-output.c.o mango.p/src_ext-protocol_foreign-toplevel.c.o mango.p/src_ext-protocol_hdr.c.o mango.p/src_ext-protocol_tearing.c.o mango.p/src_ext-protocol_ext-workspace.c.o mango.p/src_ext-protocol_xdg-activation.c.o mango.p/src_ext-protocol_text-input.c.o mango.p/src_switcher_switcher.c.o mango.p/src_layout_arrange.c.o mango.p/src_layout_vertical.c.o mango.p/src_layout_dwindle.c.o mango.p/src_layout_horizontal.c.o mango.p/src_layout_scroll.c.o mango.p/src_layout_overview.c.o mango.p/src_animation_layer.c.o mango.p/src_animation_tag.c.o mango.p/src_animation_common.c.o mango.p/src_animation_client.c.o mango.p/src_dispatch_bind.c.o mango.p/src_input_pointer.c.o mango.p/src_input_device.c.o mango.p/src_input_switch.c.o mango.p/src_input_keyboard.c.o mango.p/src_input_trackpad.c.o mango.p/src_input_tablet.c.o mango.p/src_input_touch.c.o mango.p/src_config_parse_config.c.o mango.p/src_config_preset.c.o mango.p/src_common_util.c.o mango.p/src_common_log.c.o mango.p/src_common_server.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group -lm /usr/lib/x86_64-linux-gnu/libdrm.so /usr/lib/x86_64-linux-gnu/libxcb.so /usr/lib/x86_64-linux-gnu/libxcb-icccm.so /usr/lib/x86_64-linux-gnu/libxcb-randr.so /usr/lib/x86_64-linux-gnu/libscenefx-0.5.so /usr/lib/x86_64-linux-gnu/libwayland-server.so /usr/lib/x86_64-linux-gnu/libwlroots-0.20.so /usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libinput.so /usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libpcre2-8.so /usr/lib/x86_64-linux-gnu/libpixman-1.so /usr/lib/x86_64-linux-gnu/libcjson.so /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so /usr/lib/x86_64-linux-gnu/libpango-1.0.so /usr/lib/x86_64-linux-gnu/libcairo.so /usr/lib/x86_64-linux-gnu/libharfbuzz.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so -Wl,--end-group
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_main.c.o: In Funktion »cleanup«:
/home/unklar/mango/build/../src/main.c:209:(.text+0x732): undefinierter Verweis auf »wlr_xwayland_destroy«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_main.c.o: In Funktion »setup«:
/home/unklar/mango/build/../src/main.c:854:(.text+0x17ad): undefinierter Verweis auf »wlr_drm_lease_v1_manager_create«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/main.c:879:(.text+0x1832): undefinierter Verweis auf »wlr_xwayland_create«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_is_x11_popup«:
/home/unklar/mango/build/../src/manage/client.c:690:(.text+0x486): undefinierter Verweis auf »wlr_xwayland_surface_has_window_type«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »toplevel_from_wlr_surface«:
/home/unklar/mango/build/../src/manage/client.c:85:(.text+0x7b3): undefinierter Verweis auf »wlr_xwayland_surface_try_from_wlr_surface«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_activate_surface«:
/home/unklar/mango/build/../src/manage/client.c:136:(.text+0x8cc): undefinierter Verweis auf »wlr_xwayland_surface_try_from_wlr_surface«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:138:(.text+0x93b): undefinierter Verweis auf »wlr_xwayland_surface_set_minimized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_is_float_type«:
/home/unklar/mango/build/../src/manage/client.c:256:(.text+0xb9b): undefinierter Verweis auf »wlr_xwayland_surface_has_window_type«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:258:(.text+0xbad): undefinierter Verweis auf »wlr_xwayland_surface_has_window_type«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:260:(.text+0xbe2): undefinierter Verweis auf »wlr_xwayland_surface_has_window_type«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:262:(.text+0xbf4): undefinierter Verweis auf »wlr_xwayland_surface_has_window_type«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_wants_focus«:
/home/unklar/mango/build/../src/manage/client.c:728:(.text+0x1608): undefinierter Verweis auf »wlr_xwayland_surface_override_redirect_wants_focus«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:730:(.text+0x1620): undefinierter Verweis auf »wlr_xwayland_surface_icccm_input_model«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_activate_surface«:
/home/unklar/mango/build/../src/manage/client.c:136:(.text+0x5ab7): undefinierter Verweis auf »wlr_xwayland_surface_try_from_wlr_surface«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:139:(.text+0x5aca): undefinierter Verweis auf »wlr_xwayland_surface_activate«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_wants_focus«:
/home/unklar/mango/build/../src/manage/client.c:728:(.text+0x5b73): undefinierter Verweis auf »wlr_xwayland_surface_override_redirect_wants_focus«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:730:(.text+0x5b87): undefinierter Verweis auf »wlr_xwayland_surface_icccm_input_model«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:728:(.text+0x5ee4): undefinierter Verweis auf »wlr_xwayland_surface_override_redirect_wants_focus«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:730:(.text+0x5efc): undefinierter Verweis auf »wlr_xwayland_surface_icccm_input_model«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »handle_xwayland_surface_request_activate«:
/home/unklar/mango/build/../src/manage/client.c:4402:(.text+0x6548): undefinierter Verweis auf »wlr_xwayland_surface_activate«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_maximized«:
/home/unklar/mango/build/../src/manage/client.c:623:(.text+0x6af3): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_fullscreen«:
/home/unklar/mango/build/../src/manage/client.c:333:(.text+0x6b0e): undefinierter Verweis auf »wlr_xwayland_surface_set_fullscreen«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_maximized«:
/home/unklar/mango/build/../src/manage/client.c:623:(.text+0x6b36): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:623:(.text+0x746c): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_fullscreen«:
/home/unklar/mango/build/../src/manage/client.c:333:(.text+0x74b5): undefinierter Verweis auf »wlr_xwayland_surface_set_fullscreen«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:333:(.text+0x76e3): undefinierter Verweis auf »wlr_xwayland_surface_set_fullscreen«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_maximized«:
/home/unklar/mango/build/../src/manage/client.c:623:(.text+0x76fc): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_size«:
/home/unklar/mango/build/../src/manage/client.c:593:(.text+0x9d64): undefinierter Verweis auf »wlr_xwayland_surface_configure«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_init_unmanaged«:
/home/unklar/mango/build/../src/manage/client.c:1886:(.text+0xad2e): undefinierter Verweis auf »wlr_xwayland_surface_configure«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_wants_focus«:
/home/unklar/mango/build/../src/manage/client.c:728:(.text+0xadb6): undefinierter Verweis auf »wlr_xwayland_surface_override_redirect_wants_focus«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:730:(.text+0xadd9): undefinierter Verweis auf »wlr_xwayland_surface_icccm_input_model«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »handle_xwayland_ready«:
/home/unklar/mango/build/../src/manage/client.c:4559:(.text+0xbad3): undefinierter Verweis auf »wlr_xwayland_set_seat«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:4574:(.text+0xbb61): undefinierter Verweis auf »wlr_xwayland_set_cursor«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_activate_surface«:
/home/unklar/mango/build/../src/manage/client.c:139:(.text+0x8f4): undefinierter Verweis auf »wlr_xwayland_surface_activate«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_send_close«:
/home/unklar/mango/build/../src/manage/client.c:311:(.text+0xd80): undefinierter Verweis auf »wlr_xwayland_surface_close«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_fullscreen«:
/home/unklar/mango/build/../src/manage/client.c:333:(.text+0xe08): undefinierter Verweis auf »wlr_xwayland_surface_set_fullscreen«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_minimized«:
/home/unklar/mango/build/../src/manage/client.c:609:(.text+0x148c): undefinierter Verweis auf »wlr_xwayland_surface_set_minimized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_maximized«:
/home/unklar/mango/build/../src/manage/client.c:623:(.text+0x14ba): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_tiled«:
/home/unklar/mango/build/../src/manage/client.c:637:(.text+0x1540): undefinierter Verweis auf »wlr_xwayland_surface_set_maximized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_send_close«:
/home/unklar/mango/build/../src/manage/client.c:311:(.text+0x4140): undefinierter Verweis auf »wlr_xwayland_surface_close«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_fullscreen«:
/home/unklar/mango/build/../src/manage/client.c:333:(.text+0x7815): undefinierter Verweis auf »wlr_xwayland_surface_set_fullscreen«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »client_set_minimized«:
/home/unklar/mango/build/../src/manage/client.c:609:(.text+0x7f41): undefinierter Verweis auf »wlr_xwayland_surface_set_minimized«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:609:(.text+0x7f85): undefinierter Verweis auf »wlr_xwayland_surface_set_minimized«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_client.c.o: In Funktion »handle_xwayland_surface_request_configure«:
/home/unklar/mango/build/../src/manage/client.c:4446:(.text+0xb7fc): undefinierter Verweis auf »wlr_xwayland_surface_configure«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/client.c:4437:(.text+0xb868): undefinierter Verweis auf »wlr_xwayland_surface_configure«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_misc.c.o: In Funktion »handle_drm_lease_request«:
/home/unklar/mango/build/../src/manage/misc.c:714:(.text+0x1398): undefinierter Verweis auf »wlr_drm_lease_request_v1_grant«
/usr/bin/x86_64-linux-gnu-ld.bfd: /home/unklar/mango/build/../src/manage/misc.c:718:(.text+0x13cf): undefinierter Verweis auf »wlr_drm_lease_request_v1_reject«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_manage_monitor.c.o: In Funktion »handle_new_output«:
/home/unklar/mango/build/../src/manage/monitor.c:606:(.text+0x250b): undefinierter Verweis auf »wlr_drm_lease_v1_manager_offer_output«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_animation_client.c.o: In Funktion »scene_buffer_apply_effect«:
/home/unklar/mango/build/../src/animation/client.c:248:(.text+0x9c): undefinierter Verweis auf »wlr_xwayland_surface_try_from_wlr_surface«
/usr/bin/x86_64-linux-gnu-ld.bfd: mango.p/src_input_keyboard.c.o: In Funktion »handle_keyboard_key«:
/home/unklar/mango/build/../src/input/keyboard.c:659:(.text+0xe2f): undefinierter Verweis auf »wlr_xwayland_surface_try_from_wlr_surface«
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Edit: I guess I'll have to uninstall the package again because it's “not the latest version.”

Last edited by unklar (Today 10:26:20)

Offline

Board footer

Powered by FluxBB