Skip to content
Snippets Groups Projects
import-gtk3-settings.sh 1.08 KiB
Newer Older
# usage: import-gsettings <theme-file> <gsettings key>:<settings.ini key> <gsettings key>:<settings.ini key> ...
prepare_gtk2_settings() {
  local theme_file=$1
  local settings_dir=$HOME

  echo "include \"/home/andi/.gtkrc-2.0.mine\"" > $settings_dir/.gtkrc-2.0
  cat $1 >> $settings_dir/.gtkrc-2.0
}

prepare_gtk3_settings() {
  local theme_file=$1
  local settings_dir=$HOME/.config/gtk-3.0

  mkdir -p $settings_dir
  echo "[Settings]" > $settings_dir/settings.ini
  cat $1 >> $settings_dir/settings.ini
}

prepare_gtk4_settings() {
  local theme_file=$1
  local settings_dir=$HOME/.config/gtk-4.0

  mkdir -p $settings_dir
  echo "[Settings]" > $settings_dir/settings.ini
  cat $1 >> $settings_dir/settings.ini
}

if [ -f "$1" ]; then
  prepare_gtk2_settings $1
  prepare_gtk3_settings $1
  prepare_gtk4_settings $1
fi

expression=""
for pair in "$@"; do
    IFS=:; set -- $pair
    expressions="$expressions -e 's:^$2=(.*)$:gsettings set org.gnome.desktop.interface $1 \1:e'"
done
IFS=
eval exec sed -E $expressions "${XDG_CONFIG_HOME:-$HOME/.config}"/gtk-3.0/settings.ini >/dev/null