rndm_luser /.fvwm/config

There are many dependencies which will be uploaded in time.
# Fvwm configuration
# $Id: config,v 1.8 2008/07/05 20:21:05 user Exp $
#
# Configuration originally based on
# http://www.fvwm.org/screenshots/desktops/Thomas_Adam-desk-1280x960/config
#
# TODO:
#   Send window to desktop function
#   Intelligent (e.g., Fibonacci) window tiling function
#   Window raise/lower using A-S-l
#
# Features:
#   Keyboard centric window management
#   Dynamically change appearance through menu (color,wallpaper,resolution,etc.)
#
# Keybindings Reference:
#   M-Tab     switch window
#	M-p       toggle button slider panel (pager,xclock,etc.)
#	M-Menu    show root menu
#	M-[0-9]   move to page N
#	M-S-arrow scroll page
#	M-F1      display fvwm man page
#	M-F2      terminal emulator
#	M-F3      run command
#	F3        FvwmConsole
#
# Window Keybindings:
#	M-Delete  iconify all windows
#	M-Insert  de-iconify all windows
#   M-Enter   toggle maximize
#   M-S-Enter toggle fullscreen
#	M-Space   center/resize window
#	M-S-Home  move/resize window to left half of screen
#	M-S-End   move/resize window to right half of screen
#	M-arrow   shade window in direction
#	M-c       close
#	M-s       stick
#	M-r       resize
#	M-m       move
#
# Mouse Bindings Reference:
#   -----------
#   | l (m) r |
#   -----------
#	M-l       menu
#	M-m       window list
#	M-r       window ops menu
#	(C|M)-scroll  iterate page number

# Set the ImagePath
ImagePath /usr/share/icons/wm-icons/:$[HOME]/.fvwm/icons:$[HOME]/.fvwm/pixmaps:+

# Set the main colorset
# 0 - focused
# 1 - unfocused
# 2 - menus/buttons

# Traditional colors
Colorset 0 fg rgb:0/0/0, bg rgb:60/a0/c0
Colorset 1 fg rgb:0/0/0, bg rgb:c0/60/77
Colorset 2 fg rgb:0/0/0, bg rgb:a9/a9/a9

# Other colorsets are defined in $[HOME]/.fvwm/colorsets, and are used for the
# dynamic menu.

ColorMapFocus  FollowsMouse

# Global variables for Fvwm's use.
SetEnv RCOUNT 0
SetEnv DIR Next
SetEnv TERM xterm
SetEnv FontTiny -*-*-*-*-*-*-6-*-*-*-*-*-*-*
SetEnv FontSmall -misc-fixed-medium-r-*-*-10-*-*-*-*-*-*-*
SetEnv FontNormal -adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*
SetEnv FontMedium -adobe-helvetica-bold-r-normal-*-14-*-*-*-*-*-*-*
SetEnv FontLarge -adobe-helvetica-bold-r-normal-*-18-*-*-*-*-*-*-*
SetEnv OSD "osd_cat -p bottom -A right -c green -s 2 -f $[FontLarge]"

# Default styles common to all windows created.
Style "**"  Icon window.xpm
Style "*"   BorderWidth 5, HandleWidth 5
Style "*"   FvwmBorder, FirmBorder, SloppyFocus
Style "*"   Colorset 0
Style "*"   HilightColorset 1
Style "*"   UseDecor fDecor
Style "*"   Button 1, Button 3, Button 5, Button 6, Button 4, Button 2
Style "*"   MWMButtons
Style "*"   MWMDecor, MWMFunctions, HintOverride, MinOverLapPlacement
Style "*"   NoPPosition
Style "*"   WindowShadeSteps 20, WindowShadeScrolls
Style "*"   DecorateTransient, ResizeOpaque
Style "*"   Font $[FontNormal]

# Application specific styles.
Style *Firefox* StartsOnPage 0 1 0, SkipMapping
Style Fvwm*  Sticky, WindowListSkip,!Title, CirculateSkip,!Handles
Style FvwmConsole Title, Handles
Style Vim* Title, Handles
Style sunclock !Title, Handles, Sticky
Style xbiff !Title, Handles, Sticky
Style xclock !Title, Handles, Sticky
Style xeyes !Title, Handles, Sticky, !Borders
Style xload !Title, Handles, Sticky
Style xnetload !Title, Handles, Sticky
Style xosview !Title, Handles, Sticky

#BorderStyle Simple

# Set Animation milliseconds-delay [fractions-to-move-list]
# Set the time between frames and the list of fraction offsets to customize the
# animated moves of the AnimatedMove command and the animation of menus
SetAnimation  10  -.01 0 .01 .03 .08 .18 .3 .45 .6 .75 .85 .90 .94 .97 .99 1.0

IconFont $[FontSmall]
IconTitleRelief -50
TitleStyle Height 18
Emulate Fvwm
DesktopName 0 Main
EdgeScroll 0 0
EdgeResistance 500 1
EdgeThickness 1
HideGeometryWindow never

#####
#
#   +--------------------------------------------------+
#   | 1 3 5 7 9            Title             0 8 6 4 2 |
#   |--------------------------------------------------|
#
# AddToDecor allows for things like vector buttons to be defined. This is
# deprecated and plans for it to be re-written are long overdue. :)
AddToDecor   fDecor
+ ButtonStyle Reset
+ BorderStyle Simple
+ TitleStyle  -- Raised
#+ TitleStyle DGradient 1000 rgb:a9/a9/a9 rgb:0/0/0
#+ ButtonStyle All -- UseTitleStyle
#+ ButtonStyle All Pixmap empty.xpm
#+ AddButtonStyle 1 Pixmap mini.stick.xpm
#+ AddButtonStyle 3 Pixmap mini.fvwm.xpm
#+ AddButtonStyle 5 Pixmap mini.shade1.xpm
#+ AddButtonStyle 6 Pixmap mini.iconify.xpm
#+ AddButtonStyle 4 Pixmap mini.maximize.xpm
#+ AddButtonStyle 2 Pixmap mini.cross.xpm
#+ AddButtonStyle 1 10 25x20@1 30x25@1 30x55@1 43x55@0 50x85@1 57x55@0 70x55@0 70x25@0 75x20@0 25x20@1
#+ AddButtonStyle 3 4 50x75@1 25x25@1 75x25@1 50x75@0
#+ AddButtonStyle 5 12 50x10@1 25x35@1 40x35@1 40x60@1 25x60@1 50x85@1 75x60@0 60x60@0 60x35@0 75x35@0 50x10@0 50x10@1
#+ AddButtonStyle 6 16 60x40@1 60x80@0 15x80@0 15x40@1 60x40@1 40x40@1 40x25@1 75x25@1 75x60@0 60x60@0 75x60@0 75x40@0 85x40@0 85x15@0 60x15@1 60x25@1
#+ AddButtonStyle 4 10 25x40@1 20x40@1 20x80@1 60x80@1 60x65@1 35x65@0 85x65@0 85x10@0 30x10@1 30x65@1
#+ AddButtonStyle 2 17 20x20@1 30x20@1 50x40@1 70x20@1 80x20@1 80x30@0 60x50@0 80x70@1 80x80@0 70x80@0 50x60@0 30x80@0 20x80@0 20x70@0 40x50@1 20x30@0 20x20@1
#################
ClickTime 310

