5 |
|
|
6 |
splash() |
splash() |
7 |
{ |
{ |
8 |
|
local cmd |
9 |
|
local args |
10 |
|
|
11 |
|
# check for a framebuffer console first! |
12 |
|
[[ ! -e /dev/fb0 ]] && return 0 |
13 |
|
# proc must be mounted too |
14 |
|
[[ ! -e /proc/cmdline ]] && return 0 |
15 |
|
# only run fbsplash if theme was found |
16 |
|
[[ ! -e ${SPLASH_THEMES}/${SPLASH_THEME} ]] && return |
17 |
|
# and run only if a config for the current resolution exist |
18 |
|
[[ ! -e ${SPLASH_THEMES}/${SPLASH_THEME}/$(splash_resolution).conf ]] && return |
19 |
|
|
20 |
|
# create fifo if not exist |
21 |
|
if [[ ! -w ${SPLASH_FIFO} ]] |
22 |
|
then |
23 |
|
mkfifo ${SPLASH_FIFO} |
24 |
|
fi |
25 |
|
|
26 |
|
# check cmdline for config_opts |
27 |
|
# splash=silent,theme:mcore |
28 |
|
for cmd in $(< /proc/cmdline) |
29 |
|
do |
30 |
|
case "${cmd}" in |
31 |
|
splash=*) |
32 |
|
# split the cmd and put everything into an array |
33 |
|
args=( $(echo "${cmd}" | sed 's:[,\:=]:\ :g') ) |
34 |
|
# mode is always args[1] |
35 |
|
SPLASH_MODE="${args[1]}" |
36 |
|
# theme is always args[3] |
37 |
|
SPLASH_THEME="${args[3]}" |
38 |
|
;; |
39 |
|
esac |
40 |
|
done |
41 |
|
|
42 |
case $1 in |
case $1 in |
43 |
rc_init) rc_init ;; |
rc_init) rc_init ;; |
44 |
rc_verbose|rc_exit) rc_exit ;; |
rc_verbose|rc_exit) rc_exit ;; |
45 |
|
# redraw splash image and text |
46 |
|
svc_started) |
47 |
|
if [[ ${runlevel} = boot ]] || [[ ${runlevel} = sysinit ]] |
48 |
|
then |
49 |
|
splash_control "image:" |
50 |
|
splash_control "write:${SPLASH_BOOT_MESSAGE}" |
51 |
|
fi |
52 |
|
;; |
53 |
|
svc_stopped) |
54 |
|
if [[ ${runlevel} = shutdown ]] |
55 |
|
then |
56 |
|
splash_control "image:" |
57 |
|
splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}" |
58 |
|
fi |
59 |
|
if [[ ${runlevel} = reboot ]] |
60 |
|
then |
61 |
|
splash_control "image:" |
62 |
|
splash_control "write:${SPLASH_REBOOT_MESSAGE}" |
63 |
|
fi |
64 |
|
;; |
65 |
esac |
esac |
66 |
} |
} |
67 |
|
|
73 |
|
|
74 |
splash_cursor disable |
splash_cursor disable |
75 |
chvt ${SPLASH_TTY} |
chvt ${SPLASH_TTY} |
76 |
|
sleep 0.5 |
77 |
|
|
78 |
if [[ $runlevel = boot ]] || [[ ${runlevel} = sysinit ]] |
if [[ ${runlevel} = boot ]] || [[ ${runlevel} = sysinit ]] |
79 |
then |
then |
80 |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
81 |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/startup-${resolution}.ppm.gz \ |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/startup-${resolution}.ppm.gz \ |
83 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
84 |
${SPLASH_OPTS} & |
${SPLASH_OPTS} & |
85 |
|
|
86 |
|
wait_for_fbsplash |
87 |
splash_control "write:${SPLASH_BOOT_MESSAGE}" |
splash_control "write:${SPLASH_BOOT_MESSAGE}" |
88 |
fi |
fi |
89 |
|
|
95 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
96 |
${SPLASH_OPTS} & |
${SPLASH_OPTS} & |
97 |
|
|
98 |
|
wait_for_fbsplash |
99 |
splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}" |
splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}" |
100 |
fi |
fi |
101 |
|
|
102 |
if [[ $runlevel = reboot ]] |
if [[ ${runlevel} = reboot ]] |
103 |
then |
then |
104 |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
105 |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/reboot-${resolution}.ppm.gz \ |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/reboot-${resolution}.ppm.gz \ |
107 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
108 |
${SPLASH_OPTS} & |
${SPLASH_OPTS} & |
109 |
|
|
110 |
|
wait_for_fbsplash |
111 |
splash_control "write:${SPLASH_REBOOT_MESSAGE}" |
splash_control "write:${SPLASH_REBOOT_MESSAGE}" |
112 |
fi |
fi |
113 |
fi |
fi |
119 |
then |
then |
120 |
splash_control "exit" |
splash_control "exit" |
121 |
splash_cursor enable |
splash_cursor enable |
122 |
chvt 1 |
if [[ -n ${SPLASH_X11_TTY} ]] |
123 |
|
then |
124 |
|
chvt ${SPLASH_X11_TTY} |
125 |
|
else |
126 |
|
chvt 1 |
127 |
|
fi |
128 |
fi |
fi |
129 |
} |
} |
130 |
|
|
133 |
fbres |
fbres |
134 |
} |
} |
135 |
|
|
136 |
|
wait_for_fbsplash() |
137 |
|
{ |
138 |
|
while [[ -z $(pidof fbsplash) ]] |
139 |
|
do |
140 |
|
sleep 0.1 |
141 |
|
done |
142 |
|
} |
143 |
|
|
144 |
splash_control() |
splash_control() |
145 |
{ |
{ |
146 |
# only write to fifo if the fbsplash process is runnning |
# only write to fifo if the fbsplash process is runnning |
148 |
if [[ -n $(pidof fbsplash) ]] |
if [[ -n $(pidof fbsplash) ]] |
149 |
then |
then |
150 |
echo "$@" > ${SPLASH_FIFO} |
echo "$@" > ${SPLASH_FIFO} |
151 |
|
else |
152 |
|
# exit here |
153 |
|
splash_cursor enable |
154 |
|
chvt 1 |
155 |
fi |
fi |
156 |
} |
} |
157 |
|
|