summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2014-01-08 11:48:12 +0100
committerJan Pokorný <jpokorny@redhat.com>2014-01-08 15:02:00 +0100
commit06db71bc60052919851cbb4538c08645d72c1c56 (patch)
tree9b1faaf8cf094cc4fb686f697fa9cf16a7b751eb
parentba91dbb85a82b024e241d703009f14030daa23d4 (diff)
downloaddotfiles-06db71bc60052919851cbb4538c08645d72c1c56.tar.gz
dotfiles-06db71bc60052919851cbb4538c08645d72c1c56.tar.xz
dotfiles-06db71bc60052919851cbb4538c08645d72c1c56.zip
[f18->20] fix broken gtk3 theming (still worse than used be)
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
l---------.config/gtk-3.0/gtk.css1
-rw-r--r--.config/gtk-3.0/settings.ini3
-rwxr-xr-xscripts/gtk3/adwaita-settingini.sh16
-rwxr-xr-xscripts/gtk3/gtk3-fix.sh51
-rw-r--r--scripts/gtk3/theme-adwaita45
5 files changed, 80 insertions, 36 deletions
diff --git a/.config/gtk-3.0/gtk.css b/.config/gtk-3.0/gtk.css
deleted file mode 120000
index c102238..0000000
--- a/.config/gtk-3.0/gtk.css
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/themes/Adwaita/gtk-3.0/gtk-dark.css \ No newline at end of file
diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini
index 2a9cdd2..a756b47 100644
--- a/.config/gtk-3.0/settings.ini
+++ b/.config/gtk-3.0/settings.ini
@@ -1,4 +1,7 @@
[Settings]
+;deprecated since 3.8
gtk-color-scheme = "base_color:#ffffff\nbg_color:#ededed\ntooltip_bg_color:#343434\nselected_bg_color:#4a90d9\ntext_color:#2e3436\nfg_color:#cccccc\ntooltip_fg_color:#eeeeec\nselected_fg_color:#ffffff"
+;deprecated since 3.10
gtk-auto-mnemonics = 1
+;;deprecated since 3.10
gtk-visible-focus = automatic
diff --git a/scripts/gtk3/adwaita-settingini.sh b/scripts/gtk3/adwaita-settingini.sh
deleted file mode 100755
index d79bd3e..0000000
--- a/scripts/gtk3/adwaita-settingini.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# jpokorny@redhat.com
-
-# this is recipe to prepare ~/.config/gtk-3.0/settings.ini
-# for Adwaita theme black as suitable for me and as also
-# statically placed within this dotfiles repo
-
-ADWAITA_GTK3=/usr/share/themes/Adwaita/gtk-3.0
-FG_COLOR='#cccccc'
-TOOLTIP_FG_COLOR='#eeeeec'
-
-sed "${ADWAITA_GTK3}/settings.ini" \
- -e "s|^\(\s*gtk-color-scheme\s\+=.*\\\\nfg_color:\)[^;\\]\+\([;\\].*\)$|\1${FG_COLOR}\2|" \
- -e "s|^\(\s*gtk-color-scheme\s\+=.*\\\\ntooltip_fg_color:\)[^;\\]\+\([;\\].*\)$|\1${TOOLTIP_FG_COLOR}\2|" \
- > ../../.config/gtk-3.0/settings.ini
diff --git a/scripts/gtk3/gtk3-fix.sh b/scripts/gtk3/gtk3-fix.sh
index 143ea70..90a0b0d 100755
--- a/scripts/gtk3/gtk3-fix.sh
+++ b/scripts/gtk3/gtk3-fix.sh
@@ -2,29 +2,42 @@
# credit:
# http://tacticalvim.wordpress.com/2013/01/05/using-the-adwaita-gtk3-theme-with-xfce-and-lightdm/
#
-# to be run as root, not user related
+# to be run either as a root (system-wide fix only) or as a user
+# (user-specific customization, but prompts for root password to
+# do the main task)
#
# gtk-fallback.css notes:
# - https://bugs.archlinux.org/task/34002
# - https://git.gnome.org/browse/gnome-themes-standard/commit/?id=1aed68dbda8b93b39d2586df132cc14ca337c4d9
-GR_FILE="/usr/share/themes/Adwaita/gtk-3.0/gtk.gresource"
-GR_BASEDIR="$(dirname "${GR_FILE}")"
-GR_BASEROOT="/org/gnome/adwaita/"
-GR_FILES="${GR_BASEDIR}/files"
-
-mkdir "${GR_FILES}"
-pushd "${GR_FILES}" >/dev/null || exit
+THEME=theme-adwaita
+test $# -gt 0 && THEME=$1
+source "${THEME}"
-for RSRC in $(gresource list $GR_FILE); do
- RSRC_FILE="$(echo "${RSRC#$GR_BASEROOT}")"
- mkdir -p "$(dirname "$RSRC_FILE")" ||:
- gresource extract "$GR_FILE" "$RSRC" > "$RSRC_FILE"
-done
-
-find "${GR_BASEDIR}" -maxdepth 1 -name '*.css' -print0 | xargs -0 -I '{}' \
- sed -i.bck \
- -e "s|^\(@import\s\+url\s*(\s*\"\)resource://${GR_BASEROOT}\(.*\)|\1file:///${GR_FILES}/\2|" \
- '{}'
+GR_BASEDIR="${THEME_DIR}/gtk-3.0"
+GR_FILE="${THEME_FILE:-${GR_BASEDIR}/gtk.gresource}"
+GR_BASEROOT="${THEME_BASEROOT}"
+GR_FILES="${GR_BASEDIR}/files"
-popd >/dev/null
+if test $(id -u) -ne 0; then
+ echo "need to rerun this script as root"
+ su -c "$0 $@" || exit $?
+ # run customization if defined
+ type -t theme_customize | grep -q function \
+ && theme_customize "${GR_FILES}"
+else
+ mkdir "${GR_FILES}" || exit # sort of self-defense
+ pushd "${GR_FILES}" >/dev/null || exit
+ for RSRC in $(gresource list $GR_FILE); do
+ RSRC_FILE="$(echo "${RSRC#$GR_BASEROOT}")"
+ mkdir -p "$(dirname "$RSRC_FILE")" ||:
+ gresource extract "$GR_FILE" "$RSRC" > "$RSRC_FILE"
+ done
+ popd >/dev/null
+ # absolutize imports
+ find "${GR_BASEDIR}" -name '*.css' -print0 | xargs -0 -I '{}' \
+ sed -i.bck \
+ -e "s|^\(@import\s\+url\s*(\s*\"\)\(resource://${GR_BASEROOT}\)\?\(.*\)|\1file:///${GR_FILES}/\3|" \
+ '{}'
+ exit $?
+fi
diff --git a/scripts/gtk3/theme-adwaita b/scripts/gtk3/theme-adwaita
new file mode 100644
index 0000000..30f2fee
--- /dev/null
+++ b/scripts/gtk3/theme-adwaita
@@ -0,0 +1,45 @@
+# vim: ft=sh
+THEME_DIR="/usr/share/themes/Adwaita"
+THEME_BASEROOT="/org/gnome/adwaita/"
+
+# tested with
+# adwaita-gtk3-theme-3.10.0-1.fc20.x86_6 + gtk3-3.10.6-1.fc20.x86_64
+#
+# TODO:
+# menus eligibility still suboptimal
+# pcmanfm: text under file/dir icons also not eligible as well
+
+theme_customize() {
+ local gr_files=$1
+
+ local src=${gr_files}/gtk-main-dark.css
+ local dst=~/.config/gtk-3.0/gtk.css
+ local fg_color='#cccccc'
+ # local tooltip_fg_color='#eeeeec' # does not seem to have any effect
+ local tooltip_bg_color='@menu_bg_color' # change this instead
+
+ # first backup existing per-user gtk.css
+ mv -f --backup=t ${dst}{,.backup} 2>/dev/null || :
+ cat \
+ <(sed "${src}" \
+ -e "s|\(\s*@define-color\s\+theme_fg_color\s\+\).*;|\1${fg_color};|") \
+ <(echo "@define-color theme_tooltip_fg_color ${tooltip_bg_color};") \
+ > "${dst}"
+}
+
+## when settings.ini was still fully-fledged tool (before 3.8)...
+#theme_customize() {
+# local gr_files=$1
+#
+# local src=${THEME_DIR}/gtk-3.0/settings.ini
+# local dst=~/.config/gtk-3.0/settings.ini
+# local fg_color='#cccccc'
+# local tooltip_fg_color='#eeeeec'
+#
+# # first backup existing per-user gtk.css
+# mv -f --backup=t "${dst}{,.backup}" 2>/dev/null || :
+# sed "${src}" \
+# -e "s|^\(\s*gtk-color-scheme\s\+=.*\\\\nfg_color:\)[^;\\]\+\([;\\].*\)$|\1${fg_color}\2|" \
+# -e "s|^\(\s*gtk-color-scheme\s\+=.*\\\\ntooltip_fg_color:\)[^;\\]\+\([;\\].*\)$|\1${tooltip_fg_color}\2|" \
+# > "${dst}"
+#}