-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Development Setup
This page is intended as a guide for those who wish to build the HEAD of Sway and wlroots for testing or development purposes. If you are an end-user, this page isn't relevant to you.
You're going to need the following tools to get started:
You'll also need the dependencies, which you can find in the README. Avoid package bundles on distributions other than Arch Linux, as they are usually outdated.
The Arch User Repository (AUR) has the convenient sway-git
and wlroots-git
package bundles, which contain everything you'll need to compile their respective projects. Use your preferred AUR helper to install these.
Fedora requires installing all of the dependencies one-by-one. --releasever=29
is required as dependencies for versions below 29 are outdated.
dnf install -y --releasever=29 git gcc meson ninja-build wayland-devel wayland-protocols-devel mesa-libEGL-devel mesa-libGLES-devel mesa-dri-drivers libdrm-devel libgbm-devel libinput-devel libxkbcommon-devel libudev-devel pixman-devel systemd-devel cairo-devel libpcap-devel json-c-devel pam-devel pango-devel pcre-devel gdk-pixbuf2-devel mesa- libxkbcommon-devel
On Debian-based distributions, library packages are commonly suffixed by -dev
.
If you don't want to add the paths below to your ~/.profile
, you can paste these lines into your terminal to set the variables for the current terminal session only.
Ensure that /usr/local/bin
is in your PATH
by executing echo $PATH
. If it isn't, open ~/.profile
and add:
export PATH=/usr/local/bin:$PATH
Ensure that your PKG_CONFIG_PATH
contains /usr/local/lib/pkgconfig
and /usr/local/lib64/pkgconfig
by executing echo $PKG_CONFIG_PATH
. If it doesn't, open ~/.profile
and add:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
Ensure that your LD_LIBRARY_PATH
contains /usr/local/lib/
and /usr/local/lib64/
by executing echo $LD_LIBRARY_PATH
. If it doesn't, open the ~/.profile
file located in your home directory and add:
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
Execute source ~/.profile
to update the variables for your current terminal session. You should ensure that your chosen shell sources ~/.profile
on login (you may need to delete ~/.bash_profile
for it to take precedent).
You're now ready to compile wlroots, which is the Wayland compositor library used by Sway.
- Clone the
wlroots
repository with git - Execute
meson build
, which will create thebuild
directory - Execute
ninja -C build
to build - Execute
sudo ninja -C build install
to install - Verify that either
/usr/local/lib
or/usr/local/lib64
containlibwlroots.so
Now that wlroots is built and installed, you can build Sway.
- Clone the
Sway
repository with git - Execute
meson build
, which will create thebuild
directory - Execute
ninja -C build
to build - Execute
sudo ninja -C build install
to install - Verify that
/usr/local/bin
contains thesway
,swaybar
,swaylock
, etc. binaries
Since Sway and wlroots development moves quite fast, it's common to have issues compiling Sway if your installed version of wlroots is behind. As a first step of compile error troubleshooting, pull, build, and reinstall wlroots.