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

119 lines
5.3 KiB
Markdown

# 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](https://git.speedie.site/speedie/speedie-overlay).
The Arch packages can be found [here](https://ls.speedie.site/?b=releases%2Fspmenu),
and can be installed using `pacman -U /path/to/package`. Alternatively you can
add [my full Arch repository](https://git.speedie.site/speedie-aur) 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.
- If you use FreeBSD, see [[Using spmenu on FreeBSD]].
- If you use Gentoo Linux, see [[Using spmenu on Gentoo]].
- If you use macOS, see [[Using spmenu on macOS]].
## 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](https://git.speedie.site/speedie/spmenu) or from
a [release tarball](https://ls.speedie.site/?b=releases%2Fspmenu).
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.