Magellan Linux

Annotation of /alx-src/branches/alxconf-060/functions/config_sessions.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3455 - (hide annotations) (download) (as text)
Fri Apr 13 17:03:05 2012 UTC (12 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 15943 byte(s)
-fixed a typo in program sh generation for plugins
1 niro 2001 # $Id$
2 niro 236 # configures ica-sessions on the host via mysql db settings
3    
4 niro 2161 fix_whitespaces()
5     {
6     local var="$@"
7     echo "${var//\ /_}"
8     }
9    
10 niro 2149 # helper function to create citrix session files
11     generate_ica_session_file()
12 niro 236 {
13 niro 246 local i
14 niro 2149 local num
15 niro 246 local server
16     local ses_session
17     local ses_filename
18     local ses_username
19     local ses_domain
20     local ses_password
21     local ses_browseradrs
22 niro 2435 local ses_colors
23 niro 2035 local CONFIG
24 niro 246
25 niro 2149 # very basic getops
26     for i in $*
27 niro 246 do
28 niro 2149 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 niro 2161 --server) shift; ses_browseradrs="$1" ;;
35 niro 2435 --colordepth) shift; ses_colors="$1" ;;
36 niro 2149 esac
37     shift
38     done
39 niro 246
40 niro 2149 # abort if session, filename or server not given
41 niro 2161 [[ -z ${ses_session} ]] && return 1
42     [[ -z ${ses_filename} ]] && return 1
43     [[ -z ${ses_browseradrs} ]] && return 1
44 niro 272
45 niro 2149 # write session files
46     CONFIG="${ALX_ICA_SESSIONS}/${ses_filename}"
47     clearconfig
48 niro 2035
49 niro 2149 addconfig '[WFClient]'
50     addconfig 'Version=2'
51 niro 1654
52 niro 2149 # use ';' as ifs
53     declare -i i=0
54     for server in ${ses_browseradrs//;/ }
55     do
56     (( i++ ))
57     num="${i}"
58     # support newer ica-clients:
59     # the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !!
60     [[ ${i} -eq 1 ]] && num=""
61     addconfig "TcpBrowserAddress${num}=${server}"
62 niro 246 done
63 niro 2149
64     addconfig 'ScreenPercent=0'
65     addconfig '[ApplicationServers]'
66     addconfig "${ses_session}="
67     addconfig "[${ses_session}]"
68     addconfig "Address=${ses_session}"
69     addconfig "InitialProgram=#${ses_session}"
70 niro 2435
71     # convert to ica session file values
72     case ${ses_colors} in
73     24|32) ses_colors="8";;
74     16) ses_colors="4";;
75     8) ses_colors="2";;
76     *) ses_colors="4";; # default to 16bit
77     esac
78     addconfig "DesiredColor=${ses_colors}"
79 niro 2149 addconfig 'TransportDriver=TCP/IP'
80     addconfig 'WinStationDriver=ICA 3.0'
81 niro 2611 addconfig "ClearPassword=${ses_password}"
82 niro 2149 addconfig "Username=${ses_username}"
83     addconfig "Domain=${ses_domain}"
84     addconfig 'UseFullScreen=Yes'
85     addconfig 'NoWindowManager=True'
86 niro 246 }
87    
88 niro 317 # generates a sh file to start programs
89     generate_program_sh()
90     {
91     local dest
92     local name
93     local exec
94 niro 2161 local param
95 niro 317 local workdir
96 niro 2035 local CONFIG
97 niro 317
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 niro 2161 --param|-p) shift; param="$1" ;;
105 niro 317 --dest|-d) shift; dest="$1" ;;
106     --workdir|-w) shift; workdir="$1" ;;
107     esac
108     shift
109     done
110    
111     # abort if name, dest or exec not given
112 niro 2149 [[ -z ${name} ]] && return 1
113     [[ -z ${exec} ]] && return 1
114     [[ -z ${dest} ]] && return 1
115 niro 317
116 niro 2149 CONFIG="${dest}"
117 niro 2035 addconfig "#!/bin/sh"
118     [ -n "${workdir}" ] && addconfig "cd ${workdir}"
119 niro 2161 addconfig "exec ${exec} ${param}"
120 niro 317
121 niro 2149 chmod 0755 "${dest}"
122 niro 317 }
123    
124 niro 304 # helper functions for generate all desktop icons
125     generate_icon()
126     {
127     local name
128     local icon
129     local command
130     local dest
131     local yres
132     local xres
133     local iwidth
134     local iheight
135 niro 317 local deficon
136 niro 2035 local CONFIG
137 niro 2401 local utility
138 niro 304
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 niro 317 --default-icon) shift; deficon="$1" ;;
152 niro 304 esac
153     shift
154     done
155    
156 niro 2149 # some sanity checks:
157 niro 2401
158 niro 304 # abort if name or command not given
159 niro 2035 [[ -z ${name} ]] && return 1
160     [[ -z ${command} ]] && return 1
161 niro 304
162 niro 2454 [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk"
163 niro 2401
164 niro 304 # use some defaults for icon, dest, {x,y}res
165 niro 2495 [[ -z ${xres} ]] && xres=50
166     [[ -z ${yres} ]] && xres=50
167 niro 2035 if [[ -z ${icon} ]] || [ ! -f ${icon} ]
168 niro 304 then
169 niro 317 # if no default icon is given use default.png
170 niro 2035 [[ -z ${deficon} ]] && deficon="default.png"
171 niro 317 icon="${ALX_SESSIONS_ICONS}/${deficon}"
172 niro 304 fi
173    
174 niro 2161 CONFIG="${dest}"
175 niro 2035 clearconfig
176 niro 304
177 niro 2035 addconfig 'table Icon'
178     addconfig " Caption: ${name}"
179     addconfig " Command: ${command}"
180     addconfig " Icon: ${icon}"
181     addconfig " X: ${xres}"
182     addconfig " Y: ${yres}"
183    
184 niro 304 # add these only if not zero
185 niro 2035 if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]]
186 niro 304 then
187 niro 2454 addconfig " Width: ${iwidth}"
188     addconfig " Height: ${iheight}"
189 niro 304 fi
190    
191 niro 2035 addconfig 'end'
192 niro 304 }
193    
194     generate_all_desktop_icons()
195     {
196 niro 2149 local session_list="$1"
197     local other_menuitem_list="$2"
198 niro 2747 local plugin_list="$3"
199 niro 304 local res
200     local xres
201     local yres
202     local x
203     local y
204 niro 2161 local i
205 niro 2149 local name
206 niro 317 local progsh_path
207 niro 2401 local utility
208     local dest
209     local rc
210 niro 304
211 niro 2454 dest="${ALX_UNPRIV_HOME}/.idesktop"
212     rc="${ALX_UNPRIV_HOME}/.ideskrc"
213 niro 2401
214 niro 2149 # progsh path
215 niro 2161 progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
216 niro 2149
217 niro 304 # get the resolution
218 niro 342 res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'")
219 niro 304
220     # split res to x & y
221 niro 2149 xres="${res%x*}"
222 niro 2166 yres="${res#*x}"
223 niro 304
224     # top left edge of the icon is given in config file
225     # remove a little bit to simulate the bottom-right edge
226     xres="$(( ${xres} - 120 ))"
227     yres="$(( ${yres} - 80 ))"
228    
229     # clean desktop icon location
230 niro 2401 [ -d ${dest} ] && rm -rf ${dest}
231     [ -f ${rc} ] && rm -f ${rc}
232     install -d ${dest}
233 niro 304
234     # default settings
235 niro 2495 declare -i x=50
236     declare -i y=50
237 niro 304
238 niro 2149 # ica icons
239 niro 2161 for i in ${session_list}
240 niro 304 do
241     # abort if empty
242 niro 2161 [[ -z ${i} ]] && continue
243 niro 304
244 niro 2161 # get database information
245     evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
246    
247 niro 304 # new line if x > xres
248 niro 2035 if [ ${x} -ge ${xres} ]
249     then
250 niro 2495 x=50
251 niro 304 y=$((${y} + 80))
252     fi
253    
254     # new row if y > yres
255 niro 2035 if [ ${y} -ge ${yres} ]
256     then
257 niro 304 x=$((${x} + 120))
258 niro 2495 y=50
259 niro 304
260     # re-check x
261 niro 2495 [ ${x} -ge ${xres} ] && x=50
262 niro 304 fi
263    
264     generate_icon \
265 niro 2166 --name "${cfg_sessions_session}" \
266     --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \
267     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \
268 niro 2401 --dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \
269 niro 304 --xres "${x}" \
270     --yres "${y}"
271    
272     y=$((${y} + 80))
273     done
274    
275 niro 2161 for i in ${other_menuitem_list}
276 niro 317 do
277     # abort if empty
278 niro 2161 [[ -z ${i} ]] && continue
279 niro 317
280 niro 2161 # get database information
281     evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
282    
283 niro 317 # new line if x > xres
284 niro 2035 if [ ${x} -ge ${xres} ]
285     then
286 niro 2495 x=50
287 niro 317 y=$((${y} + 80))
288     fi
289    
290     # new row if y > yres
291 niro 2035 if [ ${y} -ge ${yres} ]
292     then
293 niro 317 x=$((${x} + 120))
294 niro 2495 y=50
295 niro 317
296     # re-check x
297 niro 2495 [ ${x} -ge ${xres} ] && x=50
298 niro 317 fi
299    
300     generate_icon \
301 niro 2161 --name "${cfg_other_menuitems_name}" \
302 niro 2381 --command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
303 niro 2161 --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \
304 niro 2401 --dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \
305 niro 317 --xres "${x}" \
306     --yres "${y}" \
307     --default-icon "default_item.png"
308    
309     y=$((${y} + 80))
310     done
311 niro 2747
312     for i in ${plugin_list}
313     do
314     # abort if empty
315     [[ -z ${i} ]] && continue
316    
317     evaluate_table cfg_plugins "where serial='${ALX_SERIAL}' and id='${i}'"
318     if [[ -x ${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh ]]
319     then
320     eval $(${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh menuitem)
321 niro 317
322 niro 2747 # abort if name or exec is empty
323     [[ -z ${PLUGIN_MENUITEM_NAME} ]] && continue
324     [[ -z ${PLUGIN_MENUITEM_EXEC} ]] && continue
325    
326     # new line if x > xres
327     if [ ${x} -ge ${xres} ]
328     then
329     x=50
330     y=$((${y} + 80))
331     fi
332    
333     # new row if y > yres
334     if [ ${y} -ge ${yres} ]
335     then
336     x=$((${x} + 120))
337     y=50
338    
339     # re-check x
340     [ ${x} -ge ${xres} ] && x=50
341     fi
342    
343     generate_icon \
344     --name "${PLUGIN_MENUITEM_NAME}" \
345     --command "${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})" \
346     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME}).png" \
347     --dest "${dest}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME}).lnk" \
348     --xres "${x}" \
349     --yres "${y}" \
350     --default-icon "default_item.png"
351    
352     y=$((${y} + 80))
353     fi
354    
355     # unset all variables
356     unset PLUGIN_MENUITEM_NAME
357     unset PLUGIN_MENUITEM_EXEC
358     unset PLUGIN_MENUITEM_PARAM
359     unset PLUGIN_MENUITEM_WORKDIR
360     unset PLUGIN_MENUITEM_ICON
361     done
362    
363 niro 2469 # add shutdown, reboot icons
364     for i in shutdown reboot
365     do
366     # new line if x > xres
367     if [ ${x} -ge ${xres} ]
368     then
369 niro 2495 x=50
370 niro 2469 y=$((${y} + 80))
371     fi
372    
373     # new row if y > yres
374     if [ ${y} -ge ${yres} ]
375     then
376     x=$((${x} + 120))
377 niro 2495 y=50
378 niro 2469
379     # re-check x
380 niro 2495 [ ${x} -ge ${xres} ] && x=50
381 niro 2469 fi
382    
383     case ${i} in
384 niro 2479 shutdown) name="Herunterfahren" ;;
385     reboot) name="Neustarten" ;;
386 niro 2469 esac
387    
388     generate_icon \
389     --name "${name}" \
390     --command "/usr/lib/alxconfig-ng/bin/user_${i}.sh" \
391     --icon "${ALX_SESSIONS_ICONS}/${i}.png" \
392     --dest "${dest}/${i}.lnk" \
393     --xres "${x}" \
394 niro 2565 --yres "${y}" \
395     --icon-width "40" \
396     --icon-height "40"
397 niro 2469
398     y=$((${y} + 80))
399     done
400    
401 niro 304 # last but not least gen a icon with some sys informations
402     local sysinfo
403     local hostname
404     local osversion
405    
406     osversion="$(< /etc/mageversion)"
407 niro 342 hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
408 niro 304 sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
409    
410     # now get the right position:
411     # restore orig values of xres
412     xres="$(( ${xres} + 120 ))"
413     # default y pos (full yres -22 = cur yres + 58 !)
414     yres="$(( ${yres} + 58 ))"
415     # middle of the screen
416     # (no txt - length required, xtdesk manage that itself)
417     xres="$(( ${xres} / 2))"
418    
419     generate_icon \
420     --name "${sysinfo}" \
421     --command "exit 0" \
422     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
423 niro 2401 --dest "${dest}/sysinfo.lnk" \
424 niro 304 --xres "${xres}" \
425     --yres "${yres}" \
426     --icon-width "1" \
427     --icon-height "1"
428     }
429    
430 niro 236 config_sessions()
431     {
432 niro 272 local i
433 niro 2149 local all_ses_ids
434     local all_other_ids
435 niro 2035 local CONFIG
436 niro 2149 local screensaver_passwd_cmd
437 niro 2469 local fbinit
438     local fbkeys
439 niro 236
440 niro 2149 # get all session ids from database
441     all_ses_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'")
442 niro 2747 # get all other_menuitem ids from database
443 niro 2149 all_other_ids=$(mysqldo "select id from cfg_other_menuitems where serial='${ALX_SERIAL}'")
444 niro 2747 # get all plugin ids from database
445     all_plugin_ids=$(mysqldo "select id from cfg_plugins where serial='${ALX_SERIAL}'")
446 niro 2149
447     # get screensaver settings
448     evaluate_table cfg_screensaver
449     # get autostart settings
450     evaluate_table cfg_autostart
451 niro 2435 # get current color depth
452     evaluate_table cfg_graphic
453 niro 2149
454 niro 236 # now setup fluxbox for user station
455    
456     # create a fresh fluxbox directory
457     [ -d ${ALX_UNPRIV_HOME}/.fluxbox ] && rm -rf ${ALX_UNPRIV_HOME}/.fluxbox
458     install -d ${ALX_UNPRIV_HOME}/.fluxbox
459    
460     # now generate fluxbox config files
461    
462     # fluxbox main config
463 niro 2469 if [ -f ${ALX_SKELETONS}/fluxbox/init ]
464     then
465     fbinit="${ALX_SKELETONS}/fluxbox/init"
466     else
467     fbinit="/usr/share/fluxbox/init"
468     fi
469     cat ${fbinit} > ${ALX_UNPRIV_HOME}/.fluxbox/init
470 niro 236
471     # fluxbox autostart
472 niro 2411 CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps"
473 niro 2454 # do not show decorations on messages generated with xmessage
474     if [ -x /usr/bin/xmessage ]
475     then
476     addconfig '[app] (xmessage)'
477     addconfig ' [Deco] {NONE}'
478     addconfig '[end]'
479     fi
480 niro 2411 # add icon utility
481 niro 2454 [ -x /usr/bin/idesk ] && addconfig '[startup] {nohup idesk > /dev/null &}'
482 niro 2411 # add numlock utility
483 niro 2454 [ -x /usr/bin/numlockx ] && addconfig '[startup] {nohup numlockx on &}'
484 niro 236
485 niro 338 # add screensaver
486 niro 2149 if [[ ! -z ${cfg_screensaver_screensaver} ]] && [[ ! -z ${cfg_screensaver_screensaver_timeout} ]]
487 niro 338 then
488 niro 2149 if [[ -z ${cfg_screensaver_password} ]] || [[ ${cfg_screensaver_password} = NULL ]]
489 niro 338 then
490 niro 2149 screensaver_passwd_cmd="-nolock"
491 niro 338 else
492 niro 2149 screensaver_passwd_cmd="-cpasswd $(cryptpw -m des ${cfg_screensaver_password})"
493 niro 338 fi
494    
495 niro 2149 addconfig "[startup] {nohup xautolock -time ${cfg_screensaver_timeout} -locker 'xlock -mode ${cfg_screensaver_screensaver} ${screensaver_passwd_cmd}' > /dev/null &}"
496 niro 338 fi
497    
498 niro 246 # add autostart session
499 niro 2149 if [[ ! -z ${cfg_autostart_session} ]]
500 niro 246 then
501 niro 2371 # sleep one second to wait until busybox is fully initialized and the screen is really centered
502     addconfig "[startup] {sleep 1 && nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}"
503 niro 246 fi
504    
505 niro 236 # fluxbox hotkeys
506 niro 2469 if [ -f ${ALX_SKELETONS}/fluxbox/keys ]
507     then
508     fbkeys="${ALX_SKELETONS}/fluxbox/keys"
509     else
510     fbkeys="/usr/share/fluxbox/keys"
511     fi
512     cat ${fbkeys} > ${ALX_UNPRIV_HOME}/.fluxbox/keys
513 niro 236
514 niro 2035 # generate a fluxbox menu
515 niro 2161 CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu"
516 niro 2035 clearconfig
517    
518 niro 236 # fluxbox menu header
519 niro 2035 cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
520 niro 291 # now fix it with proper messages :P
521     local ver="$(< /etc/mageversion)"
522 niro 2035 sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu
523 niro 239 # add a newline (maybe there is no crlf in the header)
524 niro 2035 addconfig
525 niro 239
526 niro 2149 # first generate session files
527     for i in ${all_ses_ids}
528 niro 236 do
529 niro 2149 evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
530     generate_ica_session_file \
531     --session "${cfg_sessions_session}" \
532 niro 2161 --filename "$(fix_whitespaces ${cfg_sessions_filename})" \
533 niro 2149 --username "${cfg_sessions_username}" \
534     --password "${cfg_sessions_password}" \
535     --domain "${cfg_sessions_domain}" \
536 niro 2435 --server "${cfg_sessions_browseradrs}" \
537     --colordepth "${cfg_graphic_depth}"
538 niro 2149
539     # fluxbox menusession
540 niro 2161 addconfig "[exec] (${cfg_sessions_session}) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}"
541 niro 2149 done
542    
543     # delete all progs
544     progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
545     [ -d ${progsh_path} ] && rm -rf ${progsh_path}
546     install -d ${progsh_path}
547    
548     # add other menuitems
549     for i in ${all_other_ids}
550     do
551     evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
552    
553     # now echo config line for fluxbox-menu
554     # make it "configureable" :p
555     if [[ -n ${cfg_other_menuitems_workdir} ]]
556 niro 2035 then
557 niro 2149 workdir="--workdir ${cfg_other_menuitems_workdir}"
558 niro 2035 fi
559 niro 2149 if [[ -n ${cfg_other_menuitems_icon} ]]
560     then
561     cfg_other_menuitems_icon="<${cfg_other_menuitems_icon}>"
562     fi
563    
564     # gen prog startup wrapper
565     generate_program_sh \
566     --name "${cfg_other_menuitems_name}" \
567     --exec "${cfg_other_menuitems_exec}" \
568 niro 2161 --param "${cfg_other_menuitems_param}" \
569     --dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
570     "${workdir}"
571 niro 2149
572 niro 2161 addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}"
573 niro 236 done
574    
575 niro 2747 # add plugins
576     for i in ${all_plugin_ids}
577     do
578     evaluate_table cfg_plugins "where serial='${ALX_SERIAL}' and id='${i}'"
579     if [[ -x ${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh ]]
580     then
581     eval $(${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh menuitem)
582    
583     # abort if name or exec is empty
584     [[ -z ${PLUGIN_MENUITEM_NAME} ]] && continue
585     [[ -z ${PLUGIN_MENUITEM_EXEC} ]] && continue
586    
587     # now echo config line for fluxbox-menu
588     # make it "configureable" :p
589     if [[ -n ${PLUGIN_MENUITEM_WORKDIR} ]]
590     then
591     workdir="--workdir ${PLUGIN_MENUITEM_WORKDIR}"
592     fi
593     if [[ -n ${PLUGIN_MENUITEM_ICON} ]]
594     then
595     PLUGIN_MENUITEM_ICON="<${PLUGIN_MENUITEM_ICON}>"
596     fi
597    
598     # gen prog startup wrapper
599     generate_program_sh \
600     --name "${PLUGIN_MENUITEM_NAME}" \
601     --exec "${PLUGIN_MENUITEM_EXEC}" \
602 niro 3455 --param "${PLUGIN_MENUITEM_PARAM}" \
603 niro 2747 --dest "${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})" \
604     "${workdir}"
605    
606     addconfig "[exec] (${PLUGIN_MENUITEM_NAME}) {${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})} ${PLUGIN_MENUITEM_ICON}"
607     fi
608    
609     # unset all variables
610     unset PLUGIN_MENUITEM_NAME
611     unset PLUGIN_MENUITEM_EXEC
612     unset PLUGIN_MENUITEM_PARAM
613     unset PLUGIN_MENUITEM_WORKDIR
614     unset PLUGIN_MENUITEM_ICON
615     done
616    
617 niro 236 # fluxbox menu footer
618 niro 2035 cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
619 niro 239 # add a newline (maybe there is no crlf in the footer)
620 niro 2035 addconfig
621 niro 236
622 niro 304 # now it's a good time to generate *all* icons :)
623 niro 2747 generate_all_desktop_icons "${all_ses_ids}" "${all_other_ids}" "${all_plugin_ids}"
624 niro 236
625 niro 2149 # fix permissions
626 niro 236 chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
627     chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
628     chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
629 niro 2454 chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop
630 niro 236 }