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 2469 by niro, Mon Jun 27 15:07:00 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     # 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=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   # all arrays:   CONFIG="${dest}"
175   # ->  session1 session2 ... sessionN   clearconfig
176    
177   # get settings from database   addconfig 'table Icon'
178   count=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   addconfig "  Caption: ${name}"
179   "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'")   addconfig "  Command: ${command}"
180     addconfig "  Icon: ${icon}"
181     addconfig "  X: ${xres}"
182     addconfig "  Y: ${yres}"
183    
184   # get all instances and put them into an array   # add these only if not zero
185   if [ -n "${count}" ]   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}'"
  local i  
245    
246   # DEBUG   # new line if x > xres
247  # declare -i i=0   if [ ${x} -ge ${xres} ]
248  # echo count=${count}   then
249  # echo "Number of new sessions: ${count}"   x=30
250  # for ((i=0; i < count; i++))   y=$((${y} + 80))
251  # do   fi
252  # echo "${i} - ${ALX_SESSIONS[${i}]}"  
253  # done   # 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     # abort if empty
315     [[ -z ${i} ]] && continue
316    
317     # new line if x > xres
318     if [ ${x} -ge ${xres} ]
319     then
320     x=30
321     y=$((${y} + 80))
322     fi
323    
324     # new row if y > yres
325     if [ ${y} -ge ${yres} ]
326     then
327     x=$((${x} + 120))
328     y=30
329    
330     # re-check x
331     [ ${x} -ge ${xres} ] && x=30
332     fi
333    
334     case ${i} in
335     shutdown) name="Herunterfahren"
336     reboot) name="Neustarten"
337     esac
338    
339     generate_icon \
340     --name "${name}" \
341     --command "/usr/lib/alxconfig-ng/bin/user_${i}.sh" \
342     --icon "${ALX_SESSIONS_ICONS}/${i}.png" \
343     --dest "${dest}/${i}.lnk" \
344     --xres "${x}" \
345     --yres "${y}"
346    
347     y=$((${y} + 80))
348     done
349    
350     # last but not least gen a icon with some sys informations
351     local sysinfo
352     local hostname
353     local osversion
354    
355     osversion="$(< /etc/mageversion)"
356     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
357     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
358    
359     # now get the right position:
360     # restore orig values of xres
361     xres="$(( ${xres} + 120 ))"
362     # default y pos (full yres -22 = cur yres + 58 !)
363     yres="$(( ${yres} + 58 ))"
364     # middle of the screen
365     # (no txt - length required, xtdesk manage that itself)
366     xres="$(( ${xres} / 2))"
367    
368     generate_icon \
369     --name "${sysinfo}" \
370     --command "exit 0" \
371     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
372     --dest "${dest}/sysinfo.lnk" \
373     --xres "${xres}" \
374     --yres "${yres}" \
375     --icon-width "1" \
376     --icon-height "1"
377    }
378    
379    config_sessions()
380    {
381     local i
382     local all_ses_ids
383     local all_other_ids
384     local CONFIG
385     local screensaver_passwd_cmd
386     local fbinit
387     local fbkeys
388    
389     # get all session ids from database
390     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
391     # get all other_menutiem ids from database
392     all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
393    
394     # get screensaver settings
395     evaluate_table cfg_screensaver
396     # get autostart settings
397     evaluate_table cfg_autostart
398     # get current color depth
399     evaluate_table cfg_graphic
400    
401   # now setup fluxbox for user station   # now setup fluxbox for user station
402    
# Line 198  config_sessions() Line 407  config_sessions()
407   # now generate fluxbox config files   # now generate fluxbox config files
408    
409   # fluxbox main config   # fluxbox main config
410   cat ${ALX_SKELETONS}/fluxbox/init \   if [ -f ${ALX_SKELETONS}/fluxbox/init ]
411   > ${ALX_UNPRIV_HOME}/.fluxbox/init   then
412     fbinit="${ALX_SKELETONS}/fluxbox/init"
413     else
414     fbinit="/usr/share/fluxbox/init"
415     fi
416     cat ${fbinit} > ${ALX_UNPRIV_HOME}/.fluxbox/init
417    
418   # fluxbox autostart   # fluxbox autostart
419   cat ${ALX_SKELETONS}/fluxbox/apps \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
420   > ${ALX_UNPRIV_HOME}/.fluxbox/apps   # do not show decorations on messages generated with xmessage
421     if [ -x /usr/bin/xmessage ]
422     then
423     addconfig '[app] (xmessage)'
424     addconfig ' [Deco] {NONE}'
425     addconfig '[end]'
426     fi
427     # add icon utility
428     [ -x /usr/bin/idesk ] && addconfig '[startup] {nohup idesk > /dev/null &}'
429     # add numlock utility
430     [ -x /usr/bin/numlockx ] && addconfig '[startup] {nohup numlockx on &}'
431    
432     # add screensaver
433     if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
434     then
435     if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
436     then
437     screensaver_passwd_cmd="-nolock"
438     else
439     screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
440     fi
441    
442     addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
443     fi
444    
445   # add autostart session   # add autostart session
446   if [[ ${ALX_AUTOSTART} != "" ]]   if [[ ! -z ${cfg_autostart_session} ]]
447   then   then
448   echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \   # sleep one second to wait until busybox is fully initialized and the screen is really centered
449   >> ${ALX_UNPRIV_HOME}/.fluxbox/apps   addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
450   fi   fi
451    
452   # fluxbox hotkeys   # fluxbox hotkeys
453   cat ${ALX_SKELETONS}/fluxbox/apps \   if [ -f ${ALX_SKELETONS}/fluxbox/keys ]
454   > ${ALX_UNPRIV_HOME}/.fluxbox/keys   then
455     fbkeys="${ALX_SKELETONS}/fluxbox/keys"
456     else
457     fbkeys="/usr/share/fluxbox/keys"
458     fi
459     cat ${fbkeys} > ${ALX_UNPRIV_HOME}/.fluxbox/keys
460    
461   # fluxbox menu header   # generate a fluxbox menu
462   cat ${ALX_SKELETONS}/fluxbox/menu.header \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
463   > ${ALX_UNPRIV_HOME}/.fluxbox/menu   clearconfig
464    
465     # fluxbox menu header
466     cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
467   # now fix it with proper messages :P   # now fix it with proper messages :P
468   local ver="$(< /etc/mageversion)"   local ver="$(< /etc/mageversion)"
469   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  
   
470   # add a newline (maybe there is no crlf in the header)   # add a newline (maybe there is no crlf in the header)
471   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig
472    
473   # fluxbox menu sessions   # first generate session files
474   for (( i=0; i < count; i++ ))   for i in ${all_ses_ids}
475   do   do
476   [ -n "${ALX_SESSIONS[${i}]}" ] && \   evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
477   echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \   generate_ica_session_file \
478   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --session "${cfg_sessions_session}" \
479   done   --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
480     --username "${cfg_sessions_username}" \
481   # add other menuitems   --password "${cfg_sessions_password}" \
482   get_other_menuitems >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --domain "${cfg_sessions_domain}" \
483     --server "${cfg_sessions_browseradrs}" \
484   # fluxbox menu footer   --colordepth "${cfg_graphic_depth}"
  cat ${ALX_SKELETONS}/fluxbox/menu.footer \  
  >> ${ALX_UNPRIV_HOME}/.fluxbox/menu  
485    
486   # add a newline (maybe there is no crlf in the footer)   # fluxbox menusession
487   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
488     done
489    
490   # now we generate the desktop icons   # delete all progs
491   cat ${ALX_SKELETONS}/idesk/ideskrc \   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
492   > ${ALX_UNPRIV_HOME}/.ideskrc   [ -d ${progsh_path} ] && rm -rf ${progsh_path}
493     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  
494    
495   local name   # add other menuitems
496   for (( i=0; i < count; i++ ))   for i in ${all_other_ids}
497   do   do
498   name="$(basename ${ALX_SESSIONS[${i}]} .ica)"   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
499    
500   if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]   # now echo config line for fluxbox-menu
501     # make it "configureable" :p
502     if [[ -n ${cfg_other_menuitems_workdir} ]]
503   then   then
504   icon="${ALX_SESSIONS_ICONS}/${name}.png"   workdir="--workdir ${cfg_other_menuitems_workdir}"
505   else   fi
506   icon="${ALX_SESSIONS_ICONS}/default.png"   if [[ -n ${cfg_other_menuitems_icon} ]]
507     then
508     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
509   fi   fi
510    
511   echo "table Icon   # gen prog startup wrapper
512  Caption: ${name}   generate_program_sh \
513  Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica   --name "${cfg_other_menuitems_name}" \
514  Icon: ${icon}   --exec "${cfg_other_menuitems_exec}" \
515  end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk   --param "${cfg_other_menuitems_param}" \
516     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
517     "${workdir}"
518    
519     addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
520   done   done
521    
522   # set correct permissions   # fluxbox menu footer
523     cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
524     # add a newline (maybe there is no crlf in the footer)
525     addconfig
526    
527     # now it's a good time to generate *all* icons :)
528     generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}"
529    
530     # fix permissions
531   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
532   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
533   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
534   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop
535   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc
   
   
  # unset vars  
  unset ALX_SESSIONS  
536  }  }

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