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 277 by niro, Wed Aug 3 17:56:57 2005 UTC alx-src/branches/alxconf-060/functions/config_sessions.sh revision 2435 by niro, Thu Jun 16 16:21:11 2011 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.9 2005-08-03 17:56:57 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     # very basic getops
26     for i in $*
27     do
28     case $1 in
29     --session) shift; ses_session="$1" ;;
30     --filename) shift; ses_filename="$1" ;;
31     --username) shift; ses_username="$1" ;;
32     --password) shift; ses_password="$1" ;;
33     --domain) shift; ses_domain="$1" ;;
34     --server) shift; ses_browseradrs="$1" ;;
35     --colordepth) shift; ses_colors="$1" ;;
36             esac
37     shift
38     done
39    
40     # abort if session, filename or server not given
41     [[ -z ${ses_session} ]] && return 1
42     [[ -z ${ses_filename} ]] && return 1
43     [[ -z ${ses_browseradrs} ]] && return 1
44    
45     # write session files
46     CONFIG="${ALX_ICA_SESSIONS}/${ses_filename}"
47     clearconfig
48    
49   #get settings from database   addconfig '[WFClient]'
50   all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   addconfig 'Version=2'
  "select id from cfg_sessions where serial='${ALX_SERIAL}'")  
51    
52   for i in ${all_ids}   # use ';' as ifs
53     declare -i i=0
54     for server in ${ses_browseradrs//;/ }
55   do   do
56   # get settings   (( i++ ))
57   ses_session=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   num="${i}"
58   "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")   # support newer ica-clients:
59     # the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !!
60   ses_filename=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   [[ ${i} -eq 1 ]] && num=""
61   "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")   addconfig "TcpBrowserAddress${num}=${server}"
   
  ses_username=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "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  
   
  # write session files  
  echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  OLD_IFS="$IFS"  
  IFS=";"  
  declare -i x=0  
  for server in ${ses_browseradrs}  
  do  
  (( x++ ))  
  echo "TcpBrowserAddress${x}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  done  
  IFS="${OLD_IFS}"  
  unset x  
  unset OLD_IFS  
   
  echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
   
  echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
   
  echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
  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  get_other_menuitems()  # generates a sh file to start programs
