Refactored and cleaned up the wm entry
[grml-quickconfig.git] / quickconfig / 030-wm.sh
1 # window manager module for grml-quickconfig
2 LINE='print_line "Start ${HIGHLIGHT}x${NORMAL} (${HIGHLIGHT_NAME}grml-x${NORMAL})"'
3 KEY=(x)
4 FUNCTION='wm_menu'
5
6 display_entry() {
7     return 0
8 }
9
10 # variable definition {{{
11 typeset -A wms
12 typeset -A available
13 set -A output
14 # }}}
15
16 # window manager definition {{{
17 wms=(
18   a awesome
19   d dwm
20   e evilwm
21   f fluxbox
22   v fvwm
23   2 fvwm2
24   c fvwm-crystal
25   j jwm
26   o openbox
27   k pekwm
28   r ratpoison
29   t twm
30   9 w9wm
31   w windowlab
32   i wmii
33   n wm-ng
34   )
35 # }}}
36
37 # deteremine installed window managers {{{
38 print_available_wm() {
39   . /etc/grml/script-functions
40   LEN=0
41   local line
42
43   for key value in ${(kv)wms} ; do
44     if check4progs $value >/dev/null ; then
45       available[$key]=$value
46       # test if word could be added to current line
47       if [ $((${(c)#value} + $LEN)) -ge $(($MAXLEN-9)) ] ; then
48         LEN=0
49         output+="$line"
50         line=""
51       fi
52       line+="$(highlight_char $value $key) "
53       LEN=$((${(c)#value} + $LEN))
54     fi
55   done
56   output+="$line"
57 }
58 # }}}
59
60 # heading for wm menu {{{
61 wm_heading() {
62  print_starting_line
63  print_line "Select a window manager (unsorted list):"
64  print_line "Press any other key to return to the main menu."
65  print_delim
66 }
67 # }}}
68
69 # print windowm manager loop {{{
70 wm_menu() {
71   echo
72   wm_heading
73   for line in ${output} ; do
74     print_line $line
75   done
76   print_closing_line
77
78   echo
79   get_key INPUT
80   case $INPUT in
81     [${(k)available}])
82     run su grml -c "grml-x ${available[$INPUT]}"
83     ;;
84   esac
85 }
86 # }}}
87
88 print_available_wm
89
90 ## END OF FILE #################################################################
91 # vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3