gepardo created this revision. Herald added a project: Plasma. Herald added a subscriber: plasma-devel. gepardo requested review of this revision.
REVISION SUMMARY As it was explained in https://phabricator.kde.org/D16365, > Further potential steps in the same direction of saving code would be going back to SASS This patch tries to go back to SCSS sources with backporting all the fixes made in Breeze-gtk recently. As a base, I used this repository: https://github.com/dirruk1/gnome-breeze. But it's outdated, so I walked through the commit history of breeze-gtk and ported all the changes here. The script for building the theme was ported to Python3, and shell scripts now use POSIX sh instead of bash. Also I fixed some inconsistences between Qt and GTK Breeze themes. For example, Breeze-Qt colorscheme was updated a little (in Plasma 5.12, as far as I remember), but the GTK theme was updated only partially; now the colors are synchronized. Both GTK-3.18 and GTK-3.20 versions work fine for me; many things were also fixed for GTK 3.18. For building the theme, ruby-sass (or more lightweght sassc) is required. Also the theme can be patched to allow changing the colorscheme in System Settings (though, rebuilding the theme with sassc is required for this). The original repository (https://github.com/dirruk1/gnome-breeze) had also named-colors branch that allowed using named colors and changing the colorscheme without rebuilding; but I couldn't get this working. Because both Breeze-gtk and Breese-dark-gtk are now built from sources, there will be no more inconsistences between them. Rebuilding these themes can be done using rebuild-theme.sh. TEST PLAN I do not know how to test this automatically. But I am using this version of Breeze-GTK for several months (I am not using many GTK+ applications, though). Also checked it on gtk3-widget-factory; it seems to work fine. GTK2 version was tested on Gimp, but it is mostly unchanged. For differences between https://github.com/dirruk1/gnome-breeze and this version, you can see my GitHub repo where I worked on this patch: https://github.com/alex65536/gnome-breeze/tree/breeze-gtk-merge. REPOSITORY R98 Breeze for Gtk BRANCH breeze-gtk-sass (branched from master) REVISION DETAIL https://phabricator.kde.org/D17154 AFFECTED FILES Breeze-dark-gtk/gtk-2.0/widgets/default Breeze-dark-gtk/gtk-2.0/widgets/scrollbar Breeze-dark-gtk/gtk-3.0/gtk.css Breeze-dark-gtk/gtk-3.18/gtk.css Breeze-dark-gtk/gtk-3.20/gtk.css Breeze-gtk/assets/arrow-down-insensitive.png Breeze-gtk/assets/arrow-down.png Breeze-gtk/assets/arrow-left-insensitive.png Breeze-gtk/assets/arrow-left.png Breeze-gtk/assets/arrow-right-insensitive.png Breeze-gtk/assets/arrow-right.png Breeze-gtk/assets/arrow-small-down-insensitive.png Breeze-gtk/assets/arrow-small-down.png Breeze-gtk/assets/arrow-small-left-insensitive.png Breeze-gtk/assets/arrow-small-left.png Breeze-gtk/assets/arrow-small-right-insensitive.png Breeze-gtk/assets/arrow-small-right.png Breeze-gtk/assets/arrow-small-up-insensitive.png Breeze-gtk/assets/arrow-small-up.png Breeze-gtk/assets/arrow-up-insensitive.png Breeze-gtk/assets/arrow-up.png Breeze-gtk/assets/button-insensitive.png Breeze-gtk/assets/button.png Breeze-gtk/assets/check-checked-backdrop-insensitive.png Breeze-gtk/assets/check-checked-backdrop-insensit...@2.png Breeze-gtk/assets/check-checked-backdrop.png Breeze-gtk/assets/check-checked-backd...@2.png Breeze-gtk/assets/check-checked-insensitive.png Breeze-gtk/assets/check-checked-insensit...@2.png Breeze-gtk/assets/check-mixed-backdrop-insensitive.png Breeze-gtk/assets/check-mixed-backdrop-insensit...@2.png Breeze-gtk/assets/check-mixed-backdrop.png Breeze-gtk/assets/check-mixed-backd...@2.png Breeze-gtk/assets/check-mixed-insensitive.png Breeze-gtk/assets/check-mixed-insensit...@2.png Breeze-gtk/assets/check-selectionmode-checked-backdrop-insensitive.png Breeze-gtk/assets/check-selectionmode-checked-backdrop-insensit...@2.png Breeze-gtk/assets/check-selectionmode-checked-backdrop.png Breeze-gtk/assets/check-selectionmode-checked-backd...@2.png Breeze-gtk/assets/check-selectionmode-checked-insensitive.png Breeze-gtk/assets/check-selectionmode-checked-insensit...@2.png Breeze-gtk/assets/check-selectionmode-unchecked-backdrop-insensitive.png Breeze-gtk/assets/check-selectionmode-unchecked-backdrop-insensit...@2.png Breeze-gtk/assets/check-selectionmode-unchecked-backdrop.png Breeze-gtk/assets/check-selectionmode-unchecked-backd...@2.png Breeze-gtk/assets/check-selectionmode-unchecked-insensitive.png Breeze-gtk/assets/check-selectionmode-unchecked-insensit...@2.png Breeze-gtk/assets/check-selectionmode-unchecked.png Breeze-gtk/assets/check-selectionmode-unchec...@2.png Breeze-gtk/assets/check-unchecked-backdrop-insensitive.png Breeze-gtk/assets/check-unchecked-backdrop-insensit...@2.png Breeze-gtk/assets/check-unchecked-backdrop.png Breeze-gtk/assets/check-unchecked-backd...@2.png Breeze-gtk/assets/check-unchecked-insensitive.png Breeze-gtk/assets/check-unchecked-insensit...@2.png Breeze-gtk/assets/check-unchecked.png Breeze-gtk/assets/check-unchec...@2.png Breeze-gtk/assets/combo-entry-button-insensitive.png Breeze-gtk/assets/combo-entry-button.png Breeze-gtk/assets/combo-entry-insensitive.png Breeze-gtk/assets/combo-entry.png Breeze-gtk/assets/entry-insensitive.png Breeze-gtk/assets/entry.png Breeze-gtk/assets/frame-gap-end.png Breeze-gtk/assets/frame-gap-start.png Breeze-gtk/assets/frame.png Breeze-gtk/assets/line-h.png Breeze-gtk/assets/line-v.png Breeze-gtk/assets/menu-arrow-insensitive.png Breeze-gtk/assets/menu-arrow-selected.png Breeze-gtk/assets/menu-arrow.png Breeze-gtk/assets/notebook-frame-bottom.png Breeze-gtk/assets/notebook-frame-right.png Breeze-gtk/assets/notebook-frame-top.png Breeze-gtk/assets/progressbar-trough.png Breeze-gtk/assets/radio-checked-backdrop-insensitive.png Breeze-gtk/assets/radio-checked-backdrop-insensit...@2.png Breeze-gtk/assets/radio-checked-backdrop.png Breeze-gtk/assets/radio-checked-backd...@2.png Breeze-gtk/assets/radio-checked-insensitive.png Breeze-gtk/assets/radio-checked-insensit...@2.png Breeze-gtk/assets/radio-mixed-backdrop-insensitive.png Breeze-gtk/assets/radio-mixed-backdrop-insensit...@2.png Breeze-gtk/assets/radio-mixed-backdrop.png Breeze-gtk/assets/radio-mixed-backd...@2.png Breeze-gtk/assets/radio-mixed-insensitive.png Breeze-gtk/assets/radio-mixed-insensit...@2.png Breeze-gtk/assets/radio-unchecked-backdrop-insensitive.png Breeze-gtk/assets/radio-unchecked-backdrop-insensit...@2.png Breeze-gtk/assets/radio-unchecked-backdrop.png Breeze-gtk/assets/radio-unchecked-backd...@2.png Breeze-gtk/assets/radio-unchecked-insensitive.png Breeze-gtk/assets/radio-unchecked-insensit...@2.png Breeze-gtk/assets/radio-unchecked.png Breeze-gtk/assets/radio-unchec...@2.png Breeze-gtk/assets/scale-slider-insensitive.png Breeze-gtk/assets/scale-slider.png Breeze-gtk/assets/scale-trough-horizontal.png Breeze-gtk/assets/scale-trough-vertical.png Breeze-gtk/assets/scrollbar-trough-horizontal.png Breeze-gtk/assets/scrollbar-trough-horizon...@2.png Breeze-gtk/assets/scrollbar-trough-vertical.png Breeze-gtk/assets/scrollbar-trough-verti...@2.png Breeze-gtk/assets/spinbutton-down-insensitive.png Breeze-gtk/assets/spinbutton-down-rtl-insensitive.png Breeze-gtk/assets/spinbutton-down-rtl.png Breeze-gtk/assets/spinbutton-down.png Breeze-gtk/assets/spinbutton-up-insensitive.png Breeze-gtk/assets/spinbutton-up-rtl-insensitive.png Breeze-gtk/assets/spinbutton-up-rtl.png Breeze-gtk/assets/spinbutton-up.png Breeze-gtk/assets/tab-bottom-active.png Breeze-gtk/assets/tab-bottom-inactive.png Breeze-gtk/assets/tab-left-active.png Breeze-gtk/assets/tab-left-inactive.png Breeze-gtk/assets/tab-right-active.png Breeze-gtk/assets/tab-right-inactive.png Breeze-gtk/assets/tab-top-active.png Breeze-gtk/assets/tab-top-inactive.png Breeze-gtk/assets/titlebutton-close-backdrop.png Breeze-gtk/assets/titlebutton-close-backd...@2.png Breeze-gtk/assets/titlebutton-close.png Breeze-gtk/assets/titlebutton-cl...@2.png Breeze-gtk/assets/titlebutton-maximize-active-backdrop.png Breeze-gtk/assets/titlebutton-maximize-active-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-active.png Breeze-gtk/assets/titlebutton-maximize-act...@2.png Breeze-gtk/assets/titlebutton-maximize-backdrop.png Breeze-gtk/assets/titlebutton-maximize-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-hover-backdrop.png Breeze-gtk/assets/titlebutton-maximize-hover-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-hover.png Breeze-gtk/assets/titlebutton-maximize-ho...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized-active-backdrop.png Breeze-gtk/assets/titlebutton-maximize-maximized-active-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized-active.png Breeze-gtk/assets/titlebutton-maximize-maximized-act...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized-backdrop.png Breeze-gtk/assets/titlebutton-maximize-maximized-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized-hover-backdrop.png Breeze-gtk/assets/titlebutton-maximize-maximized-hover-backd...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized-hover.png Breeze-gtk/assets/titlebutton-maximize-maximized-ho...@2.png Breeze-gtk/assets/titlebutton-maximize-maximized.png Breeze-gtk/assets/titlebutton-maximize-maximi...@2.png Breeze-gtk/assets/titlebutton-maximize.png Breeze-gtk/assets/titlebutton-maxim...@2.png Breeze-gtk/assets/titlebutton-minimize-active-backdrop.png Breeze-gtk/assets/titlebutton-minimize-active-backd...@2.png Breeze-gtk/assets/titlebutton-minimize-active.png Breeze-gtk/assets/titlebutton-minimize-act...@2.png Breeze-gtk/assets/titlebutton-minimize-backdrop.png Breeze-gtk/assets/titlebutton-minimize-backd...@2.png Breeze-gtk/assets/titlebutton-minimize-hover-backdrop.png Breeze-gtk/assets/titlebutton-minimize-hover-backd...@2.png Breeze-gtk/assets/titlebutton-minimize-hover.png Breeze-gtk/assets/titlebutton-minimize-ho...@2.png Breeze-gtk/assets/titlebutton-minimize.png Breeze-gtk/assets/titlebutton-minim...@2.png Breeze-gtk/assets/togglebutton-insensitive.png Breeze-gtk/assets/togglebutton.png Breeze-gtk/assets/toolbutton-toggled.png Breeze-gtk/assets/tree-header.png Breeze-gtk/gtk-2.0/gtkrc Breeze-gtk/gtk-2.0/widgets/default Breeze-gtk/gtk-3.0/gtk.css Breeze-gtk/gtk-3.18/gtk-dark.css Breeze-gtk/gtk-3.18/gtk.css Breeze-gtk/gtk-3.20/common.css Breeze-gtk/gtk-3.20/gtk-dark.css Breeze-gtk/gtk-3.20/gtk.css TODO generate_theme.py rebuild-theme.sh src/_colors.scss src/_functions.scss src/_global.scss src/build_theme.sh src/gtk2/gtkrc src/gtk2/widgets/buttons src/gtk2/widgets/default src/gtk2/widgets/entry src/gtk2/widgets/menu src/gtk2/widgets/misc src/gtk2/widgets/notebook src/gtk2/widgets/progressbar src/gtk2/widgets/range src/gtk2/widgets/scrollbar src/gtk2/widgets/styles src/gtk2/widgets/toolbar src/gtk318/gtk.scss src/gtk318/widgets/_app_notifications.scss src/gtk318/widgets/_base.scss src/gtk318/widgets/_button.scss src/gtk318/widgets/_calendar.scss src/gtk318/widgets/_checkboxes.scss src/gtk318/widgets/_color_chooser.scss src/gtk318/widgets/_dialogs.scss src/gtk318/widgets/_entry.scss src/gtk318/widgets/_headerbar.scss src/gtk318/widgets/_infobar.scss src/gtk318/widgets/_link.scss src/gtk318/widgets/_lists.scss src/gtk318/widgets/_menus.scss src/gtk318/widgets/_misc.scss src/gtk318/widgets/_notebook.scss src/gtk318/widgets/_overshoot.scss src/gtk318/widgets/_pathbar.scss src/gtk318/widgets/_progressbar.scss src/gtk318/widgets/_scale.scss src/gtk318/widgets/_scrollbar.scss src/gtk318/widgets/_sidebar.scss src/gtk318/widgets/_spinbutton.scss src/gtk318/widgets/_switch.scss src/gtk318/widgets/_toolbar.scss src/gtk318/widgets/_tooltips.scss src/gtk318/widgets/_treeview.scss src/gtk318/widgets/_window_decorations.scss src/gtk320/gtk.scss src/gtk320/widgets/_app_notifications.scss src/gtk320/widgets/_base.scss src/gtk320/widgets/_button.scss src/gtk320/widgets/_calendar.scss src/gtk320/widgets/_checkboxes.scss src/gtk320/widgets/_color_chooser.scss src/gtk320/widgets/_dialogs.scss src/gtk320/widgets/_entry.scss src/gtk320/widgets/_headerbar.scss src/gtk320/widgets/_infobar.scss src/gtk320/widgets/_link.scss src/gtk320/widgets/_lists.scss src/gtk320/widgets/_menus.scss src/gtk320/widgets/_misc.scss src/gtk320/widgets/_notebook.scss src/gtk320/widgets/_overshoot.scss src/gtk320/widgets/_pathbar.scss src/gtk320/widgets/_progressbar.scss src/gtk320/widgets/_scale.scss src/gtk320/widgets/_scrollbar.scss src/gtk320/widgets/_sidebar.scss src/gtk320/widgets/_spinbutton.scss src/gtk320/widgets/_switch.scss src/gtk320/widgets/_toolbar.scss src/gtk320/widgets/_tooltips.scss src/gtk320/widgets/_treeview.scss src/gtk320/widgets/_window_decorations.scss src/render_assets.py To: gepardo Cc: plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart