Creating a PPA for nux, compiz and unity

Here’s a short guide with the steps I followed to create a ppa with a modified version of compiz, nux and unity.

Building the source

Here’s how I organized the code. I checked out everything in a directory called “staging” in ~/canonical:

where, I applied my changes, built and tested the branchΒ  following the steps described in this blog post.

I made sure all my changes were commited:

At the end, my ~/canonical/staging directory was like that and bzr stat returned no changes for compiz, nux, unity:

Creating the .change, .dsc, tarballs

Before I create the ppa, I had to pack compiz, nux and unity.

Here’s what I did:

Tools installation

Compiz patch and packagement

Changelog modification:


  • The email had to be the one used by the gpg key
  • The gpg key had to be imported into launchpad (see:
  • The key id can be found by typing:
  • The change in the changelog should contain a version (eg yakkety) :s/UNRELEASED/desired_ubuntu_version

Compiz build:

(I was prompt to enter passphrase for the gpg key.)

Note: since compiz was a bzr branch I could have used:

instead of debuild.

After this step there were some new .dsc, .changes and .tar.gz files in the ~/canonical/staging directory. Something like that:


Same as above:

there must be more new files in ~/canonical/staging:


Same as before for unity and compiz.

Creating and configuring the ppa

First, I created the ppa on launchpad:

I went to my user’s page and under PPAs I selected “Add a new PPA” and I created a ppa named “lgfx”.

Then I locally configured dput to use sftp (

I edited the ~/ to contain these lines (this step can be skipped):

where lgfx is my ppa name and hikiko my bzr/launchpad username.

Uploading packages to the ppa

In ~/canonical/staging:

Updating the ppa

Everytime I need to submit a change to a lgfx ppa package (lgfx nux, lgfx compiz or lgfx unity), I build the modified code locally and then I run dch, debuild, dput for the package.

Leave a Reply

Your email address will not be published. Required fields are marked *