8.3 KiB
Executable file
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
.
- Used for multi-monitor support. It can be disabled if you do not need it
by commenting the XINERAMA libraries in
- imlib2
- Used for tag previews and window icons. It can be disabled if you do not
need it. To do this, comment out
IMLIB2LIBS
intoggle.mk
and setUSEIMLIB2
,USEWINICON
andUSETAGPREVIEW
to0
intoggle.h
.
- Used for tag previews and window icons. It can be disabled if you do not
need it. To do this, comment out
- pango
- yajl
- Used for IPC support. It can be disabled if you do not need it. To do
this, comment out
YAJLINC
andYAJLLIBS
intoggle.mk
and setUSEIPC
to0
intoggle.h
.
- Used for IPC support. It can be disabled if you do not need it. To do
this, comment out
- tcc
- This is a compiler. It is used because it is much faster than
clang
orgcc
(although at the expense of debugging and compatibility). You can swap it out by passingCC=cc
to themake
command later when we compile speedwm.
- This is a compiler. It is used because it is much faster than
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'.