1. 19 Mar, 2021 1 commit
  2. 04 Mar, 2021 2 commits
  3. 21 Jan, 2021 2 commits
  4. 21 Sep, 2020 1 commit
  5. 17 Sep, 2020 2 commits
  6. 25 Aug, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      Sync titlebar button appearance with GTK CSD apps · 7bffadad
      Mikhail Zolotukhin authored
      Currently GTK applications with Client Side Decorations always use
      decorations from the respected GTK CSS theme. Because of CSS nature
      different themes may handle decorations in the headerbars differently,
      therefore making modifying them via user css a very hard task. However,
      what we can do is to use decoration appearance syncing in our own theme
      - Breeze GTK.
      Breeze GTK uses svg images for the representation of decoration
      buttons (close, minimize, maximize) appearance. So to achieve the goal
      what we do is the following:
      1. We ask KWin to render current decoration buttons to custom QPainters.
         For each button we must export every state (clicked, hovered, normal, inactive).
      2. QPainters then export decoration buttons to svg's.
      3. Then we save those images to assets folder in
      4. Then we create custom .css for Breeze GTK, that tells the theme
         to use these saved images for decorations.
      All of the above is only done if the current GTK theme is Breeze.
  7. 21 Jul, 2020 2 commits
    • Mikhail Zolotukhin's avatar
      Make a strong hint, that xsettingsd is a de facto required runtime dependency · 20e9702b
      Mikhail Zolotukhin authored
      Without xsettingsd most of the settings are not applied on the fly
      sacrificing user experience, therefore it should be a required component
    • Mikhail Zolotukhin's avatar
      Provide an unified interface for setting GTK theme · 9323a96a
      Mikhail Zolotukhin authored
      GTK configuration in Plasma depends on xsettings daemon, that has no
      separation between GTK2 and GTK3 theme, therefore separate themes for
      GTK2 and GTK3 are impossible, while this daemon is working. The daemon
      itself provides the functionality to apply settings to GTK applications
      without restarting them.
      The functionality to apply different themes to applications, depending on
      the framework version isn't necessary, when 99% of the themes are
      compatible with both versions and when most of the applications are
      using the last GTK version anyway.
      Given all that, I think, that a theme selection must be narrowed to one
      and only one theme for both versions of the GTK framework.
      CCBUG: 423141
  8. 03 Jun, 2020 1 commit
  9. 14 May, 2020 3 commits
  10. 14 Apr, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      [GTK Config] Apply color scheme to GTK3 applications · a5d4ddb3
      Mikhail Zolotukhin authored
      Move from krdb (see D28070) with some refactorings.
      Depends on D28070
      Test Plan:
      This is how I got it to work, improvements to the process are appreciated
      # Apply D28070
      # Compile breeze-gtk and then copy `$PREFIX/kde/usr/share/themes/Breeze` to `/usr/share/themes` (replacing the existing Breeze (make a backup)). This is needed because Breeze-Gtk recently changed its color definitions names, which are used in this diff. Old Breeze-Gtk uses different ones and therefore the coloration won't work.
      # Run systemsettings and reapply Breeze theme from Application Style KCM
      # Restart `kded5`
      # Go to colors KCM, open it side by side with GTK3 applications (preferably Gedit NOT Nautilus or Lutris (those ones are kept open if you press cross in headerbar))
      # Change the color scheme.
      # The application must change the colorscheme
      Reviewers: cblack, #plasma, ngraham
      Reviewed By: cblack, #plasma, ngraham
      Subscribers: ndavis, ngraham, davidre, plasma-devel
      Tags: #plasma
      Differential Revision: https://phabricator.kde.org/D28072
  11. 29 Mar, 2020 2 commits
  12. 21 Mar, 2020 1 commit
  13. 17 Mar, 2020 2 commits
  14. 16 Mar, 2020 1 commit
  15. 10 Mar, 2020 2 commits
  16. 25 Feb, 2020 1 commit
  17. 18 Feb, 2020 1 commit
  18. 06 Feb, 2020 1 commit
  19. 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
  20. 16 Jan, 2020 2 commits
  21. 15 Jan, 2020 1 commit
    • Mikhail Zolotukhin's avatar
      Remove GTK KCM · c21f1e7d
      Mikhail Zolotukhin authored
      After D26583 GTK KCM is no longer needed, the functionality
      is now in Application Style KCM. Also some outdated files (such as readme and changelog) were removed.
      Test Plan:
      # Delete `$DEV_DIR/usr/lib/plugins/kcm_kdegtkconfig.so` from possible previous builds+installs
      # Build, run system settings with prefix
      # Check, that the only loaded GTK KCM is the old one
      Reviewers: mart
      Reviewed By: mart
      Subscribers: plasma-devel
      Tags: #plasma
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D26593
  22. 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
  23. 18 Dec, 2019 2 commits
    • Mikhail Zolotukhin's avatar
      Sync dark theme preference for GTK3 applications · 99c72b4b
      Mikhail Zolotukhin authored
      Previously preference of dark GTK3 theme was set by checkbox in GTK KCM.  Now, the checkbox is removed and preference is set according to color scheme, the user set in Colors KCMm, using the same heuristic, used for filter combobox in that KCM.
      This makes sense, because, suppose the user set Adwaita GTK3 theme, and their color scheme is something dark. Therefore their overall theme is supposedly dark, so Adwaita needs to be dark too.
      Note, however, that this preference is somewhat buggy. It does not work in flatpak apps, it can't be autoreloaded with xsettingsd, and also it is applied after some time has passed (this is hypothetical). You can check these statements, using the present checkbox in GTK KCM.
      Depends on D25872
      Test Plan:
      # Apply Adwaita GTK3 Theme
      # Reload kded5
      # Apply dark color scheme
      # Wait some time
      # (Re)open GTK3 app
      # App should use Dark color scheme
      # Apply light color scheme
      # Wait some time
      # Reopen GTK3 app
      # App should use Light color scheme
      Reviewers: apol, cblack, broulik, #vdg
      Reviewed By: apol, cblack
      Subscribers: ngraham, GB_2, plasma-devel
      Tags: #plasma
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D25945
    • Mikhail Zolotukhin's avatar
      Refactor GTK KCM code · 13c4eee2
      Mikhail Zolotukhin authored
      This diff introduces purely cosmetic changes.
      1. KCM now compiled with no signals/slot keywords to avoid clash with
      2. Remove linking of XCursors library, because it is no longer needed
      3. Replace some for-cycles with range-based ones
      4. Wrap some string literals with QStringLiteral
      5. Rearrange include headers
      5. Some other changes to better match code style
      Test Plan: Check, if there is no regressions
      Reviewers: apol
      Reviewed By: apol
      Subscribers: plasma-devel
      Tags: #plasma
      Differential Revision: https://phabricator.kde.org/D25872
  24. 02 Dec, 2019 1 commit
    • Mikhail Zolotukhin's avatar
      Remove unneeded options in GTK KCM · e3274dba
      Mikhail Zolotukhin authored and Nate Graham's avatar Nate Graham committed
      Since font, icons, cursor theme, toolbar style, icons in menus and buttons settings are now in sync with corresponding plasma settings, they shouldn't be in GTK KCM anymore.
      Depends on D24743
      BUG: 406740
      BUG: 401008
      BUG: 401123
      FIXED-IN: 5.18.0
      Test Plan:
      Check if nothing breaks in GTK KCM functionality, that is left.
      Reviewers: #vdg, #plasma, ngraham, nicolasfella
      Reviewed By: #vdg, ngraham, nicolasfella
      Subscribers: apol, ngraham, broulik, filipf, GB_2, plasma-devel
      Tags: #plasma, #vdg
      Maniphest Tasks: T10611
      Differential Revision: https://phabricator.kde.org/D24744
  25. 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
  26. 04 Nov, 2019 1 commit
    • David Edmundson's avatar
      Add KDEClangFormat cmake support · 59ad3f60
      David Edmundson authored
      This allows devs to run: "make clang-format" and format all files easily
      using the preset KDE clang format style
      This patch adds support so devs can easily test the intended formatting
      now, it doesn't change the code yet.
      Doing an initial run to commit everything will happen later.
      Test Plan:
      Ran script
      git diff was full of amazingly cleaned code
      See D25134
  27. 29 Oct, 2019 1 commit
  28. 22 Oct, 2019 1 commit
  29. 10 Oct, 2019 1 commit