Building Budgie Desktop
Build Dependencies
budgie-desktop has a number of build dependencies that must be present before attempting configuration. The names are different depending on distribution. The following is a list of pkg-config
dependencies currently required to build Budgie from source.
- accountsservice >= 0.6.40
- alsa-lib >= 1.1.0
- budgie-screensaver (or gnome-screensaver on Debian / Ubuntu)
- budgie-session
- gee-0.8 >= 0.20.0
- gio-2.0 >= 2.64.0
- gio-unix-2.0 >= 2.64.0
- gnome-desktop-3.0 >= 41.0
- gnome-settings-daemon >= 41.0
- gobject-2.0 >= 2.64.0
- gobject-introspection-1.0 >= 1.64.0
- gstreamer-1.0
- gtk+-3.0 >= 3.24.0
- ibus-1.0 >= 1.5.10
- libcanberra-devel
- libgnome-menu-3.0 >= 3.10.3
- libnotify >= 0.7
- libpeas-gtk-1.0 >= 1.26.0
- libpulse >= 2
- libwnck >= 3.36.0
- libxfce4windowing
- meson
- magpie 0.9.x
- polkit-agent-1 >= 0.110
- polkit-gobject-1 >= 0.110
- upower-glib >= 0.99.0
- uuid
And:
- gtk-doc (For documentation building from git only)
- sassc (to build theming)
- vala >= 0.52.0
Please ensure you install budgie-screensaver before configuration. If you are on a Debian-based system, ensure you are install gnome-screensaver.
Run-time dependencies
budgie-desktop requires/recommends the following to be installed:
- zenity (to display mutter based dialogs)
- dconf-cli (to handle resetting of dconf)
- xdotool (lock keys applet)
Installing Build Dependencies
- Arch
- Debian / Ubuntu
- Fedora non-Atomic
- Fedora Onyx / Atomic
- Sabayon
- Solus
sudo pacman -S base-devel git
sudo pacman -S accountsservice budgie-session budgie-screensaver gnome-settings-daemon gobject-introspection ibus intltool libgee libpeas libwnck3 libxfce4windowing meson magpie sassc vala zenity
sudo apt install build-essential git
Enable software sources in your apt sources list then install the dependencies
sudo apt build-dep budgie-desktop
The manual method for dependency installation is:
sudo apt install build-essential git
sudo apt install gnome-settings-daemon-dev gtk-doc-tools intltool libaccountsservice-dev libasound2-dev
libgnome-desktop-3-dev libcanberra-dev libgee-0.8-dev libgstreamer1.0-dev
libgtk-3-dev libibus-1.0-dev libmagpie-0-dev libpeas-dev libpolkit-agent-1-dev libpulse-dev libupower-glib-dev
libwnck-3-dev libxfce4windowing-dev meson ninja-build sassc uuid-dev valac
sudo dnf install accountsservice-devel alsa-lib-devel budgie-screensaver budgie-session desktop-file-utils gettext git glib2-devel gnome-desktop3-devel gnome-settings-daemon-devel gobject-introspection-devel gsettings-desktop-schemas-devel gstreamer1-devel gtk-doc gtk3-devel ibus-devel intltool json-glib-devel libcanberra-devel libX11-devel libXtst-devel libgee-devel libnotify-devel libpeas1-devel libuuid-devel libwnck3-devel libxfce4windowing-devel meson magpie-devel polkit-devel pulseaudio-libs-devel sassc upower-devel vala
For developing Budgie Desktop on top of Fedora Onyx / Atomic, we suggest rebasing on top of our Atomic Dev ostree images. These are built daily on top of Onyx with the required development libraries, making additional package layer faster and less prone to breakage.
sudo equo i dev-util/re2c dev-libs/libsass dev-lang/sassc dev-util/intltool dev-util/ninja dev-util/itstool app-text/docbook-sgml-dtd app-text/docbook-dsssl-stylesheets dev-util/meson dev-util/gtk-doc-am app-text/yelp-tools dev-util/gtk-doc x11-libs/wxGTK app-eselect/eselect-wxwidgets
sudo eopkg it accountsservice-devel alsa-lib-devel gtk-doc gnome-settings-daemon-devel gstreamer-1.0-devel ibus-devel libcanberra-devel libgee-devel libgnome-desktop-devel libnotify-devel libpeas-devel libwnck-devel libxfce4windowing-devel magpie-devel pulseaudio-devel sassc upower-devel vala ccache -c system.devel
Cloning the repository
git clone https://github.com/buddiesofbudgie/budgie-desktop.git
cd budgie-desktop
git submodule update --init
Configuring
- Arch
- Debian / Ubuntu
- Fedora Onyx
- Solus
- All Other Distributions
cd budgie-desktop
meson setup build --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
cd budgie-desktop
meson build --prefix=/usr --libdir=/usr/lib -Dwith-gnome-screensaver=true
As Fedora Onyx is an immutable variant, you will need to install Budgie Desktop into the persistent usrlocal for your changes to persist after reboot.
cd budgie-desktop
meson build --prefix=/var/usrlocal --sysconfdir=/etc
Solus has special requirements and mandates the use of stateless XDG paths, as well as using the OS default CFLAGS:
cd budgie-desktop
meson --prefix /usr --libdir /usr/lib64 --sysconfdir /etc -Dwith-stateless=true build --buildtype plain
cd budgie-desktop
meson build --prefix=/usr --sysconfdir=/etc
Building
ninja -j$(($(getconf _NPROCESSORS_ONLN)+1)) -C build
Note: When building a distro package, please ensure you use:
meson build --prefix=/usr --sysconfdir=/etc --buildtype plain
This ensures your distro flags are respected.
Installing
sudo ninja install -C build