summaryrefslogtreecommitdiffstats
path: root/vmware/defaultwm
blob: 62a63cc158c2a4f540a19b318ac974ee798e21b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/sh
#
# session chooser
#
# Michael Janczyk <mj0@uni-freiburg.de>
#
# Last changes: 26-04-2006
#



x_dialog () {

  xsessions="/usr/share/xsessions"
  vmsessions="/var/lib/vmware/vmsessions"
  tmpdir="/tmp"
  menu=
  execute=


  desktops=( `ls ${xsessions} | grep -x ".*desktop" \
    | grep -v "default.*" 2>/dev/null` )
  xdesktopsnr=$(echo "${#desktops[*]}")
  desktops=( `ls ${xsessions} | grep -x ".*desktop" \
      | grep -v "default.*" 2>/dev/null; \
      ls ${vmsessions} | grep -x ".*desktop" 2>/dev/null` )
  desktopsnr=$(echo "${#desktops[*]}")


  (( args=0 ))
  declare -i i=0

  while [ "${xdesktopsnr}" -gt "${args}" ]; do
    # exec in .desktop
    execute[${i}]=$(grep -m 1 -i "exec" ${xsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    # name in .desktop
    execute[${i}]=$(grep -m 1 -i "name" ${xsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    execute[${i}]=${execute[${i}]:-`echo ${execute[${i}-1]} | sed -e "s,-, ,g"`}
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    # comment in .desktop
    execute[${i}]=$(grep -m 1 -i "comment" ${xsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    execute[${i}]=${execute[${i}]:-"No comment"}
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    (( args=${args}+1 ))
  done

  while [ "${desktopsnr}" -gt "${args}" ]; do
    # exec in .desktop
    execute[${i}]=$(grep -m 1 -i "exec" ${vmsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    # name in .desktop
    execute[${i}]=$(grep -m 1 -i "name" ${vmsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    execute[${i}]=${execute[${i}]:-`echo ${execute[${i}-1]} | sed -e "s,-, ,g"`}
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    # comment in .desktop
    execute[${i}]=$(grep -m 1 -i "comment" ${vmsessions}/${desktops[${args}]} \
      | awk -F "=" '{print $2}')
    execute[${i}]=${execute[${i}]:-"No comment"}
    menu="$menu \"\${execute[${i}]}\""
    i=${i}+1

    (( args=${args}+1 ))
  done

  # --stderr because of 1>/dev/null
  # echoing to file because Xdialog sux when used w/ quotes
  echo -e "Xdialog --title \"VMware Image Menu\" \
          --screen-center \
          --fill \
          --no-wrap \
          --stderr \
          --no-tags \
          --ok-label \"START\" \
          --item-help \
          --menubox \"Please choose the image you would like to run:\" 35 80 0 \
          $menu 1>/dev/null" \
  > ${tmpdir}/Xdialog

  . ${tmpdir}/Xdialog
  rm -f ${tmpdir}/Xdialog
}

args_dial=$(x_dialog 2>&1) # 2>&1, see function
exec ${args_dial}

exit 0