Debian 10 (Buster) Installation
Note: these instructions are community-maintained and are not supported by the Sway project.
This document will guide you through installing Sway on Debian 10 (Buster).
There exists a Debian repository that includes Debian 10-compatible sway
package which is rebuilt nightly. Run following commands in order to install Sway from the repository:
curl https://quantum2.xyz/apt.key | sudo apt-key add -
echo 'deb [arch=amd64] https://apt.quantum2.xyz/sway-utils/ buster main' | sudo tee /etc/apt/sources.list.d/sway-utils.list
sudo apt update
sudo apt install sway
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 meson (>= 0.53.1) Depends ninja-build (>= 1.6) and python3 if the meson version is satisfied skip next part (go to install 1.4 continued)
The stable debian apt source list uses a 0.49.2 version of meson.
get newer version of meson listed here there is 3 ways of doing that
-
A safe and easy method is to download the deb directly from packages.debian.org and use
sudo apt install /path/to/package/name.deb
or gdebi to try and install it. If there’s dependency issues with the stable libraries, it will refuse to do so. -
Debian specifically advises against the following method Add the debian sid mirror to your apt/sources.list discouraged example:
deb http://ftp.de.debian.org/debian sid main
Then again update the apt cache:sudo apt update
and install newest mesonsudo 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 asudo apt update && sudo apt upgrade
you may render your system unstable)
Please note that acquiring newer software in this manner is discouraged. Attempting to mix packages between Debian repositories can create unstable situations. If you wish to use newer software, it is best to install packages from backports. Unfortunately as of now the backports only have meson (0.52.1) In general, mixing stable and upstream Debian repos will lead to dependency problems down the road. Later many packages can end up being uninstallable. Debian specifically advises against this method.
- The very best method, though it’s the most work, is to backport the newer package from the source code against the stable libraries. This does take some skill for some packages, but absolutely will not break anything. Build a Package from Source
Nevertheless whatever way you choose and you now have meson (>= 0.53.1). Continue with the following steps.
Create a directory to organize sources:
mkdir ~/sway-src
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 debian stable (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
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
scdoc is needed for manual pages generation, which I recommend, but Debian's (stable) scdoc version is also too old, we need to manually build a newer version (or get it via backports):
cd ~/sway-src
git clone https://git.sr.ht/~sircmpwn/scdoc
cd scdoc
git checkout 1.10.1
make PREFIX=/usr/local -j$CPUCOUNT
sudo make PREFIX=/usr/local install
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
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