moment/docs/THEMING.md

2.2 KiB

Theming

A default theme from this repository can be copied to use as a base and edit,
for example:

    cp mirage/src/themes/Midnight.qpl \
       "${XDG_DATA_HOME:-$HOME/.local/share}/mirage/themes/MyTheme.qpl"

Or for Flatpak users:

    cp mirage/src/themes/Midnight.qpl \
       ~/.var/app/io.github.mirukana.mirage/data/mirage/themes/MyTheme.qpl

The theme property in settings.py would need
to be set to MyTheme.qpl in this case.

Theme files are nested-by-indentations sections of properties and values.
Properties are declared as <type> <name>: <value>.
Values can be any JavaScript (ECMAScript 7) expressions.

Most of the properties are of type color.
Their values, if not just refering to another property,
can be expressed with a:

  • SVG/CSS color name
    string, e.g. "blue"
  • Hexadecimal code string, e.g. "#fff" or "#cc0000"
  • RGBA value, using the Qt.rgba(0-1, 0-1, 0-1, 0-1) function
  • HSLA value, using the Qt.hsla(0-1, 0-1, 0-1, 0-1) function
  • HSVA value, using the Qt.hsva(0-1, 0-1, 0-1, 0-1) function
  • HSLUV value, using the
    hsluv(0-360, 0-100, 0-100, 0-1) function. This is the prefered method
    used throughout the default theme files
    (why? see this and
    that)

If you just want to change the background picture,
or use a gradient/simple color instead, search for the ui: section in your
text editor.

When an in-use theme file is saved while the application is running, it
will automatically be reloaded and changes will be seen immediatly.

You can manually trigger a reload by updating the file's last change timestamp,
e.g. with the touch command:

touch ~/.config/mirage/settings.py

Warnings:

  • API currently unstable: theme properties are often renamed, added or deleted.
  • The file format for themes will soon change
  • The current file format forces all theme to have all properties
    defined, instead of being able to only specify the ones to override from the
    default theme.