fvwm1/sample.fvwmrc/minimal.fvwmrc
2019-08-26 23:33:33 +01:00

473 lines
15 KiB
Plaintext

# Unfortunately, order does matter in this file
# The correct order for inserting configurations is:
# 1. Colors
# 2. Assorted configuration paramters such as ClickToFocus, or MWMBorders
# 3. Path setup (ModulePath, PixmapPath, IconPath)
# 4. Style settings, including the default style Style "*" ...
# 5. InitFunction and ResetFunction definitions.
# 6. Other Functions. Functions cannot be forward referenced from
# other functions, but they can be backward referenced.
# 7. Menus definitions. Same caveats about forward referencing
# 8. Key and Mouse Bindings.
# 9. Module options.
# The order of steps 5, 6, and 7 is not critical, as long as there are
# no forward references to functions or menus.
# If you get it wrong, the most common problem is that color or font settings
# are ignored
###########################################################################
# This sample is set up to try to conserve memory. A few techniques are
# used:
# 1. Only "fixed" font is used.
# 2. The internal pager is used instead of the module.
# 3. The FvwmWinList is used instead of the internal one.
# 4. rxvt is used instead of xterm.
# 5. Color icons are avoided.
###########################################################################
# set up the colors
# this is used for the selected window
HiForeColor Black
HiBackColor #c06077
PagerBackColor #5c54c0
PagerForeColor orchid
StickyForeColor Black
StickyBackColor #60c0a0
# Menu colors
MenuForeColor Black
MenuBackColor grey
MenuStippleColor SlateGrey
###########################################################################
# 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
##########################################################################
# Setup paths for icons and modules
#
# ModulePath is a colon-separated list, just like regular unix PATH
ModulePath /local/homes/dsp/nation/modules:/usr/lib/X11/fvwm
# Icon paths
IconPath /usr/include/X11/bitmaps/
###########################################################################
# Set up the virtual desktop and pager
#set the desk top size in units of physical screen size
DeskTopSize 2x2
# and the reduction scale used for the panner/pager
DeskTopScale 32
# Use the Fvwm Pager
Pager -5 -5
#############################################################################
# Initialization Functions
Function "InitFunction"
Exec "I" exec rxvt &
Exec "I" exec rclock -ic &
EndFunction
############################################################################
# list the windows that don't want a title bar
Style "*" BorderWidth 3, HandleWidth 4, Color Black/#60a0c0,Icon default.xbm
Style "Fvwm*" NoTitle, NoHandles,Sticky,StaysOnTop,WindowListSkip
Style "GoodStuff" NoTitle, NoHandles,Sticky,WindowListSkip
Style "*lock" NoTitle,NoHandles,Sticky,WindowListSkip
Style "xbiff" NoTitle,NoHandles,Sticky
Style "GoodStuff" NoTitle
Style "?ppeed*" NoTitle
############################################################################
# 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"
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 "NoClutter" FvwmClean
Module "Identify" FvwmIdent
Move "Move"
Module "SaveDesktop" FvwmSave
Module "Debug" FvwmDebug
Module "Pager" FvwmPager 0 2
Module "Pager" FvwmPager 1 2
EndPopup
# This menu will fire up some very common utilities
Popup "Utilities"
Title "Utilities"
Exec "Xterm" exec xterm -e tcsh &
Exec "Rxvt" exec rxvt &
Exec "Top" exec rxvt -T Top -n Top -e top &
Exec "Calculator" exec xcalc &
Exec "Xman" exec xman &
Exec "Xmag" exec xmag &
Nop ""
Popup "Exit Fvwm" Quit-Verify
Popup "Modules" Module-Popup
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"
Nop ""
Refresh "Refresh Screen"
Nop ""
Desk "Next Desk" 1 0
Desk "Previous Desk" -1 0
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"
Nop ""
Module "ScrollBar" FvwmScroll
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"
# 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"
Mouse 3 R A Module "t" FvwmWinList transient
############################################################################
# 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 Module "t" FvwmWinList
Key F4 A M Iconify
Key F5 A M Move
Key F6 A M Resize
Key F7 A M CirculateUp
Key F8 A M CirculateDown
Key F9 R A Exec exec "rxvt" rxvt &
#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
# 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 Raise Up Popup "Window Ops"
*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
*FvwmPagerGeometry -1-1
*FvwmPagerColumns 1