#####
# Use 9 pages per desktop, arranged in a square, like this:
#
#   +-----+-----+-----+
#   |     |     |     |
#   +-----+-----+-----+
#   |     |     |     |
#   +-----+-----+-----+
#   |     |     |     |
#   +-----+-----+-----+
#################
DeskTopSize 3x3

######
# Use an arrow rather than the `X` cursor on the root window.
#################
CursorStyle root top_left_arrow

#####
# OpaqueMoveSize allows you to stop Large windows from being moved opaquely,
# I like the effect.
# SnapAttraction lets nearby windows snap together, or snap to edges so
# that they
# are easier to align on your desktop, The default is off, if you set it
# too large  it's annoying as hell, 3 pixels is just right.
#################
OpaqueMoveSize -1
SnapAttraction 8 SameType
SnapGrid 1 1
MoveThreshold 3
BugOpts FlickeringMoveWorkAround On

# Handle some Mouse bindings now...
# Recall that mouse formats look like this:
#
# +------------+
# | ||  ||  || |
# |	           |
# +------------+
#   1   3   2

# Binding Functions
# [Key,Mouse]    
#
# "I" stands for Immediate
# "M" stands for Motion
# "C" stands for Click
# "H" stands for Hold
# "D" stands for Double Click

# ---------------------------------------------------------------------------
# Contexts:
#     R = Root Window                 rrrrrrrrrrrrrrrrrrrrrr
#     W = Application Window          rIrrrrFSSSSSSSSSFrrrrr
#     F = Frame Corners               rrrrrrS13TTTT642Srrrrr
#     S = Frame Sides                 rIrrrrSwwwwwwwwwSrrrrr
#     T = Title Bar                   rrrrrrSwwwwwwwwwSrrrrr
#     I = Icon                        rIrrrrFSSSSSSSSSFrrrrr
#                                     rrrrrrrrrrrrrrrrrrrrrr
# Numbers are buttons: 1 3 5 7 9   0 8 6 4 2
#
# Modifiers: (A)ny, (C)ontrol, (S)hift, (M)eta, (N)othing
# ---------------------------------------------------------------------------


Mouse 4     R   A   Scroll +100 0
Mouse 5     R   A   Scroll -100 0

Mouse 4     SFT A   FuncFvwmMoveOrRaiseOrShade
Mouse 5     SFT A   FuncFvwmMoveOrRaiseOrShade

Mouse 1     R   A   Menu FvwmMenuRoot
Mouse 2 	R   A   WindowList
Mouse 3 	RFT A   Menu FvwmMenuWindowOps

Mouse 1     SFT A   FuncFvwmMoveOrRaiseOrShade
Mouse 1     SF  A   FuncFvwmResizeOrRaiseOrShade Maximize
Mouse 1		I	A	FuncIconifyDeIconify
Mouse 3		I	A	Menu FvwmMenuWindowOps
Mouse 3		FS	A	Menu FvwmMenuWindowOps

Mouse 0		1	A  Stick
Mouse 0     3   A  Menu FvwmMenuWindowOps
Mouse 0     5   A  WindowShade
Mouse 0     6   A  FuncIconifyDeIconify
Mouse 0		4	A  FuncFvwmMaximizeFullScreen
Mouse 0		2	A  Close

# Now some keyboard shortcuts (see above).

# Arrow Keys
# press arrow + control anywhere, and scroll by 1 page

# Now using the 'PageScroll' function
Key Left	A	CM	Scroll -100 0
Key Right	A	CM	Scroll +100 +0
Key Up		A	CM	Scroll +0 -100
Key Down	A	CM	Scroll +0 +100

Key comma   A   M   Scroll -100 0
Key period  A   M   Scroll +100 +0

# press arrow + meta key, and scroll by 1/10 of a page
Key Left	A	SM	Scroll -10 +0
Key Right	A	SM	Scroll +10 +0
Key Up		A	SM	Scroll +0 -10
Key Down	A	SM	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

#Application keybindings.
Key F1 A M Function FuncViewManPage fvwm
Key F2 A M Exec exec $TERM
Key F3 A N Module FvwmConsole
Key F3 A M Function FuncCreateRunDialog

#Toggle Button-Slider panel.
Key p A M Function FuncPressButton "Buttons-Slider"

#Window keybindings.
Key Return  WTSF    M   Function FuncFvwmMaximize
Key Return  WTSF    MS  Function FuncFvwmMaximizeFullScreen
Key C       WTSF    M   Close
Key M       WTSF    M   Move
Key S       WTSF    M   Stick
Key R       WTSF    M   Resize
Key Tab     A       M   FuncSwitchWindow
#Key Tab    A       3   SendToModule FvwmProxy ShowToggle
#Key minus   WTSF    M   Function FuncIconifyThumbnail
Key minus   WTSF    M   Iconify
Key Delete  A       M   Function FuncShowDesktop
Key Insert  A       M   Function FuncRestoreDesktop
Key Home    WTSF    MS  Function FuncResizeMoveWindow "left"
Key End     WTSF    MS  Function FuncResizeMoveWindow "right"
Key space   WTSF    M   Function FuncResizeMoveWindow "center"
Key Up      WTSF    M   WindowShade North
Key Down    WTSF    M   WindowShade South
Key Left    WTSF    M   WindowShade West
Key Right   WTSF    M   WindowShade East
Key Menu    A       M   Popup FvwmMenuRoot
Key Up      WTSF    C3  PackWrapperUp
Key Down    WTSF    C3  PackWrapperDown
Key Left    WTSF    C3  PackWrapperLeft
Key Right   WTSF    C3  PackWrapperRight

# Iterate through desktops from left to right
Key 1       A       M   GoToPage 0 0
Key 2       A       M   GoToPage 1 0
Key 3       A       M   GoToPage 2 0
Key 4       A       M   GoToPage 0 1
Key 5       A       M   GoToPage 1 1
Key 6       A       M   GoToPage 2 1
Key 7       A       M   GoToPage 0 2
Key 8       A       M   GoToPage 1 2
Key 9       A       M   GoToPage 2 2

Key L A CM 	Exec xscreensaver-command -lock
# Menu styles...
MenuStyle MWM
MenuStyle * Font  $[FontNormal]
##############################################################
#These taken from fvwm-themes 'default' theme.
MenuStyle * Hilight3DThickness 2
MenuStyle * PopupDelayed, PopupDelay 150, PopdownDelayed, PopdownDelay 150
MenuStyle * PopupOffset -15 100, TitleWarpOff
MenuStyle * TitleUnderlines2, SeparatorsLong, TrianglesRelief
MenuStyle * Animation, AutomaticHotkeysOff, DoubleClickTime
MenuStyle * BorderWidth 2, SidePic, SideColor
MenuStyle * PopupAsSubmenu, HoldSubmenus, SubmenusRight
MenuStyle * ItemFormat "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
MenuStyle * VerticalItemSpacing, VerticalTitleSpacing
MenuStyle * MenuColorset 2
#MenuStyle * ActiveFore, Hilight3DOff
#MenuStyle * ActiveColorset 1
BusyCursor  DynamicMenu True

