summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alpm-hooks/grub-theme-switch.hook14
-rw-r--r--bin/set-grub-theme.sh34
2 files changed, 48 insertions, 0 deletions
diff --git a/alpm-hooks/grub-theme-switch.hook b/alpm-hooks/grub-theme-switch.hook
new file mode 100644
index 0000000..d297bd7
--- /dev/null
+++ b/alpm-hooks/grub-theme-switch.hook
@@ -0,0 +1,14 @@
+[Trigger]
+Operation = Install
+Type = Package
+Target = breeze-grub
+Target = deeping-grub2-themes
+Target = grub2-theme-gnuaxiom
+Target = parabola-laf
+
+[Action]
+Description = Setting GRUB theme
+Depends = grub
+When = PostTransaction
+Exec = set-grub-theme.sh
+NeedsTargets
diff --git a/bin/set-grub-theme.sh b/bin/set-grub-theme.sh
new file mode 100644
index 0000000..f3f52fe
--- /dev/null
+++ b/bin/set-grub-theme.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+readonly THEME_PKG_OR_DIR=$1
+readonly GRUB_DIR=/boot/grub
+readonly THEMES_DIR=$GRUB_DIR/themes
+readonly THEME_FILENAME='theme.txt'
+readonly SYMLINK_NAME='parabola-laf'
+readonly GRUB_DEF_FILE=/etc/default/grub
+readonly GRUB_CONFIG_FILE=$GRUB_DIR/grub.cfg
+readonly THEME_KVP="GRUB_THEME=$THEMES_DIR/$SYMLINK_NAME/$THEME_FILENAME"
+
+
+SwtichTheme() # (theme_dirname)
+{
+ local theme_dirname=$1
+ local theme_file=$THEMES_DIR/$theme_dirname/$THEME_FILENAME
+
+ [ -f "$theme_file" ] || return
+
+ ln -fs $THEMES_DIR/$theme_dirname $THEMES_DIR/$SYMLINK_NAME
+ [ "$(grep '^GRUB_THEME=' $GRUB_DEF_FILE | tail -n 1)" != "$THEME_KVP" ] || return
+
+# sed 's|\s*#*\s*GRUB_THEME\s*=.*|'$THEME_KVP'|g' /etc/default/grub
+ echo $THEME_KVP >> $GRUB_DEF_FILE
+ grub-mkconfig -o $GRUB_CONFIG_FILE
+}
+
+case $THEME_PKG_OR_DIR in
+ 'breeze-grub' ) SwtichTheme 'breeze' ;;
+ 'deepin-grub2-themes' ) SwtichTheme 'deepin' ;;
+ 'grub2-theme-gnuaxiom') SwtichTheme 'GNUAxiom' ;;
+ 'parabola-laf' ) SwtichTheme 'GNUAxiom' ;;
+ * ) SwtichTheme $THEME_PKG_OR_DIR ;;
+esac