Magellan Linux

Annotation of /mcore-src/trunk/mcore-tools/src/modules/idesk/idesk.client.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2041 - (hide annotations) (download)
Wed Apr 17 14:18:05 2013 UTC (11 years ago) by niro
Original Path: mcore-src/trunk/mcore-tools/daemon/client/include/idesk.client.class
File size: 6758 byte(s)
-initial idesk support class - WIP
1 niro 2041 # $Id$
2    
3     provide idesk basic-icons
4    
5     helper_generate_icon()
6     {
7     local name
8     local icon
9     local command
10     local dest
11     local yres
12     local xres
13     local iwidth
14     local iheight
15     local deficon
16     local CONFIG
17     local utility
18    
19     # very basic getops
20     for i in $*
21     do
22     case $1 in
23     --name|-n) shift; name="$1" ;;
24     --command|-c) shift; command="$1" ;;
25     --icon|-i) shift; icon="$1" ;;
26     --dest|-d) shift; dest="$1" ;;
27     --xres|-x) shift; xres="$1" ;;
28     --yres|-y) shift; yres="$1" ;;
29     --icon-width|-w) shift; iwidth="$1" ;;
30     --icon-height|-h) shift; iheight="$1" ;;
31     --default-icon) shift; deficon="$1" ;;
32     esac
33     shift
34     done
35    
36     # some sanity checks:
37    
38     # abort if name or command not given
39     [[ -z ${name} ]] && return 1
40     [[ -z ${command} ]] && return 1
41    
42     [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk"
43    
44     # use some defaults for icon, dest, {x,y}res
45     [[ -z ${xres} ]] && xres=50
46     [[ -z ${yres} ]] && xres=50
47     if [[ -z ${icon} ]] || [ ! -f ${icon} ]
48     then
49     # if no default icon is given use default.png
50     [[ -z ${deficon} ]] && deficon="default.png"
51     icon="${ALX_SESSIONS_ICONS}/${deficon}"
52     fi
53    
54     CONFIG="${dest}"
55     clearconfig
56    
57     addconfig 'table Icon'
58     addconfig " Caption: ${name}"
59     addconfig " Command: ${command}"
60     addconfig " Icon: ${icon}"
61     addconfig " X: ${xres}"
62     addconfig " Y: ${yres}"
63    
64     # add these only if not zero
65     if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]]
66     then
67     addconfig " Width: ${iwidth}"
68     addconfig " Height: ${iheight}"
69     fi
70    
71     addconfig 'end'
72     }
73    
74     helper_generate_all_desktop_icons()
75     {
76     local session_list="$1"
77     local other_menuitem_list="$2"
78     local plugin_list="$3"
79     local res
80     local xres
81     local yres
82     local x
83     local y
84     local i
85     local name
86     local progsh_path
87     local utility
88     local dest
89     local rc
90    
91     dest="${ALX_UNPRIV_HOME}/.idesktop"
92     rc="${ALX_UNPRIV_HOME}/.ideskrc"
93    
94     # progsh path
95     progsh_path="${ALX_UNPRIV_HOME}/.alxprogs"
96    
97     # get the resolution
98     res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'")
99    
100     # split res to x & y
101     xres="${res%x*}"
102     yres="${res#*x}"
103    
104     # top left edge of the icon is given in config file
105     # remove a little bit to simulate the bottom-right edge
106     xres="$(( ${xres} - 120 ))"
107     yres="$(( ${yres} - 80 ))"
108    
109     # clean desktop icon location
110     [ -d ${dest} ] && rm -rf ${dest}
111     [ -f ${rc} ] && rm -f ${rc}
112     install -d ${dest}
113    
114     # default settings
115     declare -i x=50
116     declare -i y=50
117    
118     # ica icons
119     for i in ${session_list}
120     do
121     # abort if empty
122     [[ -z ${i} ]] && continue
123    
124     # get database information
125     evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'"
126    
127     # new line if x > xres
128     if [ ${x} -ge ${xres} ]
129     then
130     x=50
131     y=$((${y} + 80))
132     fi
133    
134     # new row if y > yres
135     if [ ${y} -ge ${yres} ]
136     then
137     x=$((${x} + 120))
138     y=50
139    
140     # re-check x
141     [ ${x} -ge ${xres} ] && x=50
142     fi
143    
144     generate_icon \
145     --name "${cfg_sessions_session}" \
146     --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \
147     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \
148     --dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \
149     --xres "${x}" \
150     --yres "${y}"
151    
152     y=$((${y} + 80))
153     done
154    
155     for i in ${other_menuitem_list}
156     do
157     # abort if empty
158     [[ -z ${i} ]] && continue
159    
160     # get database information
161     evaluate_table cfg_other_menuitems "where serial='${ALX_SERIAL}' and id='${i}'"
162    
163     # new line if x > xres
164     if [ ${x} -ge ${xres} ]
165     then
166     x=50
167     y=$((${y} + 80))
168     fi
169    
170     # new row if y > yres
171     if [ ${y} -ge ${yres} ]
172     then
173     x=$((${x} + 120))
174     y=50
175    
176     # re-check x
177     [ ${x} -ge ${xres} ] && x=50
178     fi
179    
180     generate_icon \
181     --name "${cfg_other_menuitems_name}" \
182     --command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \
183     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \
184     --dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \
185     --xres "${x}" \
186     --yres "${y}" \
187     --default-icon "default_item.png"
188    
189     y=$((${y} + 80))
190     done
191    
192     for i in ${plugin_list}
193     do
194     # abort if empty
195     [[ -z ${i} ]] && continue
196    
197     evaluate_table cfg_plugins "where serial='${ALX_SERIAL}' and id='${i}'"
198     if [[ -x ${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh ]]
199     then
200     eval $(${ALX_PLUGINS}/${cfg_plugins_plugin}/plugin.sh menuitem)
201    
202     # abort if name or exec is empty
203     [[ -z ${PLUGIN_MENUITEM_NAME} ]] && continue
204     [[ -z ${PLUGIN_MENUITEM_EXEC} ]] && continue
205    
206     # new line if x > xres
207     if [ ${x} -ge ${xres} ]
208     then
209     x=50
210     y=$((${y} + 80))
211     fi
212    
213     # new row if y > yres
214     if [ ${y} -ge ${yres} ]
215     then
216     x=$((${x} + 120))
217     y=50
218    
219     # re-check x
220     [ ${x} -ge ${xres} ] && x=50
221     fi
222    
223     generate_icon \
224     --name "${PLUGIN_MENUITEM_NAME}" \
225     --command "${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})" \
226     --icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME}).png" \
227     --dest "${dest}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME}).lnk" \
228     --xres "${x}" \
229     --yres "${y}" \
230     --default-icon "default_item.png"
231    
232     y=$((${y} + 80))
233     fi
234    
235     # unset all variables
236     unset PLUGIN_MENUITEM_NAME
237     unset PLUGIN_MENUITEM_EXEC
238     unset PLUGIN_MENUITEM_PARAM
239     unset PLUGIN_MENUITEM_WORKDIR
240     unset PLUGIN_MENUITEM_ICON
241     done
242    
243     # add shutdown, reboot icons
244     for i in shutdown reboot
245     do
246     # new line if x > xres
247     if [ ${x} -ge ${xres} ]
248     then
249     x=50
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=50
258    
259     # re-check x
260     [ ${x} -ge ${xres} ] && x=50
261     fi
262    
263     case ${i} in
264     shutdown) name="Herunterfahren" ;;
265     reboot) name="Neustarten" ;;
266     esac
267    
268     generate_icon \
269     --name "${name}" \
270     --command "/usr/lib/alxconfig-ng/bin/user_${i}.sh" \
271     --icon "${ALX_SESSIONS_ICONS}/${i}.png" \
272     --dest "${dest}/${i}.lnk" \
273     --xres "${x}" \
274     --yres "${y}" \
275     --icon-width "40" \
276     --icon-height "40"
277    
278     y=$((${y} + 80))
279     done
280    
281     # last but not least gen a icon with some sys informations
282     local sysinfo
283     local hostname
284     local osversion
285    
286     osversion="$(< /etc/mageversion)"
287     hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'")
288     sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)"
289    
290     # now get the right position:
291     # restore orig values of xres
292     xres="$(( ${xres} + 120 ))"
293     # default y pos (full yres -22 = cur yres + 58 !)
294     yres="$(( ${yres} + 58 ))"
295     # middle of the screen
296     # (no txt - length required, xtdesk manage that itself)
297     xres="$(( ${xres} / 2))"
298    
299     generate_icon \
300     --name "${sysinfo}" \
301     --command "exit 0" \
302     --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \
303     --dest "${dest}/sysinfo.lnk" \
304     --xres "${xres}" \
305     --yres "${yres}" \
306     --icon-width "1" \
307     --icon-height "1"
308     }
309