Style * MouseFocusClickRaises

# functions

DestroyFunc FuncIconifyThumbnail
AddToFunc   FuncIconifyThumbnail
+ I ThisWindow (Shaded) WindowShade toggle
+ I Schedule 800 Raise
+ I Raise
+ I Piperead "import -quiet -geometry 128x128 -quality 0 -window $[w.id] png:$./tmp/icon.$[w.id].png"
+ I Iconify
+ I ThisWindow WindowStyle IconOverride, Icon $./tmp/icon.$[w.id].png, StaysOnBottom

DestroyFunc FuncDeThumbnail
AddToFunc   FuncDeThumbnail
+ I DestroyWindowStyle
+ I Exec rm -f $./tmp/icon.$[w.id].png
+ I ThisWindow Iconify Off

DestroyFunc FuncShowDesktop
AddToFunc   FuncShowDesktop
+ I All (CurrentPage, Iconic, State 1) RestoreDesktop
+ I TestRc (Match) Break
+ I All (CurrentPage, !Buttons-Slider, !Sticky, !Iconic, !State 1) ThisWindow State 1 True
+ I All (CurrentPage, !Buttons-Slider, !Sticky, !Iconic, State 1) Iconify

DestroyFunc FuncRestoreDesktop
AddToFUnc   FuncRestoreDesktop
+ I All (CurrentPage, Iconic, State 1) Iconify off
+ I All (CurrentPage, State 1) ThisWindow State 1 False

DestroyFunc FuncPressButton
AddToFunc FuncPressButton
+ I SetEnv CURSOR_X $[pointer.x]
+ I SetEnv CURSOR_Y $[pointer.y]
+ I All [$0] WarpToWindow 1p 1p
+ I FakeClick depth 0 press 1 wait 10 release 1
+ I WindowId root 1 WarpToWindow $[CURSOR_X]p $[CURSOR_Y]p


DestroyFunc FuncResizeMoveWindow
AddToFunc FuncResizeMoveWindow
+ I Pick Piperead `case "$0" in \
                      "left")    echo 'ResizeMove 49 98 0 0"'; \
                                 echo 'ThisWindow WarpToWindow 100 50';; \
                      "right")   echo 'ResizeMove 49 98 50 0'; \
                                 echo 'ThisWindow WarpToWindow 0 50';; \
                      "center")  echo 'ResizeMove 50 50 25 25'; \
                                 echo 'ThisWindow WarpToWindow 50 0';; \
                   esac`

DestroyFunc FuncCenterWindow
AddToFunc FuncCenterWindow
+ I Pick Piperead "echo AnimatedMove \
    $(( $[vp.width]/2-$[w.width]/2 ))p \
        $(( $[vp.height]/2-$[w.height]/2 ))p"
+ I ThisWindow WarpToWindow 50 0

DestroyFunc FuncCreateRunDialog
AddToFunc FuncCreateRunDialog
+ I Exec exec  urxvt +sb -name fvwm-run-dialog -title "Run program..." \
                    -fn $[FontSmall] \
                    -geometry 80x1 --keysym.0xFF0D: " &\nexit\n" \
                    -e bash --init-file $./.Fvwm-bashrc
+ I Wait fvwm-run-dialog
+ I All (fvwm-run-dialog) WarpToWindow 50 75

AddToFunc FuncFocusRaiseAndStuff
+ I     Iconify off
+ I     Focus
+ I     Raise

AddToFunc FuncSwitchWindow
+ I     $[DIR] (CurrentPage, !Iconic, !Sticky) FuncFocusRaiseAndStuff
+ I     Deschedule 134000
+ I     PipeRead `["$[DIR]" == "Prev"] && \
          echo 'SetEnv NDIR Next' || \
          echo 'SetEnv NDIR Prev'`
+ I     Schedule 700 134000 SetEnv DIR $[NDIR]

DestroyFunc FuncFvwmMoveOrRaiseOrShade
AddToFunc FuncFvwmMoveOrRaiseOrShade
+ H     Move
+ M     Move
+ C     Raise
+ D     WindowShade $[func.context]

# FIXME
DestroyFunc FuncWindowShade
AddToFunc FuncWindowShade
+ I PipeRead `case $[func.context] in \
                "t") echo 'ThisWindow (Shaded) WindowStyle TitleAtTop'; \
                     echo WindowShade toggle;; \
                "[") echo 'ThisWindow (!Shaded) WindowStyle TitleAtLeft' && echo WindowShade [;; \
                "]") echo 'ThisWindow (!Shaded) WindowStyle TitleAtRight' && echo WindowShade ];; \
                "-") echo 'ThisWindow (!Shaded) WindowStyle TitleAtTop' && echo WindowShade -;; \
                "_") echo 'ThisWindow (!Shaded) WindowStyle TitleAtBottom' && echo WindowShade _;; \
              esac`

DestroyFunc FuncFvwmResizeOrRaiseOrShade
AddToFunc FuncFvwmResizeOrRaiseOrShade
+ H Resize $0
+ M Resize $0
+ C Raise
+ D WindowShade $[func.context]

DestroyFunc FuncFvwmMoveOrRaiseLower
AddToFunc FuncFvwmMoveOrRaiseLower
+ H Move
+ M Move
+ C RaiseLower

DestroyFunc FuncFvwmMoveOrIconify
AddToFunc FuncFvwmMoveOrIconify
+ M Move
+ D Iconify

# Doesn't cover lower panel.
DestroyFunc FuncFvwmMaximize
AddToFunc FuncFvwmMaximize
+ I Maximize 100 -80p

DestroyFunc FuncFvwmMaximizeFullScreen
AddToFunc FuncFvwmMaximizeFullScreen
+ I Maximize 100 100
+ I Current (!State 11) WindowStyle NoTitle,!Borders
+ I Current (State 11) WindowStyle Title,Borders
+ I Current RefreshWindow
+ I Current (!State 11) Maximize true
+ I Current (State 11) Maximize false
+ I Current State 11 toggle

DestroyFunc FuncFvwmWindowOpsOrAction
AddToFunc FuncFvwmWindowOpsOrAction
+ I Menu MenuFvwmWindowOps2 $*

DestroyFunc FuncIconifyDeIconify
AddToFunc FuncIconifyDeIconify
+ C ThisWindow (!Iconic) FuncIconifyThumbnail
+ D ThisWindow (Iconic) FuncDeThumbnail

DestroyFunc FuncWindowOpsOrClose
AddToFunc FuncWindowOpsOrClose
+ H Menu FvwmMenuWindowOps
+ C Menu FvwmMenuWindowOps
+ D Close

