mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-04 14:08:31 +02:00
scripts: support populating from configurable theme dir
Support populating initramfs with themes from the configurable theme directory.
This commit is contained in:
parent
3fa05404b0
commit
3003cabf96
1 changed files with 48 additions and 2 deletions
|
|
@ -18,6 +18,7 @@
|
|||
[ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@"
|
||||
[ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1
|
||||
[ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme)
|
||||
[ -n "$PLYMOUTH_CONFIGURED_DIR_PATH" ] && THEME_DIR_OVERRIDE=1
|
||||
[ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@"
|
||||
[ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@"
|
||||
[ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd"
|
||||
|
|
@ -374,6 +375,43 @@ inst_recur() {
|
|||
done
|
||||
}
|
||||
|
||||
# $1: Configuration file
|
||||
# $2: Setting name
|
||||
function read_setting_from_file()
|
||||
{
|
||||
echo $(grep -v '^#' $1 2> /dev/null |
|
||||
awk '
|
||||
BEGIN {
|
||||
FS="[=[:space:]]+";
|
||||
OFS="";
|
||||
ORS=""
|
||||
}
|
||||
$1 ~/^'"$2"'$/ { print $2 }
|
||||
')
|
||||
}
|
||||
|
||||
# $1: Configuration file
|
||||
function set_configured_theme_path_from_file()
|
||||
{
|
||||
CONFIGURED_THEME_DIR=$(read_setting_from_file "$1" "ThemeDir")
|
||||
CONFIGURED_THEME_NAME=$(read_setting_from_file "$1" "Theme")
|
||||
}
|
||||
|
||||
function set_theme_dir()
|
||||
{
|
||||
set_configured_theme_path_from_file ${PLYMOUTH_CONFDIR}/plymouthd.conf
|
||||
if [ -z "$CONFIGURED_THEME_DIR" ] || [ ! -d "$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME" ]; then
|
||||
set_configured_theme_path_from_file ${PLYMOUTH_POLICYDIR}/plymouthd.defaults
|
||||
fi
|
||||
|
||||
if [ -n "$CONFIGURED_THEME_DIR" ] && [ -d "$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME" ]; then
|
||||
PLYMOUTH_THEME_NAME=$CONFIGURED_THEME_NAME
|
||||
PLYMOUTH_THEME_DIR=$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME
|
||||
else
|
||||
PLYMOUTH_THEME_DIR=$PLYMOUTH_DATADIR/plymouth/themes/$PLYMOUTH_THEME_NAME
|
||||
fi
|
||||
}
|
||||
|
||||
function usage() {
|
||||
local output="/proc/self/fd/1"
|
||||
local rc=0
|
||||
|
|
@ -432,6 +470,9 @@ if [ -z "$PLYMOUTH_THEME_NAME" ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
set_theme_dir
|
||||
mkdir -p ${INITRDDIR}${PLYMOUTH_THEME_DIR}
|
||||
|
||||
if [ $THEME_OVERRIDE ]; then
|
||||
conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf
|
||||
echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" >&2
|
||||
|
|
@ -439,10 +480,15 @@ if [ $THEME_OVERRIDE ]; then
|
|||
grep -q "^ *\[Daemon\]" $conf || echo "[Daemon]" >> $conf
|
||||
grep -q "^ *Theme *=" $conf || echo "Theme=fade-in" >> $conf
|
||||
sed -i "s/^ *Theme *=.*/# theme modified by plymouth-populate-initrd\nTheme=$PLYMOUTH_THEME_NAME/" $conf
|
||||
if [ "$THEME_DIR_OVERRIDE" ]; then
|
||||
echo "modifying plymouthd.conf: ThemeDir=$PLYMOUTH_CONFIGURED_DIR_PATH" >&2
|
||||
grep -q "^ *ThemeDir *=" $conf || echo "ThemeDir=/some/path" >> $conf
|
||||
sed -i "s@^ *ThemeDir *=.*@# theme dir modified by plymouth-populate-initrd\nThemeDir=$PLYMOUTH_CONFIGURED_DIR_PATH@" $conf
|
||||
PLYMOUTH_THEME_DIR=${PLYMOUTH_CONFIGURED_DIR_PATH}
|
||||
fi
|
||||
fi
|
||||
|
||||
PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
|
||||
PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}"
|
||||
PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
|
||||
PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//')
|
||||
|
||||
if [ ! -f ${PLYMOUTH_SYSROOT}${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue