Clone wiki

desktop-theme-util / Home

Desktop Theme Utilities (draft)

This project aims to provide core functionality to make easier to theme a Debian Desktop install.

Design Goals

  1. Allow for artists to start with a simple artwork, and be able to use that artwork to fully customize the Debian Desktop. If the theme does not provide an image for a specific software, the tool will generate the apropriate image format and size based on the primary artwork.
  2. Allow for developers and packagers to be able to easily ''debianize'' a theme source package (i.e.: dh_make_theme theme-name-1.0.0.tar.gz)
  3. Provide common functionality to allow themes be installed, configured and updated properly (i.e. update-desktop-theme scripting, provide /etc/alternatives support for themes to override system defaults, create a virtual "Default" theme that points to the currently default theme, desktop-theme --bootstrap to start a new theme package, etc...)


The expected workflow should be very easy for artists and developers:

  • An artist start working o a theme package by creating the initial artwork, usually, a background image in SVG or XCF format.
  • To preview his artowrk on the system, the artist starts a theme package using the tool:
$ desktop-theme-util --bootstrap
Name: my-theme
Version: 1.0.0
Author name: My Name
Author email:
License (gpl2, gpl3, cc-by-sa-3.0, custom): gpl2
  • The tool creates the following theme ''skeleton'':

where the theme.desktop contains the theme metadata, like name, version, author and a few configuration details. By placing the main theme artwork at my-theme-1.0.0/background.svg (or my-theme-1.0.0/background.xcf) the theme is a complete theme source package that can be built and installed.

  • The artist should be able to preview the theme by creating a package for it:
desktop-theme --tarball my-theme-1.0.0
desktop-theme --dh_make my-theme-1.0.0.tar.gz
cd build/my-theme-1.0.0
dpkg -i ../my-theme_1.0.0_all.deb
  • At this point, the tools will convert the provided artwork (even if only one single image) to all required formats, cropping and scaling as needed to create artowork compatible with: grub (wallpaper), grub (gfxterm), plymouth, GDM3, KDM, Ksplash, Gnome3, KDE4, XFCE4 and WindowMaker.
  • The artist can customize the artwork for a specific application or service, by using a name convention. For instance:
grub_wallpaper.png # to provide a Grub wallpaper
grub_theme/* # to provide a complex ''grub gfx'' theme
plymouth_wallpaper.{svg,png,xcf} # to provide the base image for a default plymouth progress bar
plymouth/* # for a custom Plymouth theme
login_wallpaper # for kdm/gdm/lightdm, etc.
kde_wallpaper.{svg,png,xcf} # to create a custom KDE wallpaper
kde_wallpaper/* # to create a custom KDE4 wallpaper
  • When the artist finishes his work and feels that it is eye kandy enougth, he can publish the theme source package to a public place like kde look, gnome look, source forge, a DVCS, or any other place he is familliar to. A developer (DM, DD) can grab that source package (basically, obtained from desktop-thme --tarball) and quickly debianize it with:
desktop-theme-util --dh_make my-package-1.0.0.tar.gz

The idea is that this command will generate all configuration files to a standard debian package, with build scripts, build-dependencies, runtime dependencies, copyright information and all required files to build and package the theme. Ideally, any standard debian build tool can be used with the generated package tree: debuild, pbuilder, pdebuild, and so dpkg-buildpackage. For the shake of simplicity, the package will use cdbs to make things easier to maintain.

Installing the tools

The tools are under development, and will follow the guidelines provided by this document.