/usr/sbin/plymouth-set-default-theme is in plymouth 0.9.0-9.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | #!/bin/bash
set -e
[ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="/usr/lib/x86_64-linux-gnu"
[ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="/usr/share"
[ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="/etc/plymouth/"
[ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="/usr/share/plymouth/"
if [ -z "$PLYMOUTH_PLUGIN_PATH" ]; then
if [ -z "$LIB" ]; then
PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
else
[ -z "$PLYMOUTH_LIBDIR" ] && PLYMOUTH_LIBDIR="/usr/lib/x86_64-linux-gnu"
PLYMOUTH_PLUGIN_PATH=${PLYMOUTH_LIBDIR}/plymouth/
fi
fi
function usage ()
{
echo "usage: plymouth-set-default-theme { --list | --reset | <theme-name> [ --rebuild-initrd ] | --help }"
}
function show_help() {
cat <<EOF
Plymouth theme chooser
$(usage)
-h, --help Show this help message
-l, --list Show available themes
-r. --reset Reset to default theme
-R, --rebuild-initrd Rebuild initrd (necessary after changing theme)
<theme-name> Name of new theme to use (see --list for available themes)
EOF
}
function list_themes ()
{
for theme in ${PLYMOUTH_DATADIR}/plymouth/themes/*/*.plymouth; do
[ -f $theme ] || continue;
echo "$(basename "$theme" .plymouth)"
done
}
function read_theme_name_from_file ()
{
echo $(grep -v '^#' $1 2> /dev/null |
awk -F= '/Theme=/ { print $2 }')
}
function get_default_theme ()
{
THEME_NAME=$(read_theme_name_from_file ${PLYMOUTH_CONFDIR}/plymouthd.conf)
if [ -z "$THEME_NAME" -o ! -r "${PLYMOUTH_DATADIR}/plymouth/themes/$THEME_NAME/$THEME_NAME.plymouth" ]; then
THEME_NAME=$(read_theme_name_from_file ${PLYMOUTH_POLICYDIR}/plymouthd.defaults)
fi
if [ -z "$THEME_NAME" -o ! -r "${PLYMOUTH_DATADIR}/plymouth/themes/$THEME_NAME/$THEME_NAME.plymouth" \
-a -L "${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth" ]; then
THEME_NAME=$(basename "$(readlink ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth)" .plymouth)
fi
if [ -z "$THEME_NAME" -o ! -r "${PLYMOUTH_DATADIR}/plymouth/themes/$THEME_NAME/$THEME_NAME.plymouth" ]; then
THEME_NAME="text"
fi
echo $THEME_NAME
}
DO_RESET=0
DO_INITRD_REBUILD=0
DO_LIST=0
DO_HELP=0
THEME_NAME=""
while [ $# -gt 0 ]; do
case "$1" in
-l|--list)
if [ -n "$THEME_NAME" ]; then
echo "You can only specify --list or a theme name, not both" >&2
echo $(usage) >&2
exit 1
fi
if [ $DO_RESET -ne 0 ]; then
echo "You can only specify --reset or --list, not both" >&2
echo $(usage) >&2
exit 1
fi
DO_LIST=1
;;
-R|--rebuild-initrd)
DO_INITRD_REBUILD=1
;;
-r|--reset|default)
if [ -n "$THEME_NAME" ]; then
echo "You can only specify --reset or a theme name, not both" >&2
echo $(usage) >&2
exit 1
fi
if [ $DO_LIST -ne 0 ]; then
echo "You can only specify --reset or --list, not both" >&2
echo $(usage) >&2
exit 1
fi
DO_RESET=1
;;
-h|--help)
DO_HELP=1
;;
*)
if [ -n "$THEME_NAME" ]; then
echo "You can only specify one theme at a time" >&2
echo $(usage) >&2
exit 1
fi
if [ $DO_RESET -ne 0 ]; then
echo "You can only specify --reset or a theme name, not both" >&2
echo $(usage) >&2
exit 1
fi
if [ $DO_LIST -ne 0 ]; then
echo "You can only specify --list or a theme name, not both" >&2
echo $(usage) >&2
exit 1
fi
THEME_NAME="$1"
;;
esac
shift
done
if [ $DO_HELP -eq 1 ]; then
show_help
exit $?
fi
if [ $DO_LIST -ne 0 ]; then
list_themes
exit $?
fi
if [ $DO_RESET -eq 0 ] && [ $DO_INITRD_REBUILD -eq 0 ] && [ -z $THEME_NAME ]; then
get_default_theme
exit $?
fi
if [ `id -u` -ne 0 ]; then
echo "This program must be run as root" >&2
exit 1
fi
if [ $DO_RESET -ne 0 ]; then
[ -f ${PLYMOUTH_CONFDIR}/plymouthd.conf ] || exit 0
sed -i -e '/^Theme[[:blank:]]*=.*/d' ${PLYMOUTH_CONFDIR}/plymouthd.conf
exit $?
fi
if [ ! -e ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth ]; then
echo "${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth does not exist" >&2
exit 1
fi
MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_DATADIR}/plymouth/themes/${THEME_NAME}/${THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
if [ ! -e ${PLYMOUTH_PLUGIN_PATH}${MODULE_NAME}.so ]; then
echo "${PLYMOUTH_PLUGIN_PATH}${MODULE_NAME}.so does not exist" >&2
exit 1
fi
[ -L ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth ] && rm -f ${PLYMOUTH_DATADIR}/plymouth/themes/default.plymouth
[ -d ${PLYMOUTH_CONFDIR} ] || mkdir -p ${PLYMOUTH_CONFDIR}
grep -q '^[[]Daemon[]]' ${PLYMOUTH_CONFDIR}/plymouthd.conf 2> /dev/null || echo '[Daemon]' >> ${PLYMOUTH_CONFDIR}/plymouthd.conf
sed -i -e '/^Theme[[:blank:]]*=.*/d' ${PLYMOUTH_CONFDIR}/plymouthd.conf
sed -i -e "s/^\([[]Daemon[]]\)\n*/\1\nTheme=${THEME_NAME}/" ${PLYMOUTH_CONFDIR}/plymouthd.conf
if [ $DO_INITRD_REBUILD -ne 0 ] ; then
(${PLYMOUTH_LIBEXECDIR}/plymouth/plymouth-update-initrd)
fi
exit 0
|