fbs rev 4

Add fbs utility and fbs.conf
author Christophe Lincoln <pankso@slitaz.org>
date Fri May 02 14:06:52 2014 +0200 (2014-05-02)
parents 6c7e02ee56fe
children f631a039dc1c
files fbs fbs.conf
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/fbs	Fri May 02 14:06:52 2014 +0200
     1.3 @@ -0,0 +1,152 @@
     1.4 +#!/bin/sh
     1.5 +#
     1.6 +# Fbs - Graphical framebuffer boot using Busybox fbsplash applet. No use of SliTaz
     1.7 +# specific code since it may be used by other distro or emb system.
     1.8 +#
     1.9 +# (C) 2014 Christophe Lincoln - BSD License.
    1.10 +#
    1.11 +
    1.12 +sysconf="/etc/fbs.conf"
    1.13 +themes="/usr/share/fbs"
    1.14 +fifo="/fbs.fifo"
    1.15 +
    1.16 +[ -f "${sysconf}" ] && . ${sysconf}
    1.17 +[ -f "fbs.conf" ] && . fbs.conf
    1.18 +[ "$2" ] && FBTHEME="$2"
    1.19 +
    1.20 +# Functions
    1.21 +
    1.22 +boldify() { 
    1.23 +	echo -e "\033[1m$@\033[0m"
    1.24 +}
    1.25 +
    1.26 +usage() {
    1.27 +	cat << EOT
    1.28 +
    1.29 +Framebuffer Boot Splash utility
    1.30 +
    1.31 +$(boldify "Usage:") $(basename $0) [command] [theme]
    1.32 +
    1.33 +$(boldify "Commands:")
    1.34 +  on            Enable graphical boot
    1.35 +  off           Disable graphical boot
    1.36 +  test          Test a splash theme
    1.37 +  themes        List all installed themes
    1.38 +  set-theme     Change current theme
    1.39 +  pack-theme    Pack a system theme
    1.40 +  add-theme     Install a fbs-theme archive
    1.41 +
    1.42 +EOT
    1.43 +}
    1.44 +
    1.45 +check_root() {
    1.46 +	if [ $(id -u) != "0" ]; then
    1.47 +		echo "Only root adiministrator can run fbs $1" && exit 1
    1.48 +	fi
    1.49 +}
    1.50 +
    1.51 +separator() {
    1.52 +	echo "--------------------------------------"
    1.53 +}
    1.54 +
    1.55 +set_theme() {
    1.56 +	sed -i s'~FBTHEME=.*~FBTHEME=\"$new_theme\"~' /etc/fbs.conf
    1.57 +}
    1.58 +
    1.59 +start_fbsplash() {
    1.60 +	[ -x "$themes/$FBTHEME/init.sh" ] && \
    1.61 +		${themes}/${FBTHEME}/init.sh
    1.62 +	mkfifo ${fifo}
    1.63 +	fbsplash -c -f ${fifo} \
    1.64 +		-s $themes/$FBTHEME/splash.ppm.gz \
    1.65 +		-i $themes/$FBTHEME/splash.cfg &
    1.66 +}
    1.67 +
    1.68 +# Commands
    1.69 +
    1.70 +case "$1" in
    1.71 +
    1.72 +	on)
    1.73 +		# Enable graphical boot
    1.74 +		check_root
    1.75 +		echo "Enabling SliTaz graphical boot..."
    1.76 +		if ! grep -q "rcS > /dev/null 2>/dev/null" /etc/inittab; then		
    1.77 +			sed -i s'#rcS#rcS >/dev/null 2>/dev/null#' /etc/inittab
    1.78 +		fi
    1.79 +		sed -i s'/FBSPLASH=.*/FBSPLASH="on"/' /etc/fbs.conf ;;
    1.80 +		
    1.81 +	off)
    1.82 +		# Disable graphical boot
    1.83 +		check_root
    1.84 +		echo "Disabling SliTaz graphical boot..."
    1.85 +		sed -i s'#rcS >/dev/null 2>/dev/null#rcS#' /etc/inittab
    1.86 +		sed -i s'/FBSPLASH=.*/FBSPLASH="off"/' /etc/fbs.conf ;;
    1.87 +	
    1.88 +	'test')
    1.89 +		# Testsuite for fbs 
    1.90 +		reset && start_fbsplash
    1.91 +		for p in 0 10 20 30 40 50 60 70 80 90 100
    1.92 +		do
    1.93 +			echo "$p" > ${fifo} && sleep 1
    1.94 +		done #> /dev/null
    1.95 +		echo "exit" > ${fifo}
    1.96 +		clear && rm -f ${fifo};;
    1.97 +	
    1.98 +	themes)
    1.99 +		# List all themes
   1.100 +		echo ""
   1.101 +		boldify "Fbs themes list"
   1.102 +		separator
   1.103 +		cd ${themes}
   1.104 +		ls -1 && echo "" ;;
   1.105 +		
   1.106 +	set-theme)
   1.107 +		check_root
   1.108 +		new_theme="$2"
   1.109 +		[ "$new_theme" ] || exit 0
   1.110 +		[ -d "$themes/$new_theme" ] || exit 0
   1.111 +		echo -n "Enabling fbs theme: $new_theme"
   1.112 +		set_theme; status ;;
   1.113 +		
   1.114 +	pack-theme)
   1.115 +		# Pack a theme into .tar.gz
   1.116 +		theme="$2"
   1.117 +		tmp=fbs-theme-$theme
   1.118 +		if [ ! -d "$themes/$theme" ]; then
   1.119 +			echo "No theme found in: $themes/$theme"; exit 0
   1.120 +		fi
   1.121 +		echo -n "Creating fbs theme archive: $theme"
   1.122 +		mkdir -p $tmp
   1.123 +		cp -r $themes/$theme $tmp
   1.124 +		cat > $tmp/README << EOT
   1.125 +Fbs theme - Framebuffer Splash boot artwork
   1.126 +$(separator)
   1.127 +
   1.128 +
   1.129 +This is a Busybox fbsplash theme created by $USER. To use it you can copy
   1.130 +files manually to $themes or use 'fbs add-theme'
   1.131 +
   1.132 +
   1.133 +$(separator)
   1.134 +EOT
   1.135 +		busybox tar czf fbs-theme-$theme.tar.gz $tmp
   1.136 +		rm -rf $tmp; status ;;
   1.137 +		
   1.138 +	add-theme)
   1.139 +		check_root
   1.140 +		file=$2
   1.141 +		if [ ! -f "$file" ]; then
   1.142 +			echo "Missing theme archive: $file"; exit 0
   1.143 +		fi
   1.144 +		echo -n "Installing fbs theme: ${file%.tar.gz}"
   1.145 +		tar xzf $file -C /tmp
   1.146 +		rm /tmp/fbs-theme-*/README
   1.147 +		cp -r /tmp/fbs-*/* ${themes}
   1.148 +		status ;;
   1.149 +		
   1.150 +	start) start_fbsplash ;;
   1.151 +	
   1.152 +	*) usage ;;
   1.153 +	
   1.154 +esac
   1.155 +exit 0
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/fbs.conf	Fri May 02 14:06:52 2014 +0200
     2.3 @@ -0,0 +1,8 @@
     2.4 +# /etc/fbs.conf: Framebuffer Boot Splash configuration file
     2.5 +#
     2.6 +
     2.7 +# On or Off at boot time ?
     2.8 +FBSPLASH="on"
     2.9 +
    2.10 +# Theme path: /usr/share/fbs
    2.11 +FBTHEME="default"