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