SteelBlue

[img=http://img220.imageshack.us/img220/5255/screenshot200801231343mt7.th.jpg]

This shows Emacs 23 with Dejavu Sans Mono fonts and emacs-w3m, conky in the upper right corner, an iconbox with thumbnail icons (all of these are sticky, indicated by the SteelBlue title), xonclock in the lower right corner; FvwmButtons in the center and the pager in the lower left corner. The buttons on the upper right corner of the decor are custom-drawn pixmaps. The wallpaper is “Vespers” from Digital Blasphemy.

Here’s the config, much of it based on a tutorial I found and haven’t found again, but heavily modified. Comments welcome.

Set Environment variables

###########
SetEnv fvwm_home $[FVWM_USERDIR]
SetEnv fvwm_img $[FVWM_USERDIR]/images
SetEnv fvwm_icon /home/joel/.icons
#SetEnv fvwm_scrpt $./scripts
SetEnv fvwm_wallpapers /home/joel/.kde/share/wallpapers
SetEnv fvwm_webbrowser /usr/bin/firefox
SetEnv fvwm_term /usr/bin/xterm
#SetEnv fvwm_mail /usr/bin/mutt
SetEnv fvwm_media_player /usr/bin/audacious
SetEnv fvwm_video_player /usr/bin/xine

fvwm gtk rcfile:

#*FvwmGtk: RCFile /home/joel/.gtkrc-2.0

Set the image path

###########
ImagePath /usr/share/pixmaps:/usr/share/icons/hicolor:/usr/share/icons/Locolor:/home/joel/.fvwm/images:/home/joel/.icons

Virtual Desktops

###########
DesktopSize 2x2
DesktopName 0 Desk
DesktopName 1 Couch
EdgeScroll 100 100
EdgeResistance 150 150
EdgeThickness 1

Mouse and Focus Behavior

###########
ClickTime 350
MoveThreshold 3
Style * MouseFocusClickRaises
Style * SloppyFocus

Global Styles and options

###########
Style * TileCascadePlacement, GrabFocusOff
Style * ResizeOutline
#OpaqueMoveSize -1
Emulate Fvwm
HideGeometryWindow Never
SnapAttraction 5 SameType Screen
SnapGrid 3 3
XorValue 0
Style * DecorateTransient
Style * DontLowerTransient, StackTransientParent
Style * GrabFocusTransient
Style * WindowShadeSteps 30, WindowShadeScrolls
Style * MwmDecor, SlipperyIcon
Style * IconTitle,
IconTitleColorset 11,
HilightIconTitleColorset 16,
IconTitleRelief 0,
IconBackgroundColorset 14,
IconBackgroundPadding 10,
IconBackgroundRelief -1,
HighlightIconTitleColorset 14,
IconFont “Shadow=2 4:xft:Verdana:Normal:Roman:size=12”
Style * IconBox 697x327+741+414, IconGrid 112x112, IconFill right top

DestroyFunc FuncName

AddToFunc FuncName

+ I (Action to happen immediately)

+ C (Action to happen on a mouse 'click)

+ D (Action to happen on a mouse ‘double click’)

+ H (Action to happen on a mouse ‘hold’)

+ M (Action to happen on a mouse ‘motion’)

###########

Basic Functions

###########
DestroyFunc FvwmDeleteOrDestroy
AddToFunc FvwmDeleteOrDestroy

  • H Nop
  • M Nop
  • C Delete
  • D Destroy

DestroyFunc FvwmIconifyOrShade
AddToFunc FvwmIconifyOrShade

  • C Thumbnail
  • D WindowShade

DestroyFunc FvwmMaximize
AddToFunc FvwmMaximize

  • H Nop
  • M Nop
  • C Maximize $0 $1

DestroyFunc FvwmMoveOrIconify
AddToFunc FvwmMoveOrIconify

  • M Move
  • C Iconify

DestroyFunc FvwmWindowShade
AddToFunc FvwmWindowShade

  • D WindowShade $0

Program Launching Functions

###########
DestroyFunc FvwmXTerm
AddToFunc FvwmXTerm

  • I Exec exec xterm

DestroyFunc FvwmTerminal
AddToFunc FvwmTerminal

  • I Exec exec Terminal

DestroyFunc FvwmEmacs
AddToFunc FvwmEmacs

  • I Exec exec emacs

DestroyFunc FvwmGimp
AddToFunc FvwmGimp

  • I Exec exec gimp

DestroyFunc FvwmFireFox
AddToFunc FvwmFireFox

  • I Exec exec firefox

DestroyFunc FvwmAudacious
AddToFunc FvwmAudacious

  • I Exec exec audacious --headless

DestroyFunc FvwmMixer
AddToFunc FvwmMixer

  • I Exec exec xterm -e alsamixer

DestroyFunc FvwmConky
AddToFunc FvwmConky

  • I Exec exec conky

DestroyFunc FvwmClock
AddToFunc FvwmClock

  • I Exec exec xonclock --movable

DestroyFunc FvwmLockScreen
AddToFunc FvwmLockScreen

  • I Exec exec xscreensaver-command -activate

DestroyFunc FvwmViewManPage
AddToFunc FvwmViewManPage

  • I Exec exec emacsclient --eval “(woman “$0”)” || exit 1

Startup Functions

###########
DestroyFunc StartFunction
AddToFunc StartFunction

  • I Module FvwmPager 0 1
  • I Module FvwmAnimate
  • I Module FvwmButtons SteelBlueButtons -g +544+836
  • I Test (Restart) All (Iconic)
    Test (f $[FVWM_USERDIR]/icon.tmp.$[w.id].png) WindowStyle
    IconOverride, Icon $[FVWM_USERDIR]/icon.tmp.$[w.id].png

DestroyFunc InitFunction
AddToFunc InitFunction

  • I Exec exec xscreensaver
  • I Exec exec fvwm-root -r /home/joel/docs/pictures/vespers1440.png
  • I Exec exec xset m 1/2
  • I Exec exec xbindkeys
  • I FvwmConky
  • I FvwmClock
  • I FvwmCommandS
  • I FvwmMixer
  • I FvwmXTerm
  • I Exec exec rox

DestroyFunc RestartFunction
AddToFunc RestartFunction

  • I Nop

Screenshot Functions (uses ImageMagick)

###########
DestroyFunc FvwmWindowScreenshot
AddToFunc FvwmWindowScreenshot

  • I ThisWindow (!Shaded !Iconic Iconifiable)
    Exec import -window $[w.id] -quality 100 -silent
    “$[fvwm_home]/images/screenshot-date +%F[%R].$[w.id].jpg”

DestroyFunc FvwmDesktopScreenshot
AddToFunc FvwmDesktopScreenshot

  • I Exec sleep $0; import -window root -quality 100 -silent
    “$[fvwm_home]/images/screenshot-date +%F[%R].jpg”

Basic Bindings

###########
Key F1 A M GotoDesk 1 1 0 1
Key F2 A M GotoPage wrapx +1p +0p
Key F3 A M GotoPage wrapy +0p +1p
Key F4 A M Thumbnail
Key F5 A M Move
Key F6 A M Resize
Key F7 A M WindowShade
Key F12 A M Restart
Key Up W M Raise
Key Down W M Lower
Key Space A MC Menu FvwmRootMenu
Key Tab A M WindowList Root -100m c+0 CurrentAtEnd, NoDeskSort,
Alphabetic, SelectOnRelease Meta_L
Key Space A M Menu FvwmWindowOpsMenu
Mouse 1 R A Menu FvwmRootMenu
Mouse 3 R A Menu WindowList Root -100m c+0 CurrentAtEnd, NoDeskSort,
Alphabetic, SelectOnRelease Meta_L
Mouse 1 1 A Menu FvwmWindowOpsMenu
Mouse 1 2 A FvwmDeleteOrDestroy
Mouse 1 4 A FvwmIconifyOrShade
Mouse 1 6 A FvwmMaximize 100 100
Mouse 2 6 A FvwmMaximize 0 100
Mouse 3 6 A FvwmMaximize 100 0
Mouse 1 W M FvwmMoveOrIconify
Mouse 1 I A FvwmMoveOrIconify
Mouse 2 R A Scroll

Window Colorsets

###########
Colorset 3 fg #101060, bg #cececa
Colorset 4 fg White, bg Black
Colorset 5 fg Black, bg #eeeeef
Colorset 6 fg White, bg #9b9b9c
Colorset 12 fg White, bg SteelBlue
Colorset 13 fg SteelBlue, bg Black, fgsh SlateGray

Window Decor

###########
DestroyDecor SteelBlueDecor
AddToDecor SteelBlueDecor

  • Buttonstyle 6 ActiveUp Pixmap jicons/jmax.xpm
  • Buttonstyle 6 ActiveDown SGradient 24 black white
  • Buttonstyle 4 ActiveUp Pixmap jicons/jmin.xpm
  • Buttonstyle 4 ActiveDown DGradient 24 black white
  • Buttonstyle 2 ActiveUp Pixmap jicons/jclose.xpm
  • Buttonstyle 2 ActiveDown YGradient 24 black white
  • Buttonstyle 1 MiniIcon
  • Buttonstyle 2 InActive (Colorset 16)
  • Buttonstyle 4 InActive (Colorset 16)
  • Buttonstyle 6 InActive (Colorset 16)
  • TitleStyle LeftJustified Height 24
  • TitleStyle InActive (Colorset 16)
  • TitleStyle Active (Colorset 13)
  • TitleStyle – Flat
  • Buttonstyle All – UseTitleStyle Flat
  • BorderStyle Active (Colorset 16) – HiddenHandles Flat
  • BorderStyle Inactive (Colorset 16) – HiddenHandles Flat

transparent colorsets

ColorSet 11 RootTransparent buffer, fg SlateGray, bg average, fgsh Black
Colorset 14 Pixmap $[FVWM_USERDIR]/images/vespers106.png, Alpha 50
Colorset 15 AspectShape $[FVWM_USERDIR]/images/ellipse.png
Colorset 16 RootTransparent buffer,
fg SlateGray,
bg average,
fgsh Black,
Tint SteelBlue 30

Default colorset and font (for GeometryWindow)

DefaultColorSet 11
DefaultFont “Shadow=2 4:xft:Verdana:Normal:Roman:size=12:antialias=True”

Window Styles

###########
Style “" UseDecor SteelBlueDecor
Style "
” Font “Shadow=2 2:xft:Verdana:Bold:size=12:minspace=False:antialias=True”
Style “" HandleWidth 4
Style "
” MwmBorder
Style “" Colorset 16
Style "
” HilightColorset 4
Style “" BorderColorset 4
Style "
” HilightBorderColorset 5
Style “" ResizeHintOverride
Style "
” !StickyStippledTitle, !StickyStippledIconTitle

MiniIcons for specific applications

Style StickyIcon
Style xterm MiniIcon fvwm_icons/Monitor_16.xpm,
StickyIcon, Sticky, IconTitleColorset 16
Style xdvi MiniIcon fvwm_icons/mini.cat.xpm
Style Xpdf MiniIcon PDF_16.xpm
Style alsamixer MiniIcon fvwm_icons/mini.audiovol.xpm
Style gimp* MiniIcon 16x16/apps/gimp.png
Style OpenOffice.org MiniIcon
/usr/share/icons/hicolor/16x16/apps/openofficeorg23-writer.png
Style Untitled MiniIcon fvwm_icons/mini.penguin.xpm
Style ROX-Filer Sticky,
StickyIcon,
IconTitleColorset 16

Menu Colorsets

###########
Colorset 7 fg Black, Translucent White 75, hi Black, sh Black
Colorset 8 fg DarkRed, bg #e6e7d7, sh Black, hi #202070

MenuStyles

###########
MenuStyle * PopupDelayed, PopupDelay 300, PopdownImmediately
MenuStyle * PopupOffset -5 100
MenuStyle * TitleUnderlines2, SeparatorsLong
MenuStyle * AutomaticHotkeys
MenuStyle * BorderWidth 1
MenuStyle * PopupAsSubmenu, HoldSubmenus, SubmenusRight
MenuStyle * ItemFormat “%|%5.5i%1.3l%2.3>%|”
MenuStyle * VerticalItemSpacing 1 1, VerticalTitleSpacing 2 2
MenuStyle * MenuColorset 16
MenuStyle * Hilight3D
MenuStyle * Font “Shadow=2 4:xft:Verdana:Bold:size=12:antialias=True”

FvwmRootMenu

###########
DestroyMenu FvwmRootMenu
AddToMenu FvwmRootMenu

  • “Programs%tux_16.png%” Popup FvwmProgramsMenu
  • “Terminal%fvwm_icons/Monitor_16.xpm%” FvwmXTerm
  • “Help%16x16/actions/help.png%” Popup FvwmManPagesMenu
  • “Restart%HandPointingLeft_16.xpm%” Restart
  • “Quit%skull_16.xpm%” Quit

Programs Menu

###########
DestroyMenu FvwmProgramsMenu
AddToMenu FvwmProgramsMenu

  • “Emacs%emacs_16.png%” FvwmEmacs
  • “Gimp%16x16/apps/gimp.png%” FvwmGimp
  • “FireFox%firefox_16.png%” FvwmFireFox
  • “Xscreensaver Settings%xscreensaver_16.xpm%” Exec exec
    xscreensaver-demo &

FVWM Help Menu

###########
DestroyMenu FvwmManPagesMenu
AddToMenu FvwmManPagesMenu

  • “fvwm” FvwmViewManPage fvwm
  • “FvwmAnimate” FvwmViewManPage FvwmAnimate
  • “FvwmAuto” FvwmViewManPage FvwmAuto
  • “FvwmBacker” FvwmViewManPage FvwmBacker
  • “FvwmBanner” FvwmViewManPage FvwmBanner
  • “FvwmButtons” FvwmViewManPage FvwmButtons
  • “FvwmCommand” FvwmViewManPage FvwmCommand
  • “FvwmConsole” FvwmViewManPage FvwmConsole
  • “FvwmConsoleC.pl” FvwmViewManPage FvwmConsoleC.pl
  • “FvwmCpp” FvwmViewManPage FvwmCpp
  • “FvwmDebug” FvwmViewManPage FvwmDebug
  • “FvwmDragWell” FvwmViewManPage FvwmDragWell
  • “FvwmEvent” FvwmViewManPage FvwmEvent
  • “FvwmForm” FvwmViewManPage FvwmForm
  • “FvwmGtk” FvwmViewManPage FvwmGtk
  • “FvwmGtkDebug” FvwmViewManPage FvwmGtkDebug
  • “FvwmIconBox” FvwmViewManPage FvwmIconBox
  • “FvwmIconMan” FvwmViewManPage FvwmIconMan
  • “FvwmIdent” FvwmViewManPage FvwmIdent
  • “FvwmM4” FvwmViewManPage FvwmM4
  • “FvwmPager” FvwmViewManPage FvwmPager
  • “FvwmPerl” FvwmViewManPage FvwmPerl
  • “FvwmProxy” FvwmViewManPage FvwmProxy
  • “FvwmRearrange” FvwmViewManPage FvwmRearrange
  • “FvwmSave” FvwmViewManPage FvwmSave
  • “FvwmSaveDesk” FvwmViewManPage FvwmSaveDesk
  • “FvwmScript” FvwmViewManPage FvwmScript
  • “FvwmScroll” FvwmViewManPage FvwmScroll
  • “FvwmTaskBar” FvwmViewManPage FvwmTaskBar
  • “FvwmTheme” FvwmViewManPage FvwmTheme
  • “FvwmWharf” FvwmViewManPage FvwmWharf
  • “FvwmWinList” FvwmViewManPage FvwmWinList
  • “FvwmWindowMenu” FvwmViewManPage FvwmWindowMenu
  • “fvwm-config” FvwmViewManPage fvwm-config
  • “fvwm-perllib” FvwmViewManPage fvwm-perllib
  • “fvwm-root” FvwmViewManPage fvwm-root
  • “fvwm-bug” FvwmViewManPage fvwm-bug
  • “fvwm-convert-2.2” FvwmViewManPage fvwm-convert-2.2
  • “fvwm-convert-2.4” FvwmViewManPage fvwm-convert-2.4
  • “fvwm-menu-desktop” FvwmViewManPage fvwm-menu-desktop
  • “fvwm-menu-directory” FvwmViewManPage fvwm-menu-directory
  • “fvwm-menu-headlines” FvwmViewManPage fvwm-menu-headlines
  • “fvwm-menu-xlock” FvwmViewManPage fvwm-menu-xlock

fvwm Window Operation Menu

###########
DestroyMenu FvwmWindowOpsMenu
AddToMenu FvwmWindowOpsMenu

  • “Thumbnail M-F4” Thumbnail
  • “Shade M-F7” WindowShade
  • “Move M-F5” Move
  • “Verticize” FvwmMaximize 0 100
  • “Resize M-F6” Resize
  • “Desktops” Popup FvwmDeskMenu
  • “Kill?” Popup FvwmWindowKillMenu
  • “Screenshot” Popup FvwmScreenshotMenu
  • “Identify” Module FvwmIdent

DestroyMenu FvwmDeskMenu
AddToMenu FvwmDeskMenu

  • “Other Page” MovetoPage wrapx +1p +0p
  • “Move to “Desk”” MoveToDesk 0 0
  • “Move to “Couch”” MoveToDesk 0 1

DestroyMenu FvwmWindowKillMenu
AddToMenu FvwmWindowKillMenu

  • “Close” Close
  • “Delete” Delete
  • “Destroy” Destroy

DestroyMenu FvwmScreenshotMenu
AddToMenu FvwmScreenshotMenu

  • “Window Screenshot” Pick (CirculateHit) FvwmWindowScreenshot
  • “Screenshot” FvwmDesktopScreenshot 5

Module Colorsets

###########
Colorset 9 fg rgb:00/00/00, hi rgb:00/00/00, sh rgb:00/00/00, bg rgb:e9/e9/d9
Colorset 10 fg rgb:00/00/00, hi rgb:dd/00/00, sh rgb:dd/00/00, bg rgb:fb/fc/ec

FvwmIdent

###########
DestroyModuleConfig FvwmIdent: *
*FvwmIdent: Colorset 11
*FvwmIdent: Font “xft:Verdana:Normal:size=12:antialias=True”

Mark off the bottom pager area

#EwmhBaseStruts 0 0 0 0
#EWMHPlacementUseWorkingArea

FvwmPager

###########
Style “FvwmPager” NoTitle, !Handles,
!Borders, Sticky, WindowListSkip,
CirculateSkip, StaysOnBottom, FixedPosition, FixedSize, !Iconifiable

DestroyModuleConfig FvwmPager: *
*FvwmPager: Geometry 300x100+0+800
*FvwmPager: Colorset * 16
*FvwmPager: HilightColorset * 16
*FvwmPager: BalloonColorset * 11
*FvwmPager: WindowColorsets 11 14
*FvwmPager: Font “Shadow=2 4:xft:Verdana:Normal:pixelsize=16:minspace=True:antialias=True”
*FvwmPager: Balloons All
*FvwmPager: BalloonFont “xft:Verdana:Normal:pixelsize=14:minspace=True:antialias=True”
*FvwmPager: BallonYOffset +2
*FvwmPager: Window3dBorders
*FvwmPager: MiniIcons
*FvwmPager: UseSkipList
*FvwmPager: Rows 1

SteelBlueButtons

###########

Style “SteelBlueButtons” NoTitle, Handles, Borders, Sticky, WindowListSkip,
CirculateSkip, StaysOnBottom, FixedPosition, FixedSize, !Iconifiable

DestroyModuleConfig SteelBlueButtons: *
*SteelBlueButtons: ButtonGeometry 64x64
*SteelBlueButtons: Colorset 16
*SteelBlueButtons: Rows 1
*SteelBlueButtons: Frame 0
*SteelBlueButtons: PressColorset 11
*SteelBlueButtons: ActiveColorset 14
*SteelBlueButtons: Font “Shadow=2 4:xft:Verdana:Bold:pixelsize=16:minspace=True:antialias=True”

TODO: make the Root menu pop up above the button bar

*SteelBlueButtons: (Frame 0, Icon tux_48.png, ActionOnPress,
Action(Mouse 1) Menu FvwmRootMenu)
*SteelBlueButtons: (Frame 0, Icon 48x48/apps/kfm.png,
Action(Mouse 1) Exec exec rox $[HOME])
*SteelBlueButtons: (Frame 0, Icon emacs_48.png,
Action(Mouse 1) “FvwmEmacs”)
*SteelBlueButtons: (Frame 0, Icon firefox_48.png,
Action(Mouse 1) “FvwmFireFox”)
*SteelBlueButtons: (Frame 0, Icon 48x48/apps/konsole.png,
Action(Mouse 1) Exec exec xterm)
*SteelBlueButtons: (Frame 0, Icon /usr/share/icons/slick/48x48/apps/gimp.png,
Action(Mouse 1) “FvwmGimp”)
*SteelBlueButtons: (Frame 0, Icon 48x48/apps/kgpg.png,
Action(Mouse 1) “FvwmLockScreen”)

The Thumbnail function should look like this:

DestroyFunc Thumbnail
AddToFunc Thumbnail

  • I Raise
  • I SetEnv Icon-$[w.id] $[w.iconfile]
  • I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead
    “xwd -silent -id $[w.id] | convert -scale 96 -frame 1x1
    -mattecolor black -quality 0 xwd:-
    png:$[FVWM_USERDIR]/icon.tmp.$[w.id].png
    && echo WindowStyle IconOverride,
    Icon $[FVWM_USERDIR]/icon.tmp.$[w.id].png
    || echo Nop”
  • I Iconify

And then the Icon is restored with this function:

DestroyFunc DeThumbnail
AddToFunc DeThumbnail

  • I PipeRead “echo WindowStyle Icon \$\[Icon-$[w.id]\]”
  • I UnsetEnv Icon-$[w.id]
  • I Exec rm -f $[FVWM_USERDIR]/icon.tmp.$[w.id].png

Animations are controlled by this module

You could also use Frame, Lines, Flip, Turn, Twist, Random and None.

DestroyModuleConfig FvwmAnimate: *
*FvwmAnimate: Effect Turn
*FvwmAnimate: Width 3
*FvwmAnimate: Delay 10
*FvwmAnimate: Iterations 25

DestroyFunc ExitFunction
AddToFunc ExitFunction I Test (!ToRestart)
Exec rm -f $[FVWM_USERDIR]/icon.tmp.*
#Test (f $[w.iconfile])

composite -compose CopyOpacity \

$[FVWM_USERDIR]/images/mask.png - png:- | \

composite $[w.iconfile] -gravity SouthEast -geometry +8+8 png:- \

$[FVWM_USERDIR]/images/icon.tmp.$[w.id].png