#!/bin/bash readonly THEME_PKG_OR_DIR=$1 # or stdin? 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