DestroyFunc FuncFvwmMenuDirectory
AddToFunc   FuncFvwmMenuDirectory
+ I PipeRead 'fvwm-menu-directory -d "$0" --exec-file ^launcher --exec-title ^rox --check-subdir --links'

DestroyFunc  FuncChangeColorsetPredef
AddToFunc FuncChangeColorsetPredef
+ I DestroyMenu recreate FvwmMenuColorsetPreDef
+ I PipeRead 'echo "AddToMenu FvwmMenuColorsetPreDef"'
+ I PipeRead 'while read l; do \
                echo \+ \\"${l/*bg /\ }\\" Function ChangeStyle "$l"; \
              done < $./colorsets'

DestroyFunc FuncColorList
AddToFunc FuncColorList
+ I PipeRead 'for x in $(awk \'{ print $$$$4 }\' /usr/share/X11/rgb.txt | grep \'^[a-zA-Z]\' | sort -f -u); do \
                echo \+ \\"$$$$x\\" Function $0 "$$$$x"; \
              done'

DestroyFunc FuncChangeColorFocused
AddToFunc FuncChangeColorFocused
+ I DestroyMenu recreate FvwmMenuColorFocused
+ I Piperead 'echo "AddToMenu FvwmMenuColorFocused Colors Title"'
+ I Function FuncColorList ChangeColorFocused

DestroyFunc FuncChangeColorUnfocused
AddToFunc FuncChangeColorUnfocused
+ I DestroyMenu recreate FvwmMenuColorUnfocused
+ I Piperead 'echo "AddToMenu FvwmMenuColorUnFocused Colors Title"'
+ I Function FuncColorList ChangeColorUnfocused

DestroyFunc FuncChangeColorRoot
AddToFunc FuncChangeColorRoot
+ I DestroyMenu recreate FvwmMenuRootColor
+ I PipeRead 'echo "AddToMenu FvwmMenuRootColor Colors Title"'
+ I Function FuncColorList ChangeColorRoot

DestroyFunc FuncChangeWallpaper
AddToFunc FuncChangeWallpaper
+ I DestroyMenu recreate FvwmMenuWallpaper
+ I PipeRead 'echo "AddToMenu FvwmMenuWallpaper Wallpapers Title"'
+ I PipeRead 'ls $./wallpaper |\
              while read l; do echo \+ \\"${l/\.*/}\\" Function ChangeWallpaper "$l"; done'

DestroyFunc FuncChangeDispRes
AddToFunc FuncChangeDispRes
+ I DestroyMenu recreate FvwmMenuDisplayRes
+ I PipeRead 'echo "AddToMenu FvwmMenuDisplayRes"'
+ I PipeRead 'for x in $(xrandr |sed -e \'/\\(default\\|Screen\\)/d; s/^\\s\\+\\([0-9]\\{3,4\\}x[0-9]\\{3,4\\}\\).*/\\1/g\'); do \
                echo \+ \\"$$$$x\\" Function ChangeResolution "$$$$x"; \
              done'

DestroyFunc  FuncViewManPage
AddToFunc FuncViewManPage
+ I Exec exec $TERM -e man "$0"

DestroyMenu "FvwmMenuWindowOps"
AddToMenu "FvwmMenuWindowOps" "WindowOps" Title
+              "&Move" Pick Move
+		Function FvwmFuncMoveOrRaiseLower
+              "&Resize" Pick Resize
+		Function FuncFvwmResizeOrRaiseOrShade
+              "R&aise" Raise
+              "&Lower" Lower
+              "(De)&Iconify" Iconify
+              "(Un)&Stick" Stick
+              "(Un)Ma&ximize" Function FuncFvwmMaximizeFullScreen
+              "" Nop
+	       "&Identify" Module FvwmIdent
+	       "" Nop
+	       "&Close"	Close
+              "&Delete" Delete
+              "D&estroy" Destroy
+              "" Nop
+              "Re&fresh Screen" Refresh

DestroyMenu "FvwmMenuWindowOps2"
AddToMenu "FvwmMenuWindowOps2"
+	       "Move" Pick Move
#+		Function  FvwmFuncMoveOrRaiseLower
+              "Resize" Pick Resize
#+		Function FuncFvwmResizeOrRaiseOrShade
+              "Raise" Raise
+              "Lower" Lower
+              "Iconify" Iconify
+              "(Un)Stick" Stick
+              "" Nop
+	       "Identify"  Module FvwmIdent
+	       "" Nop
+	       "Close"  Close
+              "Destroy" Destroy
+              "Delete" Delete
+              "" Nop
+              "ScrollBar" Module FvwmScroll 2 2

DestroyMenu "FvwmMenuRoot"
AddToMenu "FvwmMenuRoot" "Root Menu" Title
+ MissingSubmenuFunction Beep
+ "&Shells" Popup FvwmMenuShellsPopup
+ "&Office" Popup FvwmMenuEditorsPopup
+ "&Internet" Popup FvwmMenuInternetPopup
+ "&Games"   Popup FvwmMenuGamesPopup
+ "G&raphics" Popup FvwmMenuDrawingPopup
+ "&Misc" Popup FvwmMenuMiscPopup
+ "A&ppearance" Popup FvwmMenuAppearancePopup
+ "&Display" Popup FvwmMenuDisplay
+ "S&ystem Tools"  Popup FvwmMenuSystemPopup
+ "So&und \& Video" Popup FvwmMenuSoundAndVideo
+ "" Nop
+ "&File Management" Popup FvwmMenuFilePopup
+ "" Nop
+ "&Window Operations" Popup FvwmMenuWindowOps2
+ "&Modules" Popup FvwmMenuModulesPopup
+ "&Help" Popup FvwmMenuHelpPopup
+ "" Nop
+ "&Lock Screen" Exec exec xscreensaver-command -lock
+ "E&xit Fvwm" Popup FvwmExitFvwmPopup

DestroyMenu "FvwmMenuAppearancePopup"
AddToMenu "FvwmMenuAppearancePopup"
+ "&Colors" Popup FvwmMenuColors
+ "&Wallpaper" Popup FvwmMenuWallpaper
+ "" Nop
+ "&Reset" Function ResetStyle

DestroyMenu "FvwmMenuMiscPopup"
AddToMenu "FvwmMenuMiscPopup" "Misc" Title
+ "&VMware" Exec exec vmware
+ "&googleearth" Exec exec googleearth
+ "&xplanet" Exec exec $[HOME]/.xplanet/xplanet.sh


DestroyMenu "FvwmMenuSoundAndVideo"
AddToMenu "FvwmMenuSoundAndVideo" "&Sound \& Video" Title
+ "&Alsa mixer" Exec exec $TERM -e "alsamixer"
+ "" Nop
+ "&Xmms" Exec exec xmms
+ "&Cplay (screen)" Exec exec $TERM -T "Cplay" -e "screen -T -RS cplay cplay"
+ "&Mocp" Exec exec $TERM -T "mocp" -e "mocp"
+ "" Nop
+ "A&udacity" Exec exec audacity

