speedwm-wiki/pages/Getting Started.md
2023-01-31 22:34:58 +01:00

8.4 KiB

Getting Started

speedwm is a window manager forked from dwm (also known as dynamic window manager). It manages the user's open windows and tiles them according to a set layout. This is what makes it dynamic, unlike windows managers like i3 which you may be used to.

This is an X11 window manager, you need to use X.

Yes, this is an X11 window manager. I do not like Wayland and it's philosophies, and I will not support it for multiple reasons. See Wayland support for my reasoning behind this. Hate me all you want for it!

If it isn't clear, xorg-server as well as xinit or sx is pretty much expected. You can also use display managers like sddm or lightdm although it should be mentioned that ly is known to have issues with dwm and therefore also speedwm. Do note that setting up X11 is out of the scope of this wiki, and you need to figure out how to do that yourself.

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 systems that do not support speedwm are macOS and Microsoft Windows. UNIX like operating systems are the most likely to run it.

  • Nearly all GNU/Linux distributions
    • NixOS and GNU Guix may require separate instructions. I will not provide support for these, use the existing documentation to set it up.
  • FreeBSD, OpenBSD, NetBSD
    • There are likely more BSDs that can run speedwm, but I cannot support all of them. Try it and see if it works.

Installation on Gentoo GNU/Linux

Gentoo has slightly different instructions for setting up speedwm. While you can follow along with the generic installation instructions, I have a Gentoo overlay with packages for all speedwm versions.

To get started, add my overlay. Then simply emerge x11-wm/speedwm x11-wm/libspeedwm x11-wm/speedwm-extras. Optionally, you may emerge x11-misc/spde instead, which is a metapackage for a lot of stuff including fonts, and general programs that work well for me.

If you want to install speedwm using Git, do this by adding the following lines:

=x11-wm/speedwm-9999 **

=x11-wm/libspeedwm-9999 **

=x11-wm/speedwm-extras-9999 **

to /etc/portage/package.accept_keywords and then emerging the packages as per the instructions above.

Installation on generic GNU/Linux distributions

Installing speedwm on most GNU/Linux distributions is very simple. First, determine if you want to install it using Git (the absolute latest version) or using a stable tarball.

As of 26/01/2023, 1.8 is the latest tarball release which is not very stable. For this reason, it is recommended that you git clone the repository. If you do not have git, install it using your distribution's package manager. If you're (still) going to be using a 'stable' tarball, you do not need to install git.

While the list of dependencies will vary depending on the speedwm version you're going to install (see docs/dependencies.md for your specific version), below is a list for the latest release, 1.8 and soon to be 1.9.

  • libXft
  • libXinerama
    • Used for multi-monitor support. It can be disabled if you do not need it by commenting the XINERAMA libraries in toggle.mk.
  • imlib2
    • Used for tag previews and window icons. It can be disabled if you do not need it. To do this, comment out IMLIB2LIBS in toggle.mk and set USEIMLIB2, USEWINICON and USETAGPREVIEW to 0 in toggle.h.
  • pango
  • yajl
    • Used for IPC support. It can be disabled if you do not need it. To do this, comment out YAJLINC and YAJLLIBS in toggle.mk and set USEIPC to 0 in toggle.h.
  • tcc
    • This is a compiler. It is used because it is much faster than clang or gcc (although at the expense of debugging and compatibility). You can swap it out by passing CC=cc to the make command later when we compile speedwm.

Installation using git

This assumes you have git installed.

cd into a location where your normal user (not root) has permission to both read and write. Do not clone the speedwm repository in ~/.config as speedwm will write configuration files to that location.

Note: Cloning the repository to ~/.config is fine if the speedwm source code directory is not speedwm but speedwm will use the ~/.config/speedwm directory to store configuration files (not source code).

From here on, we're going to assume you are in the location ~/Documents! Run git clone https://codeberg.org/speedie/speedwm.git speedwm to clone the repository into a directory named speedwm. Provided the repository hasn't moved and you have a working internet connection, you should have received a copy of the speedwm source code.

You can now cd speedwm into it so we can actually install it. If you need to make changes to toggle.h, toggle.mk, host.mk or any other C source code, now is the time to do it.

Now, it's time to compile it! Provided you have all dependencies installed, this should be very, very easy and quick. Run make clean install as root to install speedwm. The binary will be in /usr/bin/speedwm. If you need to use a different compiler (tcc in Arch repositories has a few issues), you can run make CC=cc clean install to use the system default compiler. Alternatively use gcc instead of cc or whatever you want.

After installation, it is highly recommended that you move your source code directory to a safe place. speedwm is a source based window manager and most (but not all) changes you make to it are going to be done by recompiling the window manager. This is, of course done with the same make clean install command you used earlier.

I recommend you do this by forking the speedwm repository, and putting it on a Git repository somewhere. That way, you can always clone your specific version.

Warning: If you lose your source code, you will be unable to make any further changes to speedwm.

Now follow along with 'Using speedwm'.

Installation using a tarball

Installation using a tarball works pretty much the same. Visit the releases page and get the latest (or an old if you want) tarball. Avoid the 'Source Code (ZIP)' and 'Source Code (TAR.GZ)' options, get the 'speedwm-.tar.gz' file.

cd into a location where your normal user (not root) has permission to both read and write. Make sure ~/.config/speedwm is not used by anything.

Now we need to unpack the tarball and get our source code. To do this, you can use the tar command. I will spare you the time reading the man page and the command to unpack the tarball is tar -xpvf /path/to/the/speedwm/tarball.tar.gz. The -x argument here means extract. -p means preserve permissions. The -v means verbose, we want to see what's going on. -f means file, we want to specify a file to unpack.

After unpacking it, there should be one directory; speedwm-<version>. Let's cd speedwm-<version> into it. Now it's time to compile speedwm!

Provided you have all dependencies installed, this should be very, very easy and quick. Run make clean install as root to install speedwm. The binary will be in /usr/bin/speedwm. If you need to use a different compiler (tcc in Arch repostories has a few issues), you can run make CC=cc clean install to use the system default compiler. Alternatively use gcc instead of cc or whatever you want.

After installation, it is highly recommended that you move your source code directory to a safe place. speedwm is a source based window manager and most (but not all) changes you make to it are going to be done by recompiling the window manager. This is, of course done with the same make clean install command you used earlier.

I recommend you do this by putting the source code on a Git or subversion repository somewhere. That way, you can always clone your specific version.

Warning: If you lose your source code, you will be unable to make any further changes to speedwm.

Now follow along with 'Using speedwm'.