5 |
|
|
6 |
splash() |
splash() |
7 |
{ |
{ |
8 |
|
local cmd |
9 |
|
local args |
10 |
|
|
11 |
|
# check for a framebuffer console first! |
12 |
|
[[ ! -e ${SPLASH_DEV} ]] && 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 |
|
|
71 |
then |
then |
72 |
local resolution="$(splash_resolution)" |
local resolution="$(splash_resolution)" |
73 |
|
|
|
splash_cursor disable |
|
74 |
chvt ${SPLASH_TTY} |
chvt ${SPLASH_TTY} |
75 |
|
sleep 0.5 |
76 |
|
|
77 |
if [[ $runlevel = boot ]] || [[ ${runlevel} = sysinit ]] |
if [[ ${runlevel} = boot ]] || [[ ${runlevel} = sysinit ]] |
78 |
then |
then |
79 |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
80 |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/startup-${resolution}.ppm.gz \ |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/startup-${resolution}.ppm.gz \ |
81 |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
82 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
83 |
|
-d ${SPLASH_DEV} \ |
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 |
|
|
93 |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/shutdown-${resolution}.ppm.gz \ |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/shutdown-${resolution}.ppm.gz \ |
94 |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
95 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
96 |
|
-d ${SPLASH_DEV} \ |
97 |
${SPLASH_OPTS} & |
${SPLASH_OPTS} & |
98 |
|
|
99 |
|
wait_for_fbsplash |
100 |
splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}" |
splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}" |
101 |
fi |
fi |
102 |
|
|
103 |
if [[ $runlevel = reboot ]] |
if [[ ${runlevel} = reboot ]] |
104 |
then |
then |
105 |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \ |
106 |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/reboot-${resolution}.ppm.gz \ |
-s ${SPLASH_THEMES}/${SPLASH_THEME}/reboot-${resolution}.ppm.gz \ |
107 |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
-m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \ |
108 |
-f ${SPLASH_FIFO} \ |
-f ${SPLASH_FIFO} \ |
109 |
|
-d ${SPLASH_DEV} \ |
110 |
${SPLASH_OPTS} & |
${SPLASH_OPTS} & |
111 |
|
|
112 |
|
wait_for_fbsplash |
113 |
splash_control "write:${SPLASH_REBOOT_MESSAGE}" |
splash_control "write:${SPLASH_REBOOT_MESSAGE}" |
114 |
fi |
fi |
115 |
fi |
fi |
120 |
if [[ ${SPLASH_MODE} = silent ]] |
if [[ ${SPLASH_MODE} = silent ]] |
121 |
then |
then |
122 |
splash_control "exit" |
splash_control "exit" |
123 |
splash_cursor enable |
if [[ -n ${SPLASH_X11_TTY} ]] |
124 |
chvt 1 |
then |
125 |
|
chvt ${SPLASH_X11_TTY} |
126 |
|
else |
127 |
|
chvt 1 |
128 |
|
fi |
129 |
fi |
fi |
130 |
} |
} |
131 |
|
|
134 |
fbres |
fbres |
135 |
} |
} |
136 |
|
|
137 |
|
wait_for_fbsplash() |
138 |
|
{ |
139 |
|
while [[ -z $(pidof fbsplash) ]] |
140 |
|
do |
141 |
|
sleep 0.1 |
142 |
|
done |
143 |
|
} |
144 |
|
|
145 |
splash_control() |
splash_control() |
146 |
{ |
{ |
147 |
# only write to fifo if the fbsplash process is runnning |
# only write to fifo if the fbsplash process is runnning |
151 |
echo "$@" > ${SPLASH_FIFO} |
echo "$@" > ${SPLASH_FIFO} |
152 |
fi |
fi |
153 |
} |
} |
|
|
|
|
# disable|enable |
|
|
splash_cursor() |
|
|
{ |
|
|
case $1 in |
|
|
enable) echo -e "\e[?0c";; |
|
|
disable) echo -e "\e[?1c" ;; |
|
|
esac |
|
|
} |
|