1. 02 Aug, 2021 1 commit
    • Fabian Vogt's avatar
      Make sure to actually commit GSettings changes · 57cc9bd8
      Fabian Vogt authored
      g_settings_set_* is async, so make sure the change is actually performed before
      returning and eventually exiting. This mostly affected the gtk_theme update
      binary, because that isn't long running unlike the kded module.
      (cherry picked from commit 6b2c2110)
  2. 04 Feb, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      Upgrade theme to Breeze GTK on startup · d892dc2b
      Mikhail Zolotukhin authored
      Also apply it, if the config is empty. This is a port of kconf_update
      script from `breeze-gtk` repo, but this time it use gtkconfig kded
      module methods to manipulate config (to avoid code duplication and to
      write config to all possible configuration storages).
      Also kded module updates config for theme on every start, if it is
      BUG: 416635
      FIXED-IN: 5.18.0
      Test Plan:
      Subscribers: plasma-devel
      Tags: #plasma
      Differential Revision: https://phabricator.kde.org/D26891
  3. 23 Jan, 2020 1 commit
  4. 11 Jan, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      Rewrite GTK KCM · 1ebf620d
      Mikhail Zolotukhin authored
      After several changes, GTK Applications settings are now in
      sync with KDE equivalent ones, so that GTK KCM now controls only the
      theme of the GTK applications. But GTK KCM was written with the thought
      that it controls entire GTK apps appearance in mind. Its code structure
      is now redundant and needs to be either rewritten or purged in favour of
      new one, that will be present in Application Style KCM code base.
      The last approach is preferable, because of the goal of removing GTK KCM
      to simplify System Settings structure. However, there are some points to
      be noted:
      # The consensus of where exactly to put the GTK applications settings
         in App Style KCM is not yet reached.
      # A couple of changes to the kded settings sync daemon are needed, to
         provide functionality, that is left in GTK KCM (Themes
         Installation/Deletion, Preview etc) without depending on GTK libs
      # There are some bugs in KCM, that are present in the moment, that
         could only be fixed with architecture changes (for example: not
         working previews, when the xsettingsd daemon is running; broken icons
         in the previews; gtk themes do not applying for flatpak apps)
      Given the points above I decided to rewrite GTK KCM, so that complex
      design task (1) would be solved after changes (2) are made. And also
      in the process some bugs (3) will be fixed.
      Now, GTK KCM is not responsible for managing GTK configs, the one who
      does is the kded module, that is asked through DBus, when it is needed
      to do so.
      The stuff, that is managed by kded module:
      # Setting selected GTK2 and GTK3 themes for applications
      # Getting current GTK2 and GTK3 themes for applications
      # Previewing GTK2 and GTK3 applications for selected themes
      Technically 2 and 3 could be done in KCM directly, because they do not
      depend on GTK libs, but I thought, that it would be logically related to
      the stuff, that is done via kded module. If you think, that that
      approach is not right, feel free to criticise.
      The stuff, that is done in KCM directly:
      # Getting the list of installed GTK themes
      # Installing and removing the GTK theme
      Also there are some visual changes:
      # Theme deletion is now done via button near GTK theme combo, instead
         of separate dialog
      # Theme installation from file is now done via button at the bottom,
         as in the other similar KCMs
      # Preview button now has a title with an ellipsis to indicate, that
         it launches GTK app in a pop up window
      BUG: 405405
      Test Plan:
      # Relaunch kded5
      # Open GTK KCM
      # Check if gtk themes changing works
      # Check if the previews are working
      # Check if the local themes deletion works
      # Check if theme installation from archive works
      # Check if GHNS theme installation works
      Reviewers: apol, #vdg, ngraham, cblack
      Reviewed By: #vdg, ngraham, cblack
      Subscribers: cblack, baberts, ngraham, plasma-devel
      Tags: #plasma
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D26261
  5. 02 Jan, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      Respect GTK2_RC_FILES environmental variable · 5734413d
      Mikhail Zolotukhin authored
      If the above variable is set and it does not contain multiple paths,
      write GTK2 config into the designated config file, instead of the
      default one.
      BUG: 415770
      FIXED-IN: 5.18.0
      Test Plan:
      Check if the custom file provided by env variable is modified, when changing any settings, that are synchronized by kded module (icon theme, cursor theme etc)
      Simple test:
      # `mv ~/.gtkrc-2.0 ~/.gtkrc-2.0.bak`
      # `export GTK2_RC_FILES=~/.gtkrc-2.0.bak`
      # Restart kded5 with the above env variable
      # Change e.g. icon theme and see, that `.gtkrc-2.0.bak` is modified, but `.gtkrc-2.0`
      Reviewers: ngraham
      Reviewed By: ngraham
      Subscribers: plasma-devel
      Tags: #plasma
      Differential Revision: https://phabricator.kde.org/D26375
  6. 18 Dec, 2019 1 commit
    • Mikhail Zolotukhin's avatar
      Synchronize decorations buttons order in GTK headerbars · 2b12ceb1
      Mikhail Zolotukhin authored
      Window decorations button order was applied only for window headers that was controlled by KWin, but not for GTK applications with CSD.  Now it is no longer true - button order in CSD applications are in sync with the one used by KWin.
      Only Close, Maximize, Minimize and Icon buttons are synchronized, because GTK supports only them.
      Depends on D25695
      Test Plan:
      # Open two windows alongside each other: window decorations button order settings and any gtk3 app with CSD (for example, Lutris)
      # Restart kded5
      # Apply any WD button order, apply settings
      # The app should change its buttons order in headerbar (if xsettingsd is not installed, on X11 only after restart)
      Reviewers: #vdg, cblack, #plasma, apol
      Reviewed By: apol
      Subscribers: apol, GB_2, broulik, plasma-devel
      Tags: #plasma
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D25670
  7. 10 Dec, 2019 1 commit
    • Mikhail Zolotukhin's avatar
      Sync scrollbar behavior with GTK applications · 68787ff9
      Mikhail Zolotukhin authored and Nate Graham's avatar Nate Graham committed
      Previously GTK applications respected their own setting on what should happen when an user clicks below or above scrollbar slider. Now it is in sync with Plasma and Qt applications settings.
      # I'm failed to found DConf GTK setting, that is responsible for scrollbar behavior. Maybe someone could help.
      # Setting apply on the go do not work with GTK2 apps, therefore they need to be reloaded to respect the new setting.
      Test Plan:
      # Update `plasma-desktop` and `frameworkintegration`
      # Launch workspace behavior KCM and change scrollbar setting `Clicking on scrollbar track`
      # GTK3 apps should now respect the setting
      Reviewers: cblack, #vdg, ngraham, apol
      Reviewed By: #vdg, ngraham
      Subscribers: ngraham, plasma-devel
      Tags: #plasma
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D25703
  8. 14 Nov, 2019 1 commit
    • Mikhail Zolotukhin's avatar
      Update GTK settings according to Plasma settings · 94732eb8
      Mikhail Zolotukhin authored and Nate Graham's avatar Nate Graham committed
      To increase usability,
      - fonts
      - icon theme
      - cursor theme
      - toolbar style (icons-only, text below buttons etc)
      - icons visibility in menus
      - icons visibility on buttons
      settings for gtk applications are now set in respective kcms, instead of separate gtk kcm.
      Various kcms are sending signals (dbus or Qt ones) about the configuration change. Then the gtkconfig kded daemon connects to these signals and changes gtk config files to match new settings, that were set in those kcms.
      D24701 is needed to notify about cursor change on Wayland.
      Live reloading (on a fly) is not going to work for some settings on X11. This applies to cursor theme, it's changed by partially. To illustrate that open Nautilus File Manager, change cursor theme and try to double click folders. You will see, that "loading" cursor changed its theme, but "idle" one did not.
      What is not tested:
      - Toolbar style for gtk3 apps other that Geany (absence of live reloading may be a Geany bug)
      - Toolbar style and icons visibility on Wayland
      Depends on D24701
      BUG: 401507
      BUG: 375272
      BUG: 411097
      FIXED-IN: 5.18.0
      Test Plan:
      # To test gtk3 applications live reloading on X11, install xsettingsd.
      # Restart kded5.
      # Open gtk2 app, gtk3 app
      # Change above mentioned settings in respective KCMs
      # Check if gtk applications are changing their settings before (sometimes) and after their restart.
      Rare cases:
      - To test icons on buttons use Inkscape about window.
      - To test toolbar style use Geany (gtk3, live reloading does not work) and BleachBit (gtk2)
      Reviewers: #plasma, #vdg, broulik, cblack
      Reviewed By: #plasma, broulik
      Subscribers: ervin, ngraham, broulik, nicolasfella, plasma-devel
      Tags: #plasma, #vdg
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D24743