Magellan Linux

Diff of /alx-src/branches/alxconf-060/functions/config_sessions.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

alx-src/trunk/alxconfig-ng/functions/config_sessions.sh revision 273 by niro, Thu Apr 28 23:01:34 2005 UTC alx-src/branches/alxconf-060/functions/config_sessions.sh revision 2565 by niro, Mon Jul 4 20:17:25 2011 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.8 2005-04-28 23:01:34 niro Exp $  # $Id$
2  # configures ica-sessions on the host via mysql db settings  # configures ica-sessions on the host via mysql db settings
3    
4  get_sessions_settings()  fix_whitespaces()
5  {  {
6   local x i all count   local var="$@"
7     echo "${var//\ /_}"
  #all arrays:  
  # ->  session1 session2 ... sessionN  
   
  #get settings from database  
  all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select filename from cfg_sessions where serial='${ALX_SERIAL}'")  
   
  #split'em up and put in an array (only if $all not zero)  
  declare -i i=0  
  if [ -n "${all}" ]  
  then  
  for x in ${all}  
  do  
  ALX_SESSIONS[${i}]=${x}  
  ((i++))  
  done  
  count=${i}  
  else  
  count=0  
  fi  
   
  export ALX_SESSIONS  
8  }  }
9    
10  get_autostart_settings()  # helper function to create citrix session files
11    generate_ica_session_file()
12  {  {
  #get settings from database  
  ALX_AUTOSTART=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select session from cfg_autostart where serial='${ALX_SERIAL}'")  
   
  export ALX_AUTOSTART  
 }  
   
 generate_ica_session_files()  
 {  
  local all_ids  
13   local i   local i
14   local x   local num
15   local server   local server
16   local ses_session   local ses_session
17   local ses_filename   local ses_filename
# Line 51  generate_ica_session_files() Line 20  generate_ica_session_files()
20   local ses_password   local ses_password
21   local ses_browseradrs   local ses_browseradrs
22   local ses_colors   local ses_colors
23     local CONFIG
24    
25   #get settings from database   # very basic getops
26   all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   for i in $*
27   "select id from cfg_sessions where serial='${ALX_SERIAL}'")   do
28     case $1 in
29   for i in ${all_ids}   --session) shift; ses_session="$1" ;;
30   do   --filename) shift; ses_filename="$1" ;;
31   # get settings   --username) shift; ses_username="$1" ;;
32   ses_session=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   --password) shift; ses_password="$1" ;;
33   "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")   --domain) shift; ses_domain="$1" ;;
34     --server) shift; ses_browseradrs="$1" ;;
35   ses_filename=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   --colordepth) shift; ses_colors="$1" ;;
36   "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")           esac
37     shift
38   ses_username=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   done
  "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")  
   
  ses_domain=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")  
   
  ses_password=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select password from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")  
   
  ses_browseradrs=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select browseradrs from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")  
   
  # get the right colors  
  ses_colors=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select depth from cfg_graphic where serial='${ALX_SERIAL}'")  
  case ${ses_colors} in  
  24) ses_colors="8";;  
  16) ses_colors="4";;  
  8) ses_colors="2";;  
  *) ses_colors="2";;  
  esac  
39    
40   # write session files   # abort if session, filename or server not given
41   echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename}   [[ -z ${ses_session} ]] && return 1
42   echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename}   [[ -z ${ses_filename} ]] && return 1
43   OLD_IFS="$IFS"   [[ -z ${ses_browseradrs} ]] && return 1
44   IFS=";"  
45   declare -i x=0   # write session files
46   for server in ${ses_browseradrs}   CONFIG="${ALX_ICA_SESSIONS}/${ses_filename}"
47   do   clearconfig
48   (( x++ ))  
49   echo "TcpBrowserAddress${x}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig '[WFClient]'
50   done   addconfig 'Version=2'
51   IFS="${OLD_IFS}"  
52   unset x   # use ';' as ifs
53   unset OLD_IFS   declare -i i=0
54     for server in ${ses_browseradrs//;/ }
55   echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename}   do
56     (( i++ ))
57   echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename}   num="${i}"
58   echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename}   # support newer ica-clients:
59     # the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !!
60   echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename}   [[ ${i} -eq 1 ]] && num=""
61   echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig "TcpBrowserAddress${num}=${server}"
  echo "InitialProgram=#${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "DesiredColor=${ses_colors}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo 'TransportDriver=TCP/IP' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo 'WinStationDriver=ICA 3.0' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "ClearPassword=${ses_password}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "Username=${ses_username}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "Domain=${ses_domain}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo 'UseFullScreen=Yes' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo 'NoWindowManager=True' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
