Skip to content

Debian 10 (Buster) Installation

niklas adam edited this page Jan 26, 2020 · 19 revisions

Before installing

Note: these instructions are community-maintained and are not supported by sway.

This document will guide you through installing Sway on Debian 10 (Buster).

If you prefer to just run a script, you can use this gist (which will install Sway 1.2 + additional goodies): https://gist.github.com/davidrios/535c43cbaafe6be665b7c6bd345ea6f4.

Else, proceed with the manual steps below for installing sway 1.4.

Make sure you have activated the contrib and non-free apt repositories.

sudo sed -i -e 's/main$/main contrib non-free/g' /etc/apt/sources.list

Update apt cache:

sudo apt update

Make sure you have the meson (>= 0.53.1) Depends ninja-build (>= 1.6) and python3 The stable debian apt source list uses an 0.49 version of meson. So you do need to add the debian sid mirror to your apt/sources.list example: deb http://ftp.de.debian.org/debian sid main Then again update the apt cache: sudo apt update and install newest meson sudo apt install meson then you can go and remove the sid mirror from your apt/sources.list and avoid 1000+ upgradable apt packages in sid compared to buster (if you do not remove the sid mirror after installing meson and you run a sudo apt update && sudo apt upgrade you may render your system unstable)

Create a directory to organize sources:

mkdir ~/sway-src

Install wlroots

First we'll install wlroots 0.10 with almost all extra dependencies (for now meson have been removed from this install line, it will return as soon as the buster apt meson package have been updated to 0.53.1):

sudo apt install build-essential cmake libwayland-dev wayland-protocols \
 libegl1-mesa-dev libgles2-mesa-dev libdrm-dev libgbm-dev libinput-dev \
 libxkbcommon-dev libudev-dev libpixman-1-dev libsystemd-dev libcap-dev \
 libxcb1-dev libxcb-composite0-dev libxcb-xfixes0-dev libxcb-xinput-dev \
 libxcb-image0-dev libxcb-render-util0-dev libx11-xcb-dev libxcb-icccm4-dev \
 freerdp2-dev libwinpr2-dev libpng-dev libavutil-dev libavcodec-dev \
 libavformat-dev universal-ctags

sudo apt install libelogind-dev libxcb-util0-dev

cd ~/sway-src
git clone https://github.com/swaywm/wlroots.git
cd wlroots
git checkout 0.10.0
meson build
sudo ninja -C build install

Install json-c

Debian's json-c version is too old, we need to manually build a newer version:

sudo apt install autoconf libtool

cd ~/sway-src
git clone https://github.com/json-c/json-c.git
cd json-c
git checkout json-c-0.13.1-20180305
sh autogen.sh
./configure --enable-threading --prefix=/usr/local
CPUCOUNT=$(nproc)
make -j$CPUCOUNT
sudo make install
sudo ldconfig

Install scdoc (optional)

scdoc is needed for manual pages generation, which I recommend, but Debian's scdoc version is also too old, we need to manually build a newer version:

cd ~/sway-src
git clone https://git.sr.ht/~sircmpwn/scdoc
cd scdoc
git checkout 1.9.7
make PREFIX=/usr/local -j$CPUCOUNT
sudo make PREFIX=/usr/local install

Install sway

Next we'll install sway 1.4:

sudo apt install libpcre3-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev xwayland

cd ~/sway-src
git clone https://github.com/swaywm/sway.git
cd sway
git checkout 1.4
meson build
sudo ninja -C build install

Install swaybg

We need to install swaybg, or else the default configuration won't work:

cd ~/sway-src
git clone https://github.com/swaywm/swaybg.git
cd swaybg
git checkout 1.0 
meson build
sudo ninja -C build install