slitaz-tools rev 912 5.8.11

tazx: add default applications dialog, replace lists from tazbox.
author Xander Ziiryanoff <psychomaniak@xakep.ru>
date Wed Nov 05 19:01:28 2014 +0200 (2014-11-05)
parents 18ca3382d5b7
children 5b758077efec
files tazbox/tazbox tinyutils/browser tinyutils/tazx
line diff
     1.1 --- a/tazbox/tazbox	Sat Nov 01 19:04:27 2014 +0200
     1.2 +++ b/tazbox/tazbox	Wed Nov 05 19:01:28 2014 +0200
     1.3 @@ -520,17 +520,6 @@
     1.4  		--button="gtk-close:0"
     1.5  }
     1.6  
     1.7 -# Generate alternatives list: first - current choice, following - existing apps
     1.8 -gen_alt() {
     1.9 -	alts="$@"
    1.10 -	current=$(echo $alts | cut -d' ' -f1)
    1.11 -	alts=$(echo $alts | sed "s|$current||g")
    1.12 -	for alt in $alts; do
    1.13 -		[ ! $(busybox which $alt) ] && alts=$(echo $alts | sed "s|$alt||")
    1.14 -	done
    1.15 -	echo $current $alts | tr ' ' '!'
    1.16 -}
    1.17 -
    1.18  # Ask root permissions for system settings
    1.19  ask_root() {
    1.20  	if [ $(id -u) != 0 ]; then
    1.21 @@ -565,7 +554,7 @@
    1.22  			cat /dev/null > $HOME/.config/slitaz/subox.conf
    1.23  		fi
    1.24  		# Try to login & execute. If password is wrong execute error dialog
    1.25 -		SU_CMD_QUOTED="$(echo "dbus-launch $SU_CMD" | sed 's|&|\\&|g')"
    1.26 +		SU_CMD_QUOTED="$(echo "dbus-launch $SU_CMD" --exit-with-session | sed 's|&|\\&|g')"
    1.27  		echo $main | cut -f 1 -d "|" | su -c "$SU_CMD_QUOTED &" || su_error ;;
    1.28  	logout)
    1.29  		# Logout window with actions
    1.30 @@ -635,28 +624,20 @@
    1.31  		# is /etc/slitaz/applications.conf and each user can have personal
    1.32  		# settings. System wide for root and personal config for user.
    1.33  		export CONFIG="$HOME/.config/slitaz/applications.conf"
    1.34 -		if [ ! -f $CONFIG ]; then
    1.35 -			mkdir -p $HOME/.config/slitaz
    1.36 -			cp /etc/slitaz/applications.conf $CONFIG
    1.37 +		if [ "$(id -u)" = 0 ]; then
    1.38 +			[ ! -f $CONFIG ] || mv -f $CONFIG /etc/slitaz/applications.conf
    1.39 +			export CONFIG="/etc/slitaz/applications.conf"
    1.40  		fi
    1.41 +
    1.42 +		for a in FILE_MANAGERS BROWSERS EDITORS TERMINALS WINDOW_MANAGERS;
    1.43 +		do
    1.44 +			eval $(expr $a=$(echo $(/usr/bin/tazx get-applist ${a%%S} \
    1.45 +			only-installed yad) | sed 's/ /!/g ; s/!!//g; s/ //g'))
    1.46 +		done
    1.47 +
    1.48 +		# Missing file was created by slitaz_apps_conf function from tazx
    1.49  		. $CONFIG
    1.50  
    1.51 -		FILE_MANAGERS=$(gen_alt $FILE_MANAGER \
    1.52 -			clex caja emelfm2 mc pathfinder pcmanfm pcmanfm-qt ranger spacefm \
    1.53 -			thunar xfe ytree)
    1.54 -		BROWSERS=$(gen_alt $BROWSER \
    1.55 -			arora chrome cream dillo elinks firefox iron links lynx midori \
    1.56 -			netsurf opera QtWeb qupzilla retawq seamonkey surf tazweb)
    1.57 -		EDITORS=$(gen_alt $EDITOR \
    1.58 -			adie beaver emacs geany jed joe juffed ht le leafpad mcedit \
    1.59 -			mousepad mp-5 nano qedit SciTE vi vim xedit xfw zile)
    1.60 -		TERMINALS=$(gen_alt $TERMINAL \
    1.61 -			aterm evilvte lxterminal mrxvt qterminal sakura stjerm tilda urxvt vte \
    1.62 -			xterm yeahconsole)
    1.63 -		WINDOW_MANAGERS=$(gen_alt $WINDOW_MANAGER \
    1.64 -			awesome blackbox dwm echinus enlightenment fluxbox icewm icewm-session jwm \
    1.65 -			karmen lxqt matchbox openbox-session pekwm ratpoison xfwm4)
    1.66 -
    1.67  		icon=preferences-desktop-default-applications
    1.68  		eval $(yad --title="$(_n 'SliTaz default applications')" \
    1.69  			--window-icon=$icon --image=$icon --image-on-top \
     2.1 --- a/tinyutils/browser	Sat Nov 01 19:04:27 2014 +0200
     2.2 +++ b/tinyutils/browser	Wed Nov 05 19:01:28 2014 +0200
     2.3 @@ -19,6 +19,7 @@
     2.4  	*links*|retawq|lynx)
     2.5  		$EXECT $@ ;;
     2.6  	w3m)	$EXECT -N $@ ;;
     2.7 +	qupzil*)$EXEC -pb -ow $@ ;;
     2.8  	*)	$EXEC $@ ;;
     2.9  esac
    2.10  
     3.1 --- a/tinyutils/tazx	Sat Nov 01 19:04:27 2014 +0200
     3.2 +++ b/tinyutils/tazx	Wed Nov 05 19:01:28 2014 +0200
     3.3 @@ -133,6 +133,16 @@
     3.4  	gen_xorg_conf_file
     3.5  }
     3.6  
     3.7 +dialog_end() {
     3.8 +	retval=$?
     3.9 +	exec 3>&-
    3.10 +	# Continue or exit.
    3.11 +	case $retval in
    3.12 +		0) continue ;;
    3.13 +		1|255) exit 0 ;;
    3.14 +	esac
    3.15 +}
    3.16 +
    3.17  # Install xorg server.
    3.18  install_xorg() {
    3.19  	[ -f "/var/lib/tazpkg/packages.list" ] || tazpkg recharge
    3.20 @@ -145,33 +155,97 @@
    3.21  		while read x; do echo $x; _ 'driver'; done) \
    3.22  	"quit" "$(_n 'Quit')" \
    3.23  	2>&1 1>&3)
    3.24 -	retval=$?
    3.25 -	exec 3>&-
    3.26 -
    3.27 -	# Continue or exit.
    3.28 -	case $retval in
    3.29 -		0) continue ;;
    3.30 -		1|255) exit 0 ;;
    3.31 -	esac
    3.32 +	dialog_end
    3.33  
    3.34  	# Set selected value.
    3.35  	case $value in
    3.36  		quit) exit 0 ;;
    3.37  		*)
    3.38 -			[ -d "$installed/xorg-server" ] || tazpkg -gi xorg-server
    3.39 -			[ -d "$installed/xorg-xf86-video-$value" ] || \
    3.40 -				tazpkg -gi xorg-xf86-video-$value
    3.41 +			inst_pkg xorg-server
    3.42 +			inst_pkg xorg-xf86-video-$value
    3.43  			xorg_conf_d ;;
    3.44  	esac
    3.45  }
    3.46  
    3.47 -install_slim() {
    3.48 -	[ -d "$installed/slim" ] || tazpkg -gi slim
    3.49 -	[ -d "$installed/dbus" ] || tazpkg -gi dbus
    3.50 +inst_pkg() {
    3.51 +	CMD="sudo tazpkg -gi $@"
    3.52 +	test $(id -u) = 0 && CMD="tazpkg -gi $@"
    3.53 +	[ -d "$installed/$@" ] || $CMD
    3.54  }
    3.55  
    3.56 -# Screen configuration dialog. TODO: menus items to enable/disable X on boot
    3.57 -# and sed /etc/rcS.conf to remove slim from RUN_DAEMONS.
    3.58 +apps_dialog() {
    3.59 +	. ${user_conf}
    3.60 +	exec 3>&1
    3.61 +	app=$($DIALOG --clear --colors \
    3.62 +		--extra-label "$(_n 'Edit')" \
    3.63 +		--backtitle "{ $(_n '\Z3SliTaz applications config\Zn') }" \
    3.64 +		--inputmenu " " 22 52 18 WINDOW_MANAGER $WINDOW_MANAGER \
    3.65 +	$(for a in EDITOR BROWSER TERMINAL FILE_MANAGER; do
    3.66 +		eval n=$"$a" ; echo "$a $n";
    3.67 +	done) 2>&1 1>&3)
    3.68 +	dialog_end
    3.69 +	case $app in
    3.70 +		RENAMED*)
    3.71 +			appname=$(echo $app | cut -d " " -f3)
    3.72 +			app=$(echo $app | cut -d " " -f2) ;;
    3.73 +		*)
    3.74 +			app_name_dialog only-installed d a-item ;;
    3.75 +	esac
    3.76 +	if [ ! $appname = " " ]; then
    3.77 +		[ ! $appname = show_ALL ] || app_name_dialog full-list d
    3.78 +		if [ ! $(busybox which ${appname} 2>/dev/null) ]; then
    3.79 +			inst_pkg $appname
    3.80 +			if [ ! -d "$installed/$appname" ]; then
    3.81 +			pknm=$(tazpkg search-pkgname /bin/$appname \
    3.82 +			| grep -Ev '=|:| |/bin/')
    3.83 +			inst_pkg $pknm
    3.84 +			fi
    3.85 +		else
    3.86 +		sed '/'${app}'/s|=.*$|="'${appname}'"|' -i ${user_conf}
    3.87 +		fi
    3.88 +	fi
    3.89 +	apps_dialog
    3.90 +}
    3.91 +
    3.92 +app_name_dialog() {
    3.93 +	bt="" sz=28 ; [ $1 = full-list ] || sz=20 \
    3.94 +	bt=$(_n 'select "Show_ALL" to install additional programs')
    3.95 +	exec 3>&1
    3.96 +	appname=$($DIALOG --clear --colors \
    3.97 +	--backtitle "\Z1${bt}\Zn" --title "${app}" \
    3.98 +	--menu "" $sz 50 24 $(gen_applist $app $@) 2>&1 1>&3) \
    3.99 +	dialog_end
   3.100 +}
   3.101 +
   3.102 +gen_applist() {
   3.103 +. ${user_conf}
   3.104 +FILE_MANAGERS=" clex caja emelfm2 mc pathfinder pcmanfm pcmanfm-qt ranger spacefm thunar xfe ytree"
   3.105 +BROWSERS=" arora chrome cream dillo elinks firefox iron links lynx midori netsurf \
   3.106 + opera QtWeb qupzilla retawq seamonkey surf tazweb"
   3.107 +EDITORS=" adie beaver emacs geany jed joe juffed ht le leafpad mcedit mousepad mp-5 \
   3.108 + nano qedit SciTE vi vim xedit xfw zile"
   3.109 +TERMINALS=" aterm evilvte lxterminal mrxvt qterminal sakura stjerm tilda urxvt vte \
   3.110 + xterm yeahconsole"
   3.111 +WINDOW_MANAGERS=" awesome blackbox dwm echinus enlightenment fluxbox icewm-session jwm \
   3.112 + lxde-session karmen matchbox openbox-session pekwm ratpoison startlxqt xfwm4"
   3.113 +
   3.114 +	eval list='$'"$1"S
   3.115 +	eval current='$'"$1"
   3.116 +for i in $current $(echo $list" " | sed "s| "$current" | |g") $4 ; do
   3.117 +	t="<--" ; [ $(busybox which $i 2>/dev/null) ] || t=---
   3.118 +	if [ $2 = only-installed ] && [ $t = --- ]; then
   3.119 +		case $i in
   3.120 +		a-item) i=show_ALL t=$(_n 'Get more apps') ;;
   3.121 +		*) i=" " t=" " ;; esac
   3.122 +	fi
   3.123 +	instmsg=$(_n 'install')
   3.124 +	t=$(echo $t | sed "s|---|$instmsg|g ; s| |_|g")
   3.125 +	echo "$i"
   3.126 +	[ $3 = yad ] || echo -e "$t"
   3.127 +done
   3.128 +}
   3.129 +
   3.130 +# Screen configuration dialog.
   3.131  config_dialog() {
   3.132  	. /etc/rcS.conf ; LM="ON"
   3.133  	[ $LOGIN_MANAGER = "slim" ] || LM="OFF"
   3.134 @@ -185,43 +259,34 @@
   3.135  	"xorg-light"  "$(_n 'Install Xorg server (light version)')" \
   3.136  	"onboot"      "$(_n 'AutoStart Xorg by SLiM on boot') ...| $LM" \
   3.137  	"slim"        "$(_n '(Re)Start Simple Login Manager now')" \
   3.138 +	"wm_apps"     "$(_n 'Select & install WM|DE + applications')" \
   3.139  	"quit"        "$(_n 'Quit Tazx utility')" \
   3.140  	2>&1 1>&3)
   3.141 -	retval=$?
   3.142 -	exec 3>&-
   3.143 -
   3.144 -	# Continue or exit.
   3.145 -	case $retval in
   3.146 -		0) continue ;;
   3.147 -		1|255) exit 0 ;;
   3.148 -	esac
   3.149 -
   3.150 +	dialog_end
   3.151  	# Set selected value.
   3.152  	case "$value" in
   3.153 -		xorg) 
   3.154 +		xorg)
   3.155  			install_xorg ;;
   3.156  		xorg-light)
   3.157 -			[ -d "$installed/xorg-server-light" ] || \
   3.158 -				tazpkg -gi xorg-server-light
   3.159 -			[ -d "$installed/xorg-xf86-video-fbdev" ] || \
   3.160 -				tazpkg -gi xorg-xf86-video-fbdev
   3.161 +			inst_pkg xorg-server-light
   3.162 +			inst_pkg xorg-xf86-video-fbdev
   3.163  			xorg_conf_d ;;
   3.164  		onboot)
   3.165 -			install_slim
   3.166 +			inst_pkg slim ; inst_pkg dbus
   3.167  			if [ $LM = "OFF" ] ; then
   3.168  				LM=slim
   3.169 -			else
   3.170 -				LM=""
   3.171 +			else	LM=""
   3.172  			fi
   3.173 -			sed '/LOGIN_MANAGER=/s|"\([^"]*\)"|"'$LM'"|' \
   3.174 -				-i /etc/rcS.conf
   3.175 -
   3.176 +			sed '/LOGIN_MANAGER/s|=.*$|="'$LM'"|' -i /etc/rcS.conf
   3.177  			[ $LM = "slim" ] || LM=disabled
   3.178  			echo "start X on boot:" $(boldify $LM) ;;
   3.179  		slim)
   3.180 -			install_slim
   3.181 -			[ ! -z $XAUTHORITY ] || \
   3.182 -				stopd slim ; sleep 1 ; startd slim ;;
   3.183 +			inst_pkg slim ; inst_pkg dbus
   3.184 +			[ ! -z $XAUTHORITY ] || stopd slim ;sleep 2; startd slim ;;
   3.185 +		wm_apps)
   3.186 +			slitaz_apps_conf
   3.187 +			. ${user_conf}
   3.188 +			apps_dialog ;;
   3.189  		*)
   3.190  			exit 0 ;;
   3.191  	esac
   3.192 @@ -235,8 +300,9 @@
   3.193  	apps_conf=/etc/slitaz/applications.conf
   3.194  	
   3.195  	if [ "$(id -u)" = 0 ]; then
   3.196 -		user_conf="/etc/skel/.config/slitaz/applications.conf"
   3.197 -		mkdir -p $(dirname $user_conf); cp -f ${apps_conf} ${user_conf}
   3.198 +		user_conf=${apps_conf}
   3.199 +		new_user_conf="/etc/skel/.config/slitaz/applications.conf"
   3.200 +		mkdir -p $(dirname $user_conf); cp -f ${apps_conf} ${new_user_conf}
   3.201  	else
   3.202  		# If started by: startx and with boot opts screen=text
   3.203  		user_conf="$HOME/.config/slitaz/applications.conf"
   3.204 @@ -279,12 +345,18 @@
   3.205  	
   3.206  	*help) 
   3.207  		echo "Usage: $(basename $0) [install-xorg|config-xorg|init|keyboard]" ;;
   3.208 +		
   3.209  	
   3.210 +	get-applist)
   3.211 +		slitaz_apps_conf
   3.212 +		gen_applist $2 $3 $4 ;;
   3.213  	*)
   3.214  		# User can get a new .xinitrc with tazx from cmdline.
   3.215 -		[ $(id -u) == 0 ] && config_dialog
   3.216 -		slitaz_apps_conf
   3.217 -		gen_xsession ;;
   3.218 +		if [ $(id -u) == 0 ]; then config_dialog
   3.219 +		else	slitaz_apps_conf ; apps_dialog
   3.220 +		fi
   3.221 +		# gen_xsession
   3.222 +		;;
   3.223  esac
   3.224  
   3.225  exit 0