Magellan Linux

Annotation of /trunk/busybox/splash-functions.rc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1279 - (hide annotations) (download)
Sun Feb 6 22:32:23 2011 UTC (13 years, 3 months ago) by niro
File size: 2946 byte(s)
- only run splash themes on a framebuffer console
- only run splash themes if a config for the current reolution exists
- respect cmdlines in form of splash=mode,theme:name pragma (e.g. splash=silent,theme:mcore)

1 niro 1264 # /etc/rc.d/init.d/splash-functions - splashfunctions for busybox' fbsplash with tykef patch
2     # $Id$
3    
4     [[ -f /etc/splash/splash.conf ]] && . /etc/splash/splash.conf
5    
6     splash()
7     {
8 niro 1279 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 niro 1275 # only run fbsplash if theme was found
16     [[ ! -e ${SPLASH_THEMES}/${SPLASH_THEME} ]] && return
17 niro 1279 # and run only if a config for the current resolution exist
18     [[ ! -e ${SPLASH_THEMES}/${SPLASH_THEME}/$(splash_resolution).conf ]] && return
19 niro 1275
20 niro 1279 # check cmdline for config_opts
21     # splash=silent,theme:mcore
22     for cmd in $(< /proc/cmdline)
23     do
24     case "${cmd}" in
25     splash=*)
26     # split the cmd and put everything into an array
27     args=( $(echo "${cmd}" | sed 's:[,\:=]:\ :g') )
28     # mode is always args[1]
29     SPLASH_MODE="${args[1]}"
30     # theme is always args[3]
31     SPLASH_THEME="${args[3]}"
32     ;;
33     esac
34     done
35    
36 niro 1264 case $1 in
37     rc_init) rc_init ;;
38     rc_verbose|rc_exit) rc_exit ;;
39     esac
40     }
41    
42     rc_init()
43     {
44     if [[ ${SPLASH_MODE} = silent ]]
45     then
46     local resolution="$(splash_resolution)"
47    
48     splash_cursor disable
49     chvt ${SPLASH_TTY}
50 niro 1276 sleep 0.5
51 niro 1264
52     if [[ $runlevel = boot ]] || [[ ${runlevel} = sysinit ]]
53     then
54     fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \
55     -s ${SPLASH_THEMES}/${SPLASH_THEME}/startup-${resolution}.ppm.gz \
56     -m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \
57     -f ${SPLASH_FIFO} \
58     ${SPLASH_OPTS} &
59    
60 niro 1275 wait_for_fbsplash
61 niro 1264 splash_control "write:${SPLASH_BOOT_MESSAGE}"
62     fi
63    
64     if [[ ${runlevel} = shutdown ]]
65     then
66     fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \
67     -s ${SPLASH_THEMES}/${SPLASH_THEME}/shutdown-${resolution}.ppm.gz \
68     -m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \
69     -f ${SPLASH_FIFO} \
70     ${SPLASH_OPTS} &
71    
72 niro 1275 wait_for_fbsplash
73 niro 1264 splash_control "write:${SPLASH_SHUTDOWN_MESSAGE}"
74     fi
75    
76     if [[ $runlevel = reboot ]]
77     then
78     fbsplash -i ${SPLASH_THEMES}/${SPLASH_THEME}/${resolution}.conf \
79     -s ${SPLASH_THEMES}/${SPLASH_THEME}/reboot-${resolution}.ppm.gz \
80     -m ${SPLASH_THEMES}/${SPLASH_THEME}/splash-font.gz \
81     -f ${SPLASH_FIFO} \
82     ${SPLASH_OPTS} &
83    
84 niro 1275 wait_for_fbsplash
85 niro 1264 splash_control "write:${SPLASH_REBOOT_MESSAGE}"
86     fi
87     fi
88     }
89    
90     rc_exit()
91     {
92     if [[ ${SPLASH_MODE} = silent ]]
93     then
94     splash_control "exit"
95     splash_cursor enable
96 niro 1277 if [[ -n ${SPLASH_X11_TTY} ]]
97     then
98     chvt ${SPLASH_X11_TTY}
99     else
100     chvt 1
101     fi
102 niro 1264 fi
103     }
104    
105     splash_resolution()
106     {
107     fbres
108     }
109    
110 niro 1275 wait_for_fbsplash()
111     {
112     while [[ -z $(pidof fbsplash) ]]
113     do
114     sleep 0.1
115     done
116     }
117    
118 niro 1264 splash_control()
119     {
120     # only write to fifo if the fbsplash process is runnning
121     # or the console will hang
122     if [[ -n $(pidof fbsplash) ]]
123     then
124     echo "$@" > ${SPLASH_FIFO}
125 niro 1275 else
126     # exit here
127     splash_cursor enable
128     chvt 1
129 niro 1264 fi
130     }
131    
132     # disable|enable
133     splash_cursor()
134     {
135     case $1 in
136     enable) echo -e "\e[?0c";;
137     disable) echo -e "\e[?1c" ;;
138     esac
139     }