Philipp Hörist pushed to branch master at gajim / gajim
Commits:
9f83eb74 by Philipp Hörist at 2026-01-07T22:18:54+01:00
refactor: App: Use gtk-xft-dpi setting to app font size
This is more reliable than messing with CSS
- - - - -
2 changed files:
- gajim/common/const.py
- gajim/gtk/css_config.py
Changes:
=====================================
gajim/common/const.py
=====================================
@@ -109,7 +109,6 @@ class StyleAttr(Enum):
@unique
class CSSPriority(IntEnum):
- PRE_THEME = 599
APPLICATION = 600
APPLICATION_DARK = 601
DEFAULT_THEME = 610
=====================================
gajim/gtk/css_config.py
=====================================
@@ -100,12 +100,6 @@ def __init__(self) -> None:
display, self._dynamic_provider, CSSPriority.APPLICATION
)
- # Font size provider for GUI font size
- self._app_font_size_provider = Gtk.CssProvider()
- Gtk.StyleContext.add_provider_for_display(
- display, self._app_font_size_provider, CSSPriority.PRE_THEME
- )
-
# Cache of recently requested values
self._cache: dict[str, str | Pango.FontDescription | None] = {}
@@ -114,6 +108,10 @@ def __init__(self) -> None:
self._system_style = SystemStyleListener(callback=self.set_dark_theme)
+ gtk_settings = Gtk.Settings.get_default()
+ assert gtk_settings is not None
+ self._gtk_settings = gtk_settings
+
self.set_dark_theme()
self._load_css()
self._gather_available_themes()
@@ -204,16 +202,22 @@ def _activate_css(self, css: str, priority: CSSPriority)
-> None:
except Exception:
log.exception("Error loading application css")
+ @staticmethod
+ def get_dpi_ratio() -> int:
+ # Taken from
https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/inspector/visual.c
+ if sys.platform == "darwin":
+ return 72 * 1024
+ return 96 * 1024
+
def apply_app_font_size(self) -> None:
app_font_size = app.settings.get("app_font_size")
- css = f"""
- * {{
- font-size: {app_font_size}rem;
- }}
- """
- self._app_font_size_provider.load_from_bytes(
- GLib.Bytes.new(css.encode("utf-8"))
- )
+ if app_font_size == 1:
+ log.debug("Reset gtk-xft-dpi")
+ self._gtk_settings.reset_property("gtk-xft-dpi")
+ else:
+ dpi = app_font_size * self.get_dpi_ratio()
+ log.debug("Set gtk-xft-dpi %s", dpi)
+ self._gtk_settings.set_property("gtk-xft-dpi", dpi)
def _apply_windows_css(self) -> None:
"""Apply extra CSS on Windows to fix issues, see:
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/9f83eb7496baf807719c51e0cc48538bec7e4620
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/9f83eb7496baf807719c51e0cc48538bec7e4620
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]