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]

Reply via email to