blob: b8666436cae7d04fff66520b344bff2d679aa29e (
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
|
if [[ -x /usr/bin/plymouth && -x /usr/sbin/plymouthd ]]; then
ply_client() { /usr/bin/plymouth --ping && /usr/bin/plymouth "$@"; }
ply_daemon() { /usr/sbin/plymouthd "$@"; }
# save a function under a new name
save_function() {
local ORIG=$(declare -f $1)
eval "$2${ORIG#$1}"
}
save_function stat_busy std_stat_busy
save_function stat_fail std_stat_fail
# overwrite status functions
stat_busy() {
ply_client --update="$1"
ply_client message --text="$1"
std_stat_busy "$@"
}
stat_fail() {
ply_client --quit
std_stat_fail "$@"
}
# update after local filesystems are mounted
ply_sysinit_postmount() { ply_client --sysinit; }
add_hook sysinit_postmount ply_sysinit_postmount
# stop plymouth after rc.multi
ply_quit_boot() {
ply_client quit --retain-splash
}
add_hook multi_end ply_quit_boot
# stop plymouth before shutdown
ply_quit_shutdown() {
ply_quit_boot
[[ $(ps h $(cat /tmp/plymouthd)) ]] && kill -9 $(cat /tmp/plymouthd)
}
add_hook shutdown_poweroff ply_quit_shutdown
# start plymouth at the beginning of rc.shutdown
ply_shutdown_start(){
XPID=`pidof X`
if [ "$XPID" ]; then
if [ "`runlevel | cut -c 3`" != '5' ]; then
local DM
for DM in slim gdm kdm xdm entrance; do
ck_daemon "$DM" || stop_daemon "$DM"
done
fi
kill -9 $XPID &> /dev/null
fi
ply_daemon --mode=shutdown --pid-file=/tmp/plymouthd
ply_client --show-splash
# don't get killed by kill_all
add_omit_pids `cat /tmp/plymouthd`
}
add_hook shutdown_start ply_shutdown_start
fi
# vim: set ts=2 sw=2 ft=sh noet:
|