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 291 by niro, Thu Aug 18 02:51:16 2005 UTC alx-src/branches/alxconf-060/functions/config_sessions.sh revision 2472 by niro, Mon Jun 27 15:14:12 2011 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.10 2005-08-18 02:51:16 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   # get settings from database   # abort if session, filename or server not given
41   all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   [[ -z ${ses_session} ]] && return 1
42   "select id from cfg_sessions where serial='${ALX_SERIAL}'")   [[ -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   for i in ${all_ids}   addconfig '[WFClient]'
50     addconfig 'Version=2'
51    
52     # 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}"
62     done
  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  
63    
64   # write session files   addconfig 'ScreenPercent=0'
65   echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig '[ApplicationServers]'
66   echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig "${ses_session}="
67   OLD_IFS="$IFS"   addconfig "[${ses_session}]"
68   IFS=";"   addconfig "Address=${ses_session}"
69   declare -i x=0   addconfig "InitialProgram=#${ses_session}"
70   for server in ${ses_browseradrs}  
71   do   # convert to ica session file values
72   (( x++ ))   case ${ses_colors} in
73   echo "TcpBrowserAddress${x}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   24|32) ses_colors="8";;
74   done   16) ses_colors="4";;
75   IFS="${OLD_IFS}"   8) ses_colors="2";;
76   unset x   *) ses_colors="4";; # default to 16bit
77   unset OLD_IFS   esac
78     addconfig "DesiredColor=${ses_colors}"
79   echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig 'TransportDriver=TCP/IP'
80     addconfig 'WinStationDriver=ICA 3.0'
81   echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig "ClearPassword=${ses__password}"
82   echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig "Username=${ses_username}"
83     addconfig "Domain=${ses_domain}"
84   echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig 'UseFullScreen=Yes'
85   echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   addconfig 'NoWindowManager=True'
86   echo "InitialProgram=#${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  }
87   echo "DesiredColor=${ses_colors}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  
88   echo 'TransportDriver=TCP/IP' >> ${ALX_ICA_SESSIONS}/${ses_filename}  # generates a sh file to start programs
89   echo 'WinStationDriver=ICA 3.0' >> ${ALX_ICA_SESSIONS}/${ses_filename}  generate_program_sh()
90   echo "ClearPassword=${ses_password}" >> ${ALX_ICA_SESSIONS}/${ses_filename}  {
91   echo "Username=${ses_username}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   local dest
92   echo "Domain=${ses_domain}" >> ${ALX_ICA_SESSIONS}/${ses_filename}   local name
93   echo 'UseFullScreen=Yes' >> ${ALX_ICA_SESSIONS}/${ses_filename}   local exec
94   echo 'NoWindowManager=True' >> ${ALX_ICA_SESSIONS}/${ses_filename}   local param
95     local workdir
96     local CONFIG
97    
98     # very basic getops
99     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   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  get_other_menuitems()  # helper functions for generate all desktop icons
125    generate_icon()
126  {  {
127   local x i count name exec icon workdir   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   # all arrays:   # very basic getops
140   # ->  session1 session2 ... sessionN   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=30
166     [[ -z ${yres} ]] && xres=30
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   # get settings from database   CONFIG="${dest}"
175   count=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   clearconfig
  "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'")  
176    
177   # get all instances and put them into an array   addconfig 'table Icon'
178   if [ -n "${count}" ]   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   then
187   for x in ${count}   addconfig "  Width: ${iwidth}"
188   do   addconfig "  Height: ${iheight}"
  # to be sure  
  unset name  
  unset exec  
  unset workdir  
  unset icon  
   
  name=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select name from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")  
   
  exec=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select exec from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")  
   
  workdir=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select workdir from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")  
   
  icon=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \  
  "select icon from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'")  
   
  # debug only  
  #echo "DEBUG: ${x}: name:'${name}' exec:'${exec}' workdir:'${workdir}' ic$  
   
  # now echo config line for fluxbox-menu  
  # make it "configureable" :P  
  [ -n "${workdir}" ] && workdir="cd ${workdir};"  
  [ -n "${icon}" ] && icon="[${icon}]"  
  echo "[exec] (${name}) {${workdir}${exec}} ${icon}"  
  done  
189   fi   fi
190    
191     addconfig 'end'
192  }  }
193    
194  config_sessions()  generate_all_desktop_icons()
195  {  {
196   # generate ica session files   local session_list="$1"
197   generate_ica_session_files   local other_menuitem_list="$2"
198     local res
199     local xres
200     local yres
201     local x
202     local y
203     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=30
235     declare -i y=30
236    
237   # first of all get the vars   # ica icons
238   get_sessions_settings   for i in ${session_list}
239   get_autostart_settings   do
240     # abort if empty
241     [[ -z ${i} ]] && continue
242    
243   local count=${#ALX_SESSIONS[*]}   # get database information
244   local icon   evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
245   local i  
246     # new line if x > xres
247     if [ ${x} -ge ${xres} ]
248     then
249     x=30
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=30
258    
259     # re-check x
260     [ ${x} -ge ${xres} ] && x=30
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     # get database information
280     evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
281    
282     # new line if x > xres
283     if [ ${x} -ge ${xres} ]
284     then
285     x=30
286     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=30
294    
295     # re-check x
296     [ ${x} -ge ${xres} ] && x=30
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=30
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=30
326    
327     # re-check x
328     [ ${x} -ge ${xres} ] && x=30
329     fi
330    
331     case ${i} in
332     shutdown) name="Herunterfahren"
333     reboot) name="Neustarten"
334     esac
335    
336   # DEBUG   generate_icon \
337  # declare -i i=0   --name "${name}" \
338  # echo count=${count}   --command "/usr/lib/alxconfig-ng/bin/user_${i}.sh" \
339  # echo "Number of new sessions: ${count}"   --icon "${ALX_SESSIONS_ICONS}/${i}.png" \
340  # for ((i=0; i < count; i++))   --dest "${dest}/${i}.lnk" \
341  # do   --xres "${x}" \
342  # echo "${i} - ${ALX_SESSIONS[${i}]}"   --yres "${y}"
343  # done  
344     y=$((${y} + 80))
345     done
346    
347     # last but not least gen a icon with some sys informations
348     local sysinfo
349     local hostname
350     local osversion
351    
352     osversion="$(< /etc/mageversion)"
353     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
354     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
355    
356     # now get the right position:
357     # restore orig values of xres
358     xres="$(( ${xres} + 120 ))"
359     # default y pos (full yres -22 = cur yres + 58 !)
360     yres="$(( ${yres} + 58 ))"
361     # middle of the screen
362     # (no txt - length required, xtdesk manage that itself)
363     xres="$(( ${xres} / 2))"
364    
365     generate_icon \
366     --name "${sysinfo}" \
367     --command "exit 0" \
368     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
369     --dest "${dest}/sysinfo.lnk" \
370     --xres "${xres}" \
371     --yres "${yres}" \
372     --icon-width "1" \
373     --icon-height "1"
374    }
375    
376    config_sessions()
377    {
378     local i
379     local all_ses_ids
380     local all_other_ids
381     local CONFIG
382     local screensaver_passwd_cmd
383     local fbinit
384     local fbkeys
385    
386     # get all session ids from database
387     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
388     # get all other_menutiem ids from database
389     all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
390    
391     # get screensaver settings
392     evaluate_table cfg_screensaver
393     # get autostart settings
394     evaluate_table cfg_autostart
395     # get current color depth
396     evaluate_table cfg_graphic
397    
398   # now setup fluxbox for user station   # now setup fluxbox for user station
399    
# Line 198  config_sessions() Line 404  config_sessions()
404   # now generate fluxbox config files   # now generate fluxbox config files
405    
406   # fluxbox main config   # fluxbox main config
407   cat ${ALX_SKELETONS}/fluxbox/init \   if [ -f ${ALX_SKELETONS}/fluxbox/init ]
408   > ${ALX_UNPRIV_HOME}/.fluxbox/init   then
409     fbinit="${ALX_SKELETONS}/fluxbox/init"
410     else
411     fbinit="/usr/share/fluxbox/init"
412     fi
413     cat ${fbinit} > ${ALX_UNPRIV_HOME}/.fluxbox/init
414    
415   # fluxbox autostart   # fluxbox autostart
416   cat ${ALX_SKELETONS}/fluxbox/apps \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
417   > ${ALX_UNPRIV_HOME}/.fluxbox/apps   # do not show decorations on messages generated with xmessage
418     if [ -x /usr/bin/xmessage ]
419     then
420     addconfig '[app] (xmessage)'
421     addconfig ' [Deco] {NONE}'
422     addconfig '[end]'
423     fi
424     # add icon utility
425     [ -x /usr/bin/idesk ] && addconfig '[startup] {nohup idesk > /dev/null &}'
426     # add numlock utility
427     [ -x /usr/bin/numlockx ] && addconfig '[startup] {nohup numlockx on &}'
428    
429     # add screensaver
430     if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
431     then
432     if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
433     then
434     screensaver_passwd_cmd="-nolock"
435     else
436     screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
437     fi
438    
439     addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
440     fi
441    
442   # add autostart session   # add autostart session
443   if [[ ${ALX_AUTOSTART} != "" ]]   if [[ ! -z ${cfg_autostart_session} ]]
444   then   then
445   echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \   # sleep one second to wait until busybox is fully initialized and the screen is really centered
446   >> ${ALX_UNPRIV_HOME}/.fluxbox/apps   addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
447   fi   fi
448    
449   # fluxbox hotkeys   # fluxbox hotkeys
450   cat ${ALX_SKELETONS}/fluxbox/apps \   if [ -f ${ALX_SKELETONS}/fluxbox/keys ]
451   > ${ALX_UNPRIV_HOME}/.fluxbox/keys   then
452     fbkeys="${ALX_SKELETONS}/fluxbox/keys"
453     else
454     fbkeys="/usr/share/fluxbox/keys"
455     fi
456     cat ${fbkeys} > ${ALX_UNPRIV_HOME}/.fluxbox/keys
457    
458   # fluxbox menu header   # generate a fluxbox menu
459   cat ${ALX_SKELETONS}/fluxbox/menu.header \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
460   > ${ALX_UNPRIV_HOME}/.fluxbox/menu   clearconfig
461    
462     # fluxbox menu header
463     cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
464   # now fix it with proper messages :P   # now fix it with proper messages :P
465   local ver="$(< /etc/mageversion)"   local ver="$(< /etc/mageversion)"
466   sed -i "s:@CHANGEME@:alx-${ver}  #${ALX_SERIAL}:g" \   sed -i "s:@CHANGEME@:alx-${ver}  #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu
  ${ALX_UNPRIV_HOME}/.fluxbox/menu  
   
467   # add a newline (maybe there is no crlf in the header)   # add a newline (maybe there is no crlf in the header)
468   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig
469    
470   # fluxbox menu sessions   # first generate session files
471   for (( i=0; i < count; i++ ))   for i in ${all_ses_ids}
472   do   do
473   [ -n "${ALX_SESSIONS[${i}]}" ] && \   evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
474   echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \   generate_ica_session_file \
475   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --session "${cfg_sessions_session}" \
476   done   --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
477     --username "${cfg_sessions_username}" \
478   # add other menuitems   --password "${cfg_sessions_password}" \
479   get_other_menuitems >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --domain "${cfg_sessions_domain}" \
480     --server "${cfg_sessions_browseradrs}" \
481   # fluxbox menu footer   --colordepth "${cfg_graphic_depth}"
  cat ${ALX_SKELETONS}/fluxbox/menu.footer \  
  >> ${ALX_UNPRIV_HOME}/.fluxbox/menu  
482    
483   # add a newline (maybe there is no crlf in the footer)   # fluxbox menusession
484   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
485     done
486    
487   # now we generate the desktop icons   # delete all progs
488   cat ${ALX_SKELETONS}/idesk/ideskrc \   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
489   > ${ALX_UNPRIV_HOME}/.ideskrc   [ -d ${progsh_path} ] && rm -rf ${progsh_path}
490     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  
491    
492   local name   # add other menuitems
493   for (( i=0; i < count; i++ ))   for i in ${all_other_ids}
494   do   do
495   name="$(basename ${ALX_SESSIONS[${i}]} .ica)"   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
496    
497   if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]   # now echo config line for fluxbox-menu
498     # make it "configureable" :p
499     if [[ -n ${cfg_other_menuitems_workdir} ]]
500   then   then
501   icon="${ALX_SESSIONS_ICONS}/${name}.png"   workdir="--workdir ${cfg_other_menuitems_workdir}"
502   else   fi
503   icon="${ALX_SESSIONS_ICONS}/default.png"   if [[ -n ${cfg_other_menuitems_icon} ]]
504     then
505     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
506   fi   fi
507    
508   echo "table Icon   # gen prog startup wrapper
509  Caption: ${name}   generate_program_sh \
510  Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica   --name "${cfg_other_menuitems_name}" \
511  Icon: ${icon}   --exec "${cfg_other_menuitems_exec}" \
512  end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk   --param "${cfg_other_menuitems_param}" \
513     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
514     "${workdir}"
515    
516     addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
517   done   done
518    
519   # set correct permissions   # fluxbox menu footer
520     cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
521     # add a newline (maybe there is no crlf in the footer)
522     addconfig
523    
524     # now it's a good time to generate *all* icons :)
525     generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}"
526    
527     # fix permissions
528   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
529   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
530   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
531   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop
532   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc
   
   
  # unset vars  
  unset ALX_SESSIONS  
533  }  }

Legend:
Removed from v.291  
changed lines
  Added in v.2472