Skip to main content
Version: Current (Wayland): Budgie 10.10

Building Budgie Desktop

Important Information

Budgie 10.10 is Wayland-only and does not support X11. Budgie 10.10 is the last "10 series" release of Budgie Desktop, with Budgie 10 entering maintenance mode as of this release. Support for Budgie 10.10 will be minimal as we work on Budgie 11.

Budgie 10.10 relies on a range of Wayland protocols, such as:

This is not an exhaustive list, but notable protocols used by Budgie Desktop via:

Compositor Recommendations

In practice, this will mean you will likely end up using a wlroots-based compositor, such as labwc. It is an explicit goal for Budgie 11 to support more compositors (such as Mir-based compositors and possibly Kwin).

However, for now the recommendation is to use labwc (>= 0.9.2) and this is what Budgie Desktop 10.10 defaults to.

labwc bridge

Budgie Desktop offers a "labwc bridge" out-of-the-box (and is ran automatically at login), which copies over our own labwc configuration into ~/.config/budgie-desktop/labwc (technically supporting XDG_CONFIG_HOME as well). This means it won't conflict with any existing configurations. This configuration enables a range of features, such as:

  • Default keyboard shortcuts for common actions (opening Budgie Menu, Raven, Budgie Run Dialog, workspace switching, screenshotting, etc)
  • Input acceleration (touchpad and non-touchpad)
  • Setting some default theming (fonts, dropshadows, titlebar layout)
  • Window rules for certain windows (e.g. desktop, power dialog, budgie-daemon)
  • Window snapping
  • Window switcher w/ thumbnails

Layer Shell

Budgie 10.10 relies on the wlr-layer-shell-unstable-v1 protocol for specifying the anchoring, exclusion zones, layer type, and interactivity for: Budgie panels, Raven, and our popover windows.

warning

Without support for this protocol, you should not expect correct positioning.

Supplemental Tooling

Budgie Desktop 10.10 requires a few supplemental tools to be installed to maximize functionality. These are:

  • A session locker supporting ext-session-lock-v1, for example:
    • gtklock - This may be most favorable for distributors of Budgie Desktop as it offers a familiar screen locking experience to previously used screen lockers (budgie-screensaver / gnome-screensaver) and those on other desktop environments.
    • swaylock
  • budgie-desktop-services: This is used to provide supplemental services for Budgie Desktop functionality. For Budgie 10.10, this currently means output management (e.g. enabling/disabling outputs, setting display modes, etc).
  • gammastep: This is used for adjusting the display's color temperature.
  • grim: This is used for grabbing images from the compositor for screenshot functionality.
  • slurp: This is used for selecting areas for region-based screenshot functionality.
  • swaybg: This is used for setting the background image.
  • swayidle: This is used for idle management.
  • xdg-desktop-portal-gtk: This is used as a portal backend for most functionality.
  • xdg-desktop-portal-wlr: This is used as a portal backend for Screenshot and ScreenCase functionality.
  • wlopm: This is used for aiding in output power management during system idling.

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 >= 23.13.9
  • alsa-lib >= 1.2.14
  • budgie-session >= 10.10-preview.1
  • gee-0.8 >= 0.20.0
  • gio-2.0 >= 2.86.0
  • gio-unix-2.0 >= 2.86.0
  • gnome-desktop-3.0 >= 44.0
  • gnome-settings-daemon >= 44.0
  • gobject-2.0 >= 2.86.0
  • gstreamer-1.0
  • gtk-doc (For documentation building from git only)
  • gtk-layer-shell >= 0.8.0
  • gtk+-3.0 >= 3.24.0
  • ibus-1.0 >= 1.5.10
  • libcanberra-devel
  • libnotify >= 0.8
  • libpeas2 >= 2.2.0
  • libpulse >= 2
  • libxfce4windowing
  • meson
  • polkit-agent-1 >= 0.110
  • polkit-gobject-1 >= 0.110
  • sassc (to build theming)
  • upower-glib >= 0.99.0
  • uuid
  • vala >= 0.56.0

Desktop Icons

If you are shipping Budgie Desktop with Budgie Desktop View for desktop icon support, ensure you are on release 10.1-preview.1 or later.

Nemo Desktop is supported as well.

Run-time dependencies

budgie-desktop requires/recommends the following to be installed:

  • dconf-cli
  • python3-psutil (required for labwc bridge)
Extras

See also above "Supplemental Tooling" section for Wayland-related dependencies.

Installing Build Dependencies

  sudo pacman -S --needed base-devel git
sudo pacman -S --needed \
accountsservice \
budgie-session \
gammastep \
gnome-settings-daemon \
grim \
gtk-layer-shell \
ibus \
intltool \
libgee \
libpeas-2 \
libxfce4windowing \
meson \
sassc \
slurp \
swaybg \
swayidle \
vala \
xdg-desktop-portal-gtk \
xdg-desktop-portal-wlr \
xorg-xwayland

Cloning the repository

git clone https://github.com/buddiesofbudgie/budgie-desktop.git
cd budgie-desktop
git submodule update --init

Configuring

  cd budgie-desktop
meson setup build --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib

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