summaryrefslogtreecommitdiff
path: root/bin/set-grub-theme.sh
blob: 5774c994c95184f8606c94ddb221fd1a44dae654 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/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