########################################################################### # set up the colors # # OK some people like bright clear colors on their window decorations. # These people, I guess would mostly be from nice sunny/good weather places # line California. # # StdForeColor Black # StdBackColor LightSkyBlue # HiForeColor yellow # HiBackColor PeachPuff1 # PagerBackColor BlanchedAlmond # Me, I'm from Upstate New York, and live in New Hampshire, so I prefer # these dark muddy colors... # this is used for non-selected windows, menus, and the panner StdForeColor Black StdBackColor #60a0c0 # this is used for the selected window HiForeColor Black HiBackColor #c06077 PagerBackColor #5c54c0 PagerForeColor orchid StickyForeColor Black StickyBackColor #60c0a0 ############################################################################ # Now the fonts - one for menus, another for window titles, another for icons #Font -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* Font -*-times-medium-i-*-*-*-120-*-*-*-*-*-* WindowFont -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* #IconFont -adobe-helvetica-medium-r-*-*-11-*-*-*-*-*-*-* IconFont fixed # PagerFont is used to mark windows in the Pager with their icon names. # This is really only useful for DeskTopScale < 20 or so #PagerFont 5x8 ########################################################################### # 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 750 # 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 -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 # 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, opaque move is used. 0 <= N <= 100 # OpaqueMove 100 # flip by whole pages on the edge of the screen. EdgeScroll 100 100 # 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 ######################## WINDOW PLACEMENT ####################### # RandomPlacement prevents user interaction while placing windows: # RandomPlacement # SmartPlacement makes new windows pop-up in blank regions of screen if possible, # otherwise 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 # Width of decorations on otherwise undecorated windows: NoBoundaryWidth 3 # Width of side-bars on decorated windows: BoundaryWidth 4 ########################################################################## # Module path and modules to be launched during initialization # # ModulePath is a colon-separated list, just like regular unix PATH ModulePath /local/homes/dsp/nation/modules:/usr/lib/X11/fvwm # Modules to be launched during initialization go here Module FvwmBanner Module GoodStuff # Module FvwmClean ########################################################################### # Set up the virtual desktop and pager #set the desk top size in units of physical screen size DeskTopSize 3x3 # and the reduction scale used for the panner/pager DeskTopScale 32 # Use the Fvwm Pager Pager -5 -5 ############################################################################ # list the windows that don't want a title bar NoTitle Fvwm Pager NoTitle xclock NoTitle xdclock NoTitle Clock NoTitle xbiff NoTitle GoodStuff NoTitle Sppeed6_user ########################################################################### # Here's where I could list NoBorder windows that don't get frames. # If a window shows up with NoTitle and NoBorder, it gets a simple frame # whose width is specified by the NoBoundaryWidth option (can be 0). # # When windows are NoBordered, they look a bit like twm is handling them NoBorder Clock ########################################################################## # now the windows that "Stick to the glass", ie don't scroll with the # desktop # The pager is automatically sticky Sticky xclock Sticky xdclock Sticky oclock Sticky Clock Sticky xbiff Sticky GoodStuff ############################################################################ # now list windows that want to "stay on top," ie stay visible until # explicitly lowered # I got tired of this, except for the pager. #StaysOnTop xclock #StaysOnTop xdclock #StaysOnTop oclock #StaysOnTop Clock StaysOnTop Fvwm Pager ############################################################################ # now list windows that don't need to show up in the window list WindowListSkip Clock WindowListSkip xbiff WindowListSkip xcloc WindowListSkip Fvwm Pager ############################################################################ # define some common icon bitmaps # These are the color icons. # Of course, you need to change the directory to the one where they # really live. # Keep m4 from barfing on my icon and bitmap paths # undefine(`include') PixmapPath /usr/include/X11/pixmaps/:/local/homes/dsp/nation/icons IconPath /usr/include/X11/bitmaps/ Icon "rxvt" term.xpm Icon "xterm" xterm.xpm Icon "Fvwm Pager" map.xpm Icon "Appointment" datebook.xpm Icon "xcalc" xcalc.xpm Icon "xbiff" mail1.xpm Icon "xmh" mail1.xpm Icon "xman" xman.xpm Icon "xvgr" graphs.xpm Icon "matlab" math4.xpm Icon "xmag" mag_glass.xpm Icon "xgraph" graphs.xpm Icon "GoodStuff" toolbox.xpm Icon "" unknown1.xpm # Here are some monchrome icon bitmaps that everyone should have #Icon "rxvt" terminal #Icon "xterm" Term # I have included a default.xbm in the fvwm_icons subdirectory #Icon "" default.xbm ############################################################################ # 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 "Motion" 0 100 Maximize "Click" 0 92 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 +100+100& #EndFunction ############################################################################## #now define the menus - defer bindings until later # This menu is invoked as a sub-menu - it allows you to quit, # restart, or switch to another WM. Popup "Quit-Verify" Title "Really Quit Fvwm?" Quit "Yes, Really Quit" Exec "Edit Menus" exec xterm -bg cyan -e vi /usr/X386/lib/X11/fvwm/system.fvwmrc & Restart "Restart Fvwm" fvwm Restart "Start twm" twm Restart "Start tvtwm" tvtwm Restart "Start mwm" mwm Restart "Start olwm" /usr/openwin/bin/olwm Nop "" Nop "No, Don't Quit" EndPopup # Provides a list of modules to fire off Popup "Module-Popup" Title "Modules" Module "GoodStuff" GoodStuff Module "Clean-Up" FvwmClean Module "Identify" FvwmIdent Module "SaveDesktop" FvwmSave Module "Debug" FvwmDebug EndPopup # This defines the most common window operations Popup "Window Ops" Title "Window Ops" Function "Move" Move-or-Raise Function "Resize" Resize-or-Raise Raise "Raise" Lower "Lower" Iconify "(De)Iconify" Stick "(Un)Stick" Maximize "(Un)Maximize" Maximize "(Un)Maximize Vertical" 0 100 Nop "" Destroy "Destroy" Delete "Delete" EndPopup # A trimmed down version of "Window Ops", good for binding to decorations Popup "Window Ops2" Function "Move" Move-or-Raise Function "Resize" Resize-or-Raise Raise "Raise" Lower "Lower" Iconify "Iconify" Stick "(Un)Stick" Nop "" Destroy "Destroy" Delete "Delete" EndPopup Popup "Screensaver" Title "Screensaver" Exec "Random" exec xlock -nolock -nice 0 -mode random & Exec "Hop" exec xlock -nolock -nice 0 -mode hop & Exec "Life" exec xlock -nolock -nice 0 -mode life & Exec "Qix" exec xlock -nolock -nice 0 -mode qix & Exec "Image" exec xlock -nolock -nice 0 -mode image & Exec "Swarm" exec xlock -nolock -nice 0 -mode swarm & Exec "Rotor" exec xlock -nolock -nice 0 -mode rotor & Exec "Pyro" exec xlock -nolock -nice 0 -mode pyro & Exec "Flame" exec xlock -nolock -nice 0 -mode flame & Exec "Worm" exec xlock -nolock -nice 0 -mode worm & Exec "Blank" exec xlock -nolock -nice 0 -mode blank & EndPopup Popup "Screenlock" Title "Lock Screen" Exec "Random" exec xlock -nice 0 -mode random & Exec "Hop" exec xlock -nice 0 -mode hop & Exec "Life" exec xlock -nice 0 -mode life & Exec "Qix" exec xlock -nice 0 -mode qix & Exec "Image" exec xlock -nice 0 -mode image & Exec "Swarm" exec xlock -nice 0 -mode swarm & Exec "Rotor" exec xlock -nice 0 -mode rotor & Exec "Pyro" exec xlock -nice 0 -mode pyro & Exec "Flame" exec xlock -nice 0 -mode flame & Exec "Worm" exec xlock -nice 0 -mode worm & Exec "Blank" exec xlock -nice 0 -mode blank & EndPopup Popup "X-Games" Exec "Boing" exec cdexec /usr/src/Xapps/xboing xboing & Exec "Cbzone" exec /usr/games/cbzone & Exec "Chomp" exec xchomp & Exec "Chess" exec xboard & Exec "Eyes" exec xeyes & Exec "Flight Simulator" exec cdexec /usr/games/fly8 fly -z5& Exec "Gas" exec xgas & Exec "Ico" exec ico & Exec "Jetpack" exec /usr/games/jetpack & Exec "Lander" exec xlander & Exec "Mahjongg" exec xmahjongg & Exec "Mille" exec xmille & Exec "Mris" exec xmris & Exec "Pipeman" exec xpipeman & Exec "Pool" exec xpool & Exec "Puzzle" exec puzzle & Exec "Roach" exec xroach & Exec "Spider" exec Spider & Exec "spider" exec spider & Exec "Tank" exec xtank & Exec "Tetris" exec xtetris & Exec "Vier" exec xvier & EndPopup Popup "Tcl/Tk" Exec "Picasso" exec picasso & Exec "XTex" exec xtex & Exec "Builder" exec xf & Exec "Mail" exec tkmail & Exec "News" exec tknews & Exec "TclHelp" exec tclhelp & Exec "TkInfo" exec /usr/lib/tcl/tkinfo-0.6/tkinfo.tcl & Exec "TkMan" exec tkman & Exec "Budge" exec /usr/lib/tcl/budge/budge & Exec "Demo" exec /usr/X386/lib/X11/tkX/3.6a-p2/demos/widget & Exec "WishX" exec xterm -e wishxrl & Exec "Inherited Wish" exec xterm -e bash /usr/bin/itcl_wishrl & Exec "Debug" exec /usr/lib/tcl/tdebug/TdChoose.tcl & EndPopup Popup "X-Editors" Exec "Emacs" exec emacs & Exec "Edit" exec xedit & Exec "Joe" exec rxvt -T Joe -n Joe -e joe & Exec "Vi" exec rxvt -T Vi -n Vi -e vi & Exec "Spreadsheet" exec xspread /usr/src/Xapps/xspread/demo & EndPopup Popup "X-Demos" Exec "Antfarm" exec xantfarm& Exec "Earth" exec xearth -label & Exec "Ghostscript" exec rxvt -e gs /usr/lib/ghostscript/examples/tiger.ps & Exec "GhostView" exec ghostview /usr/src/Xapps/xvgr_bin/xvgr.ps & Exec "ImageMagick" exec /usr/src/ImageMagick/display /usr/src/ImageMagick/images/dna.miff & Exec "Logo" exec xlogo & Exec "Maze" exec maze & Exec "MPeg" exec mpeg_play -loop /usr/src/Xapps/mpeg-1.2/hulahoop.mpg & Exec "MPeg2" exec mpeg_play -loop /usr/src/Xapps/mpeg-1.2/birdisba.mpg & Exec "Springies" exec /usr/games/xspringies& Exec "Workman CD" exec workman & Exec "Xdvi" exec xdvi /usr/src/Xapps/xspread/doc/xspread.dvi & EndPopup Popup "X-Utils" Exec "Manual" exec xman & Exec "User Interface Builder" exec uib & Exec "Xcalc" exec xcalc -bg aquamarine & Exec "Clock" exec oclock -bg steelblue & Exec "Keyboard" exec xkeycaps -keyboard DELL& Exec "Color Map" exec xcolormap & Exec "Lock Screen" exec xlock & Exec "Redraw Screen" exec xrefresh & Exec "Magnifing Glass" exec xmag & Exec "X Debugger" exec xxgdb & Exec "System Info" exec xsysinfo -noidle & Exec "Top" exec rxvt -T Top -n Top -e top & EndPopup Popup "Andrew" Exec "Help" exec /usr/andrew/bin/help & Exec "Dir Tree" exec /usr/andrew/bin/bush & Exec "Calander" exec /usr/andrew/bin/champ & Exec "Console" exec /usr/andrew/bin/console & Exec "Equation Editor" exec /usr/andrew/bin/eq & Exec "EZ Editor" exec /usr/andrew/bin/ez & Exec "Table" exec /usr/andrew/bin/table & Exec "Ness" exec /usr/andrew/bin/ness & Exec "Messages" exec /usr/andrew/bin/messages & Exec "Preview" exec /usr/andrew/bin/preview & Exec "Raster" exec /usr/andrew/bin/raster & Exec "Typescript" exec /usr/andrew/bin/Typescript & Exec "Zip" exec /usr/andrew/bin/zip & EndPopup Popup "Utilities" Title "Fvwm" Nop "" Exec "Xterm" exec xterm -bg moccasin +sb -sl 500 -j -ls& Exec "Xfilemanager" exec xfilemanager & Exec "XFM" exec xfm & Exec "MuMail" exec mumail & Nop "" Popup "Screensaver" Screensaver Popup "Lock Screen" Screenlock Popup "Tcl/Tk" Tcl/Tk Popup "Demos" X-Demos Popup "Games" X-Games Popup "Utilities" X-Utils Popup "Edit/Draw" X-Editors Popup "Andrew" Andrew Nop "" Popup "Exit Fvwm" Quit-Verify Popup "Modules" Module-Popup Nop "" Refresh "Refresh Screen" 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 # 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. # Button Context Modifi Function Mouse 0 1 A Function "window_ops_func" Mouse 0 2 A Function "maximize_func" Mouse 0 4 A Iconify # 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" # 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 ############################################################################ # 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 GotoPage 0 0 Key F2 A M GotoPage 1 0 Key F3 A M GotoPage 2 0 Key F4 A M GotoPage 0 1 Key F5 A M GotoPage 1 1 Key F6 A M GotoPage 2 1 Key F7 A M Resize Key F8 A M Move Key F9 A M Iconify Key F10 A M WindowList Key F11 A M Popup "Window Ops" Key F12 A M Popup "Utilities" #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 #908090 # Font *GoodStuffFont -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* # Geometry - really likes to pick its own size, but giving a position is OK *GoodStuffGeometry +0-1 # Layout: specify rows or columns, not both # *GoodStuffColumns 1 *GoodStuffRows 1 # Define the buttons to use..... *GoodStuff Resize arrows2.xpm Resize *GoodStuff Move map.xpm Move *GoodStuff Lower arrdown2.xpm Lower *GoodStuff Raise arrup2.xpm Raise *GoodStuff Kill rbomb.xpm Destroy # xterm or rxvts on remote machines can be done like this # Output re-direction is csh style, not sh style *GoodStuff Dopey rterm.xpm Exec "rxvt" rsh dopey "exec rxvt -display $DISPLAY &/dev/null & "& *GoodStuff Grumpy rterm.xpm Exec "rxvt" rsh grumpy "exec rxvt -display $DISPLAY &/dev/null & "& *GoodStuff Snoopy rterm.xpm Exec "rxvt" rsh snoopy "exec rxvt -display $DISPLAY &/dev/null & "& *GoodStuff Xcalc rcalc.xpm Exec "Calculator" exec xcalc & *GoodStuff XMag magnifying_glass2.xpm Exec "xmag" exec xmag & *GoodStuff Mail mail2.xpm Exec "xmh" exec xmh & *GoodStuff Paging clamp.xpm TogglePage #Buttons for some other desktops. *GoodStuff Desk-0 desk.xpm Desk 0 0 *GoodStuff Desk-1 desk.xpm Desk 0 1 *GoodStuff Desk-2 desk.xpm Desk 0 2 *GoodStuff Desk-3 desk.xpm Desk 0 3 ######################### 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 *FvwmIdentifyBack MidnightBlue *FvwmIdentifyFore Yellow *FvwmIdentifyFont -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*