Developing Unity 8

  • Building Unity 8

    Get started working on Unity 8 by getting the source code and setting up your build environment. Building and running Unity 8 requires that you be running Ubuntu 15.04 (vivid).

    Click here to get started.

  • Running Unity 8

    Unity 8 can be run from your build environment without being installed system-wide. This is the recommended way of testing your changes.

    Click here to started.

  • Running on Devices

    Unity 8 can also be run on supported devices, to fully utilize the multi-touch and mobile sensor functionality.

    Click here to started.

  • Developing Unity 8

    Learn about the tools, libraries and guidelines for making your own contributions to the Unity interface.

    Click here to learn more.

Building Unity 8

Only Ubuntu 15.04 (vivid) and the Ubuntu development version (xenial) are supported as a development environment.

If using Ubuntu 15.04 you need to enable the Stable Phone Overlay PPA for some dependencies:

sudo add-apt-repository ppa:ci-train-ppa-service/stable-phone-overlay

Note: this PPA is unsupported for the desktop, it should not break anything but use under your own risk, you may also be interested in using a chroot.

Download source

create a parent folder to not pollute your setup. so that you can have different unity
branches there (trunk, WIP etc)

$ mkdir ~/unity8

fetch Unity 8 source

$ sudo apt-get install bzr
$ bzr branch lp:unity8 ~/unity8/trunk
$ cd ~/unity8/trunk

Install dependencies

If it’s your first time, install build dependencies

$ cd ~/unity8/trunk
$ ./ --setup

this will:
– install the required dependencies to build, as well as run on the desktop
– it should also install unity-scope-home and unity-lens-application which
are technically “recommends”, not strict dependencies

Build Unity 8

$ cd ~/unity8/trunk
$ ./

You may also rebuild with the -c for clean, which just deletes the build

Running Unity 8 on your desktop

Run the Unity 8 shell

$ cd ~/unity8/trunk
$ ./

Options can be passed to test the lock screen

$ ./ -p OR -k

-p is for pin lock, for which the default prompt answer is “1234”
-k is for keylock passphrase, for which the default prompt answer is “password”


  • to navigate, utilize the mouse left button as you would your finger
  • to get the translations work, currently you have to do make install to put the *.mo files into correct structure. We’ll look for a better solution later.

$ cd builddir; make install

Running Unity 8 on devices

Ubuntu Touch builds are currently only available in 15.04 (vivid) flavours

  • Supported hardware should match one those listed here
  • Follow the Ubuntu Touch install instructions for your chosen device
  • Make sure your device is connected to a WiFi network
  • If you haven’t already or if you’ve just freshly flashed your device make sure you run phablet-network-setup which will allow package updates to the device
  • Make sure you enable Developer Mode in System Settings -> About this phone -> Developer mode
  • Also make sure you have your SSH key in ~/.ssh/ (or install one on the device yourself)
$ cd ~/unity8/trunk
$ ./ -a $PASSWORD -s

this will:

  • Install your public SSH key on the device
  • Install the needed dependencies
$ ./ -a $PASSWORD

this will:

  • rsync the code to the device
  • Build on the device
  • Replace the running shell

Options can be passed to test the lock screen

$ ./ -p OR -k

-p is for pin lock, for which the default prompt answer is “1234”
-k is for keylock passphrase, for which the default prompt answer is “password”


  • using adb over TCP has some advantages, Google will be of help here
  • TL;DR: `adb tcpip 5555; adb connect $your_device_ip`
  • you can persist the above via `adb shell setprop persist.adb.tcp.port 5555`
  • it’s unsafe – anyone can connect to your device
  • with TCP the Nexus 10 doesn’t drop the adb connection when locking
    the screen
  • exporting ANDROID_SERIAL=$your_device_serial or
    ANDROID_SERIAL=$your_device_ip:5555 will make adb not complain about
    multiple devices
  • you can export TARGET_IP=$your_device_ip TARGET_SSH_PORT=22 for run_on_device
    to not use adb forwarding – useful if you use multiple devices
  • using Ninja (package ninja-build – run_on_device -s installs this now)
    will improve build times (especially in the nothing-to-build case)

Running Unity 8 as a session

The package unity8-desktop-session-mir will add a Unity 8 session to the lightdm session manager.

To try your changes as a session we recommend you build the unity8 packages (e.g. using dpkg-buildpackage) and install them.

Developing Unity 8

Coding guidelines

The work-in-progress coding guidelines are available under:

Fixing Bugs

You can find the existing bugs at Please get in touch with us before starting to work on a bug to make sure there’s no duplicate effort to fix it.

Developing New Features

Before starting lots of work to implement a new feature please contact us so we can coordinate on it. We or Canonical’s design team may be already working on something similar.
Some of the bugs in the above section are related to new/missing features too. Have a look through those that have been approved by designers.

Development Environment

QtCreator (available via the Software Center) is the best IDE to hack on Unity 8.

If using VIM, make sure you install some syntax highlighting for QML, like

Contacting the Unity 8 team


You can find the unity8 team at the #ubuntu-unity IRC channel of the freenode network.


You can find the unity8 team at the ubuntu-phone mailing list.

Comments are closed.