Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/client/gtk_base/css_overrides.py : 69%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of Xpra.
2# Copyright (C) 2020 Antoine Martin <antoine@xpra.org>
3# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
4# later version. See the file COPYING for details.
6# load xpra's custom css overrides
8import os.path
10from gi.repository import Gtk, Gdk
12from xpra.util import envbool
13from xpra.platform.paths import get_resources_dir
14from xpra.log import Logger
16log = Logger("gtk", "util")
18CSS_OVERRIDES = envbool("XPRA_CSS_OVERRIDES", True)
21_done = False
22def inject_css_overrides():
23 global _done
24 if _done or not CSS_OVERRIDES:
25 return
26 _done = True
27 style_provider = get_style_provider()
28 if style_provider:
29 screen = Gdk.Screen.get_default()
30 if not screen:
31 log.warn("Warning: cannot inject GTK CSS overrides")
32 log.warn(" no default screen")
33 return
34 Gtk.StyleContext.add_provider_for_screen(
35 screen,
36 style_provider,
37 Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
38 )
40_style_provider = None
41def get_style_provider():
42 global _style_provider
43 if _style_provider:
44 return _style_provider
45 _style_provider = Gtk.CssProvider()
46 load_css(_style_provider)
47 return _style_provider
49def load_css(provider):
50 css_dir = os.path.join(get_resources_dir(), "css")
51 if not os.path.exists(css_dir) or not os.path.isdir(css_dir):
52 log.error("Error: cannot find directory '%s'", css_dir)
53 return None
54 filename = None
55 def parsing_error(_css_provider, _section, error):
56 log.error("Error: CSS parsing error on")
57 log.error(" '%s'", filename)
58 log.error(" %s", error)
59 provider.connect("parsing-error", parsing_error)
60 for f in sorted(os.listdir(css_dir)):
61 filename = os.path.join(css_dir, f)
62 try:
63 provider.load_from_path(filename)
64 log(" - loaded '%s'", filename)
65 except Exception as e:
66 log("load_from_path(%s)", filename, exc_info=True)
67 log.error("Error: CSS loading error on")
68 log.error(" '%s'", filename)
69 log.error(" %s", e)