Installation - bakkeby/dusk GitHub Wiki

It is generally expected that you have some experience installing and using dwm before trying out dusk, in which case the information on this page should be nothing new.

Prerequisites

This guide assumes your system has the latest updates before going ahead with the installation.

Note that you may want to keep the source directories of the tools you download in a suitable location for future reference as you may need to recompile them to apply configuration changes.

arch

Dependencies

  • base-devel
  • extra/git
  • extra/libx11
  • extra/libxcb
  • extra/libxinerama
  • extra/libxft
  • extra/imlib2
  • extra/yajl

Optional dependencies

  • libxfixes
  • libxi
  • fribidi
sudo pacman -S base-devel extra/git extra/libx11 extra/libxcb extra/libxinerama extra/libxft extra/imlib2 extra/yajl

If you find yourself missing a library then this can usually be found by searching for the file name using pacman:

$ pacman -F Xlib-xcb.h
extra/libx11 1.6.12-1 [installed: 1.7.2-1]
    usr/include/X11/Xlib-xcb.h

Ubuntu

Dependencies

  • build-essential
  • git
  • libx11-dev
  • libx11-xcb-dev
  • libxcb-res0-dev
  • libxinerama-dev
  • libimlib2-dev
  • libyajl-dev

Optional dependencies

  • libxfixes-dev
  • libxi-dev
  • libfribidi-dev
sudo apt install build-essential git libx11-dev libx11-xcb-dev libxcb-res0-dev libxinerama-dev libxft-dev libimlib2-dev libyajl-dev

It is worth checking the version of gcc on debian based systems as they may come with older implementations that can result in compilation errors.

gcc --version

You would expect at least v8.x or above here.

If you find yourself missing a library then this can usually be found by searching for the file name using apt-file, a tool that have to be installed separately:

$ sudo apt install apt-file
$ sudo apt-file update
$ apt-file search xcb/res.h
libxcb-res0-dev: /usr/include/xcb/res.h

Void Linux

Dependencies

  • base-devel
  • libX11-devel
  • libXft-devel
  • libXinerama-devel
  • freetype-devel
  • fontconfig-devel
  • libxcb-devel
  • yajl-devel
  • imlib2-devel

Optional dependencies

  • libXfixes-devel
  • libXi-devel
  • fribidi-devel
xbps-install -Su base-devel libX11-devel libXft-devel libXinerama-devel freetype-devel fontconfig-devel libxcb-devel yajl-devel imlib2-devel

If you find yourself missing a library then this can usually be found by searching for the file name using xlocate, a tool that have to be installed separately via the xtools package:

$ xlocate yajl/yajl_gen.h
yajl-devel-2.1.0._4      /usr/include/yajl/yajl_gen.h

Installing dmenu

It is highly recommended to install dmenu given that it is used as the default launcher for starting applications, but you can of course use another launcher of choice if you prefer.

For the most seamless experience I would recommend using my own build of dmenu which comes with a series of built-in features:

Then make a few configuration changes to set the border width as well as bar padding. This is so that the menu cleanly overlaps the bar in dusk.

Change the border_width setting to 5 pixels.

static unsigned int border_width = 5;

and the vertical and horizontal padding to 5 pixels.

static int vertpad = 5;
static int sidepad = 5;

Alternatively you can use your own, grab the unpatched version on the suckless website, or try dmenu-flexipatch.

While you likely can get this tool via your distribution's package manager it is better to compile it from scratch as it will make it easier should you want to apply customisations later on.

Clone the repository.

git clone https://github.com/bakkeby/dmenu.git

or

git clone https://github.com/bakkeby/dmenu-flexipatch.git dmenu

or

git clone https://git.suckless.org/dmenu

Then run make compile and install.

$ cd dmenu
$ make
$ sudo make install
$ cd ..

The initial make is to copy the configuration template config.def.h to config.h, the latter being your personal configuration file which you can customise to your own liking.

Installing st

The default configuration for dusk uses st as the default terminal and a few minor things like scratchpads. Installing st is entirely optional, but we recommend including it to avoid ending up in a situation where one can't open any terminal.

While you likely can get this terminal via your distribution's package manager it is better to compile it from scratch as it will make it easier should you want to apply customisations later on.

Clone the repository.

git clone https://git.suckless.org/st

or

git clone https://github.com/bakkeby/st-flexipatch.git st
$ cd st
$ make
$ sudo make install
$ cd ..

As with dmenu and most suckless tools the initial make is to copy the configuration template config.def.h to config.h which you can customise to your own liking.

Installing slstatus-for-dusk

Installing slstatus is entirely optional, but is recommended for when you want to set up statuses.

The slstatus-for-dusk fork allows for each of the statuses in dusk to be updated independently.

git clone https://github.com/bakkeby/slstatus-for-dusk.git slstatus
$ cd slstatus
$ make
$ sudo make install
$ cd ..

This can also be installed at a later time of course.

Installing dusk

The installation of dusk will be similar to installing dmenu or st.

Clone the repository, then compile and install.

$ git clone https://github.com/bakkeby/dusk.git
$ cd dusk
$ make
$ sudo make install

A dusk.desktop file will be placed in /usr/share/xsessions/ so if you are using a login manager you should now be able to select dusk as the window manager when logging in.

If you do not use a login manager then you already know what you are doing. Add exec dusk at the end of your ~/.xinitrc file.

By default new terminals are opened by using the keyboard shortcut of Super+Enter (return) while dmenu is started using Super+d.

You can also refer to man dusk for the most basic keybindings.


If there is anything that is not clear with regards to installation let me know and I will try to make improvements for future revisions.


Back to Features.

⚠️ **GitHub.com Fallback** ⚠️