diff options
author | James Meyer <james.meyer@operamail.com> | 2012-11-22 05:27:40 (GMT) |
---|---|---|
committer | James Meyer <james.meyer@operamail.com> | 2012-11-22 05:27:40 (GMT) |
commit | 30c6b3e359d4e8872a0ce6635593f362218c2511 (patch) | |
tree | c8517d4961b86e61021ae4dd1acec19ee21bf2af /abs/core/plymouth/plymouth.functions | |
parent | 3d7f516c0b10ed95e270575ef6155d70c0c16114 (diff) | |
download | linhes_pkgbuild-30c6b3e359d4e8872a0ce6635593f362218c2511.zip linhes_pkgbuild-30c6b3e359d4e8872a0ce6635593f362218c2511.tar.gz linhes_pkgbuild-30c6b3e359d4e8872a0ce6635593f362218c2511.tar.bz2 |
plymouth: first build
refs #869
Diffstat (limited to 'abs/core/plymouth/plymouth.functions')
-rw-r--r-- | abs/core/plymouth/plymouth.functions | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/abs/core/plymouth/plymouth.functions b/abs/core/plymouth/plymouth.functions new file mode 100644 index 0000000..b866643 --- /dev/null +++ b/abs/core/plymouth/plymouth.functions @@ -0,0 +1,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: |