Implement automatic precompilation (#29)

* Implement automatic precompilation - #656
Following the path of Adwaita, this commit implements the automation to
automatically precompile the GTK3 theme versions to gresource binary
files, to improve performance of theme rendering, and avoid unnecessary
re-read and re-parsing of the theme on every app run.
.
Given that the theme is coded in sass to begin with directly altering it
is not a reasonable thing to do, and so we don't loose anything by
having the installed theme in binary form, specially when accessing the
sources is easy enough.
.
The takes #656 and adds to this proposed commit and ensures that
precompilation works for both GTK+3.18 and later GTK+ versions

* Use an standard file rather than symbolic to solve compile issues on GTK+3.18

* Use configure.ac to insert the compilation of resources

* Remove extraneous script

* Revert "Use configure.ac to insert the compilation of resources"

This reverts commit ae52d3287dc91d26745dfb3de35416c87d19c5e0.

* Compile to gresources only for gnome versions later than 3.18

* Ensure Arc-Dark compiles correctly with gresources
master
Nico 2018-09-25 14:29:16 +02:00 committed by David Mohammed
parent 880f13d87c
commit dcb93f1187
3 changed files with 69 additions and 0 deletions

1
.gitignore vendored
View File

@ -21,3 +21,4 @@ common/gtk-3.0/**/assets/*.png
common/gtk-2.0/assets*/*.png
common/gtk-2.0/menubar-toolbar/*.png
common/xfwm4/assets*/*.png
common/compile-gresources.sh

View File

@ -239,6 +239,18 @@ endif # ENABLE_DARK
endif #!ENABLE_TRANSPARENCY
@if [ "$(GTK_VERSION)" != "3.18" ]; then \
cd $(srcdir)/gtk-3.0/$(GTK3_VERSION) && cp -RL compile-gresources.sh $(ithemedir)/gtk-3.0/compile-gresources.sh;\
cd ../..;\
cd $(srcdir)/gtk-3.0/$(GTK3_VERSION) && cp -RL compile-gresources.sh $(ithemedarkdir)/gtk-3.0/compile-gresources.sh;\
cd ../..;\
cd $(srcdir)/gtk-3.0/$(GTK3_VERSION) && cp -RL compile-gresources.sh $(ithemedarkerdir)/gtk-3.0/compile-gresources.sh;\
cd ../..;\
cd $(ithemedir)/gtk-3.0/ && ./compile-gresources.sh LIGHT;\
cd $(ithemedarkdir)/gtk-3.0/ && ./compile-gresources.sh DARK;\
cd $(ithemedarkerdir)/gtk-3.0/ && ./compile-gresources.sh DARKER;\
fi
endif # ENABLE_GTK3

View File

@ -0,0 +1,56 @@
#!/bin/bash
# Setup
mv gtk.css gtk-main.css
if [ "$1" != "DARK" ]; then
mv gtk-dark.css gtk-main-dark.css
fi
# Get processed assets lists
ls ./assets | sort > temp_asset_list.txt
# Build dynamic gresouce xml spec from css and assets
read -d '' RES_PART1 <<"EOF"
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/arc-theme">
EOF
echo $RES_PART1 > gtk.gresource.xml
# Import as nodes the file assets
xargs -i echo '<file preprocess="to-pixdata">assets/{}</file>' >> gtk.gresource.xml < temp_asset_list.txt
rm -f temp_asset_list.txt
# Write the css file information to the template
if [ "$1" != "DARK" ]; then
read -d '' RES_PART2 <<"EOF"
<file>gtk-main.css</file>
<file>gtk-main-dark.css</file>
</gresource>
</gresources>
EOF
else
read -d '' RES_PART2 <<"EOFDARK"
<file>gtk-main.css</file>
</gresource>
</gresources>
EOFDARK
fi
echo $RES_PART2 >> gtk.gresource.xml
# Compile the gresource file
glib-compile-resources gtk.gresource.xml
echo '@import url("resource:///org/gnome/arc-theme/gtk-main.css");' > gtk.css
if [ "$1" != "DARK" ]; then
echo '@import url("resource:///org/gnome/arc-theme/gtk-main-dark.css");' > gtk-dark.css
fi
# Cleanup
rm -rf assets
rm -f gtk.gresource.xml
rm -f gtk-main.css
rm -f gtk-main-dark.css
rm -f compile-gresources.sh