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 246 by niro, Wed Apr 13 16:09:53 2005 UTC alx-src/branches/alxconf-060/functions/config_sessions.sh revision 2371 by niro, Tue Jun 14 10:42:58 2011 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.5 2005-04-13 16:09:53 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=3' >> ${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   local count=${#ALX_SESSIONS[*]}   # 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    # 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    
127     # very basic getops
128     for i in $*
129     do
130     case $1 in
131     --name|-n) shift; name="$1" ;;
132     --command|-c) shift; command="$1" ;;
133     --icon|-i) shift; icon="$1" ;;
134     --dest|-d) shift; dest="$1" ;;
135     --xres|-x) shift; xres="$1" ;;
136     --yres|-y) shift; yres="$1" ;;
137     --icon-width|-w) shift; iwidth="$1" ;;
138     --icon-height|-h) shift; iheight="$1" ;;
139     --default-icon) shift; deficon="$1" ;;
140             esac
141     shift
142     done
143    
144     # some sanity checks:
145    
146     # abort if name or command not given
147     [[ -z ${name} ]] && return 1
148     [[ -z ${command} ]] && return 1
149    
150     # use some defaults for icon, dest, {x,y}res
151     [[ -z ${xres} ]] && xres=30
152     [[ -z ${yres} ]] && xres=30
153     [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk"
154     if [[ -z ${icon} ]] || [ ! -f ${icon} ]
155     then
156     # if no default icon is given use default.png
157     [[ -z ${deficon} ]] && deficon="default.png"
158     icon="${ALX_SESSIONS_ICONS}/${deficon}"
159     fi
160    
161     CONFIG="${dest}"
162     clearconfig
163    
164     addconfig 'table Icon'
165     addconfig '  Type: Program'
166     addconfig "  Caption: ${name}"
167     addconfig "  Command: ${command}"
168     addconfig "  Icon: ${icon}"
169     addconfig "  X: ${xres}"
170     addconfig "  Y: ${yres}"
171    
172     # add these only if not zero
173     if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]]
174     then
175     addconfig "  IconWidth: ${iwidth}"
176     addconfig "  IconHeight: ${iheight}"
177     fi
178    
179     addconfig 'end'
180    }
181    
182    generate_all_desktop_icons()
183    {
184     local session_list="$1"
185     local other_menuitem_list="$2"
186     local res
187     local xres
188     local yres
189     local x
190     local y
191     local i
192     local name
193     local progsh_path
194    
195     # progsh path
196     progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
197    
198     # get the resolution
199     res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'")
200    
201     # split res to x & y
202     xres="${res%x*}"
203     yres="${res#*x}"
204    
205     # top left edge of the icon is given in config file
206     # remove a little bit to simulate the bottom-right edge
207     xres="$(( ${xres} - 120 ))"
208     yres="$(( ${yres} - 80 ))"
209    
210     # basic config
211     cat ${ALX_SKELETONS}/xtdesktop/xtdeskrc > ${ALX_UNPRIV_HOME}/.xtdeskrc
212    
213     # clean desktop icon location
214     [ -d ${ALX_UNPRIV_HOME}/.xtdesktop ] && rm -rf ${ALX_UNPRIV_HOME}/.xtdesktop
215     install -d ${ALX_UNPRIV_HOME}/.xtdesktop
216    
217     # default settings
218     declare -i x=30
219     declare -i y=30
220    
221     # ica icons
222     for i in ${session_list}
223     do
224     # abort if empty
225     [[ -z ${i} ]] && continue
226    
227     # get database information
228     evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
229    
230     # new line if x > xres
231     if [ ${x} -ge ${xres} ]
232     then
233     x=30
234     y=$((${y} + 80))
235     fi
236    
237     # new row if y > yres
238     if [ ${y} -ge ${yres} ]
239     then
240     x=$((${x} + 120))
241     y=30
242    
243     # re-check x
244     [ ${x} -ge ${xres} ] && x=30
245     fi
246    
247     generate_icon \
248     --name "${cfg_sessions_session}" \
249     --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \
250     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \
251     --dest "${ALX_UNPRIV_HOME}/.xtdesktop/$(fix_whitespaces ${cfg_sessions_session}).lnk" \
252     --xres "${x}" \
253     --yres "${y}"
254    
255     y=$((${y} + 80))
256     done
257    
258     for i in ${other_menuitem_list}
259     do
260     # abort if empty
261     [[ -z ${i} ]] && continue
262    
263   # DEBUG   # get database information
264  # declare -i i=0   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
265  # echo count=${count}  
266  # echo "Number of new sessions: ${count}"   # new line if x > xres
267  # for ((i=0; i < count; i++))   if [ ${x} -ge ${xres} ]
268  # do   then
269  # echo "${i} - ${ALX_SESSIONS[${i}]}"   x=30
270  # done   y=$((${y} + 80))
271     fi
272    
273     # new row if y > yres
274     if [ ${y} -ge ${yres} ]
275     then
276     x=$((${x} + 120))
277     y=30
278    
279     # re-check x
280     [ ${x} -ge ${xres} ] && x=30
281     fi
282    
283     generate_icon \
284     --name "${cfg_other_menuitems_name}" \
285     --command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_exec})" \
286     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \
287     --dest "${ALX_UNPRIV_HOME}/.xtdesktop/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \
288     --xres "${x}" \
289     --yres "${y}" \
290     --default-icon "default_item.png"
291    
292     y=$((${y} + 80))
293     done
294    
295     # last but not least gen a icon with some sys informations
296     local sysinfo
297     local hostname
298     local osversion
299    
300     osversion="$(< /etc/mageversion)"
301     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
302     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
303    
304     # now get the right position:
305     # restore orig values of xres
306     xres="$(( ${xres} + 120 ))"
307     # default y pos (full yres -22 = cur yres + 58 !)
308     yres="$(( ${yres} + 58 ))"
309     # middle of the screen
310     # (no txt - length required, xtdesk manage that itself)
311     xres="$(( ${xres} / 2))"
312    
313     generate_icon \
314     --name "${sysinfo}" \
315     --command "exit 0" \
316     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
317     --dest "${ALX_UNPRIV_HOME}/.xtdesktop/sysinfo.lnk" \
318     --xres "${xres}" \
319     --yres "${yres}" \
320     --icon-width "1" \
321     --icon-height "1"
322    }
323    
324    config_sessions()
325    {
326     local i
327     local all_ses_ids
328     local all_other_ids
329     local CONFIG
330     local screensaver_passwd_cmd
331    
332     # get all session ids from database
333     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
334     # get all other_menutiem ids from database
335     all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
336    
337     # get screensaver settings
338     evaluate_table cfg_screensaver
339     # get autostart settings
340     evaluate_table cfg_autostart
341    
342   # now setup fluxbox for user station   # now setup fluxbox for user station
343    
# Line 145  config_sessions() Line 348  config_sessions()
348   # now generate fluxbox config files   # now generate fluxbox config files
349    
350   # fluxbox main config   # fluxbox main config
351   cat ${ALX_SKELETONS}/fluxbox/init \   cat ${ALX_SKELETONS}/fluxbox/init > ${ALX_UNPRIV_HOME}/.fluxbox/init
  > ${ALX_UNPRIV_HOME}/.fluxbox/init  
352    
353   # fluxbox autostart   # fluxbox autostart
354   cat ${ALX_SKELETONS}/fluxbox/apps \   cat ${ALX_SKELETONS}/fluxbox/apps > ${ALX_UNPRIV_HOME}/.fluxbox/apps
355   > ${ALX_UNPRIV_HOME}/.fluxbox/apps  
356     CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
357     # add screensaver
358     if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
359     then
360     if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
361     then
362     screensaver_passwd_cmd="-nolock"
363     else
364     screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
365     fi
366    
367     addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
368     fi
369    
370   # add autostart session   # add autostart session
371   if [[ ${ALX_AUTOSTART} != "" ]]   if [[ ! -z ${cfg_autostart_session} ]]
372   then   then
373   echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \   # sleep one second to wait until busybox is fully initialized and the screen is really centered
374   >> ${ALX_UNPRIV_HOME}/.fluxbox/apps   addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
375   fi   fi
376    
377   # fluxbox hotkeys   # fluxbox hotkeys
378   cat ${ALX_SKELETONS}/fluxbox/apps \   cat ${ALX_SKELETONS}/fluxbox/keys > ${ALX_UNPRIV_HOME}/.fluxbox/keys
  > ${ALX_UNPRIV_HOME}/.fluxbox/keys  
379    
380   # fluxbox menu header   # generate a fluxbox menu
381   cat ${ALX_SKELETONS}/fluxbox/menu.header \   CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
382   > ${ALX_UNPRIV_HOME}/.fluxbox/menu   clearconfig
383    
384     # fluxbox menu header
385     cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
386     # now fix it with proper messages :P
387     local ver="$(< /etc/mageversion)"
388     sed -i "s:@CHANGEME@:alx-${ver}  #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu
389   # add a newline (maybe there is no crlf in the header)   # add a newline (maybe there is no crlf in the header)
390   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig
391    
392   # fluxbox menu sessions   # first generate session files
393   for (( i=0; i < count; i++ ))   for i in ${all_ses_ids}
394   do   do
395   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}'"
396   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   generate_ica_session_file \
397   done   --session "${cfg_sessions_session}" \
398     --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
399   # fluxbox menu footer   --username "${cfg_sessions_username}" \
400   cat ${ALX_SKELETONS}/fluxbox/menu.footer \   --password "${cfg_sessions_password}" \
401   >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   --domain "${cfg_sessions_domain}" \
402     --server "${cfg_sessions_browseradrs}"
403    
404   # add a newline (maybe there is no crlf in the footer)   # fluxbox menusession
405   echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu   addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
406     done
407    
408   # now we generate the desktop icons   # delete all progs
409   cat ${ALX_SKELETONS}/idesk/ideskrc \   progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
410   > ${ALX_UNPRIV_HOME}/.ideskrc   [ -d ${progsh_path} ] && rm -rf ${progsh_path}
411     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  
412    
413   local name   # add other menuitems
414   for (( i=0; i < count; i++ ))   for i in ${all_other_ids}
415   do   do
416   name="$(basename ${ALX_SESSIONS[${i}]} .ica)"   evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
417    
418   if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]   # now echo config line for fluxbox-menu
419     # make it "configureable" :p
420     if [[ -n ${cfg_other_menuitems_workdir} ]]
421   then   then
422   icon="${ALX_SESSIONS_ICONS}/${name}.png"   workdir="--workdir ${cfg_other_menuitems_workdir}"
  else  
  icon="${ALX_SESSIONS_ICONS}/default.png"  
423   fi   fi
424     if [[ -n ${cfg_other_menuitems_icon} ]]
425     then
426     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
427     fi
428    
429     # gen prog startup wrapper
430     generate_program_sh \
431     --name "${cfg_other_menuitems_name}" \
432     --exec "${cfg_other_menuitems_exec}" \
433     --param "${cfg_other_menuitems_param}" \
434     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
435     "${workdir}"
436    
437   echo "table Icon   addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
 Caption: ${name}  
 Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica  
 Icon: ${icon}  
 end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk  
438   done   done
439    
440   # set correct permissions   # fluxbox menu footer
441     cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
442     # add a newline (maybe there is no crlf in the footer)
443     addconfig
444    
445     # now it's a good time to generate *all* icons :)
446     generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}"
447    
448     # fix permissions
449   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
450   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox   chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
451   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox   chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
452   chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop   chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop
453   chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc   chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc
   
   
  # unset vars  
  unset ALX_SESSIONS  
454  }  }

Legend:
Removed from v.246  
changed lines
  Added in v.2371