Installing suckless-utils
Tip
All of the steps should be reproducible within any modern Linux distros with internet access, but with minor tweaking.
Note
Some components might be also be available on your distro’s repository (for example the Arch User Repository). Refer to your distro’s package management for more info.
Dependencies
Before installing all components, we need the dependencies:
gitxorg(including drivers of course)base-devel(orbuild-essential/s)libX11(-develor-dev)libXft(-develor-dev)libXcb(-develor-dev)libXrender(-develor-dev)libXinerama(-develor-dev)freetype(-develor-dev)fontconfig(-develor-dev)Nerd Fonts (Hack as default, can be changed manually)
imlib2(-develor-dev)picom(for transparency)feh(optional, if one decided not to usepywal)pywal(for colors/wallpaper)slop(for theriodrawpatch indwm)yajl(for handling IPC indwmwithdwm-ipcenabled)eww(optional, but recommended)jgmenu(for handling context menus, recommended butxmenucould be used as an alternative.)libexif(-develor-dev) (fornsxiv)jq(for handling eww notifications, as well for theadelle-themescript.)pamixer(for the media related scripts.)nemo(for handling desktop icons, though other file managers with similar functionality could be used.)
In addition, if you use the Termux application for Android, you must also install these:
termux-X11repo (via main Termux app)proot/chrootPulseAudio (if you like audio support)
Display client of choice:
TigerVNC
VNC client
or
a XSDL client
or
Termux:X11 (both the
apkand the companiondebpackage.)
For installing spmenu:
Tip
You probably don’t need the Wayland libraries as well, you could build spmenu with only X11
by running meson setup build -Dwayland-=false.
wayland-client(-develor-dev, for Wayland support)wayland-scanner(-develor-dev, for Wayland support)wayland-protocols(-develor-dev, for Wayland support)xbcommon(-develor-dev, for Wayland support)pango(-develor-dev)cairo(-develor-dev)libconfig(-develor-dev)OpenSSL or
libssl(-develor-dev)meson
To make the tabbed windows functionality to work:
Note
This uses tabbed instead of it being integrated in dwm itself
due to modularity reasons, as well as ease of implementation.
cutxargsgreppstreesedwmctrlxdotoolxpropxwininfo
Note
Refer to patches.def.h and config.mk for additional dependencies, as well as tweaks for other Unix-based operating systems such as OpenBSD.
Setting up build environment and compilation
Install the dependencies defined above.
Clone the repository (
git clone --recurse-submodules)Change directory to the
suckless-utilsdirectory.Before compilation, remove
config.handpatches.h(if exists) to ensure loading of defaults.Start building
dwmfirst by usingmake cleanthenmakethensudo make install(Fornsxiv, it’smake install-all.)After that, build anything except
spmenuandslim.
Note
It is important to build anything except spmenu and slim
first as it uses a different build system than most of the components.
Setup
spmenuby runningmeson setup build. Pass-Dwayland-=falsefor disabling Wayland support.Run
ninja -C buildfor building spmenu binaries.Install
spmenuby runningmeson install -C build. It would prompt for root access if necessary.
Tip
Installing slim is optional as well, if one already have SDDM or GDM installed.
Make a build folder inside the
slimdirectory.Generate the
Makefileviacmake. Make sure thePREFIXvariable is set on the/usrdirectory.Then run
makeandsudo make installas usual.Set up the systemd service as well. If not, tweaking is necessary.
And it’s built!
Installing scripts
The suite also utilize a lot of scripts as well. For example, layoutmenu handles setting layouts easily in dwm.
Installing most scripts are just as easy as copying and pasting it to $PATH and changing permissions if neccessary.
Note
It is recommended to have $HOME/.local/bin in the $PATH variable to avoid conflicts.
Installing some scripts however might need some effort to install. For example, adelle-theme needs wget, tabb needs the same dependencies as enabling tabbed window functionality, and the quoter script needs messages.txt to be placed on $HOME.
Some are reliant to jgmenu, notably shutdown and layoutmenu.
In spmenu some actually needs to be compiled manually. Here’s the dependencies for some:
clipmenu-spmenu dependencies:
xselclipnotify
screenshot-spmenu dependencies:
curlxclip(X11)maim(X11)wayshot(Wayland)wl-clipboard(Wayland)slurp(Wayland)
wallpaper-spmenu dependencies:
xwallpaper
Scripts are also necessary to make dwmblocks-async working, as well as the complete eww functionality.
Congratulations! You just installed the suite! But hold your horses, we need some more set up, especially with the configuration files.