DestroyMenu "FvwmMenuShellsPopup"
AddToMenu "FvwmMenuShellsPopup" "Shells" Title
+ "rxvt (&unicode)" Exec exec urxvt -ls
+ "rxvt (unicode) Large" Exec exec urxvt -fn $[FontLarge]
+ "rx&vt (tabbed)" Exec exec urxvt -ls -pe tabbed
+ "&xterm" Exec exec xterm -ls
+ "x&term (unicode)"  Exec exec uxterm -ls
+ "xt&erm (unicode) Large" Exec exec uxterm -ls -fn $[FontLarge]
+ "" Nop
+ "&mc" Exec exec $TERM -T "mc" -e "mc"
+ "" Nop
+ "&calc" Exec exec $TERM -T "calc" -e "calc"
+ "&gnuplot" Exec exec $TERM -T "gnuplot" -e "gnuplot"
+ "&python" Exec exec $TERM -T "python" -e "python"
+ "" Nop
+ "&festival" Exec exec $TERM -T "festival" -e "festival"

DestroyMenu "FvwmMenuSystemPopup"
AddToMenu   "FvwmMenuSystemPopup" "System Utilities" Title
+ "x&console" Exec exec xconsole
+ "&xsysinfo" Exec exec xsysinfo
+ "x&osview" Exec exec xosview
+ "x&load" Exec exec xload
+ "x&fontsel" Exec exec xfontsel
+ "x&mag" Exec exec xmag
+ "xc&alendar" Exec exec xcalendar
+ "x&kbd" Exec exec xkbd

DestroyMenu "FvwmMenuDrawingPopup"
AddTomenu "FvwmMenuDrawingPopup"
+ "&Dia" Exec exec dia
+ "&Gimp" Exec exec gimp
+ "&Inkscape" Exec exec inkscape
+ "&Blender" Exec exec blender

DestroyMenu "FvwmMenuEditorsPopup"
AddToMenu "FvwmMenuEditorsPopup"
+ MissingSubmenuFunction Beep
+ "&X11"  Popup FvwmSubEditorsX11
+ "&Console" Popup FvwmSubEditorsConsole
+ "&Office" Popup FvwmSubEditorsOffice

DestroyMenu "FvwmSubEditorsConsole"
AddToMenu "FvwmSubEditorsConsole" "Editors - Console" Title
+ MissingSubmenuFunction Beep
+ "&vim" Exec exec $TERM -bg white -fg black -e vim
+ "&nano" Exec exec $TERM -bg white -fg black -e nano
	DestroyMenu "FvwmSubEditorsX11"

AddToMenu "FvwmSubEditorsX11" "Editors - X11" Title
+ MissingSubmenuFunction Beep
+ "&gvim" Exec exec gvim
+ "x&less" Exec exec xless
+ "&emacs" Exec exec emacs
+ "g&v" Exec exec gv
+ "x&pdf" Exec exec xpdf
+ "" Nop
+ "l&yx" Exec exec lyx

DestroyMenu "FvwmSubEditorsOffice"
AddToMenu "FvwmSubEditorsOffice" "Office" Title
+ MissingSubMenuFunction Beep
+ "&OpenOffice" Popup FvwmMenuOOSubMenu

DestroyMenu "FvwmMenuOOSubMenu"
AddToMenu "FvwmMenuOOSubMenu" "OpenOffice" Title
+ "&OpenOffice" Exec exec openoffice
+ "" Nop
+ "&Writer" Exec exec oowriter
+ "&Spreadsheet" Exec exec oocalc
+ "&Impress"   Exec exec ooimpress
+ "&Drawer"  Exec exec oodraw
+ "&Formulae"  Exec exec oomath

DestroyMenu "FvwmMenuGamesPopup"
AddToMenu "FvwmMenuGamesPopup" "Games - Console" Title
+ "" Nop
+ "Games - X11" Title
+ "&counterstrike" Exec exec cs-1.6
+ "&doom" Exec exec lsdldoom
+ "&quake3" Exec exec quake3

DestroyMenu "FvwmMenuInternetPopup"
AddToMenu "FvwmMenuInternetPopup"
+ "&Browsers" Popup FvwmSubInternetBrowsers
+ "&Mail" Popup FvwmSubInternetMail
+ "&IRC" Popup FvwmSubInternetIRC

DestroyMenu "FvwmSubInternetBrowsers"
AddToMenu "FvwmSubInternetBrowsers" "Console Browsers" Title
+ "&links" Exec exec $TERM -T 'links' -e 'links'
+ "l&ynx" Exec exec $TERM -T 'lynx' -e 'lynx'
+ "&elinks" Exec exec $TERM -T 'elinks' -e 'elinks'
+ "&w3m" Exec exec $TERM -T 'w3m' -e 'w3m'
+ "X11 Browsers" Title
+ "&Firefox"  Exec exec firefox
+ "&XLinks" Exec exec links -g

DestroyMenu "FvwmSubInternetMail"
AddToMenu "FvwmSubInternetMail" "Console Mail Clients" Title
+ "&mutt" Exec exec $TERM -e 'mutt'
+ "X11 Mail Clients" Title
+ "" Nop

DestroyMenu "FvwmSubInternetIRC"
AddToMenu "FvwmSubInternetIRC" "Console IRC" Title
+ "&Irssi" Exec exec $TERM -e 'irssi'
+ "X11 IRC" Title
+ "" Nop

DestroyMenu "FvwmMenuFilePopup"
AddToMenu   "FvwmMenuFilePopup"
+ MissingSubMenuFunction FuncFvwmMenuDirectory
+ "/" Popup /
+ "/etc" Popup /etc
+ "Home Directory" Popup $[HOME]

DestroyMenu "FvwmMenuDisplay"
AddToMenu   "FvwmMenuDisplay"
+ "&Resolution" Popup FvwmMenuDisplayRes
+ "&Calibrate" Exec exec lcdtest

DestroyMenu "FvwmMenuColors"
AddToMenu   "FvwmMenuColors" "Predefined Colorsets" Popup FvwmMenuColorsetPreDef
AddToMenu   "FvwmMenuColors" "Focused" Popup FvwmMenuColorFocused
AddToMenu   "FvwmMenuColors" "Unfocused" Popup FvwmMenuColorUnfocused
AddToMenu   "FvwmMenuColors" "Root" Popup FvwmMenuRootColor

DestroyMenu "FvwmMenuColorsetPreDef"
AddToMenu   "FvwmMenuColorsetPreDef" DynamicPopupAction FuncChangeColorsetPredef

DestroyMenu "FvwmMenuColorFocused"
AddToMenu   "FvwmMenuColorFocused" DynamicPopupAction FuncChangeColorFocused

AddToMenu   "FvwmMenuColorUnfocused"
AddToMenu   "FvwmMenuColorUnfocused" DynamicPopupAction FuncChangeColorUnfocused

