/kde-material-you-colors

Automatic color scheme generator from your wallpaper for KDE Plasma powered by Material You

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

🎨 KDE Material You Colors

Screenshot

Automatically generate light/dark color themes for KDE (and pywal if installed) from your current wallpaper, using @T-Dynamos Python implementation of Google's Material Color Utilities

AUR version PyPI - Version Dynamic JSON Badge Liberapay

Screenshots

Features

Plasma specific

  • Plasma Widget (Plasma 6 version)
  • Support for all Wallpaper plugins (color, image, slideshows, animated, Plasma 5.26+ dark wallpaper variants)
  • Update automatically on wallpaper change
  • Change icon themes
  • Start automatically on login
  • Make titlebar darker to match specified applications like terminals, code editors and other programs themed by pywal
  • Follow Plasma Material You Dark/Light change to work with theme schedulers like Koi
  • Plasma addons

Themeable programs

  • Konsole color scheme
    • opacity control
  • Pywal support to theme other programs using Material You Colors
  • Basic KSyntaxHighlighting support (Kate, KWrite, KDevelop...)

Theming options

  • Alternative Material You color selection if the wallpaper provides more than one
  • Use your favorite color to generate Material You color schemes
  • Custom colors list used for konsole/pywal
  • Custom amount for colorfulness and brightness of theme
  • Color scheme variants from Material You (Vibrant, Monochrome, Neutral...)
  • Dark/light Color schemes (Plasma and pywal/konsole independently)
  • Set a script that will be executed on start or wallpaper/dark/light/settings change
  • Configuration file

Installing

Manual install

  1. Install pipx system packages from your distribution packages.

  2. Install the backend

    For Plasma 5 this is the last version, development has switched to plasma 6

    pipx install kde-material-you-colors==1.7.1
    pipx inject kde-material-you-colors pywal

    For Plasma 6

    pipx install kde-material-you-colors
    pipx inject kde-material-you-colors pywal
    # to upgrade to newer version
    pipx upgrade kde-material-you-colors

    Note: You may need to install gcc python-dbus-dev libglib2.0-dev system packages or their equivalent for your distribution. Additionally, installing some libraries for Pillow may be necessary, see Pillow docs

  3. Install the widget from the KDE Store Plasma 6 version | Plasma 5 version

    1. Right click on the Panel > Add Widgets > Get New Widgets > Download New Plasma Widgets
    2. Search for "KDE Material You Colors", install & add it to your Panel/Desktop.
  4. Install the screenshot helper. Optional but recommended if you use other than default Image wallpaper plugin

    Plasma 6

    Install git extra-cmake-modules system packages or their equivalent for your distribution.

    git clone https://github.com/luisbocanegra/kde-material-you-colors
    ./install-screenshot-helper.sh

    Plasma 5

    Install git extra-cmake-modules system packages or their equivalent for your distribution.

    git clone https://github.com/luisbocanegra/kde-material-you-colors -b plasma5
    ./install-screenshot-helper.sh

To upgrade to a new version repeat these steps.

Note: When you upgrade te widget to a newer version it will inform you if it requires a new version of the backend.

Running

You can Start and change the configuration from the widget.

From terminal

kde-material-you-colors

Run kde-material-you-colors -h to see the list of available options (Flags take precedence over configuration file)

Starting/Stopping Desktop entries

If not installed by your package manager, run kde-material-you-colors -cl

  • To start the program launch KDE Material You Colors from your applications list
  • To stop, launch Stop KDE Material You Colors from your applications list

Running on Startup

kde-material-you-colors -a

Removing from autostart

  1. Open System Settings > Autostart
  2. Remove kde-material-you-colors by clicking on the Trash button.

Configuration file

The preferred way to change the configuration is from the widget. If the configuration doesn't exist, it will be automatically created by the widget.

Editing manually

The default configuration file can be created by running kde-material-you-colors -c the location is ~/.config/kde-material-you-colors/config.conf

Run kde-material-you-colors with no arguments from terminal to test your changes in real time.

Due to Qt limitations, comments are removed from the configuration file by the widget. You can view the sample configuration file with comments here.

FAQ

Q. How does this different from Plasma's "Accent Color From Wallpaper" and "Tint all colors with accent color"?

There are some key differences:

  • Brighter accent/buttons colors
  • Option to choose another color if the wallpaper returns more than one
  • Can also apply colors to Konsole and pywal (both from wallpaper and custom ones)
  • Colors comparison https://imgur.com/a/a28uZka (kde-material-you-colors top, default tint option bottom)

Q. Why there are duplicated color schemes in System Settings

To update color with plasma-apply-colorscheme (utility provided by KDE developers), the file containing the new color scheme must have a different name than the current one, to workaround that, this program creates two color scheme files with different names, then applies one after the other. As a result you end up with duplicated color schemes and maybe some lag while updating schemes.

Q. Can't get wallpaper colors of the default wallpaper

If you are using the default Image wallpaper plugin try changing the image to something else at least once first.

Q. Slideshow wallpaper (or any other Plugin) doesn't update colors correctly

Try enabling Only use screenshot method from the widget Advanced settings

Q. How does wallpaper detection work and why it fails sometimes?

The wallpaper is obtained in the following order:

  • First, uses the Plasma Desktop Scripting API to read Wallpaper plugin configuration.
  • If the previous fails, the screenshot helper (if installed) is used

The backend uses the KWin Scripting API and calls the screenshot helper to take a Screenshot of the Desktop view using the KWin's Screenshot plugin

Both methods are somewhat robust but there are edge cases when detection will fail, which are explained here

Bug reporting / Feature requests / Contributing

Please read the Contributing guidelines in this repository

Support the development

If you like the project you can:

"Buy Me A Coffee" Liberapay

Thank you ❤️

Acknowledgements