diff --git a/lib/Text.vala b/lib/Text.vala new file mode 100644 index 000000000..99b9252a5 --- /dev/null +++ b/lib/Text.vala @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: LGPL-3.0-or-later + * SPDX-FileCopyrightText: 2025 elementary, Inc. (https://elementary.io) + */ + +/* + * Clutter.Text that automatically changes font-name to the system one + */ +public class Gala.Text : Clutter.Text { + private static GLib.Settings gnome_interface_settings; + + static construct { + gnome_interface_settings = new GLib.Settings ("org.gnome.desktop.interface"); + } + + construct { + set_system_font_name (); + gnome_interface_settings.changed["font-name"].connect (set_system_font_name); + } + + private void set_system_font_name () { + var name = gnome_interface_settings.get_string ("font-name").split (" "); + var last_element_index = name.length - 1; + + if (int.try_parse (name[last_element_index])) { // if last element is a font-size + name[last_element_index] = "12"; // hardcode size (can be changed later if needed) + } else { + name += "12"; + } + + font_name = string.joinv (" ", name); + } +} diff --git a/lib/meson.build b/lib/meson.build index 5365300ea..7b8ec254a 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -17,6 +17,7 @@ gala_lib_sources = files( 'Plugin.vala', 'RoundedCornersEffect.vala', 'ShadowEffect.vala', + 'Text.vala', 'Utils.vala', 'WindowIcon.vala', 'WindowManager.vala', diff --git a/src/Widgets/MultitaskingView/Tooltip.vala b/src/Widgets/MultitaskingView/Tooltip.vala index c5010e339..8f071cfb6 100644 --- a/src/Widgets/MultitaskingView/Tooltip.vala +++ b/src/Widgets/MultitaskingView/Tooltip.vala @@ -11,7 +11,7 @@ public class Gala.Tooltip : Clutter.Actor { /** * Actor to display the Tooltip text. */ - private Clutter.Text text_actor; + private Gala.Text text_actor; construct { #if HAS_MUTTER47 @@ -25,7 +25,7 @@ public class Gala.Tooltip : Clutter.Actor { (uint8) Drawing.Color.TOOLTIP_TEXT_COLOR.alpha * uint8.MAX, }; - text_actor = new Clutter.Text () { + text_actor = new Gala.Text () { margin_left = 6, margin_top = 6, margin_bottom = 6, diff --git a/src/Widgets/WindowSwitcher/WindowSwitcher.vala b/src/Widgets/WindowSwitcher/WindowSwitcher.vala index 7b1260e52..485e6547d 100644 --- a/src/Widgets/WindowSwitcher/WindowSwitcher.vala +++ b/src/Widgets/WindowSwitcher/WindowSwitcher.vala @@ -10,7 +10,6 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget { public const int WRAPPER_PADDING = 12; - private const string CAPTION_FONT_NAME = "Inter"; private const int MIN_OFFSET = 64; private const double GESTURE_STEP = 0.1; @@ -24,7 +23,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget { private Gala.ModalProxy modal_proxy = null; private Drawing.StyleManager style_manager; private Clutter.Actor container; - private Clutter.Text caption; + private Gala.Text caption; private ShadowEffect shadow_effect; private BackgroundBlurEffect blur_effect; @@ -81,8 +80,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget { get_accessible ().accessible_name = _("Window switcher"); container.get_accessible ().accessible_role = LIST; - caption = new Clutter.Text () { - font_name = CAPTION_FONT_NAME, + caption = new Gala.Text () { ellipsize = END, line_alignment = CENTER };