DestroyMenu "FvwmMenuWallpaper"
AddToMenu   "FvwmMenuWallpaper" DynamicPopupAction FuncChangeWallpaper

DestroyMenu "FvwmMenuRootColor"
AddToMenu   "FvwmMenuRootColor" DynamicPopupAction FuncChangeColorRoot

DestroyMenu "FvwmMenuDisplayRes"
AddToMenu   "FvwmMenuDisplayRes" DynamicPopupAction FuncChangeDispRes

DestroyMenu "FvwmMenuHelpPopup"
AddToMenu   "FvwmMenuHelpPopup" "Fvwm Manpages" Title
+ "&Fvwm"		FuncViewManPage fvwm
+ "Fvwm&Animate"		FuncViewManPage FvwmAnimate
+ "FvwmA&uto"		FuncViewManPage FvwmAuto
+ "Fvwm&Backer"		FuncViewManPage FvwmBacker
+ "FvwmB&anner"		FuncViewManPage FvwmBanner
+ "FvwmB&uttons"		FuncViewManPage FvwmButtons
+ "Fvwm&Command"		FuncViewManPage FvwmCommand
+ "FvwmC&onsole"         FuncViewManPage FvwmConsole
+ "FvwmConsoleC.pl"     FuncViewManPage FvwmConsoleC.pl
+ "FvwmCpp"             FuncViewManPage FvwmCpp
+ "FvwmDebug"           FuncViewManPage FvwmDebug
+ "FvwmDragWell"        FuncViewManPage FvwmDragWell
+ "FvwmEvent"           FuncViewManPage FvwmEvent
+ "FvwmForm"            FuncViewManPage FvwmForm
+ "FvwmGtk"             FuncViewManPage FvwmGtk
+ "FvwmGtkDebug"        FuncViewManPage FvwmGtkDebug
+ "FvwmIconBox"         FuncViewManPage FvwmIconBox
+ "FvwmIconMan"         FuncViewManPage FvwmIconMan
+ "FvwmIdent"           FuncViewManPage FvwmIdent
+ "FvwmM4"              FuncViewManPage FvwmM4
+ "FvwmPager"           FuncViewManPage FvwmPager
+ "FvwmPerl"            FuncViewManPage FvwmPerl
+ "FvwmProxy"           FuncViewManPage FvwmProxy
+ "FvwmRearrange"       FuncViewManPage FvwmRearrange
+ "FvwmSave"            FuncViewManPage FvwmSave
+ "FvwmSaveDesk"        FuncViewManPage FvwmSaveDesk
+ "FvwmScript"          FuncViewManPage FvwmScript
+ "FvwmScroll"          FuncViewManPage FvwmScroll
+ "FvwmTaskBar"         FuncViewManPage FvwmTaskBar
+ "FvwmTheme"           FuncViewManPage FvwmTheme
+ "FvwmWharf"           FuncViewManPage FvwmWharf
+ "FvwmWinList"         FuncViewManPage FvwmWinList
+ "FvwmWindowMenu"      FuncViewManPage FvwmWindowMenu
+ "" Nop
+ "fvwm-config"         FuncViewManPage fvwm-config
+ "fvwm-perllib"        FuncViewManPage fvwm-perllib
+ "fvwm-root"           FuncViewManPage fvwm-root
+ "fvwm-bug"            FuncViewManPage fvwm-bug
+ "fvwm-convert-2.2"    FuncViewManPage fvwm-convert-2.2
+ "fvwm-convert-2.4"    FuncViewManPage fvwm-convert-2.4
+ "" Nop
+ "fvwm-menu-desktop"   FuncViewManPage fvwm-menu-desktop
+ "fvwm-menu-directory" FuncViewManPage fvwm-menu-directory
+ "fvwm-menu-headlines" FuncViewManPage fvwm-menu-headlines
+ "fvwm-menu-xlock"     FuncViewManPage fvwm-menu-xlock

DestroyMenu "FvwmMenuModulesPopup"
AddToMenu "FvwmMenuModulesPopup" "Modules" Title
+ Audio        Module FvwmAudio
+ Auto         Module FvwmAuto 200
+ Buttons      Module FvwmButtons
+ Console      Module FvwmConsole
+ Event	       Module FvwmEvent
+ Proxy	       Module FvwmProxy
+ Ident        Module FvwmIdent
+ Banner       Module FvwmBanner
+ Pager        Module FvwmPager 0 0
+ WinList      Module FvwmWinList

DestroyMenu "FvwmExitFvwmPopup"
AddToMenu FvwmExitFvwmPopup "Exit Fvwm?" Title
+ "&Restart"   Restart fvwm -f $./config
+ "&Quit"      Module FvwmForm FvwmForm-QuitVerify

#Stroke support
#Mouse 3 R A     StrokeFunc DrawMotion FeedBack StrokeWidth 1
Stroke 0 0 R N     Menu MenuFvwmRoot

# Down, Then Up.
Stroke 25852 0 R N  Refresh

# Directions...
Stroke 456 0 R N    GotoPage +1p 0p
Stroke 654 0 R N    GotoPage -1p 0p
Stroke 852 0 R N    GotoPage 0p -1p
Stroke 258 0 R N    GotoPage 0p +1p

# Diagonal...
Stroke 159 0 R N    GotoPage +1p +1p
Stroke 951 0 R N    GotoPage -1p -1p
Stroke 357 0 R N    GotoPage -1p +1p
Stroke 753 0 R N    GotoPage +1p -1p



# Module Configs

DestroyModuleConfig FvwmPager: *
*FvwmPagerFont $[FontNormal]
*FvwmPagerSmallFont $[FontTiny]
*FvwmPagerColorset * 2
##*FvwmPagerMiniIcons
#*FvwmPagerFore $[fg.cs0]
##*FvwmPagerNoDeskHilight
#*FvwmPagerWindowColors $[fg.cs0] $[bg.cs0] $[fg.cs1] $[bg.cs1]
##*FvwmPagerWindowBorderWidth 2
#*FvwmPagerGeometry 0x0+0+0
#*FvwmPagerDeskTopScale 29
*FvwmPagerSloppyFocus
*FvwmPagerUseSkipList
*FvwmPagerBalloons All

DestroyModuleConfig FvwmWinList: *
*FvwmWinListFont $[FontSmall]
*FvwmWinListFore $[fg.cs0]
*FvwmWinListBack $[bg.cs0]
*FvwmWinListFocusFore $[fg.cs0]
*FvwmWinListFocusBack $[bg.cs0]
*FvwmWinList: Action Click1 Function DeiconifyAndRaise
*FvwmWinList: Action Click2 Iconify
*FvwmWinList: Action Click3 Module FvwmIdent

Style FvwmButtons !Title, !Handles, CirculateSkip, NeverFocus, Sticky, \
      WindowListSkip
Style Buttons-Slider NoTitle, NoHandles, !Borders, StaysOnTop
Style *bar* !Handles, !Borders, SloppyFocus, StaysOnTop

