Skip to content

Building

Dependencies

From source

# If on Debian or a derivative, first install Mir from the mir-team/release ppa:
sudo add-apt-repository ppa:mir-team/release
sudo apt update
sudo apt install libmiral-dev libmircommon-internal-dev libmircommon-dev libmirserver-internal-dev \
  libgtest-dev libyaml-cpp-dev libglib2.0-dev libevdev-dev nlohmann-json3-dev libnotify-dev pcre2-utils \
  libmiroil-dev libmirplatform-dev libgles2-mesa-dev libmirwayland-dev libjson-c-dev libgtest-dev libgmock-dev \
  mirtest-dev mirtest-internal-dev mir-wlcs-integration libxkbcommon-dev libboost-filesystem-dev libboost-system-dev
  xwayland mir-platform-graphics-gbm-kms mir-platform-rendering-egl-generic

# If running on a desktop, you will also want to add the desktop graphics drivers.
sudo apt install mir-graphics-drivers-desktop

# Then, clone the repo:
git clone https://github.com/miracle-window-manager/miracle-wm.git
cd miracle-wm

# Next, build a debug build...
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

# ... or a max-performance release build:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=ON
cmake --build build

# Finally run with:
WAYLAND_DISPLAY=wayland-98 ./build/miracle-wm

CMake Options

The following options are available at build time:

  • -DSNAP_BUILD: Informs cmake that this is being built for a snap since some parameters need to be tweaked for that use case.
  • -DSYSTEMD_INTEGRATION: If enabled, miracle will build with full systemd integration, including establishing a user session and importing the proper environment variables in to systemd.
  • DENABLE_TESTS: If enabled, tests are built (default=true)
  • -DEND_TO_END_TESTS: If enabled, miracle's end-to-end tests will be compiled as part of the test suite.
  • -DENABLE_PLUGIN_SYSTEM: If enable, the experimental WebAssembly plugin system will also be enabled.

Snap

cd miracle-wm
snapcraft
sudo snap install --dangerous --classic miracle-wm_*.snap