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

Legend:
Removed from v.271  
changed lines
  Added in v.2408