CssProvider#

class CssProvider(**properties: Any)#

Superclasses: Object

Implemented Interfaces: StyleProvider

A style provider for CSS.

It is able to parse CSS-like input in order to style widgets.

An application can make GTK parse a specific CSS style sheet by calling load_from_file or load_from_resource and adding the provider with add_provider or add_provider_for_display.

In addition, certain files will be read when GTK is initialized. First, the file $XDG_CONFIG_HOME/gtk-4.0/gtk.css is loaded if it exists. Then, GTK loads the first existing file among XDG_DATA_HOME/themes/THEME/gtk-VERSION/gtk-VARIANT.css, $HOME/.themes/THEME/gtk-VERSION/gtk-VARIANT.css, $XDG_DATA_DIRS/themes/THEME/gtk-VERSION/gtk-VARIANT.css and DATADIR/share/themes/THEME/gtk-VERSION/gtk-VARIANT.css, where THEME is the name of the current theme (see the gtk_theme_name setting), VARIANT is the variant to load (see the gtk_application_prefer_dark_theme setting), DATADIR is the prefix configured when GTK was compiled (unless overridden by the GTK_DATA_PREFIX environment variable), and VERSION is the GTK version number. If no file is found for the current version, GTK tries older versions all the way back to 4.0.

To track errors while loading CSS, connect to the parsing_error signal.

Constructors#

class CssProvider
classmethod new() CssProvider#

Returns a newly created GtkCssProvider.

Methods#

class CssProvider
load_from_bytes(data: Bytes) None#

Loads data into css_provider.

This clears any previously loaded information.

Added in version 4.12.

Parameters:

dataGBytes containing the data to load

load_from_data(text, length=-1)#

Loads data into css_provider.

This clears any previously loaded information.

Deprecated since version 4.12: Use load_from_string or load_from_bytes instead

Parameters:
  • text

  • length – the length of data in bytes, or -1 for NUL terminated strings

load_from_file(file: File) None#

Loads the data contained in file into css_provider.

This clears any previously loaded information.

Parameters:

fileGFile pointing to a file to load

load_from_path(path: str) None#

Loads the data contained in path into css_provider.

This clears any previously loaded information.

Parameters:

path – the path of a filename to load, in the GLib filename encoding

load_from_resource(resource_path: str) None#

Loads the data contained in the resource at resource_path into the css_provider.

This clears any previously loaded information.

Parameters:

resource_path – a GResource resource path

load_from_string(string: str) None#

Loads string into css_provider.

This clears any previously loaded information.

Added in version 4.12.

Parameters:

string – the CSS to load

load_named(name: str, variant: str | None = None) None#

Loads a theme from the usual theme paths.

The actual process of finding the theme might change between releases, but it is guaranteed that this function uses the same mechanism to load the theme that GTK uses for loading its own theme.

Deprecated since version 4.20: Using any of the other theme loaders, combine with media queries.

Parameters:
  • name – A theme name

  • variant – variant to load, for example, “dark”, or None for the default

to_string() str#

Converts the provider into a string representation in CSS format.

Using load_from_string with the return value from this function on a new provider created with new will basically create a duplicate of this provider.

Properties#

class CssProvider
props.prefers_color_scheme: InterfaceColorScheme#

Define the color scheme used for rendering the user interface.

The UI can be set to either LIGHT, or DARK mode. Other values will be interpreted the same as LIGHT.

This setting is be available for media queries in CSS:

@media (prefers-color-scheme: dark) {
  // some dark mode styling
}

Changing this setting will reload the style sheet.

Added in version 4.20.

props.prefers_contrast: InterfaceContrast#

Define the contrast mode to use for the user interface.

When set to MORE or LESS, the UI is rendered in high or low contrast.

When set to NO_PREFERENCE (the default), the user interface will be rendered in default mode.

This setting is be available for media queries in CSS:

@media (prefers-contrast: more) {
  // some style with high contrast
}

Changing this setting will reload the style sheet.

Added in version 4.20.

props.prefers_reduced_motion: ReducedMotion#

Define the type of reduced motion to use for the user interface.

When set to REDUCE the UI is rendered in with reduced motion animations.

When set to NO_PREFERENCE (the default), the user interface will be rendered in default mode.

This setting is be available for media queries in CSS:

@media (prefers-reduced-motion: reduce) {
  // some style with reduced motion
}

Changing this setting will reload the style sheet.

Added in version 4.22.

Signals#

class CssProvider.signals
parsing_error(section: CssSection, error: GError) None#

Signals that a parsing error occurred.

The expected error values are in the CssParserError and CssParserWarning enumerations.

The path, line and position describe the actual location of the error as accurately as possible.

Parsing errors are never fatal, so the parsing will resume after the error. Errors may however cause parts of the given data or even all of it to not be parsed at all. So it is a useful idea to check that the parsing succeeds by connecting to this signal.

Errors in the CssParserWarning enumeration should not be treated as fatal errors.

Note that this signal may be emitted at any time as the css provider may opt to defer parsing parts or all of the input to a later time than when a loading function was called.

Parameters:
  • section – section the error happened in

  • error – The parsing error

Fields#

class CssProvider
parent_instance#