Theme Packs

Qubes 10.0 ThemePacks allow cosmetic theming and adding ornaments to layers.

A ThemePack is described in a JSON file, which lists ornaments, ornaments can be applied to layers through the Ornament property.

A ThemePack can be located on the computer's storage or inside a JSON document.
According to its location, you'll have to specify its path or its reference.

The JSON must contain

  • a name field, holding the ThemePack name
  • and ornaments array, holding an arbitrary number of named ornaments, with the following fields
    • name field, identifies the ornament, this name is a promise, changing it will break layers that refer to it
    • description field, optionally provides a textual description of the ornament
    • css field, which contains the css for the ornament, which MUST be normalized to apply to an element with a "ornament-class" CSS class. This name is substituted at runtime.

An exemple theme pack is below.

{
   "name": "Name of the ThemePack",
   "ornaments": [
      {
         "name": "ellipsis",
         "css": ".ornament-class { border-radius:100%; overflow:hidden }"
      },
      {
         "name": "slant-shade",
         "description": "weird slant shaded style to test clipping and shadows",
         "css": ".ornament-class { filter: drop-shadow(5px 5px 5px #555) } .ornament-class > table { clip-path: polygon(20px 0, 100% 0, 90% 100%, 0 100%, 0 20px) }"
      },
      {
         "name": "left-redband",
         "description": "red band accent on the left on 66% of height and width 1em",
         "css": ".ornament-class > table { position: relative } .ornament-class > table:before { content: ' '; display: block; position: absolute; width: 1em; height: 66%; top: 0; background: #E2001A }"
      },
      {
         "name": "line-highlight-on-hover",
         "css": ".ornament-class tr:hover { filter: brightness(1.1); transition: 250ms; }"
      } 
   ]
}