62   done   done
63    
64     addconfig 'ScreenPercent=0'
65     addconfig '[ApplicationServers]'
66     addconfig "${ses_session}="
67     addconfig "[${ses_session}]"
68     addconfig "Address=${ses_session}"
69     addconfig "InitialProgram=#${ses_session}"
70    
71     # convert to ica session file values
72     case ${ses_colors} in
73     24|32) ses_colors="8";;
74     16) ses_colors="4";;
75     8) ses_colors="2";;
76     *) ses_colors="4";; # default to 16bit
77     esac
78     addconfig "DesiredColor=${ses_colors}"
79     addconfig 'TransportDriver=TCP/IP'
80     addconfig 'WinStationDriver=ICA 3.0'
81     addconfig "ClearPassword=${ses__password}"
82     addconfig "Username=${ses_username}"
83     addconfig "Domain=${ses_domain}"
84     addconfig 'UseFullScreen=Yes'
85     addconfig 'NoWindowManager=True'
86  }  }
87    
88  config_sessions()  # generates a sh file to start programs
89    generate_program_sh()
90  {  {
91   # generate ica session files   local dest
92   generate_ica_session_files   local name
93     local exec
94     local param
95     local workdir
96     local CONFIG
97    
98   #first of all get the vars   # very basic getops
99   get_sessions_settings   for i in $*
100   get_autostart_settings   do
101     case $1 in
102     --name|-n) shift; name="$1" ;;
103     --exec|-x) shift; exec="$1" ;;
104     --param|-p) shift; param="$1" ;;
105     --dest|-d) shift; dest="$1" ;;
106     --workdir|-w) shift; workdir="$1" ;;
107             esac
108     shift
109     done
110    
111     # abort if name, dest or exec not given
112     [[ -z ${name} ]] && return 1
113     [[ -z ${exec} ]] && return 1
114     [[ -z ${dest} ]] && return 1
115    
116     CONFIG="${dest}"
117     addconfig "#!/bin/sh"
118     [ -n "${workdir}" ] && addconfig "cd ${workdir}"
119     addconfig "exec ${exec} ${param}"
120    
121     chmod 0755 "${dest}"
122    }
123    
124   local count=${#ALX_SESSIONS[*]}  # helper functions for generate all desktop icons
125    generate_icon()
126    {
127     local name
128   local icon   local icon
129     local command
130     local dest
131     local yres
132     local xres
133     local iwidth
134     local iheight
135     local deficon
136     local CONFIG
137     local utility
138    
139     # very basic getops
140     for i in $*
141     do
142     case $1 in
143     --name|-n) shift; name="$1" ;;
144     --command|-c) shift; command="$1" ;;
145     --icon|-i) shift; icon="$1" ;;
146     --dest|-d) shift; dest="$1" ;;
147     --xres|-x) shift; xres="$1" ;;
148     --yres|-y) shift; yres="$1" ;;
149     --icon-width|-w) shift; iwidth="$1" ;;
150     --icon-height|-h) shift; iheight="$1" ;;
151     --default-icon) shift; deficon="$1" ;;
152             esac
153     shift
154     done
155    
156     # some sanity checks:
157    
158     # abort if name or command not given
159     [[ -z ${name} ]] && return 1
160     [[ -z ${command} ]] && return 1
161    
162     [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk"
163    
164     # use some defaults for icon, dest, {x,y}res
165     [[ -z ${xres} ]] && xres=50
166     [[ -z ${yres} ]] && xres=50
167     if [[ -z ${icon} ]] || [ ! -f ${icon} ]
168     then
169     # if no default icon is given use default.png
170     [[ -z ${deficon} ]] && deficon="default.png"
171     icon="${ALX_SESSIONS_ICONS}/${deficon}"
172     fi
173    
174     CONFIG="${dest}"
175     clearconfig
176    
177     addconfig 'table Icon'
178     addconfig "  Caption: ${name}"
179     addconfig "  Command: ${command}"
180     addconfig "  Icon: ${icon}"
181     addconfig "  X: ${xres}"
182     addconfig "  Y: ${yres}"
183    
184     # add these only if not zero
185     if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]]
186     then
187     addconfig "  Width: ${iwidth}"
188     addconfig "  Height: ${iheight}"
189     fi
190    
191     addconfig 'end'
192    }
193    
194    generate_all_desktop_icons()
195    {
196     local session_list="$1"
197     local other_menuitem_list="$2"
198     local res
199     local xres
200     local yres
201     local x
202     local y
203   local i   local i
204     local name
205     local progsh_path
206     local utility
207     local dest
208     local rc
209    
210     dest="${ALX_UNPRIV_HOME}/.idesktop"
211     rc="${ALX_UNPRIV_HOME}/.ideskrc"
212    
213     # progsh path
214     progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
215    
216     # get the resolution
217     res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'")
218    
219     # split res to x & y
220     xres="${res%x*}"
221     yres="${res#*x}"
222    
223     # top left edge of the icon is given in config file
224     # remove a little bit to simulate the bottom-right edge
225     xres="$(( ${xres} - 120 ))"
226     yres="$(( ${yres} - 80 ))"
227    
228     # clean desktop icon location
229     [ -d ${dest} ] && rm -rf ${dest}
230     [ -f ${rc} ] && rm -f ${rc}
231     install -d ${dest}
232    
233     # default settings
234     declare -i x=50
235     declare -i y=50
236    
237     # ica icons
238     for i in ${session_list}
239     do
240     # abort if empty
241     [[ -z ${i} ]] && continue
242    
243     # get database information
244     evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
245    
246     # new line if x > xres
247     if [ ${x} -ge ${xres} ]
248     then
249     x=50
250     y=$((${y} + 80))
251     fi
252    
253     # new row if y > yres
254     if [ ${y} -ge ${yres} ]
255     then
256     x=$((${x} + 120))
257     y=50
258    
259     # re-check x
260     [ ${x} -ge ${xres} ] && x=50
261     fi
262    
263     generate_icon \
264     --name "${cfg_sessions_session}" \
265     --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \
266     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \
267     --dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \
268     --xres "${x}" \
269     --yres "${y}"
270    
271     y=$((${y} + 80))
272     done
273    
274     for i in ${other_menuitem_list}
275     do
276     # abort if empty
277     [[ -z ${i} ]] && continue
278    
279   # DEBUG   # get database information
280  # declare -i i=0   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
281  # echo count=${count}  
282  # echo "Number of new sessions: ${count}"   # new line if x > xres
283  # for ((i=0; i < count; i++))   if [ ${x} -ge ${xres} ]
284  # do   then
285  # echo "${i} - ${ALX_SESSIONS[${i}]}"   x=50
286  # done   y=$((${y} + 80))
287     fi
288    
289     # new row if y > yres
290     if [ ${y} -ge ${yres} ]
291     then
292     x=$((${x} + 120))
293     y=50
294    
295     # re-check x
296     [ ${x} -ge ${xres} ] && x=50
297     fi
298    
299     generate_icon \
300     --name "${cfg_other_menuitems_name}" \
301     --command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
302     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \
303     --dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \
304     --xres "${x}" \
305     --yres "${y}" \
306     --default-icon "default_item.png"
307    
308     y=$((${y} + 80))
309     done
310    
311     # add shutdown, reboot icons
312     for i in shutdown reboot
313     do
314     # new line if x > xres
315     if [ ${x} -ge ${xres} ]
316     then
317     x=50
318     y=$((${y} + 80))
319     fi
320    
321     # new row if y > yres
322     if [ ${y} -ge ${yres} ]
323     then
324     x=$((${x} + 120))
325     y=50
326    
327     # re-check x
328     [ ${x} -ge ${xres} ] && x=50
329     fi
330    
331     case ${i} in
332     shutdown) name="Herunterfahren" ;;
333     reboot) name="Neustarten" ;;
334     esac
335    
336     generate_icon \
337     --name "${name}" \
338     --command "/usr/lib/alxconfig-ng/bin/user_${i}.sh" \
339     --icon "${ALX_SESSIONS_ICONS}/${i}.png" \
340     --dest "${dest}/${i}.lnk" \
341     --xres "${x}" \
342     --yres "${y}" \
343     --icon-width "40" \
344     --icon-height "40"
345    
346     y=$((${y} + 80))
347     done
348    
349     # last but not least gen a icon with some sys informations
350     local sysinfo
351     local hostname
352     local osversion
353    
354     osversion="$(< /etc/mageversion)"
355     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
356     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
357    
358     # now get the right position:
359     # restore orig values of xres
360     xres="$(( ${xres} + 120 ))"
361     # default y pos (full yres -22 = cur yres + 58 !)
362     yres="$(( ${yres} + 58 ))"
363     # middle of the screen
364     # (no txt - length required, xtdesk manage that itself)
365     xres="$(( ${xres} / 2))"
366    
367     generate_icon \
368     --name "${sysinfo}" \
369     --command "exit 0" \
370     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
371     --dest "${dest}/sysinfo.lnk" \
372     --xres "${xres}" \
373     --yres "${yres}" \
374     --icon-width "1" \
375     --icon-height "1"
376    }
377    
378    config_sessions()
379    {
380     local i
381     local all_ses_ids
382     local all_other_ids
383     local CONFIG
384     local screensaver_passwd_cmd
385     local fbinit
386     local fbkeys
387    
388     # get all session ids from database
389     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
390     # get all other_menutiem ids from database
391     all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
392    
393     # get screensaver settings
394     evaluate_table cfg_screensaver
395     # get autostart settings
396     evaluate_table cfg_autostart
397     # get current color depth
398     evaluate_table cfg_graphic
399    
400   # now setup fluxbox for user station   # now setup fluxbox for user station
401    
# Line 152  config_sessions() Line 406  config_sessions()
406   # now generate fluxbox config files   # now generate fluxbox config files
407    
408   # fluxbox main config   # fluxbox main config
409   cat ${ALX_SKELETONS}/fluxbox/init \   if [ -f ${ALX_SKELETONS}/fluxbox/init ]
410   > ${ALX_UNPRIV_HOME}/.fluxbox/init   then
411     fbinit="${ALX_SKELETONS}/fluxbox/init"
412     else
413     fbinit="/usr/share/fluxbox/init"
414     fi
415     cat ${fbinit} > ${ALX_UNPRIV_HOME}/.fluxbox/init
416    
417   # fluxbox autostart   # fluxbox autostart
418   cat ${ALX_SKELETONS}/fluxbox/apps \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
419   > ${ALX_UNPRIV_HOME}/.fluxbox/apps   # do not show decorations on messages generated with xmessage
420     if [ -x /usr/bin/xmessage ]
421     then
422     addconfig '[app] (xmessage)'
423     addconfig ' [Deco] {NONE}'
424     addconfig '[end]'
425     fi
426     # add icon utility
427     [ -x /usr/bin/idesk ] && addconfig '[startup] {nohup idesk > /dev/null &}'
428     # add numlock utility
429     [ -x /usr/bin/numlockx ] && addconfig '[startup] {nohup numlockx on &}'
430    
431     # add screensaver
432     if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
433     then
434     if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
435     then
436     screensaver_passwd_cmd="-nolock"
437     else
438     screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
439     fi
440    
441     addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
442     fi
443    
444   # add autostart session   # add autostart session
445   if [[ ${ALX_AUTOSTART} != "" ]]   if [[ ! -z ${cfg_autostart_session} ]]
446   then   then
447   echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \   # sleep one second to wait until busybox is fully initialized and the screen is really centered
448   >> ${ALX_UNPRIV_HOME}/.fluxbox/apps   addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
449   fi   fi
450    
451   # fluxbox hotkeys   # fluxbox hotkeys
452   cat ${ALX_SKELETONS}/fluxbox/apps \   if [ -f ${ALX_SKELETONS}/fluxbox/keys ]
453   > ${ALX_UNPRIV_HOME}/.fluxbox/keys   then
454     fbkeys="${ALX_SKELETONS}/fluxbox/keys"
455     else
456     fbkeys="/usr/share/fluxbox/keys"
457     fi
458     cat ${fbkeys} > ${ALX_UNPRIV_HOME}/.fluxbox/keys
459    
460   # fluxbox menu header   # generate a fluxbox menu
461   cat ${ALX_SKELETONS}/fluxbox/menu.header \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
462   > ${ALX_UNPRIV_HOME}/.fluxbox/menu   clearconfig
463    
464     # fluxbox menu header
465     cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
466     # now fix it with proper messages :P
467     local ver="$(< /etc/mageversion)"
468     sed -i "s:@CHANGEME@:alx-${ver}  #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu
469   # add a newline (maybe there is no crlf in the header)   # add a newline (maybe there is no crlf in the header)
470   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig
471    
472   # fluxbox menu sessions   # first generate session files
473   for (( i=0; i < count; i++ ))   for i in ${all_ses_ids}
474   do   do
475   echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \   evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
476   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   generate_ica_session_file \
477   done   --session "${cfg_sessions_session}" \
478     --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
479     --username "${cfg_sessions_username}" \
480     --password "${cfg_sessions_password}" \
481     --domain "${cfg_sessions_domain}" \
482     --server "${cfg_sessions_browseradrs}" \
483     --colordepth "${cfg_graphic_depth}"
484    
485   # fluxbox menu footer   # fluxbox menusession
486   cat ${ALX_SKELETONS}/fluxbox/menu.footer \   addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
487   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   done
   
  # add a newline (maybe there is no crlf in the footer)  
  echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu  
488    
489   # now we generate the desktop icons   # delete all progs
490   cat ${ALX_SKELETONS}/idesk/ideskrc \   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
491   > ${ALX_UNPRIV_HOME}/.ideskrc   [ -d ${progsh_path} ] && rm -rf ${progsh_path}
492     install -d ${progsh_path}
  # whipe out old stuff and install a fresh directory  
  [ -d ${ALX_UNPRIV_HOME}/.idesktop ] && rm -rf ${ALX_UNPRIV_HOME}/.idesktop  
  install -d ${ALX_UNPRIV_HOME}/.idesktop  
493    
494   local name   # add other menuitems
495   for (( i=0; i < count; i++ ))   for i in ${all_other_ids}
496   do   do
497   name="$(basename ${ALX_SESSIONS[${i}]} .ica)"   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
498    
499   if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]   # now echo config line for fluxbox-menu
500     # make it "configureable" :p
501     if [[ -n ${cfg_other_menuitems_workdir} ]]
502   then   then
503   icon="${ALX_SESSIONS_ICONS}/${name}.png"   workdir="--workdir ${cfg_other_menuitems_workdir}"
504   else   fi
505   icon="${ALX_SESSIONS_ICONS}/default.png"   if [[ -n ${cfg_other_menuitems_icon} ]]
506     then
507     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
508   fi   fi
509    
510   echo "table Icon   # gen prog startup wrapper
511  Caption: ${name}   generate_program_sh \
512  Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica   --name "${cfg_other_menuitems_name}" \
513  Icon: ${icon}   --exec "${cfg_other_menuitems_exec}" \
514  end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk   --param "${cfg_other_menuitems_param}" \
515     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
516     "${workdir}"
517    
518     addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
519   done   done
520    
521   # set correct permissions   # fluxbox menu footer
522     cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
523     # add a newline (maybe there is no crlf in the footer)
524     addconfig
525    
526     # now it's a good time to generate *all* icons :)
527     generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}"
528    
529     # fix permissions
530   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
531   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
532   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
533   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop
534   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc
   
   
  # unset vars  
  unset ALX_SESSIONS  
535  }  }

Legend:
Removed from v.273  
changed lines
  Added in v.2565