DestroyModuleConfig bar: *
*bar: Rows 1
*bar: Columns 6
*bar: Colorset 2
#*bar: Pixmap slate.pat.xpm
*bar: Geometry 880x80+0+870
#*bar: (6x1,Swallow(UseOld, NoHints, Respawn) "")
*bar: (2X1,Swallow "xnetload" "Exec xnetload -bg $[bg.cs2] -fg $[fg.cs2] -novalues -nointerface -update 10 &",Action (Mouse 1) 'Exec $TERM -e watch -n 1 -d -t netstat -vant')
*bar: (2x1,Swallow "xload" "Exec xload -bg $[bg.cs2] -fg $[fg.cs2] -nolabel -update 30 &",Action (Mouse 1) 'Exec $TERM -e top')
*bar: (1x1,Swallow "xeyes" "Exec xeyes +shape -bg $[bg.cs2] -fg $[fg.cs2] &",Action (Mouse 1) 'Exec xmag')
*bar: (1x1,Swallow "xbiff" 'Exec xbiff -bg $[bg.cs2] -fg $[fg.cs2] -file /var/spool/mail/$USER &',Action (Mouse 1) 'Exec $TERM -e mutt')
*bar: (2x1,Swallow "sunclock" 'Exec sunclock -clockgeom 160x60 -dock -nosun -nomoon -setfont "clockstrip|$FontNormal" -colorlevel 1 -setcolor "clockbg|$[bg.cs2]" -setcolor "clockfg|$[fg.cs2]" -setcolor "clockstripbg|$[bg.cs2]" -setcolor "clockstripfg|$[fg.cs2]"'
*bar: (1x1,Swallow "xclock" "Exec xclock -bg $[bg.cs2] -fg $[fg.cs2] -hl $[fg.cs2] -hd $[fg.cs2] -norender &",Action (Mouse 1) 'Exec date | $OSD')
*bar: (2x1,Swallow "FvwmPager" "Module FvwmPager 0 0")

DestroyModuleConfig Buttons-Slider: *
#*Buttons-Slider: Pixmap slate.pat.xpm
*Buttons-Slider: Colorset 2
*Buttons-Slider: Rows 1
*Buttons-Slider: Frame 1
*Buttons-Slider: Padding 0 0
*Buttons-Slider: (Panel(NoBorder, Nohints, left, steps 15, delay 6, indicator 10) "bar" \
                  'Module FvwmButtons bar')

#DestroyModuleConfig volbar: *
#*volbar: Back darkgrey
#*volbar: Columns 1
#*volbar: Rows 1
#*volbar: (1x1,Action (Mouse 1) \
#          "Exec $./scripts/volume.sh toggle", \
#          Action (Mouse 4) \
#          "Exec $./scripts/volume.sh inc 3", \
#          Action (Mouse 5) \
#          "Exec $./scripts/volume.sh dec 4", \
#          Title "Volume")

#DestroyModuleConfig cmdbar: *
#*cmdbar: Back darkgrey
#*cmdbar: Columns 1
#*cmdbar: Rows 2
#*cmdbar: (5x1,Swallow "FvwmConsole" 'Module FvwmConsole -bg darkgrey')
#*cmdbar: (5x1,Swallow(UseOld, NoHints, Respawn) "fvwmterm" \
#          "Exec exec urxvt -T fvwmterm \
#          -fn -misc-fixed-medium-r-normal-*-11-*-*-*-*-*-*-* \
#          -bg darkgrey -fg black +sb -e bash --rcfile $./.Fvwm-bashrc")

#DestroyModuleConfig mpdbar: *
#*mpdbar: Back darkgrey
#*mpdbar: Columns 5
#*mpdbar: Rows 2
#*mpdbar: (1x1, Action (Mouse 1) 'Exec mocp --play &>/dev/null', Icon \
#          $./icons/play.png)
#*mpdbar: (1x1, Action (Mouse 1) 'Exec mocp --pause &>/dev/null', Icon \
#          $./icons/pause.png)
#*mpdbar: (1x1, Action (Mouse 1) 'Exec mocp --stop &>/dev/null', Icon \
#          $./icons/stop.png)
#*mpdbar: (1x1, Action (Mouse 1) 'Exec mocp --prev &>/dev/null', Icon \
#          $./icons/prev.png)
#*mpdbar: (1x1, Action (Mouse 1) 'Exec mocp --next &>/dev/null', Icon \
#          $./icons/next.png)
#*mpdbar: (5x1)


*LoginGrabServer
*LoginWarpPointer
*LoginFont         $[FontMedium]
*LoginButtonFont   $[FontMedium]
*LoginInputFont    $[FontMedium]
*LoginFore         $[fg.cs0]
*LoginBack         $[bg.cs0]
*LoginItemFore     $[fg.cs1]
*LoginItemBack     $[bg.cs1]

# begin items
*LoginLine         center
*LoginText         "Start Options:"
*LoginLine         center
*LoginButton	   quit " Quick  Start " ^[
*LoginLine         center
*LoginButton       quit "All Programs" ^M
*LoginCommand 	   RunProgs

Style "Login" !Title, !Handles, BorderWidth 10

DestroyModuleConfig FvwmEvent-count: *
*FvwmEvent-count: Cmd
*FvwmEvent-count: PassId
*FvwmEvent-count: add_window FvwmCountDestroyWindows
*FvwmEvent-count: destroy_window FvwmCountDestroyWindows

DestroyModuleConfig FvwmEvent-decrxvt: *
*FvwmEvent-decrxvt: Cmd
*FvwmEvent-decrxvt: PassId
*FvwmEvent-decrxvt: destroy_window FvwmDecrementRCount

#Specific to FvwmEvent-count
DestroyFunc  FvwmCountDestroyWindows
AddToFunc  FvwmCountDestroyWindows
+ I SetEnv WinNum 0
+ I All (CurrentDesk !Transient) \
    PipeRead 'echo SetEnv WinNum $$$$(($$$$WinNum + 1))'
#+ I Echo $[WinNum]
+ I DesktopName 0 Main ($[WinNum])

AddToFunc FvwmDecrementRCount
+ I PipeRead "test $[RCOUNT] -le 0 && echo SetEnv RCOUNT 1 \
    || echo SetEnv RCOUNT $$$$(($$$$RCOUNT - 1))"

DestroyFunc ChangeStyle
AddToFunc   ChangeStyle
+ I ColorSet $*
+ I Style * HilightColorSet $0 $*
+ I UpdateStyles

DestroyFunc ResetStyle
AddToFunc   ResetStyle
+ I Function ChangeColorFocused "$[bg.cs0]"
+ I Function ChangeColorUnFocused "$[bg.cs1]"

DestroyFunc ChangeColorFocused
AddToFunc   ChangeColorFocused
+ I Style * HilightBack "$*"

DestroyFunc ChangeColorUnfocused
AddToFunc   ChangeColorUnfocused
+ I Style * BackColor "$*"

DestroyFunc ChangeColorRoot
AddToFunc   ChangeColorRoot
+ I Exec exec xsetroot -solid "$*"

DestroyFunc ChangeWallpaper
AddToFunc   ChangeWallpaper
+ I Exec xsetbg $./wallpaper/"$*"

DestroyFunc ChangeResolution
AddToFunc   ChangeResolution
+ I Exec exec xrandr -s $0

DestroyFunc PackWindowUp
AddToFunc PackWindowUp
+ I SetEnv low_w 0
+ I WindowId $3 Raise
+ I All (CurrentPage !Iconic AcceptsFocus \
        !Shaded) PipeRead "test `expr $[w.y] + $[w.height]` -gt $[low_w] \
        -a `expr $[w.y] + $[w.height]` -lt $0 \
        -a \\( \\( $[w.x] -gt $1 -a $[w.x] -lt `expr $1 + $2` \\) \
            -o \\( $1 -gt $[w.x] -a $1 -lt `expr $[w.x] + $[w.width]` \\) \
            -o \\( $1 -le $[w.x] -a `expr $1 + $2` -ge `expr $[w.x] + $[w.width]` \\) \
            -o \\( $[w.x] -lt $1 -a `expr $[w.x] + $[w.width]` -gt `expr $1 + $2` \\) \
        \\) \
        && echo SetEnv low_w `expr $[w.y] + $[w.height]` \
        || echo Nop"
+ I WindowId $3 AnimatedMove keep $[low_w]p
#+ I WindowId $3 RefreshWindow

AddToFunc PackWrapperUp I NoWindow PackWindowUp $[w.y] $[w.x] $[w.width] $[w.id]

#####
# Name:     PackWindowDown
# Bound:    Alt+Shift+Down When a window is active.
# Purpose:  See PackWindowUp.
#
#################
DestroyFunc PackWindowDown
AddToFunc PackWindowDown
+ I SetEnv high_w $[vp.height]
+ I WindowId $3 Raise
+ I All (CurrentPage !Iconic AcceptsFocus \
        !Shaded) PipeRead "test $[w.y] -lt $[high_w] \
        -a $[w.y] -gt `expr $0 + $4`  \
        -a \\( \\( $[w.x] -gt $1 -a $[w.x] -lt `expr $1 + $2` \\) \
            -o \\( $1 -gt $[w.x] -a $1 -lt `expr $[w.x] + $[w.width]` \\) \
            -o \\( $1 -le $[w.x] -a `expr $1 + $2` -ge `expr $[w.x] + $[w.width]` \\) \
            -o \\( $[w.x] -lt $1 -a `expr $[w.x] + $[w.width]` -gt `expr $1 + $2` \\) \
        \\) \
        && echo SetEnv high_w $[w.y] \
        || echo Nop"
+ I PipeRead "echo WindowId $3 AnimatedMove keep `expr $[high_w] - $4`p"
#+ I WindowId $3 RefreshWindow

AddToFunc PackWrapperDown I NoWindow PackWindowDown $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]

#####
# Name:     PackWindowLeft
# Bound:    Alt+Shift+Left When a window is active
# Purpose:  See PackWindowUp.
#
# The Logic works likes this:
#   1. Set Destination to the Left Edge
#   2. For every window, Run these tests:
#               + Is the Window's Right edge further _Right_ than furthest edge seen yet?
#       And:    + Is it's Right edge Further _Left_ than Target Windows Left edge? (ie,
#in the way)
#           Yes:
#                   + Does the window start inside Target Window, and end below?
#               Or  + Does it start above, and end inside?
#               Or  + Is it the same vertical position/height/size, or start inside and
#end inside?
#               Or  + Does it start above, and end below?
#                   Yes:
#                       This is the new Destination.
#                   No:
#                       Nop
#           No:
#               Nop
#   3. Move to Destination.
#
#################
DestroyFunc PackWindowLeft
AddToFunc PackWindowLeft
+ I SetEnv left_w 0
+ I WindowId $3 Raise
+ I All (CurrentPage !Iconic AcceptsFocus \
        !Shaded) PipeRead "test `expr $[w.x] + $[w.width]` -gt $[left_w] \
        -a `expr $[w.x] + $[w.width]` -lt $1 \
        -a \\( \\( $[w.y] -gt $0 -a $[w.y] -lt `expr $0 + $4` \\) \
            -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt $0 \\) \
            -o \\( $[w.y] -ge $0 -a `expr $[w.y] + $[w.height]` -le `expr $0 + $4` \\) \
            -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt `expr $0 + $4` \\) \
        \\) \
        && echo SetEnv left_w `expr $[w.x] + $[w.width]`  \
        || echo Nop"
+ I WindowId $3 AnimatedMove $[left_w]p keep
#+ I WindowId $3 RefreshWindow

AddToFunc PackWrapperLeft I NoWindow PackWindowLeft $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]

