Bump Standards-Version to 3.9.2
[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
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   local line
45
46   for key value in ${(kv)wms} ; do
47     if check4progs $value >/dev/null ; then
48       available[$key]=$value
49       # test if word could be added to current line
50       if [ $((${(c)#value} + $LEN)) -ge $(($MAXLEN-9)) ] ; then
51         LEN=0
52         output+="$line"
53         line=""
54       fi
55       line+="$(highlight_char $value $key) "
56       LEN=$((${(c)#value} + $LEN))
57     fi
58   done
59   output+="$line"
60 }
61 # }}}
62
63 # heading for wm menu {{{
64 wm_heading() {
65  print_starting_line
66  print_line "Select a window manager (unsorted list):"
67  print_line "Press any other key to return to the main menu."
68  print_delim
69 }
70 # }}}
71
72 # print windowm manager loop {{{
73 wm_menu() {
74   echo
75   wm_heading
76   for line in ${output} ; do
77     print_line $line
78   done
79   print_closing_line
80
81   echo
82   get_key INPUT
83   case $INPUT in
84     [${(k)available}])
85     run su grml -c "grml-x ${available[$INPUT]}"
86     ;;
87   esac
88 }
89 # }}}
90
91 print_available_wm
92
93 ## END OF FILE #################################################################
94 # vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3