Update list of windowmanagers
[grml-scripts.git] / usr_sbin / grml-quickconfig
1 #!/usr/bin/perl 
2 # Filename:      grml-quickconfig
3 # Purpose:       get fast access to some basic grml-scripts
4 # Authors:       Michael Schierl <schierlm-public@gmx.de>, Alexander Wirt <formorer@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 # Latest change: Sam Mär 17 12:42:50 CET 2007 [mika]
8 ################################################################################
9
10 # menu with quick config options
11
12 use Term::ReadKey;
13
14 # enable alternate charset support (needed for screen)
15 print "\e(B\e)0";
16
17 open (my $fh, '/proc/cmdline'); 
18 my $cmdline = <$fh>; 
19 close($fh); 
20
21 my $color = 1 unless $cmdline =~ /nocolor/; 
22
23 # variables for nice display
24 if ($color) {
25     $W = "\e[0;32;1m";     # White
26     $N = "\x0f\e[0m";      # Normal
27     $M = "\e[0;35;1m";     # Magenta (for commands)
28     $B = "\e[0;34;1m\x0e"; # Blue, line drawing characters
29 } else {
30     $B = "\x0e";
31     $N = "\x0f";
32 }
33
34 $HLINE=$B."x".$N;      # A single horizontal line drawing character
35
36 # menu options
37 %menu_commands = (
38     d => 'grml-lang de',
39     a => 'grml-lang at',
40     c => 'grml-lang ch',
41     u => 'grml-lang us', 
42     n => 'grml-network',
43     e => 'netcardconfig',
44     i => 'grml-info',
45     h => 'grml2hd',
46     m => 'pdmenu -c',
47     q => 'exit',
48 # x and Return are handled manually
49 );
50
51 # window managers
52 %windowmanagers = (
53     d => 'dwm',
54     e => 'evilwm',
55     f => 'fluxbox',
56     v => 'fvwm',
57     2 => 'fvwm2', 
58     c => 'fvwm-crystal',
59     9 => 'w9wm',
60     w => 'windowlab',
61     i => 'wmii',
62     n => 'wm-ng',
63 );
64
65 # main loop
66 while(1) {
67
68 # disable input buffering, see
69 # man perlfunc | less '+/   getc'
70 # for details
71     system "stty", '-icanon', 'eol', "\001";
72
73 # main loop
74     $command="";
75     while($command eq "") {
76         print <<"EOF";
77
78    ${B}lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk${N}
79    $HLINE Welcome to ${M}grml-quickconfig${M}                            $HLINE 
80    $HLINE Press a highlighted key to perform an action, or press $HLINE
81    $HLINE ${W}Return${N} or ${W}q${N} to go back to the shell.                   $HLINE
82    ${B}tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu${N}
83    $HLINE Set keyboard layout (${M}grml-lang${N}): ${W}d${N}e ${W}a${N}t ${W}c${N}h ${W}u${N}s           $HLINE
84    $HLINE Configure ${W}n${N}etwork (${M}grml-network${N})                       $HLINE
85    $HLINE -> Configure ${W}e${N}thernet card directly (${M}netcardconfig${N})    $HLINE
86    ${B}tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu${N}
87    $HLINE Show ${W}i${N}nformation about grml (${M}grml-info${N})                $HLINE
88    $HLINE Start ${W}x${N} (${M}grml-x${N})                                       $HLINE
89    $HLINE Show an application ${W}m${N}enu (${M}pdmenu${N})                      $HLINE
90    $HLINE Install grml to ${W}h${N}ard disk (${M}grml2hd${N})                    $HLINE
91    ${B}mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj${N}
92
93 EOF
94         print "Press a key: ".$M;
95         ReadMode 4; # Turn off controls keys
96         while (not defined ($x = ReadKey(-1))) {
97             # No key yet
98         }
99         ReadMode 0; # Reset tty mode before exiting
100
101         print $N.$/.$/;
102         if (defined($menu_commands{$x})) {
103             $command = $menu_commands{$x};
104         } elsif ($x eq "\n") {
105             $command= 'exit';
106         } elsif ($x eq "x") {
107             print <<"EOF";
108
109    ${B}lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk${N}
110    $HLINE Select a window manager (unsorted list):               $HLINE 
111    $HLINE Press any other key to return to the main menu.        $HLINE
112    ${B}tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu${N}
113    $HLINE ${W}d${N}wm ${W}e${N}vilwm ${W}f${N}luxbox f${W}v${N}wm fvwm${W}2${N} fvwm-${W}c${N}rystal             $HLINE 
114    $HLINE w${W}9${N}wm ${W}w${N}indowlab wm${W}i${N}i wmi-${W}n${N}g                             $HLINE
115    ${B}mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj${N}
116
117 EOF
118             print "Press a key: ".$M;
119             ReadMode 4; # Turn off controls keys
120             while (not defined ($x = ReadKey(-1))) {
121                 # No key yet
122             }
123             ReadMode 0; # Reset tty mode before exiting
124
125             print $N.$/.$/;
126             if (defined($windowmanagers{$x})) {
127                 $command = "su - grml -c 'grml-x ".$windowmanagers{$x}."'";
128             } else {
129                 print "Unknown key.\n";
130             }
131         } else {
132             print "Unknown key.\n";
133         }
134     }
135
136 # reenable input buffering
137     system "stty", 'icanon', 'eol', '^@';
138
139     if ($command eq "exit") {
140         last;
141     }
142     print $W . "Running command: " . $M . $command . $N . $/;
143     system($command);
144     print $/;
145 }
146 print "Happy hacking!\n";
147
148 ## END OF FILE #################################################################