89    generate_program_sh()
90  {  {
91   local x i count name exec icon workdir   local dest
92     local name
93     local exec
94     local param
95     local workdir
96     local CONFIG
97    
98   #all arrays:   # very basic getops
99   # ->  session1 session2 ... sessionN   for i in $*
100     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   #get settings from database   # abort if name, dest or exec not given
112   count=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   [[ -z ${name} ]] && return 1
113   "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'")   [[ -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   # get all instances and put them into an array   chmod 0755 "${dest}"
122   if [ -n "${count}" ]  }
123    
124    # helper functions for generate all desktop icons
125    generate_icon()
126    {
127     local name
128     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     # which utility are we using idesk|xtdesk ?
163     if [ -x /usr/bin/idesk ]
164     then
165     utility="idesk"
166     [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk"
167     else
168     utility="xtdesk"
169     [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk"
170     fi
171    
172     # use some defaults for icon, dest, {x,y}res
173     [[ -z ${xres} ]] && xres=30
174     [[ -z ${yres} ]] && xres=30
175     if [[ -z ${icon} ]] || [ ! -f ${icon} ]
176   then   then
177   for x in ${count}   # if no default icon is given use default.png
178   do   [[ -z ${deficon} ]] && deficon="default.png"
179   # to be sure   icon="${ALX_SESSIONS_ICONS}/${deficon}"
180   unset name   fi
181   unset exec  
182   unset workdir   CONFIG="${dest}"
183   unset icon   clearconfig
184    
185   name=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   addconfig 'table Icon'
186   "select name from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")   [[ ${utility} = xtdesk ]] && addconfig '  Type: Program'
187     addconfig "  Caption: ${name}"
188   exec=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   addconfig "  Command: ${command}"
189   "select exec from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")   addconfig "  Icon: ${icon}"
190     addconfig "  X: ${xres}"
191   workdir=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   addconfig "  Y: ${yres}"
192   "select workdir from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")  
193     # add these only if not zero
194   icon=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]]
195   "select icon from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")   then
196     if [[ ${utility} = xtdesk ]]
197   # debug only   then
198   #echo "DEBUG: ${x}: name:'${name}' exec:'${exec}' workdir:'${workdir}' ic$   addconfig "  IconWidth: ${iwidth}"
199     addconfig "  IconHeight: ${iheight}"
200   # now echo config line for fluxbox-menu   fi
201   # make it "configureable" :P   if [[ ${utility} = idesk ]]
202   [ -n "${workdir}" ] && workdir="cd ${workdir};"   then
203   [ -n "${icon}" ] && icon="[${icon}]"   addconfig "  Width: ${iwidth}"
204   echo "[exec] (${name}) {${workdir}${exec}} ${icon}"   addconfig "  Height: ${iheight}"
205   done   fi
206   fi   fi
207    
208     addconfig 'end'
209  }  }
210    
211  config_sessions()  generate_all_desktop_icons()
212  {  {
213   # generate ica session files   local session_list="$1"
214   generate_ica_session_files   local other_menuitem_list="$2"
215     local res
216     local xres
217     local yres
218     local x
219     local y
220     local i
221     local name
222     local progsh_path
223     local utility
224     local dest
225     local rc
226    
227     # which utility are we using idesk|xtdesk ?
228     if [ -x /usr/bin/idesk ]
229     then
230     utility="idesk"
231     dest="${ALX_UNPRIV_HOME}/.idesktop"
232     rc="${ALX_UNPRIV_HOME}/.ideskrc"
233     else
234     utility="xtdesk"
235     dest="${ALX_UNPRIV_HOME}/.xtdesktop"
236     rc="${ALX_UNPRIV_HOME}/.xtdeskrc"
237     fi
238    
  #first of all get the vars  
  get_sessions_settings  
  get_autostart_settings  
239    
240   local count=${#ALX_SESSIONS[*]}   # progsh path
241   local icon   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
  local i  
242    
243   # DEBUG   # get the resolution
244  # declare -i i=0   res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'")
245  # echo count=${count}  
246  # echo "Number of new sessions: ${count}"   # split res to x & y
247  # for ((i=0; i < count; i++))   xres="${res%x*}"
248  # do   yres="${res#*x}"
249  # echo "${i} - ${ALX_SESSIONS[${i}]}"  
250  # done   # top left edge of the icon is given in config file
251     # remove a little bit to simulate the bottom-right edge
252     xres="$(( ${xres} - 120 ))"
253     yres="$(( ${yres} - 80 ))"
254    
255     # clean desktop icon location
256     [ -d ${dest} ] && rm -rf ${dest}
257     [ -f ${rc} ] && rm -f ${rc}
258     install -d ${dest}
259    
260    if [[ ${utility} = xtdesk ]]
261    then
262     # basic config
263     cat ${ALX_SKELETONS}/xtdesktop/xtdeskrc > ${ALX_UNPRIV_HOME}/.xtdesktop/xtdeskrc
264    fi
265    
266     # default settings
267     declare -i x=30
268     declare -i y=30
269    
270     # ica icons
271     for i in ${session_list}
272     do
273     # abort if empty
274     [[ -z ${i} ]] && continue
275    
276     # get database information
277     evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
278    
279     # new line if x > xres
280     if [ ${x} -ge ${xres} ]
281     then
282     x=30
283     y=$((${y} + 80))
284     fi
285    
286     # new row if y > yres
287     if [ ${y} -ge ${yres} ]
288     then
289     x=$((${x} + 120))
290     y=30
291    
292     # re-check x
293     [ ${x} -ge ${xres} ] && x=30
294     fi
295    
296     generate_icon \
297     --name "${cfg_sessions_session}" \
298     --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \
299     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \
300     --dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \
301     --xres "${x}" \
302     --yres "${y}"
303    
304     y=$((${y} + 80))
305     done
306    
307     for i in ${other_menuitem_list}
308     do
309     # abort if empty
310     [[ -z ${i} ]] && continue
311    
312     # get database information
313     evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
314    
315     # new line if x > xres
316     if [ ${x} -ge ${xres} ]
317     then
318     x=30
319     y=$((${y} + 80))
320     fi
321    
322     # new row if y > yres
323     if [ ${y} -ge ${yres} ]
324     then
325     x=$((${x} + 120))
326     y=30
327    
328     # re-check x
329     [ ${x} -ge ${xres} ] && x=30
330     fi
331    
332     generate_icon \
333     --name "${cfg_other_menuitems_name}" \
334     --command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
335     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \
336     --dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \
337     --xres "${x}" \
338     --yres "${y}" \
339     --default-icon "default_item.png"
340    
341     y=$((${y} + 80))
342     done
343    
344     # last but not least gen a icon with some sys informations
345     local sysinfo
346     local hostname
347     local osversion
348    
349     osversion="$(< /etc/mageversion)"
350     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
351     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
352    
353     # now get the right position:
354     # restore orig values of xres
355     xres="$(( ${xres} + 120 ))"
356     # default y pos (full yres -22 = cur yres + 58 !)
357     yres="$(( ${yres} + 58 ))"
358     # middle of the screen
359     # (no txt - length required, xtdesk manage that itself)
360     xres="$(( ${xres} / 2))"
361    
362     generate_icon \
363     --name "${sysinfo}" \
364     --command "exit 0" \
365     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
366     --dest "${dest}/sysinfo.lnk" \
367     --xres "${xres}" \
368     --yres "${yres}" \
369     --icon-width "1" \
370     --icon-height "1"
371    }
372    
373    config_sessions()
374    {
375     local i
376     local all_ses_ids
377     local all_other_ids
378     local CONFIG
379     local screensaver_passwd_cmd
380    
381     # get all session ids from database
382     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
383     # get all other_menutiem ids from database
384     all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
385    
386     # get screensaver settings
387     evaluate_table cfg_screensaver
388     # get autostart settings
389     evaluate_table cfg_autostart
390     # get current color depth
391     evaluate_table cfg_graphic
392    
393   # now setup fluxbox for user station   # now setup fluxbox for user station
394    
# Line 198  config_sessions() Line 399  config_sessions()
399   # now generate fluxbox config files   # now generate fluxbox config files
400    
401   # fluxbox main config   # fluxbox main config
402   cat ${ALX_SKELETONS}/fluxbox/init \   cat ${ALX_SKELETONS}/fluxbox/init > ${ALX_UNPRIV_HOME}/.fluxbox/init
  > ${ALX_UNPRIV_HOME}/.fluxbox/init  
403    
404   # fluxbox autostart   # fluxbox autostart
405   cat ${ALX_SKELETONS}/fluxbox/apps \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
406   > ${ALX_UNPRIV_HOME}/.fluxbox/apps   # add icon utility
407     [ -x /usr/bin/idesk ] && addconfig '[startup] {nohup idesk > /dev/null &}'
408     [ -x /usr/bin/xtdesk ] && addconfig '[startup] {nohup xtdesk > /dev/null &}'
409     # add numlock utility
410     [ -x /usr/bin/numlockx ] && addconfig '[startup] {nohup numlockx on &}'
411    
412     # add screensaver
413     if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
414     then
415     if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
416     then
417     screensaver_passwd_cmd="-nolock"
418     else
419     screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
420     fi
421    
422     addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
423     fi
424    
425   # add autostart session   # add autostart session
426   if [[ ${ALX_AUTOSTART} != "" ]]   if [[ ! -z ${cfg_autostart_session} ]]
427   then   then
428   echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \   # sleep one second to wait until busybox is fully initialized and the screen is really centered
429   >> ${ALX_UNPRIV_HOME}/.fluxbox/apps   addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
430   fi   fi
431    
432   # fluxbox hotkeys   # fluxbox hotkeys
433   cat ${ALX_SKELETONS}/fluxbox/apps \   cat ${ALX_SKELETONS}/fluxbox/keys > ${ALX_UNPRIV_HOME}/.fluxbox/keys
  > ${ALX_UNPRIV_HOME}/.fluxbox/keys  
434    
435   # fluxbox menu header   # generate a fluxbox menu
436   cat ${ALX_SKELETONS}/fluxbox/menu.header \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
437   > ${ALX_UNPRIV_HOME}/.fluxbox/menu   clearconfig
438    
439     # fluxbox menu header
440     cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
441     # now fix it with proper messages :P
442     local ver="$(< /etc/mageversion)"
443     sed -i "s:@CHANGEME@:alx-${ver}  #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu
444   # add a newline (maybe there is no crlf in the header)   # add a newline (maybe there is no crlf in the header)
445   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig
446    
447   # fluxbox menu sessions   # first generate session files
448   for (( i=0; i < count; i++ ))   for i in ${all_ses_ids}
449   do   do
450   [ -n "${ALX_SESSIONS[${i}]}" ] && \   evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
451   echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \   generate_ica_session_file \
452   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --session "${cfg_sessions_session}" \
453   done   --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
454     --username "${cfg_sessions_username}" \
455   # add other menuitems   --password "${cfg_sessions_password}" \
456   get_other_menuitems >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --domain "${cfg_sessions_domain}" \
457     --server "${cfg_sessions_browseradrs}" \
458   # fluxbox menu footer   --colordepth "${cfg_graphic_depth}"
  cat ${ALX_SKELETONS}/fluxbox/menu.footer \  
  >> ${ALX_UNPRIV_HOME}/.fluxbox/menu  
459    
460   # add a newline (maybe there is no crlf in the footer)   # fluxbox menusession
461   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
462     done
463    
464   # now we generate the desktop icons   # delete all progs
465   cat ${ALX_SKELETONS}/idesk/ideskrc \   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
466   > ${ALX_UNPRIV_HOME}/.ideskrc   [ -d ${progsh_path} ] && rm -rf ${progsh_path}
467     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  
468    
469   local name   # add other menuitems
470   for (( i=0; i < count; i++ ))   for i in ${all_other_ids}
471   do   do
472   name="$(basename ${ALX_SESSIONS[${i}]} .ica)"   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
473    
474   if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]   # now echo config line for fluxbox-menu
475     # make it "configureable" :p
476     if [[ -n ${cfg_other_menuitems_workdir} ]]
477   then   then
478   icon="${ALX_SESSIONS_ICONS}/${name}.png"   workdir="--workdir ${cfg_other_menuitems_workdir}"
479   else   fi
480   icon="${ALX_SESSIONS_ICONS}/default.png"   if [[ -n ${cfg_other_menuitems_icon} ]]
481     then
482     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
483   fi   fi
484    
485   echo "table Icon   # gen prog startup wrapper
486  Caption: ${name}   generate_program_sh \
487  Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica   --name "${cfg_other_menuitems_name}" \
488  Icon: ${icon}   --exec "${cfg_other_menuitems_exec}" \
489  end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk   --param "${cfg_other_menuitems_param}" \
490     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
491     "${workdir}"
492    
493     addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
494   done   done
495    
496   # set correct permissions   # fluxbox menu footer
497     cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
498     # add a newline (maybe there is no crlf in the footer)
499     addconfig
500    
501     # now it's a good time to generate *all* icons :)
502     generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}"
503    
504     # fix permissions
505   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
506   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
507   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
508   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop   chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop
509   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc   chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc
   
   
  # unset vars  
  unset ALX_SESSIONS  
510  }  }

Legend:
Removed from v.277  
changed lines
  Added in v.2435