I use Debian as my Linux distribution. They do a really nice method of creating the menus and splitting the fvwm configuration, so some of these settings won't apply automatically to other distributions - modify to suit your environment. These basic idea is here.
I have a small 14" monitor, so the fonts tend to be large. It's also
fairly cramped at 1024x768. Some of the colors may be out of whack on
your computer - they're tuned for mine. Here's a look at the whole
desktop: (click for full-size image)
#======================================================================= # Look and Feel # DeskTopSize 2x2 EdgeScroll 100 100 EdgeResistance 500 100 # I'm too lazy to click the mouse, just feebly bat it into a window # and wait for it to raise itself Module FvwmAuto 1000 MenuStyle black grey white -adobe-helvetica-bold-r-*-*-14-* fvwm #---------- # Decors & Styles #---------- AddToDecor default-decor + WindowFont -b&h-lucida-bold-i-*-*-18-* + IconFont -*-helvetica-bold-r-*-*-12-* + TitleStyle ActiveUp HGradient 64 "#005577" steelblue + TitleStyle LeftJustified #---------- # Window Buttons #---------- + ButtonStyle Reset + ButtonStyle All - Clear + ButtonStyle 1 MiniIcon + ButtonStyle 1 - MWMDecorMenu + ButtonStyle 2 Vector 16 20x20@1 30x20@1 50x40@1 70x20@1 80x20@1 80x30@0 60x50@0 80x80@0 70x80@0 50x60@0 30x80@0 20x80@0 20x70@0 40x50@1 20x30@0 20x20@1 + ButtonStyle 4 Vector 5 20x20@1 20x80@1 80x80@0 80x20@0 20x20@1 + ButtonStyle 4 - MWMDecorMax + ButtonStyle 6 Vector 2 80x76@0 20x76@1 + ButtonStyle 6 - MWMDecorMin DestroyDecor minimal-decor AddToDecor minimal-decor + BorderStyle -- HiddenHandles NoInset Style "minimal-style" UseDecor minimal-decor, NoTitle, HandleWidth 3, CirculateSkip, WindowListSkip #---------- # Window Button Mouse Bindings #---------- Mouse 0 2 A Close Mouse 0 4 A Maximize 0 100 Mouse 0 6 A Iconify
#---------- # Program Style Assignments #---------- Style "XClock" UseStyle minimal-style, Sticky Style "X*Biff" UseStyle minimal-style, Sticky Style "XLoad" UseStyle minimal-style Style "XPostitPlus" UseStyle minimal-style, Sticky Style "FvwmPager" UseStyle minimal-style *FvwmPagerGeometry -0-0 *FvwmPagerDeskTopScale 32 Style "elm" Icon mail1.xpm Style "xconsole" NoIcon Style "*" MiniIcon mini-bx2.xpm Style "xterm" MiniIcon mini-term.xpm Style "Emacs" MiniIcon mini.emacs.xpmetc...
I use an FvwmButtons console, containing all my regularly used
programs (the stuff I use every day), plus load graphs for my two
Linux boxes, and the fvwm pager. Everything is packed in to provide
maximum functionality in the minimal amount of pixels. The three
buttons on the left will check to see if the program has been started
and if so warp to it, otherwise start the program. The mail icon is
empty if there's no mail. The xload buttons start an xterm on their
respective machines (you have to click on the labels at the bottom
though). Here's what they look like:
These are the basic functions the buttons use. The comments and code should be self-explanatory.
#======================================================================= # Functions # #---------- # Function: goto-or-exec # Description: Tries to find a window, if it does goes there (same as # the window list does), if not starts a program. # Parameters: $0 name of window to look for # $1 command to execute if window not found #---------- DestroyFunc goto-or-exec AddToFunc goto-or-exec + "I" Next [$0] Iconify -1 + "I" Next [$0] Focus + "I" Next [$0] Raise + "I" Next [$0] WarpToWindow 5p 5p + "I" None [$0] Exec $1 #---------- # Function: Start-mailer # Decription: Use this to start our mailer so we can change it when # we get something better than xterm/elm. # Parameters: none #---------- DestroyFunc Start-mailer AddToFunc Start-mailer + "I" goto-or-exec "elm" "xterm -e elm &" #---------- # Function: Start-term # Decription: Use this to start a remote xterm on a specified host # Parameters: $0 hostname #---------- DestroyFunc Start-term AddToFunc Start-term + "I" Exec ~/bin/xrsh -auth none $0 xterm -ls
This gets a little hairier than it should be, simply because FvwmButtons doesn't have many facilities for sizing - everything is relative to some other button.
#=======================================================================
# FvwmButtons
#
*rcpFvwmButtonsFore White
*rcpFvwmButtonsBack #005577
*rcpFvwmButtonsGeometry -0-0
*rcpFvwmButtonsRows 1
#----------
# Three small buttons on the left for going to or starting often-used
# programs
#----------
*rcpFvwmButtons(Container(Rows 3,Frame 1))
*rcpFvwmButtons(Icon mini-nscape.xpm, Action `goto-or-exec \
"Netscape" /usr/bin/X11/netscape`)
*rcpFvwmButtons(Icon mini.emacs.xpm, Action `goto-or-exec \
"Emacs" /usr/bin/emacs`)
#----------
# this one is our hacked up xpmbiff
#----------
*rcpFvwmButtons(Title mail, Swallow(UseOld,NoKill) "xpmbiff" `Exec \
~/.fvwm2/xpmbiff ~/.fvwm2/mini-nomail.xpm \
~/.fvwm2/mini-mail.xpm 10 &` , Action `Start-mailer`)
*rcpFvwmButtons(End)
#----------
# Container the whole thing to try and get the right sizes, this is
# butt-ugly, but fvwm always wants to even out the buttons.
#----------
*rcpFvwmButtons(6x1, Container(Rows 1,Frame 1))
#----------
# Two xloads for our favorite hosts, clicking on them has been
# redefined above to start xterm logins to them.
#----------
*rcpFvwmButtons(Container(Rows 1,Frame 1))
*rcpFvwmButtons(Title prop, Swallow(UseOld,NoKill) "xload-prop" \
`Exec ~/bin/xrsh -auth none prop xload -title xload-prop \
-bg SlateGrey -fg SlateBlue4 -nolabel -update 15 &` , \
Action `Start-term prop`)
*rcpFvwmButtons(Title flanker, Swallow(UseOld,NoKill) \
"xload-flanker" `Exec ~/bin/xrsh -auth none flanker xload \
-title xload-flanker -bg SlateGrey -fg SlateBlue4 -nolabel \
-update 15 &` , Action `Start-term flanker`)
*rcpFvwmButtons(End)
#----------
# Finally our pager
#----------
*rcpFvwmButtons(Size 102 76, Swallow(UseOld,NoKill) "FvwmPager")
*rcpFvwmButtons(End)
Module FvwmButtons rcpFvwmButtons
Style "*rcpFvwmButtons" UseStyle minimal-style
These are add-ons to the menus Debian creates. They reside in ~/.fvwm2/menudefs.hook. See above for the xrsh program.
AddToMenu "/Debian/Hosts" "Hosts" Title + "&flanker" Exec ~/bin/xrsh -auth none flanker xterm -ls #+ "&flanker-rlogin" Exec xterm -T flanker -e rlogin flanker + "&prop" Start-term prop + "&hercules" Exec xterm -fg orange -tn xterm -T hercules -e telnet hercules.cs.uregina.ca + "&Netwinder" Exec xterm -fg orange -tn xterm -T Netwinder -e telnet javaapp2.corelcomputer.com Style "hercules" Icon xterm-sgi.xpm Style "Netwinder" Icon xterm-corel.xpm AddToMenu "/Debian" + "&Hosts" PopUp /Debian/Hosts AddToMenu "/Debian/Apps/Sound" + "X&Mix" Exec xmix -l
[an error occurred while processing this directive]