spmenu-wiki/Installing spmenu.md
2023-08-10 13:40:14 +02:00

5.3 KiB

Installing spmenu

This article goes through compiling spmenu from source code.

Existing packages

Note that I offer spmenu packages for both Arch and Gentoo. The Gentoo packages (ebuilds) can be had from my overlay. The Arch packages can be found here, and can be installed using pacman -U /path/to/package. Alternatively you can add my full Arch repository if you want.

If you're using any other distribution or operating system, you may have to build it yourself if the distro repositories do not contain spmenu. This wiki page is dedicated to installation instructions. Do note that these instructions are always going to be accurate for the latest spmenu version from Git, and not any release version. For exact instructions, you may want to see the included README.md file bundled with your chosen spmenu version.

Supported operating systems

This is not some arbitrary requirement. While it may run if it's not listed here, I will not be providing support due to having a lack of experience with said operating system. The main operating system that doesn't support spmenu is Microsoft Windows. UNIX like operating systems are most likely to run it. macOS is not officially supported as of 2.0, but it is possible to install spmenu on macOS using Xquartz. See Using spmenu on macOS.

  • GNU/Linux distributions
    • Some distros (such as NixOS or GNU Guix) may require specific instructions, if you're using those you know what you're doing.
  • FreeBSD, OpenBSD, NetBSD
    • There are likely more BSDs that can run spmenu, but I cannot support all of them. Try it and see if it works. If it doesn't please try and fix it. You know more about the BSDs than I do.

Compatibility

There are articles written regarding spmenu compatibility with specific distributions and operating systems. Here are some of them.

Dependencies

spmenu has several dependencies, but most of them are optional.

  • wayland-client
    • For Wayland support, which is optional if X11 support is enabled.
  • wayland-scanner
    • For Wayland support, which is optional if X11 support is enabled.
  • wayland-protocols
    • For Wayland support, which is optional if X11 support is enabled.
  • xkbcommon
    • For Wayland support, which is optional if X11 support is enabled.
  • libX11
    • For X11 support, which is optional if Wayland support is enabled.
  • libXrender
    • For X11 support, which is optional if Wayland support is enabled.
  • imlib2
    • Used for image support, can be disabled during compile time.
  • libXinerama
    • Used for multi-monitor support if X11 is enabled, can be disabled during compile time.
  • OpenSSL
    • Used to calculate MD5 of images if image support is enabled, can be disabled during compile time.
  • pango
  • cairo
  • libconfig
    • Can be disabled if you don't want/need config file support during compile time.
  • meson
    • Used to compile spmenu, not optional unless you're experienced with build systems.

Compiling spmenu

You can get spmenu from git or from a release tarball. Most users will prefer Git, due to the ease of getting updates, but it may come at a stability cost. Git users get the latest features right away.

This is ultimately a choice you will have to make, and as a developer I definitely prefer using Git over a tarball. It should be noted that spmenu does not really require modifying the source code any unlike dmenu.

If you went with the tarball approach, you can download the signature as well if you want to verify it hasn't been tampered with. You can skip this though if you want. However you need to unpack it, and from the command-line this can be done using tar -xpvf /path/to/tarball.

Now it's time to compile spmenu and install it. While the instructions in the README try to teach you how to use the build system called meson, we're going to just do the installation and not think much about it. If you want to truly understand what you're doing, you may refer to the README documentation.

NOTE: If you're using NixOS, consider using nix-shell -p pkgconfig cairo pango libconfig imlib2 wayland wayland-protocols libxkbcommon openssl fribidi xorg.libXinerama meson ninja pkg-config

Run meson setup build to set up the build itself. If you want to specify some specific options, you can pass those to meson. For example, to build spmenu without Wayland support, run meson setup build -Dwayland=false.

NOTE: If you want to set up spmenu again with different options, pass --reconfigure to meson.

Now you can run cd build to change directory into the build directory. Now, finally run meson install to install spmenu itself. Run this command as superuser/root. If you don't it will attempt to use sudo for authentication. If you want to compile spmenu but not install spmenu, you can simply run ninja -C build in the spmenu root directory.

That's it, now we're done. You can now use spmenu and spmenu_run.

From here, it is recommended that you follow Getting Started if you're new to spmenu.