summaryrefslogtreecommitdiffstats
path: root/abs/core/plymouth/plymouth.functions
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2012-11-22 05:27:40 (GMT)
committerJames Meyer <james.meyer@operamail.com>2012-11-22 05:27:40 (GMT)
commit30c6b3e359d4e8872a0ce6635593f362218c2511 (patch)
treec8517d4961b86e61021ae4dd1acec19ee21bf2af /abs/core/plymouth/plymouth.functions
parent3d7f516c0b10ed95e270575ef6155d70c0c16114 (diff)
downloadlinhes_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.functions65
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: