https://github.com/rodlie/draco
Draco Desktop Environment
https://github.com/rodlie/draco
cmake desktop desktop-environment draco freedesktop linux lumina openbox panel qt5 slackware x11 xdg
Last synced: 2 months ago
JSON representation
Draco Desktop Environment
- Host: GitHub
- URL: https://github.com/rodlie/draco
- Owner: rodlie
- Created: 2019-02-05T09:42:27.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-14T02:40:56.000Z (over 5 years ago)
- Last Synced: 2025-04-02T19:51:41.690Z (6 months ago)
- Topics: cmake, desktop, desktop-environment, draco, freedesktop, linux, lumina, openbox, panel, qt5, slackware, x11, xdg
- Language: C++
- Homepage: https://dracolinux.org
- Size: 5.4 MB
- Stars: 28
- Watchers: 6
- Forks: 8
- Open Issues: 20
-
Metadata Files:
- Readme: docs/README.md
Awesome Lists containing this project
README

[](https://github.com/rodlie/draco/releases/latest)
[](https://software.opensuse.org//download.html?project=home%3Arodlie%3Adraco-master&package=draco)
[](https://travis-ci.com/rodlie/draco)# Draco Desktop Environment
Draco is a simple and lightweight desktop environment. While small still features XDG integration, freedesktop services and integration, power and storage management, desktop, panels, multi-monitor support and much more. Draco does not include any user applications.
Draco is developed for and on [Slackware Linux](http://www.slackware.com), but is also compatible with RHEL/CentOS/Fedora and others. Draco is a fork of [Lumina](https://github.com/lumina-desktop/lumina).
## Features
TODO...
### Desktop
TODO...
### Panel
TODO...
### Storage management
* Show available storage/optical devices in system tray
* Auto mount (and open) storage/optical devices when added *(not default)*
* Auto play CD/DVD *(not default)*### Power management
* Implements [org.freedesktop.ScreenSaver](https://people.freedesktop.org/~hadess/idle-inhibition-spec/re01.html) service
* Implements [org.freedesktop.PowerManagement](https://www.freedesktop.org/wiki/Specifications/power-management-spec/) service
* Automatically suspend on idle
* Automatically lock screen on idle
* Automatically hibernate or shutdown on critical battery
* Inhibit actions if external monitor(s) is connected
* Enables applications to inhibit display and suspend
* Display backlight support
* Display hotplug support
* RTC wake support
* Intel ``pstate`` (Sandy Bridge+) support## Usage
TODO...
### Default shortcuts
| Shortcut | Action |
| -------- | ------ |
| ``Alt+F1`` | Default terminal |
| ``Alt+F2`` | Application launcher |
| ``Ctrl+Alt+Left`` | Switch desktop/workspace |
| ``Ctrl+Alt+Right`` | Switch desktop/workspace |
| ``Ctrl+Alt+Up`` | Switch desktop/workspace |
| ``Ctrl+Alt+Down`` | Switch desktop/workspace |
| ``Shift+Alt+Left`` | Move window to desktop/workspace |
| ``Shift+Alt+Right`` | Move window to desktop/workspace |
| ``Shift+Alt+Up`` | Move window to desktop/workspace |
| ``Shift+Alt+Down`` | Move window to desktop/workspace |
| ``Win+F1`` | Switch to desktop/workspace 1 |
| ``Win+F2`` | Switch to desktop/workspace 2 |
| ``Win+F3`` | Switch to desktop/workspace 3 |
| ``Win+F4`` | Switch to desktop/workspace 4 |
| ``Win+D`` | Toggle show desktop |
| ``Alt+Tab`` | Next window |
| ``Alt+Shift+Tab`` | Previous window |
| ``wheel/touchpad up/down on desktop`` | Switch desktop/workspace |### Screen saver
Draco depends on [XScreenSaver](https://www.jwz.org/xscreensaver/) to handle the screen session, the default settings may need to be adjusted. You can launch the (XScreenSaver) configuration GUI with the ``xscreensaver-demo`` command or from settings.
Recommended settings are:
* Mode: ``Blank Screen Only``
* Blank After: ``5 minutes``
* Lock Screen After: ``enabled + 0 minutes``
* Display Power Management: ``enabled``
* Standby After: ``0 minutes``
* Suspend After: ``0 minutes``
* Off After: ``0 minutes``
* Quick Power-off in Blank Only Mode: ``enabled``A custom configuration tool will be added in the future.
### Hibernate
A swap partition (or file) is needed by the kernel to support hibernate/hybrid sleep. Edit the boot loader configuration and add the kernel option ``resume=``, then save and restart.
**Note that some distributions don't require ``resume=``, and some have hibernation disabled. Consult your distribution documentation regarding hibernation.**
## Components
Draco is divided into the following components:
* **libDraco**
* Common functions.
* **start-draco**
* Takes care of starting and running the desktop environment.
* **draco-settings**
* Manage settings.
* **draco-settings-x11**
* Manage monitors. *You can use this component outside of Draco.*
* **org.dracolinux.Desktop**
* The desktop session. Takes care of anything related to desktop, panels, clipboard and auto started applications/services. *You can use this component outside of Draco.*
* **org.dracolinux.Power**
* Takes care of anything related to power. This includes, but not limited to screensaver, freedesktop services, suspend, hibernate, monitors, backlight, keyboard, CPU. *You can use this component outside of Draco.*
* **org.dracolinux.Powerd**
* D-Bus system service for Draco. Used to modify backlight, cpufreq/pstate and RTC wake alarm.
* **org.dracolinux.Storage**
* Takes care of removable storage devices. *You can use this component outside of Draco.*
* **org.dracolinux.XDG**
* ``xdg-open`` replacement. Takes care of anything XDG related when running Draco. *You can use this component outside of Draco.*## Screenshots
### Settings
Main settings:

Draco XDG/mime settings:

Applications and services that are launched during desktop startup:

Basic keyboard configuration:

Panels configuration:

Power configuration:

Wallpaper configuration:

General desktop configuration:

Monitor configuration:

## Requirements
Build and runtime requirements.
* **``cmake``** *(>= 3.0)*
* **``pkg-config``**
* **``Qt``** *(5.5+, latest LTS recommended)*
* ``QtCore``
* ``QtDBus``
* ``QtGui``
* ``QtWidgets``
* ``QtConcurrent``
* ``QtX11Extras``
* **``X11``**
* ``libX11``
* ``libXss``
* ``libXdamage``
* ``libXrandr``
* ``libXfixes``
* ``xrandr``
* ``setxkbmap``
* ``xinit``
* ``xcb``
* ``xcb-randr``
* ``xcb-ewmh``
* ``xcb-icccm``
* ``xcb-image``
* ``xcb-composite``
* ``xcb-damage``
* ``xcb-util``
* ``xcb-shm``
* **``xscreensaver``**
* **``qt5ct``**
* **``xdg-utils``**
* **``shared-mime-info``**
* **``hicolor-icon-theme``**
* **``adwaita-icon-theme``** *(3.18 recommended)*
* **``openbox``**
* **``UDisks2``** *(or compatible service)*
* **``UPower``** *(>= 0.9.23 or compatible service)*
* **``ConsoleKit``**/**``logind``** *(or compatible service)*## Recommended
Optional recommended applications.
* **``qterminal``** *(terminal emulator)*
* **``qtfm``** *(file manager)*
* **``pnmixer``** *(audio system tray)*
* **``obconf``** *(window manager config)*
* **``nm-applet``** *(network manager)*## Build
### Daemon notice
Draco includes a power daemon (to be able to adjust screen and cpu) this daemon must run as ``root`` (or a user with write access to ``/sys``), this service run through D-Bus and can only be accessed by a predefined system group, this should be a common desktop user group like ``power`` or something similar. The default when building Draco is ``root`` as user and ``power`` as group. If you want something else you can change this during build.
Add the following during ``cmake`` configure:
```
-DPOWERD_SERVICE_USER=
```
```
-DPOWERD_SERVICE_GROUP=
```You can also change the ``/etc/dbus-1/system.d/org.dracolinux.Powerd.conf`` file manually if you want.
### Slackware Linux (14.2+)
Install the following packages from [SlackBuilds.org](http://slackbuilds.org) or [slackware.com/~alien](http://www.slackware.com/~alien/slackbuilds/):
* qt5 *(5.9.7+/5.12.x recommended)*
* qt5ct
* openboxThe rest should be available in a standard installation.
A [draco.SlackBuild](https://github.com/rodlie/draco/blob/master/share/slackware/draco.SlackBuild) is available.
You can of course build it manually:
```
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_INSTALL_MANDIR=/usr/man -DCMAKE_INSTALL_DOCDIR=/usr/doc -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install
```**Note that the install prefix should be the same folder as D-Bus (usually in ``/usr``), else you will need to copy the Draco service files to the proper location manually.**
### Ubuntu (Xenial+)
Minimal testing is done on Ubuntu, some features may not work.
Known issues:
* Add your user to the ``power`` group before running Draco (add group if not exists).
* Hibernate does not work, will add instructions on fixing thisDependencies (based on a miminal install of Xenial):
```
sudo apt-get install build-essential cmake pkg-config openbox adwaita-icon-theme-full xscreensaver xdg-utils qt5ct qtbase5-dev libqt5x11extras5-dev libx11-dev libxss-dev libxdamage-dev libxrandr-dev libxfixes-dev libxcb1-dev libx11-xcb-dev libxcb-randr0-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-composite0-dev libxcb-damage0-dev libxcb-util0-dev libxcb-shm0-dev
```Build and install:
```
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_INSTALL_LIBEXECDIR=bin -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install
```**Note that the install prefix should be the same folder as D-Bus (usually in ``/usr``), else you will need to copy the Draco service files to the proper location manually.**
### RHEL/CentOS/Fedora
Minimal testing is done, some features may not work.
Known issues:
* Same as Ubuntu
* Adwaita icons are broken, expect missing iconsSee RPM [spec](../share/obs/draco.spec) file for build instructions.
## License
This project has source files licensed under ``BSD-3``, ``LGPL-2.1`` and ``GPL-2``.