giucam / orbital

A Wayland compositor based on Weston and Qt
GNU General Public License v3.0
158 stars 17 forks source link

Orbital

Orbital is a Wayland compositor and shell, using Qt5 and Weston. The goal of the project is to build a simple yet flexible and good looking Wayland desktop. It is not a full fledged DE but rather the analogue of a WM in the X11 world, such as Awesome or Fluxbox.

Dependencies

Orbital depends on two things: Weston and Qt 5. Since it uses QtQuick 2 to draw the interface it will make use of OpenGL, so it is advisable to use a decent graphics driver, otherwise the performance will not be good. Orbital currently needs a patched weston from here, branch libweston. You also need QtWayland, which is shipped with Qt starting with the 5.4 version. You do not need QtCompositor, the platform plugin is enough. There are also some optional dependencies: currently Orbital can use Solid from KDE Frameworks 5, ALSA and Logind, but it can also work without them, losing some functionality. You can enable or disable these dependencies by passing some options to cmake: -Duse_alsa=ON/OFF, -Duse_logind=ON/OFF and -Duse_solid=ON/OFF.

Building Orbital

To compile Orbital run this commands from the repository root directory:

mkdir build
cd build
cmake ..
make
sudo make install

Orbital will be installed in the /usr/local prefix, unless you specified otherwise using the CMAKE_INSTALL_PREFIX variable:

cmake -DCMAKE_INSTALL_PREFIX=/my/prefix ..

Running Orbital

Now you can just run orbital, to run it if you are inside an X or a Wayland session. To start its own dedicated session run orbital-launch from a tty.

If you are using a systemd system you can use this unit to start Orbital at startup automatically:

[Unit]
Description=Orbital compositor

[Service]
ExecStartPre=/usr/bin/chvt %I
ExecStart=/usr/bin/dbus-launch --exit-with-session /usr/local/bin/orbital-launch
User=giulio
TTYPath=/dev/tty%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
PAMName=login
WorkingDirectory=/home/giulio
Environment=XDG_RUNTIME_DIR=/run/user/1000
Environment=QT_WAYLAND_FORCE_DPI=96
Environment=QT_PLUGIN_PATH=/usr/lib/kde4/plugins/
Environment=QT_QPA_PLATFORMTHEME=qt5ct
Restart=always
RestartSec=2
StandardInput=tty
StandardError=journal
StandardOutput=journal
Nice=-5

[Install]
WantedBy=graphical.target

Save it as /etc/systemd/system/orbital@.service, change the 'User' option to your own user, and then enable it with

sudo systemctl enable orbital@7

for having it run on tty7, or change the option to the tty you prefer. Note that there must not be getty running on that tty or else the unit will fail. If you know how to get it running on all ttys please tell me ;).

Configuring Orbital

The first time you start Orbital it will load a default configuration. If you save the configuration (by closing the config dialog or by going from edit mode to normal mode) it will save the configuration file orbital/orbital.conf, in $XDG_CONFIG_HOME or, if not set, in $HOME/.config. You can manually modify the configuration file, but Orbital has (or will have) graphical tools for configuring the environment.

You can use a tool like qt5ct to configure Qt5 apps, and Orbital will obey many of those settings.

You can see a screencast of some of Orbital functionalities at this link: http://www.youtube.com/watch?v=bd1hguj2bPE