blob: 9f8b6c35cced2ef3aed92f789ae2c4f412289040 (
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
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
|
#!/bin/sh
# -*- Mode: shell-script -*-
# Copyright (C) 2002 by Chmouel Boudjnah <chmouel@mandrakesoft.com>
# Redistribution of this file is permitted under the terms of the GNU
# Public License (GPL)
# $Id: switch-themes 261681 2009-10-12 10:16:06Z fcrozat $
plymouthdir=/usr/share/plymouth
sysconfig=/etc/sysconfig/bootsplash
bootdir=/boot
function list_available_themes () {
local basename=
for i in $plymouthdir/themes/*;do
basename=${i##*/}
echo $basename
done
}
function get_current_theme () {
local opt= theme=
while read opt ;do
[[ $opt != THEME=* ]] && continue
theme=${opt##*=}
done < $sysconfig
echo $theme
}
function read_link () {
perl -e '{print readlink shift, "\n"}' $1
}
function grub_switch_themes () {
if [ -x /usr/sbin/grub-gfxmenu ]; then
/usr/sbin/grub-gfxmenu --update-theme
fi
}
function check_it () {
local theme=$1
local ok= c=
for c in $(list_available_themes);do
[[ $c == $theme ]] && ok=yes
done
if [[ -z $ok ]];then
echo -e "Themes $theme doen't exist\n";
bash $0 -l
exit;
fi
}
function update () {
local theme=$1;
rm -f /usr/share/gfxboot/themes/current
ln -s $theme /usr/share/gfxboot/themes/current
if [[ -z $update ]]; then
/usr/sbin/plymouth-set-default-theme $theme
fi
[ -f /usr/lib/libDrakX/Xconfig/resolution_and_depth.pm ] && perl -I/usr/lib/libDrakX -MXconfig::xfree -MXconfig::resolution_and_depth -e 'Xconfig::resolution_and_depth::set_default_background(Xconfig::xfree->read->get_resolution)'
}
function switch_theme () {
local toswitch=$1
local current_theme=$(get_current_theme)
local ok= c=
#Seeding
if [[ $current_theme != $toswitch ]];then
ok=
tmpfile=$(mktemp /tmp/.bootsplash.XXXXXXX)
cp -f $sysconfig $tmpfile && rm -f $sysconfig
while read line;do
if [[ $line == SPLASH=* ]];then
echo "SPLASH=auto" >> $sysconfig
continue;
fi
if [[ $line == THEME=* ]];then
echo "THEME=$toswitch" >> $sysconfig
ok=yes
continue;
fi
echo $line >> $sysconfig
done < $tmpfile
if [[ -z $ok ]];then
echo "THEME=$toswitch" >> $sysconfig
fi
rm -f $tmpfile
fi
update $toswitch
grub_switch_themes $toswitch
}
function update_boot () {
if [[ -x /usr/sbin/bootloader-config ]]; then
/usr/sbin/bootloader-config --action update-splash
fi
}
function usage () {
basename=`basename $0`
cat <<EOF
$basename OPTIONS THEMES
OPTIONS:
-c: Tell you the current themes
-l: List themes available.
-u: Update current theme.
EOF
exit 1
}
update=
while getopts uhlc opt;do
case "$opt" in
u)
update=yes ;;
c)
echo -n "The current theme is: ";get_current_theme; exit;;
l)
echo "Available themes are :"
for i in $(list_available_themes);do echo -e "\t\t\t$i";done;
exit;
;;
h) usage;;
*) usage;;
esac
done
shift $((OPTIND - 1))
theme=$1
if [[ -n $update ]];then
if [[ -n $theme ]];then
echo "No argument when updating";
echo
usage
fi
update $(get_current_theme)
exit;
fi
[[ -z $theme ]] && usage;
check_it $theme
switch_theme $theme
update_boot
|