########################################################################### # set up the colors # this is used for non-selected windows, menus, and the panner StdForeColor Black StdBackColor #5590b0 # this is used for the selected window HiForeColor Black HiBackColor #0aa StickyForeColor Black StickyBackColor #5590b0 PagerBackColor Black PagerForeColor #5590b0 # Menu colors MenuForeColor Black MenuBackColor Grey MenuStippleColor SlateGrey ############################################################################ # Now the fonts - one for menus, another for window titles, another for icons Font -adobe-helvetica-medium-r-*-*-14-*-100-100-*-*-*-* WindowFont -adobe-helvetica-bold-r-*-*-14-*-100-100-*-*-*-* IconFont -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* ############################################################################ # Now the cursors Cursor 5 28 ########################################################################### # Set up the major operating modes ######################## FOCUS STUFF ############################## # Set windows to auto-raise after 750 milliseconds if you like it. # Autoraise can sometimes obscure pop-up windows. Performance is now # similar to olvwm's auto-raise feature. # AutoRaise 50 # Normally, we'll be in focus-follows mouse mode, but uncomment this # for mwm-style click-to-focus #ClickToFocus ######################## ICON STUFF ############################## # Auto Place Icons is a nice feature.... # This creates two icon boxes, one on the left side, then one on the # bottom. Leaves room in the upper left for my clock and xbiff, # room on the bottom for the Pager. IconBox 700 100 -1 -1 #IconBox -150 90 -5 -140 #IconBox 5 -140 -140 -5 #IconBox -70 1 -1 -140 # If you uncomment this, and make sure that the WindowList is bound to # something, it works pretty much like an icon manager. #SuppressIcons # StubbornIcons makes icons de-iconify into their original position on the # desktop, instead of on the current page. StubbornIcons # With AutoPlacement, icons will normally place themselves underneath active # windows. This option changes that. StubbornIconPlacement # If you want ALL you icons to follow you around the desktop (Sticky), try # this #StickyIcons ######################## MWM EMULATION ####################### # # My feeling is that everyone should use MWMDecorHints and MWMFunctionHints, # since some applications depend on having the window manager respect them # MWMFunction hints parses the function information in the MOTIF_WM_HINTS # property, and prohibits use of these functions on the window. Appropriate # portions of the window decorations are removed. MWMFunctionHints # MWM is kinda picky about what can be done to transients, and it was keeping # me from iconifying some windows that I like to iconify, so here's an # over-ride that will allow me to do the operation, even tough the menu # item is shaded out. MWMHintOverride # MWMDecor hints parses the decoration information in the MOTIF_WM_HINTS # property, and removes these decoratons from the window. This does not affect # the functions that can be performed via the menus. MWMDecorHints # These are affect minor aspects for the look-and-feel. # Sub-menus placement mwm-style? MWMMenus # mwm-style border reliefs (less deep than default fvwm) ? MWMBorders # Maximize button does mwm-inversion thingy MWMButtons ######################## MISCELLANEOUS STUFF ####################### # If you don't like the default 150 msec click delay for the complex functions # change this and uncomment it. #ClickTime 150 # OpaqueMove has a number (N) attached to it (default 5). # if the window occupies less than N% of the screen, # then opaque move is used. 0 <= N <= 100 OpaqueMove 60 OpaqueResize #SaveUnders # flip by whole pages on the edge of the screen. #EdgeScroll 10 10 # A modest delay before flipping pages seems to be nice... # I thresh in a 50 pixel Move-resistance too, just so people # can try it out. #EdgeResistance 250 50 # I like to use a large virtual screen and move from page to page with the # pager. EdgeResistance 10000 0 ######################## WINDOW PLACEMENT ####################### # RandomPlacement prevents user interaction while placing windows: RandomPlacement # SmartPlacement makes new windows pop-up in blank regions of screen # if possible, or falls back to random or interactive placement. SmartPlacement # With SmartPlacement, windows will normally place themselves over icons. # Uncomment this to change that. StubbornPlacement # NoPPosition instructs fvwm to ignore the PPosition field in window # geometry hints. Emacs annoyingly sets PPosition to (0,0)! NoPPosition ######################## DECORATIONS ####################### # If you want decorated transient windows, uncomment this: DecorateTransients ########################################################################### # Set up the virtual desktop and pager #set the desk top size in units of physical screen size DeskTopSize 3x2 # and the reduction scale used for the panner/pager DeskTopScale 32 # Use the Fvwm Pager Pager 1 1 ########################################################################## # Module path and paths to the icons # # ModulePath is a colon-separated list, just like regular unix PATH ModulePath /usr/lib/X11/fvwm PixmapPath /usr/include/X11/pixmaps/ IconPath /usr/include/X11/bitmaps/ ############################################################################ # Set the decoration styles and window options # Order is important!!!! # If compatible styles are set for a single window in multiple Style # commands, then the styles are ORed together. If conflicting styles # are set, the last one specified is used. # These commands should command before any menus or functions are defined, # and before the internal pager is started. # change the default width. Style "*" BorderWidth 6, HandleWidth 6, Icon unknown1.xpm Style "Fvwm*" NoTitle, Sticky, WindowListSkip Style "Desk 0" StaysOnTop Style "GoodStuff" NoTitle, NoHandles, Sticky, WindowListSkip, BorderWidth 0, Icon toolbox.xpm Style "oclock" NoTitle, NoHandles, Sticky, WindowListSkip, StaysOnTop Style "Motif CD Audio Player *" NoTitle, NoHandles, BorderWidth 0 Style "xeyes" NoTitle, NoHandles, Sticky, WindowListSkip Style "xbiff" NoTitle, NoHandles, Sticky, WindowListSkip, Icon mail1.xpm Style "xmem" NoTitle, Sticky, WindowListSkip Style "xload" NoTitle, Sticky, WindowListSkip Style "xsysinfo" NoTitle, Sticky, WindowListSkip Style "Maker" StartsOnDesk 1 Style "matlab" StartsOnDesk 3 Style "signal" StartsOnDesk 3 Style "rxvt" Icon term.xpm Style "xterm" Icon xterm.xpm Style "Appointment" Icon datebook.xpm Style "xcalc" Icon xcalc.xpm Style "xmh" Icon mail1.xpm Style "xman" Icon xman.xpm Style "xvgr" Icon graphs.xpm Style "matlab" Icon math4.xpm Style "xmag" Icon mag_glass.xpm Style "xgraph" Icon graphs.xpm ############################################################################# # Stuff to do at start-up Function "InitFunction" # Exec "I" xpmroot /usr/include/X11/pixmaps/x.xpm & Exec "I" xsetroot -solid MidnightBlue # Module "I" GoodStuff # Module "I" FvwmPager 0 0 Exec "I" exec /usr/bin/X11/xterm -sb -sl 500 -j -ls & Exec "I" exec /usr/X11R6/bin/xbiff -update 10 -geometry +0+50 -bg Grey & Exec "I" exec /usr/X11R6/bin/oclock -geometry +672+0 & Wait "I" xterm # Desk "I" 0 2 # Exec "I" exec xmh -font fixed -geometry 507x750+0+0 & # Wait "I" xmh # Desk "I" 0 0 EndFunction Function "RestartFunction" Desk "I" 0 0 Exec "I" xsetroot -solid MidnightBlue # Module "I" GoodStuff # Module "I" FvwmPager 0 0 EndFunction ############################################################################ # Now define some handy complex functions # This one moves and then raises the window if you drag the mouse, # only raises the window if you click, or does a RaiseLower if you double # click Function "Move-or-Raise" Move "Motion" Raise "Motion" Raise "Click" RaiseLower "DoubleClick" EndFunction # This one maximizes vertically if you click (leaving room for the GoodStuff bar at the # bottom, or does a full maximization if you double click, or a true full vertical # maximization if you just hold the mouse button down. Function "maximize_func" # Maximize "Click" 0 80 # Maximize "Motion" 0 100 Maximize "Click" 100 100 Maximize "Motion" 100 100 Maximize "DoubleClick" 100 100 EndFunction # This one moves and then lowers the window if you drag the mouse, # only lowers the window if you click, or does a RaiseLower if you double # click Function "Move-or-Lower" Move "Motion" Lower "Motion" Lower "Click" RaiseLower "DoubleClick" EndFunction # This one moves or (de)iconifies: Function "Move-or-Iconify" Move "Motion" Iconify "DoubleClick" EndFunction # This one resizes and then raises the window if you drag the mouse, # only raises the window if you click, or does a RaiseLower if you double # click Function "Resize-or-Raise" Resize "Motion" Raise "Motion" Raise "Click" RaiseLower "DoubleClick" EndFunction # This is provided as a hint only. # Move to a known page on the desktop, then start an application in a # known location. Could also switch to a known desktop, I guess #Function "abs_coord" # GoToPage "Immediate" 1,1 # Exec "Immediate" exec xcalc -geometry +186+474 & #EndFunction ############################################################################## #now define the menus - defer bindings until later Popup "Misc" Exec "Colored Shell" exec /usr/bin/X11/color_xterm -sb -sl 500 -j -ls & # Exec "Filemanager" exec xfilemanager & Exec "Calculator" exec xcalc -geometry +186+474 & Exec "Color Rxvt (VT100 emulator)" exec /usr/bin/X11/rxvt -font 7x14 -ls & Exec "Large Rxvt (10x20 font)" exec /usr/bin/X11/rxvt -font 10x20 -ls & Exec "Oclock" exec oclock & Exec "Xgrab" exec xgrab & Exec "Xspread" exec xspread & Module "Backer" FvwmBacker Module "Banner" FvwmBanner Module "Banner" FvwmBanner Module "Clean-Up" FvwmClean Module "Debug" FvwmDebug Module "File-Manager" FvwmFileMgr -a Module "GoodStuff" GoodStuff Module "IconBox" FvwmIconBox Module "Identify" FvwmIdent Module "Pager" FvwmPager 0 0 Module "Save" FvwmSave Module "SaveDesk" FvwmSaveDesk Module "SaveDesktop" FvwmSave Module "Scroll" FvwmScroll Module "ScrollBar" FvwmScroll 2 2 Module "WinList" FvwmWinList Restart "Start mwm" mwm Restart "Start olvwm" /usr/openwin/bin/olvwm Restart "Start olwm" /usr/openwin/bin/olwm Restart "Start tvtwm" tvtwm Restart "Start twm" twm EndPopup Popup "Music" Exec "y" exec /usr/src/y/y & Module "Audio" FvwmAudio Exec "Mcd" exec xmcd & Exec "Workman" exec workman & Exec "Mixer" exec xmix & EndPopup Popup "Text" Exec "Lyx" exec lyx & Exec "Xedit" exec xedit & Exec "Lucid Emacs" exec lemacs & Exec "GNU Emacs" exec emacs & Exec "Timeplaner" exec plan & Exec "Spreadsheet" exec xspread & EndPopup Popup "xlocks" Exec "Bat" exec xlock -nolock -nice 0 -mode bat & Exec "Blank" exec xlock -nolock -nice 0 -mode blank & Exec "Blot" exec xlock -nolock -nice 0 -mode blot & Exec "Bob" exec xlock -nolock -nice 0 -mode bob & Exec "Bomb" exec xlock -nolock -nice 0 -mode bomb & Exec "Bounce" exec xlock -nolock -nice 0 -mode bounce & Exec "Flame" exec xlock -nolock -nice 0 -mode flame & Exec "Galaxy" exec xlock -nolock -nice 0 -mode galaxy & Exec "Grav" exec xlock -nolock -nice 0 -mode grav & Exec "Helix" exec xlock -nolock -nice 0 -mode helix & Exec "Hop" exec xlock -nolock -nice 0 -mode hop & Exec "Hyper" exec xlock -nolock -nice 0 -mode hyper & Exec "Kaleid" exec xlock -nolock -nice 0 -mode kaleid & Exec "Life" exec xlock -nolock -nice 0 -mode life & Exec "Life3d" exec xlock -nolock -nice 0 -mode life3d & Exec "Maze" exec xlock -nolock -nice 0 -mode maze & Exec "Pyro" exec xlock -nolock -nice 0 -mode pyro & Exec "Qix" exec xlock -nolock -nice 0 -mode qix & Exec "Random" exec xlock -nolock -nice 0 -mode random & Exec "Rect" exec xlock -nolock -nice 0 -mode rect & Exec "Rock" exec xlock -nolock -nice 0 -mode rock & Exec "Rotor" exec xlock -nolock -nice 0 -mode rotor & Exec "Sphere" exec xlock -nolock -nice 0 -mode sphere & Exec "Spline" exec xlock -nolock -nice 0 -mode spline & Exec "Swarm" exec xlock -nolock -nice 0 -mode swarm & Exec "Swirl" exec xlock -nolock -nice 0 -mode swirl & Exec "Wator" exec xlock -nolock -nice 0 -mode wator & Exec "World" exec xlock -nolock -nice 0 -mode world & Exec "Worm" exec xlock -nolock -nice 0 -mode worm & EndPopup Popup "Games" Exec "Board" exec xboard & Exec "Bombs" exec xbombs & Exec "Cuckoo" exec xcuckoo & Exec "Eyes" exec xeyes & Exec "Gas" exec xgas & Exec "Hextris" exec xhextris & Exec "Lander" exec xlander & Exec "Logo" exec xlogo & Exec "Mahjongg" exec xmahjongg & Exec "Maze" exec maze & Exec "Puzzle" exec puzzle & Exec "Roach" exec xroach & Exec "Spider" exec spider & Exec "Tetris" exec xtetris & Exec "Vier" exec xvier & Nop "" Popup "Bildschirmschoner" xlocks EndPopup # This menu is invoked as a sub-menu - it allows you to quit, # restart, or switch to another WM. Popup "PopupExit" Refresh "Bildaufbauen" Restart "Neustarten wm" fvwm Quit "Abmelden" Exec "Absperren" exec xlock -nice 0 -mode swarm & Exec "Neustarten" exec shutdown -r now Exec "Ausschalten" exec shutdown -h now EndPopup # administrator tools Popup "Admin" Exec "Top" exec rxvt -font 7x14 -T Top -n Top -e top & Exec "Man" exec xman & Exec "Fontsel" exec xfontsel & Exec "Colormap" exec xcolormap & Exec "Editres" exec editres & Exec "Sysinfo" exec xsysinfo & Exec "zap" exec xzap & Exec "man" exec xman & Exec "Eject CD" exec eject -f -u & Exec "Mount CD" exec mount /cdrom & EndPopup # Provides a list of modules to fire off Popup "Develop" Exec "Debugger" exec xxgdb & Exec "Entwicklungsumgebung" exec xwpe & EndPopup # Provides a list of modules to fire off Popup "Network" Exec "Netscape" exec netscape -geometry 500x570 & Exec "Mosaic" exec Mosaic & Exec "Seyon" exec seyon -modem /dev/modem & Exec "Biff" exec /usr/X11R6/bin/xbiff -update 10 -geometry +81+121 -bg Grey & Exec "X3270" exec x3270 & EndPopup # Provides a list of modules to fire off Popup "Picture" Exec "Photo CD" exec xpcd & Exec "Ghostview" exec ghostview & Exec "Figure" exec xfig & Exec "Magnifier" exec xmag & Exec "Paint" exec xpaint & Exec "Viewer" exec xv & Exec "Gimp" exec /usr/src/gimp/gimp & Exec "GeomView" exec /usr/src/Geomview/geomview & Exec "Bitmap" exec /usr/X11/bin/bitmap & Exec "Fractint" exec rxvt -font 7x14 -e xfractint map=chroma & EndPopup # This menu will fire up some very common utilities Popup "Utilities" Title "Start Alt-F1" Popup "Administration" Admin Nop "" Popup "Bilder" Picture Nop "" Popup "Development" Develop Nop "" Popup "Musik" Music Nop "" Popup "Netzwerk" Network Nop "" Popup "Spiele" Games Nop "" Popup "Texte" Text Nop "" Popup "Verschiedenes" Misc Nop "" Exec "Eingabeaufforderung" exec /usr/bin/X11/xterm -sb -sl 500 -j -ls & Nop "" Exec "Dateimanager" exec xfm & Nop "" Popup "Beenden" PopupExit EndPopup # This defines the most common window operations Popup "Window Ops" Title "Window Ops ALT-F2" Function "Move ALT-F7" Move-or-Raise Function "Resize ALT-F8" Resize-or-Raise Raise "Raise ALT-F5" Lower "Lower ALT-F3" Iconify "(De)Iconify ALT-F9" Stick "(Un)Stick ALT-F7" Function "(Un)Maximize ALT-F10" maximize_func Nop "" Destroy "Destroy" Delete "Close ALT-F4" EndPopup # A trimmed down version of "Window Ops", good for binding to decorations Popup "Window Ops2" Function "Move ALT-F7" Move-or-Raise Function "Resize ALT-F8" Resize-or-Raise Raise "Raise ALT-F5" Lower "Lower ALT-F3" Iconify "(De)Iconify ALT-F9" Stick "(Un)Stick ALT-F7" Function "(Un)Maximize ALT-F10" maximize_func Nop "" Destroy "Destroy" Delete "Close ALT-F4" EndPopup ############################################################################# # One more complex function - couldn't be defined earlier because it used # pop-up menus # # This creates a motif-ish sticky menu for the title-bar window-ops # pop-up # Menu acts like normal twm menu if you just hold the button down, # but if you click instead, the menu stays up, motif style Function "window_ops_func" PopUp "Click" Window Ops2 PopUp "Motion" Window Ops2 # Motif would add Delete "DoubleClick" EndFunction ####################################################################### # This defines the mouse bindings # First, for the mouse in the root window # Button 1 gives the Utilities menu # Button 2 gives the Window Ops menu # Button 3 gives the WindowList (like TwmWindows) # I use the AnyModifier (A) option for the modifier field, so you # can hold down any shift-control-whatever combination you want! # Button Context Modifi Function Mouse 1 R A PopUp "Utilities" Mouse 2 R A PopUp "Window Ops" #Mouse 3 R A WindowList Mouse 3 R A Module "winlist" FvwmWinList transient # Now the title bar buttons # Any button in the left title-bar button gives the window ops menu # Any button in the right title-bar button Iconifies the window # Any button in the rightmost title-bar button maximizes # Note the use of "Mouse 0" for AnyButton. Mouse 0 1 A Function "window_ops_func" Mouse 0 6 A Iconify Mouse 0 4 A Function "maximize_func" Mouse 0 2 A Delete # Now the rest of the frame Here I invoke my complex functions for # Move-or-lower, Move-or-raise, and Resize-or-Raise. Button 1 in # the corner pieces, with any modifiers, gives resize or raise Mouse 1 F A Function "Resize-or-Raise" # Button 1 in the title, sides, or icon, w/ any modifiers, gives # move or raise #Mouse 1 TS A Function "Move-or-Raise" Mouse 1 T A Function "Move-or-Raise" Mouse 1 S A Function "Resize-or-Raise" # Button 1 in an icons gives move for a drag, de-iconify for a # double-click, nothing for a single click Button 2 in an icon, # w/ any modifiers, gives de-iconify Mouse 1 I A Function "Move-or-Iconify" Mouse 2 I A Iconify # Button 2 in the corners, sides, or title-bar gives the window # ops menu Mouse 2 FST A Function "window_ops_func" # Button 3 anywhere in the decoration (except the title-bar buttons) # does a raise-lower Mouse 3 TSIF A RaiseLower # Button 3 in the window, with the Modifier-1 key (usually alt or # diamond) gives Raise-Lower. Used to use control here, but that # interferes with xterm Mouse 3 W M RaiseLower ButtonStyle : 4 4 50x35@1 65x65@0 35x65@0 50x35@1 ButtonStyle : 6 4 50x65@1 35x35@1 65x35@1 50x65@0 ButtonStyle : 2 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 ####################################################################### # Now some keyboard shortcuts. # Arrow Keys # press arrow + control anywhere, and scroll by 1 page Key Left A C Scroll -100 0 Key Right A C Scroll +100 +0 Key Up A C Scroll +0 -100 Key Down A C Scroll +0 +100 # press arrow + meta key, and scroll by 1/10 of a page #Key Left A M Scroll -10 +0 #Key Right A M Scroll +10 +0 #Key Up A M Scroll +0 -10 #Key Down A M Scroll +0 +10 # press shift arrow + control anywhere, and move the pointer # by 1% of a page #Key Left A SC CursorMove -1 0 #Key Right A SC CursorMove +1 +0 #Key Up A SC CursorMove +0 -1 #Key Down A SC CursorMove +0 +1 # press shift arrow + meta key, and move the pointer by 1/10 of a page #Key Left A SM CursorMove -10 +0 #Key Right A SM CursorMove +10 +0 #Key Up A SM CursorMove +0 -10 #Key Down A SM CursorMove +0 +10 # Keyboard accelerators Key F1 A M Popup "Utilities" Key F2 A M Popup "Window Ops" Key F3 A M Lower Key F4 A M Delete Key F5 A M Raise Key F7 A M Move Key F8 A M Resize Key F9 A M Iconify Key Escape A C WindowList Key Tab A M CirculateDown Key Tab A MS CirculateUp #Page Up/Dapge Down keys are used to scroll by one desktop page # in any context, press page up/down + control # in root context, just pressing page up/down is OK # # I prefer the non-wrapping scroll. These are for example purposes only #Key Next A C Scroll 100000 0 #Key Next R N Scroll 100000 0 #Key Prior A C Scroll -100000 0 #Key Prior R N Scroll -100000 0 ############################################################################ ############################################################################ #Definitions used by the modules ###################### GoodStuff button-bar ################################ # Colors *GoodStuffFore Black *GoodStuffBack Grey # Font *GoodStuffFont -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* # Geometry - really likes to pick its own size, but giving a position is OK *GoodStuffGeometry +1+120 # Layout: specify rows or columns, not both *GoodStuffColumns 1 # Define the buttons to use..... *GoodStuff Xterm term.xpm Exec "xterm" /usr/bin/X11/xterm -sb -sl 500 -j -ls & *GoodStuff Calculator rcalc.xpm Exec "" xcalc -geometry +186+474 & *GoodStuff Mail mail2.xpm Exec "" xmh & #*GoodStuff Identify clamp.xpm Module "" FvwmIdent #*GoodStuff Paging clamp.xpm TogglePage *GoodStuff Clock xclock.xpm Exec "" oclock & *GoodStuff Destroy rbomb.xpm Destroy # xterm or rxvts on remote machines can be done like this # Output re-direction is csh style, not sh style # You will want to substitute your own hosts here! #*GoodStuff Dopey rterm.xpm Exec "dopey" rsh dopey "exec xterm -T dopey -display $HOSTDISPLAY &/dev/null & "& #*GoodStuff Grumpy rterm.xpm Exec "grumpy" rsh grumpy "exec xterm -T grumpy -display $HOSTDISPLAY &/dev/null & "& #*GoodStuff Snoopy rterm.xpm Exec "snoopy" rsh snoopy "exec xterm -T snoopy -display $HOSTDISPLAY &/dev/null & "& ######################### No Clutter ######################################## # I only wrote NoClutter as a simple test case, but maybe some big sites like # universities really have usage problems (too many open windows).... # Time delays are in seconds. *FvwmNoClutter 3600 Iconify 1 *FvwmNoClutter 86400 Delete *FvwmNoCLutter 172800 Destroy ########################## Window-Identifier ############################### # Just choose colors and a fonts *FvwmIdentBack MidnightBlue *FvwmIdentFore #5590b0 *FvwmIdentFont -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* ########################### Pager ######################################### *FvwmPagerBack Grey *FvwmPagerFore Black *FvwmPagerFont none #*FvwmPagerFont -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* *FvwmPagerHilight LightGrey *FvwmPagerGeometry 128x102+1+1 #*FvwmPagerLabel 0 Misc #*FvwmPagerLabel 1 Page 2 #*FvwmPagerLabel 2 Mail #*FvwmPagerLabel 3 Matlab *FvwmPagerSmallFont 6x10 ##########################FvwmWinList################################## *FvwmWinListBack #908090 *FvwmWinListFore Black *FvwmWinListFont -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* *FvwmWinListAction Click1 Iconify -1,Focus *FvwmWinListAction Click2 Iconify *FvwmWinListAction Click3 Module "FvwmIdent" FvwmIdent *FvwmWinListUseSkipList *FvwmWinListGeometry +0-1