DestroyFunc PackWindowRight
AddToFunc PackWindowRight
+ I SetEnv right_w $[vp.width]
+ I WindowId $3 Raise
+ I All (CurrentPage !Iconic AcceptsFocus \
        !Shaded) PipeRead "test $[w.x] -lt $[right_w] \
        -a $[w.x] -gt `expr $1 + $2` \
        -a \\( \\( $[w.y] -gt $0 -a $[w.y] -lt `expr $0 + $4` \\) \
            -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt $0 \\) \
            -o \\( $[w.y] -ge $0 -a `expr $[w.y] + $[w.height]` -le `expr $0 + $4` \\) \
            -o \\( $[w.y] -lt $0 -a `expr $[w.y] + $[w.height]` -gt `expr $0 + $4` \\) \
        \\) \
        && echo SetEnv right_w $[w.x] \
        || echo Nop"
+ I PipeRead "echo WindowId $3 AnimatedMove `expr $[right_w] - $2`p keep"
#+ I WindowId $3 RefreshWindow

AddToFunc PackWrapperRight I NoWindow PackWindowRight $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]

AddToFunc StartFunction
#+ I Exec exec xsetroot -solid black
#+ I Exec exec xrdm -merge $[HOME]/.Xdefaults
#+ I Exec exec xmodmap $[HOME]/.Xmodmap
#+ I Exec exec xscreensaver
#+ I Exec exec lineakd
+ I Test (Init) Module FvwmForm Login
+ I Module FvwmButtons -g 13x80+1268+943 Buttons-Slider
+ I Module FvwmEvent FvwmEvent-count
+ I Module FvwmEvent FvwmEvent-decrxvt
+ I Module FvwmCommandS
+ I Module FvwmAnimate
+ I Module FvwmProxy
#+ I Module FvwmWinList

AddToFunc RestartFunction
+ I All (Buttons-Slider) close
+ I Exec exec lineakd -r

DestroyFunc RunProgs
AddToFunc RunProgs
+ I Exec exec $TERM
+ I Exec exec firefox
+ I Exec exec $TERM -e mutt

AddToFunc ExitFunction I Nop
#Maybe something will go here one day.