Unity

Unity is an alternative shell for the GNOME desktop environment, developed by Canonical in its Ayatana project.

It consists of several components including the Launcher, Dash, Lenses, Panel and Indicators.

More info about its individual components can be found at https://wiki.ubuntu.com/Unity

Unity is currently a plugin of the Compiz window manager.

Under Canonical's developing convergence plans it will soon be a QT5 QML Desktop using their Mir display server.

Mir is being developed as an alternative display server to X or Wayland, more info about it can be found at https://wiki.ubuntu.com/Mir

Installation
You can install Unity by adding the unity-gentoo ebuild repository in layman:

Select one of the 'unity-gentoo' profiles:

Emerge unity-base/unity-build-env:

Prepare your build toolchain for the new compiler. This command should pull in a version 5 GCC Compiler.

Please read Upgrading GCC, and switch compilers accordingly. After doing so (This will build a sane toolchain):

Add the QT ebuild repository:

Emerge QT5 from the repo (This step lets you pre-select QT5, as the system-wide QT Library). See also Handling multiple versions of Qt:

Finally, emerge unity-base/unity-meta:

Usage
You should be starting it via a display manager or by XSESSION=unity variable for startx

Technical
At its core Unity uses a lot of Gnome, and since >=gnome-3.8 systemd is required.

https://wiki.gentoo.org/wiki/Project:GNOME/GNOME3-Upgrade-guide#Systemd

GNOME 3 requires systemd to be running to get it working properly, otherwise, you will get broken power management and multiseat handling, and also some more problems because upstream has moved away from the obsolete consolekit to logind (that needs systemd to be running to work).

Startup files
1. The display manager (lightdm) or XSESSION=unity and 'startx' uses the sys-apps/upstart desktop services daemon to start 'gnome-session --session=unity' 2. /etc/X11/xinit/xinitrc.d/65compiz_profile-on-session is sourced at Xsession startup and if $DESKTOP_SESSION=unity, it sets the COMPIZ_CONFIG_PROFILE=ubuntu variable. 3. Default compizconfig settings find their way into the desktop user's dconf registry by way of /etc/xdg/autostart/compiz-migrate-to-dconf.desktop 4. Default compizconfig settings find their way into the global gconf registry when compiz is emerged.
 * This executes /usr/share/gnome-session/sessions/unity.session which starts compiz as the window manager.
 * When compiz starts it checks the value of $COMPIZ_CONFIG_PROFILE and uses the 'ubuntu' entry located in /etc/compizconfig/config
 * This 'ubuntu' entry sets the compiz profile to 'unity' and sets the compizconfig backend to use gsettings (dconf) which reads the compiz settings from the dconf registry.
 * This is auto started at Xsession startup and actually copies the settings from the global gconf registry to the desktop user's dconf registry.
 * At src_install time the compiz ebuild uses the 'update-gconf-defaults' tool to read all files in /usr/share/gconf/defaults/ and write them out to a gconf registry file located in /etc/gconf/gconf.xml.unity/
 * It then updates /etc/gconf/2/local-defaults.path to include the new /etc/gconf/gconf.xml.unity/ directory

External resources

 * unity-gentoo ebuild repository
 * Overlay unity-gentoo thread on Gentoo Forum
 * Unity article in Arch Linux Wiki