一生醉生忘死,就让他继续下去吧!
分类: LINUX
2011-09-21 15:05:05
###################
# @Author:
# @Description:
# I stolen this code from the web and keep the orignal author's info as following.
# My modifictions focus on these aspects:
#
# 1. Add two Theme(or Decor) Modules
# 2. Make use of Windows keys to move in pagers
# 3. Put Useful Applications FvwmButtons in a Panel
# 4. Chinese font
#
# Actually, I made the changes to fit my habits, which might be a mess for someone else,
# for Jean-Paul Sartre said "Hell is other people". However, Confucius said "My teacher
# must be in the three". Any small tips seeming useful would pull you out of the HELL.
#
##### Original Author Info##########################################################
# This is how my fvwm2rc looked on 22/01/2004, using fvwm-2.5.8 on Gentoo Linux.
#
# Screenshots: [1]http://dev.gentoo.org/~taviso/screenshots/
# Wallpaper: [2]
#
# -Tavis Ormandy ()
######################################################################################
#####
# Set the directories to look in for Image files.
#################
ImagePath ${HOME}/.fvwm/newdecors:${HOME}/.fvwm/icons:/usr/share/icons:/usr/share/icons/wm-icons/16x16-gnome:/usr/include/X11/pixmaps:+
PipeRead '~/scripts/fvwm-theme -init'
#####
# You can set simple options like this, using variables.
#
# If you need something more complex, read the man pages for FvwmCPP, FvwmM4 or FvwmPerl.
#################
SetEnv fvwm_video_path $[HOME]/media/video
SetEnv fvwm_video_exec mplayer
SetEnv fvwm_audio_path $[HOME]/media/audio
SetEnv fvwm_audio_exec xmms --play
SetEnv fvwm_image_path $[HOME]/media/images
SetEnv fvwm_image_exec gqview
#SetEnv fvwm_rom_path $[HOME]/stuff/zsnes
#SetEnv fvwm_rom_exec zsnes
SetEnv fvwm_wallpaper $[HOME]/wallpaper/wallpaper.png
#####
# If you use Thumbnails, how big would you like the Icons to be?
#
# Try one of these, from tiny to large: 32, 64, 96, 128
#
# Note that the aspect ratio is maintained, so tall and thin windows may get larger icons,
# but you can change that if it annoys you.
#################
SetEnv fvwm_icon_size 96
#####
# You can automatically move the viewport into adjacent pages when the pointer
# hits the screen edge, but I dont like this.
# This EdgeResistance disables it, but still allows me to move windows over onto adjacent pages.
#
#################
# EdgeResistance: takes two parameters. The first is more relevant to the
# problem at hand: the number of milliseconds the pointer must be at
# the screen edge before you'll be moved onto the next page. The
# second parameter has to do with the way a window is moved between
# pages: it's the number of pixels over the edge of the screen a
# window's border must move before it moves partially off the screen.
# Typical default settings are:
#
# EdgeThicknessi: disables edge scrolling and EdgeCommand, which I never use.
#
EdgeResistance 1000 10
EdgeThickness 1
#####
# You will want to disable this if you are running fvwm over a network, but otherwise this
# handy setting stops NumLock/ScrollLock from interfering with bindings.
#
# If you disable this, I guarantee it will catch you out and have you scratching your
# head at some point :)
#
# [3]http://www.fvwm.org/documentation/faq/#5.5
#################
IgnoreModifiers L25
#####
# You can use EwmhBaseStruts to stop Maximised windows from obscuring TaskBars/ButtonBars
# or anything else you always want to be visible.
#
# This Setting makes sure my ButtonBar on the left and taskbar along the bottom is always
# visible.
#################
EwmhBaseStruts 0 0 0 20
######
# Fvwm uses a default ClickTime of 150ms, which is way too short for me.
# A Click that lasts <= ClickTime is considered a `Click` in functions,
# > ClickTime is a `Hold`.
#################
ClickTime 550
#####
# Use 9 pages per desktop, arranged in a square, like this:
#
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
#
#################
DeskTopSize 2x2
### Cursor styles
## Syntax reminder:
## CursorStyle context [number|name|xpm|None|Tiny [fore back]]
## See MANPAGE for contexts; number/name is as defined by X,
## or no cursor, one pixel cursor; foreground/background colors
# Use an arrow rather than the `X` cursor on the root window.
#CursorStyle root top_left_arrow
#CursorStyle ROOT x_cursor black white
CursorStyle RIGHT_EDGE right_ptr black white
CursorStyle MENU left_ptr black white
CursorStyle TITLE left_ptr black white
CursorStyle DEFAULT left_ptr black white
CursorStyle SYS left_ptr black white
CursorStyle WAIT watch black white
CursorStyle RESIZE sizing black "#5477A0"
CursorStyle MOVE fleur yellow black
CursorStyle SELECT left_ptr black white
CursorStyle POSITION x_cursor black white
CursorStyle TOP top_side red black
CursorStyle RIGHT right_side red black
CursorStyle BOTTOM bottom_side red black
CursorStyle LEFT left_side red black
CursorStyle TOP_LEFT top_left_corner red black
CursorStyle TOP_RIGHT top_right_corner red black
CursorStyle BOTTOM_LEFT bottom_left_corner red black
CursorStyle BOTTOM_RIGHT bottom_right_corner red black
## Display a busy cursor during execution of commands
BusyCursor * true
#####
# OpaqueMoveSize allows you to stop Large windows from being moved opaquely,
# I like the effect, and have Cycles to burn, so all windows can use it.
#
# 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 3
######
# Ksh has my favourite shell syntax, so use it if it exists.
#################
#Test (f /bin/ksh) ExecUseShell /bin/ksh
######
# Menu Settings.
#
# * PopupOffset allows you to control where submenus will appear, and
# whether they should overlap or not.
# * This menu uses a translucent Colorset, and Hilighted items are light
# blue with a single pixel border.
# * The Menu will look flat, with a 2 pixel border.
# * I changed the default ItemFormat to be a little more spacious.
#
# AutomaticHotKeys generates your HotKeys (Keys you can press when a menu opens to
# jump straight to an item) for you, you can write your own also, or disable them.
# I've gone off HotKeys recently, so it's disabled for now.
#################
#Colorset 0 fg black, bg grey, sh lightgrey, hi black, Translucent #c6cfce 90
Colorset 0 fg black, bg #c6c3c6, Tint #efebef 65
Colorset 1 fg black, bg #9cb2ce, hi #dcdcdc, sh #dcdcdc
MenuStyle * Hilight3DThin, PopupOffset -2 100
##MenuStyle * Font "Shadow=1 1 SE:xft:Bitstream Vera Sans Mono:style=Roman:size=11"
#MenuStyle * Font "xft:Bitstream Vera Sans Mono:style=Roman:size=12"
MenuStyle * Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-14-*-*-*-*-*-*-*"
#MenuStyle * Font "-sim-nsimsun-medium-r-normal-*-12-0-0-0-c-0-*-*"
#MenuStyle * Font "Shadow=1 1 SE:-microsoft-georgia-medium-r-*-*-12-*-*-*-*-*-*-*"
MenuStyle * MenuColorset 10, HilightBack, ActiveColorset 1
MenuStyle * BorderWidth 2, HandleWidth 2, TitleUnderlines1, SeparatorsLong, TrianglesSolid, Animation
MenuStyle * ItemFormat "%.2|%.5i%.5l%.5i%2.3>%2|"
MenuStyle * AutomaticHotKeys
######
# Use colormaps according to Focus, rather than where the Mouse is.
#################
ColormapFocus FollowsFocus
######
# Default window Styles.
#
# I like single pixel borders, which look cleaner and simpler that the default 3d borders.
#
# It can be a little tricky to grab the handles, but I usually use a Key Binding for that
# anyway, you can always make the handles stick out a bit more if you use them more than I do.
#
# SloppyFocus is the one true Focus policy :) (focus follows mouse, except on root)
#
# If I click in a window, I like it to be raised.
#
# GrabFocus is terrible, windows are always stealing focus and keystrokes end up in the wrong
# windows and you lose your train of thought, etc. So turn it off here, and back on for windows
# that play nice with it.
#
# Set up an IconBox (an area that Windows jump to by default when Iconified) in the bottom left
#
# Syntax Reminder:
#
# IconBox [screen scr-spec] l t r b
#
# Fvwm offers several placement policies, which decide where new windows should appear, I've
# found that SmartPlacement makes a decent guess at where the windows should be, but there are
# plenty more to choose from.
#################
#Style * Font "xft:Bitstream Vera Sans Mono:style=Roman:size=11"
#Style * Font "xft:Aquafont:size=11", BorderWidth 1, HandleWidth 1
Style * Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
#Style * Color #f6f6f6/black, HilightBack black, HilightFore white
Style * BorderWidth 2, HandleWidth 2
Style * MWMFunctions, MWMDecor, HintOverride, DecorateTransient, NoPPosition
#Style * IconBox 20 100 100 -15, SloppyFocus, MouseFocusClickRaises
Style * IconBox 20 100 100 -15, ClickToFocus, ClickToFocusPassesClick
Style * SmartPlacement, WindowShadeSteps 0, ResizeOpaque
Style * Button 1, Button 2, Button 4, Button 6, GrabFocusOff
Style * NoIconTitle
# Comment out these lines if you don't like Icons to have Titles.
Colorset 11 fg black, bg white, NoShape, RootTransparent Buffer
Style * IconTitle, IconTitleColorset 11, HilightIconTitleColorset 11, IconTitleRelief 0
#Style * IconFont "xft:Aquafont:size=11", IndexedIconName
Style * IndexedIconName
Style * IconFont "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-13-*-*-*-*-*-*-*"
# This is another nice Placement Policy, which tries to avoid obscuring existing windows,
# you can set penalties on certain window types so some are less likely to be obscured than
# others. Check the manpage for even more Placement Policies.
Style * MinOverlapPercentPlacement
Style * MinOverlapPercentPlacementPenalties 2 5 1 2 0.5 50
#BorderStyle Active Solid black -- NoInset HiddenHandles
#BorderStyle Inactive Solid black -- NoInset HiddenHandles
#####
# Application specific Style settings
#
# You might be interested in the IconOverride style, which will allow you to specify
# an Icon for an application even if it has set its own previously, This can be very
# useful for applications that insist on setting their own icons even if it doesnt
# fit in with your theme :)
#################
Style * FocusFollowsMouse
# StippledTitle
# draw horizontal lines in Title, not so good
Style * Icon me.png, MiniIcon me_mini.png
Style FvwmPager NoTitle, Sticky, WindowListSkip, CirculateSkipIcon, CirculateSkip
Style FvwmPager StaysOnTop, NoHandles, BorderWidth 1
Style FvwmPager BackColor SteelBlue3
Style FvwmBanner NoTitle
#Style FvwmButtons NoTitle, StaysOnBottom, Sticky, WindowListSkip, CirculateSkipIcon, CirculateSkip
#Style FvwmButtons HandleWidth 2, NeverFocus, Layer 1
Style FvwmTaskBar NoTitle, WindowListSkip, CirculateSkip, Sticky, BorderWidth 0, HandleWidth 0, NoHandles, StaysOnTop, NeverFocus
Style FvwmIconMan NoTitle, Sticky, WindowListSkip, CirculateSkipIcon, CirculateSkip
Style FvwmIconMan HandleWidth 0, BorderWidth 0
Style "Fvwm*" Icon fvwm2.xpm
# Use xprop | grep CLASS then click on window to identify the window class
# for example, if you want to set style for emacs, however you do not know
# how the wm names it, then you can use "xprop | grep CLASS" and select a
# running emacs, you'll get its class name as
# WM_CLASS(STRING) = "emacs", "Emacs"
# That is to say, you can write either
# Style emacs .....
# or
# Style Emacs .....
# to point to the emacs editor.
#
Style crxvt* MiniIcon terminal.xpm, Icon terminals_section.png
Style xcalc ClickToFocus
Style xman ClickToFocus, MiniIcon help.xpm
Style xmag ClickToFocus, MiniIcon viewer.xpm
Style XVroot GrabFocus
#Style grun MiniIcon gears.png
Style FvwmIdent MiniIcon label_tag_version.png
Style Calculator MiniIcon calculator.xpm
Style rdesktop Icon vmware.xpm
Style xmessage NoTitle, NoHandles, MiniIcon message.xpm
#Style xchat-2 ClickToFocus
#Style rxvt Icon sshMonitor.xpm, MiniIcon terminal.png, WindowShadeShrinks, BorderWidth 3
Style rxvt Icon me.png, MiniIcon terminal.png, WindowShadeShrinks, BorderWidth 3
#Style Mulberry MiniIcon mail.png
#Style Message MiniIcon person_face_talking.png
#Style VMware MiniIcon hardware_computers.png
#Style SDL_App EWMHMiniIconOverride, MiniIcon games_jesters-cap.png
#Style XDosEmu EWMHMiniIconOverride, MiniIcon games_jesters-cap.png
Style FvwmScript-Quit MiniIcon quit.xpm
Style __messages_root Sticky, WindowListSkip, NoTitle
Style __messages_root BorderWidth 0, StaysOnBottom, NoHandles, NeverFocus
#Style nautilus EWMHMiniIconOverride, Icon Folder.xpm
#Style abiword EWMHMiniIconOverride, MiniIcon document_letter_word-processor.png
#Style grip EWMHMiniIconOverride, MiniIcon hardware_audio_cd.png
Style xv Icon xv.xpm
Style emacs MiniIcon emacs_mini.png, Icon emacs.png
Style "Firefox-bin" Icon firefox.png, IconOverride
Style "Mozilla-thunderbird-bin" Icon thunderbird.png,IconOverride
#Style putty Icon large/gnutella.png, MiniIcon gnutella.png
Style putty Icon network.png, MiniIcon gnutella.png
Style mutt Icon mutt/mutt3.xpm, MiniIcon mutt/mutt2.png
Style xmms MiniIcon audio_xmms.xpm, StartsOnDesk 3
Style gnome-terminal BorderWidth 2, HandleWidth 2, Icon
Style qterm Icon qterm.png, IconOverride
# AutoHiding Console
Style HiddenConsole Sticky, WindowListSkip, Notitle, StaysOnTop, NoHandles
Style HiddenConsole WindowShadeSteps 100
# Start Menu
# use NeverFocus to avoid being Iconify StaysOnTop
Style MyStartMenu NeverFocus, Sticky, NoTitle, WindowListSkip, CirculateHit, BorderWidth 0, NoHandles
Style NavButtons NeverFocus, Sticky, NoTitle, WindowListSkip, CirculateSkipIcon, CirculateSkip, BorderWidth 0, HandleWidth 0, StaysOnTop
#####
# Miscellaneous Module Settings.
#################
########################## FvwmIdent is an xwininfo replacement.
DestroyModuleConfig FvwmIdent: *
*FvwmIdent: Back MidnightBlue
*FvwmIdent: Fore #f6f6f6
#*FvwmIdent: Font "xft:snap"
*FvwmIdent: Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
############################# FvwmScroll swallows applications into smaller containers.
DestroyModuleConfig FvwmScroll: *
*FvwmScroll: Back #f6f6f6
*FvwmScroll: Fore #f6f6f6
############################# FvwmEvent can bind Commands to Events
DestroyModuleConfig FvwmEvent: *
############################# FvwmAnimate
# You could also use Frame, Lines, Flip, Turn, Twist, Random and None.
DestroyModuleConfig FvwmAnimate: *
*FvwmAnimate: Effect Random
*FvwmAnimate: Delay 25
*FvwmAnimate: Color SteelBlue4
############################# FvwmProxy
# Hit Alt+Esc to toggle FvwmProxy, which allows you to see all windows on your
# desktop, even if they've been obscured..really cool.
DestroyModuleConfig FvwmProxy: *
#*FvwmProxy: Font "xft:snap"
*FvwmProxy: Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmProxy: ProxyMove true
Key Escape A M SendToModule FvwmProxy ShowToggle
############################# FvwmWinList
*FvwmWinList: Back DarkOliveGreen
*FvwmWinList: Fore PaleGoldenRod
*FvwmWinList: Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmWinList: Action Click1 Function DeiconifyAndRaise
*FvwmWinList: Action Click2 Iconify
*FvwmWinList: Action Click3 Module FvwmIdent
*FvwmWinList: UseSkipList
*FvwmWinList: UseIconNames
#*FvwmWinList: Geometry -50-85
*FvwmWinList: MinWidth 70
*FvwmWinList: MaxWidth 120
# I prefer the text centered
#*FvwmWinList: LeftJustify
# I like it anchored
*FvwmWinList: NoAnchor
# A flat list in most recently focused order
*FvwmWinList: FollowWindowList
*FvwmWinList: ShowAllDesk
#*FvwmWinList: BorderReliefWidth 0
# pretend to be a taskbar
*FvwmWinList: NoIconAction SendToModule FvwmAnimate animate
######################### WindowList menu style
# To get rid of SelectOnRelease use
MenuStyle WindowList SelectOnRelease none
MenuStyle WindowList SelectOnRelease Meta_L
MenuStyle WindowList SelectOnRelease Alt_L
MenuStyle WindowList Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
MenuStyle WindowList DoubleClickTime 200
MenuStyle WindowList Hilight3DThin
#####
# Mouse bindings.
#################
# Syntax Reminder:
# Mouse Button Context Modifiers Function
Mouse 1 R A Menu MenuFvwmRoot
Mouse 4 R A Menu MenuFvwmRoot
Mouse 5 R A Menu MenuFvwmRoot
Mouse 2 R A WindowList
Mouse 0 1 A Menu MenuFvwmWindowOps Nop
Mouse 0 2 A DestroyOnHold
Mouse 0 6 A Thumbnail
Mouse 0 4 A My-Maximize
Mouse 2 T A My-Maximize
Mouse 3 I A My-Iconify
Mouse 3 T A Iconify
Mouse 2 TI C Close
Mouse 4 T A WheelToggleShade True
Mouse 5 T A WheelToggleShade False
Mouse 1 FS A Resize-or-Raise
Mouse 1 T A Move-or-Raise
Mouse 1 I A Move-or-Iconify
#Mouse 3 TSIF A RaiseLower
Mouse 3 W M Menu Window-Ops Nop
Mouse 2 W C Resize-or-Raise
Mouse 1 W M Move-or-Raise
# Reserved for Mouse Gestures (See below)
#Mouse 3 R A -
#####
# Key bindings.
#################
Key Menu A N Popup MenuFvwmRoot Root c c
#Key Menu A C press_fvwmbuttons 0 50 50
#Key F4 A C press_fvwmbuttons 1 10 10
Key F1 A 3 Exec exec crxvt-gb -title '.: c r x v t :.'
Key F2 A 3 Exec exec firefox
Key F3 A 3 Module FvwmConsole -terminal xterm -bg DodgerBlue4 -fg yellow2
#Key F4 A 3 Module FvwmScript FvwmScript-Quit
Key F4 A 3 Quit
Key F5 A 3 Restart
Key F6 A 3 Exec exec gvim
Key F7 A 3 Exec exec emacs
Key F8 A 3 Exec exec xmms
Key F9 A 3 Exec exec stardict
Key F10 A 3 Exec exec gaim
Key F11 A 3 Exec exec putty
Key F12 A 4 Exec exec mozilla-thunderbird
Key F12 A 3 Exec exec crxvt-gb -geometry 100x40+0+0 -e mutt
# we can use ImageMagick's import to capture the screen
#Key F13 A M Exec exec import
Key Menu A 4 Get-FvwmIconMan
Key F1 A 4 Exec exec crxvt-gb -tr -title '.: c r x v t :.'
Key F2 A 4 Exec exec grun
Key Q A 3 Exec exec qterm
Key R A 3 Exec exec rox
Key L A 4 Exec exec xscreensaver-command -lock
Key G A 3 Exec exec gnome-terminal
Key N A 3 Exec exec nautilus --no-desktop
Key P A 3 Exec exec pyshell
Key M A 3 My-Maximize
Key I A 3 Iconify
Key X A 3 Pick Close
Key X A 4 Pick Destroy
Key T A 3 All (AcceptsFocus CurrentPage !Iconic !Shaded) Thumbnail
Key D A 3 All (AcceptsFocus CurrentPage !Iconic !Shaded) Iconify
Key Print A N Exec exec scrot --quality 100
Key Print A 3 Exec exec scrot -s --quality 100
Key 1 A 3 GoToDesk 0 0
Key 2 A 3 GoToDesk 0 1
Key 3 A 3 GoToDesk 0 2
Key 4 A 3 GoToDesk 0 3
# Change our viewpoint to another page
Key Left A M3 GotoPage -1p 0p
Key H A M3 GotoPage -1p 0p
Key Right A M3 GotoPage +1p 0p
Key L A M3 GotoPage +1p 0p
Key Up A M3 GotoPage 0p -1p
Key K A M3 GotoPage 0p -1p
Key Down A M3 GotoPage 0p +1p
Key J A M3 GotoPage 0p +1p
# Move the current object in the current page
Key C A 3 CenterWindow Current
Key End A 3 CenterWIndow Current
Key End A C3 CenterWindow Current
Key Up WTSF C3 PackWrapperUp
Key K WTSF C3 PackWrapperUp
Key Down WTSF C3 PackWrapperDown
Key J WTSF C3 PackWrapperDown
Key Left WTSF C3 PackWrapperLeft
Key H WTSF C3 PackWrapperLeft
Key Right WTSF C3 PackWrapperRight
Key L WTSF C3 PackWrapperRight
Key Up WTSF 3 My-Move w0 w-2
Key K WTSF 3 My-Move w0 w-2
Key Down WTSF 3 My-Move w0 w5
Key J WTSF 3 My-Move w0 w5
Key Left WTSF 3 My-Move w-2 w0
Key H WTSF 3 My-Move w-2 w0
Key Right WTSF 3 My-Move w2 w0
Key L WTSF 3 My-Move w2 w0
# Move the current object to another page
Key Left A CM3 MovetoPage -1p 0p
Key H A CM3 MovetoPage -1p 0p
Key Right A CM3 MovetoPage +1p 0p
Key L A CM3 MovetoPage +1p 0p
Key Up A CM3 MovetoPage 0p -1p
Key K A CM3 MovetoPage 0p -1p
Key Down A CM3 MovetoPage 0p +1p
Key J A CM3 MovetoPage 0p +1p
# Resize the window by kbd, anyhow not so good
Key Z A 3 Resize Direction SE warptoborder
Key End A S3 ResizeCenter br w+4 w+4
Key Home A S3 ResizeCenter br w-4 w-4
Key Left A S3 ResizeCenter br w-2 keep
Key H A S3 ResizeCenter br w-2 keep
Key Right A S3 ResizeCenter br w+2 keep
Key L A S3 ResizeCenter br w+2 keep
Key Up A S3 ResizeCenter br keep w-2
Key K A S3 ResizeCenter br keep w-2
Key Down A S3 ResizeCenter br keep w+2
Key J A S3 ResizeCenter br keep w+2
# Save alt-tab for emacs, we can use M-ESC the FvwmProxy to cycle windows
# If you like M-Tab to cycle the windows list, you can use ESC-TAB in Emacs instead.
# That's my choice.
#Key Tab A M -
####
# Mouse Gestures.
#
# Syntax reminder:
#
# 1 2 3
#
# 4 5 6
#
# 7 8 9
#
# Stroke Sequence Button Context Modifiers Function
#
# I use mouse gestures in Opera and Mozilla, so I've duplicated some common ones here.
#
# To try these out, hold down the Left mouse button and trace the pattern on the Root
# Window, the sequence is a pattern on the grid above, so 14789 would be down then Right.
#################
####
# First, define a StrokeFunc.
#
# Without this, you would have to execute all of your gestures entirely on the Root
# Window, This lets you change the Context and have a few other Neat Features, such as
# DrawMotion, which will draw a line as you make your Gesture (Neat!).
#
# There is also EchoSequence, Feedback and NotStayPressed.
#
# Note: EchoSequence prints sequences to STDERR.
#################
Mouse 3 R A StrokeFunc DrawMotion FeedBack StrokeWidth 1
# 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
#####
# Quit
#
# Down, Then Right.
#
# Dont worry about running this gesture by accident,
# you will be asked to confirm
#################
Stroke N74123 0 R N Module FvwmForm FvwmForm-QuitVerify
Stroke N78963 0 R N All (AcceptsFocus CurrentPage !Iconic !Shaded) Iconify
####
# Up, Then Down: Close a window.
#
# Note that you can also enter the sequence as it appears on your
# Numeric Keypad, by preceding the sequence with an `N`.
#
# The FVWM developers think of everything :)
#################
Stroke N25852 0 R N Pick Destroy
# Start a Web Browser
Stroke N1478963 0 R N Exec exec firefox
# Make a new Sticky Note
#Stroke N1598753 0 R N Exec exec xpad
# Start a crxvt-gb
Stroke N9874123 0 R N Exec exec crxvt-gb
#####
# Fvwm executes StartFunction when Fvwm is initialized, and at restart.
# A Good place to start Modules.
#
# FvwmCommandS Allows you to run Fvwm Commands from a Terminal, like this:
# $ FvwmCommand 'Module FvwmBanner'
# Or any other Command.
#
# You can test for Initialization from within StartFunction, this is a good
# place to set the Background or start your favourite applications.
#################
AddToFunc StartFunction
#+ I Module FvwmCommandS
#+ I Module FvwmAnimate
#+ I Module FvwmEvent
#+ I Module FvwmProxy
+ I Module FvwmAuto FvwmAutohide -menter FuncAutoEnter
# interval on raising
+ I Module FvwmAuto 500
#+ I Module FvwmButtons MyStartMenu
+ I Module FvwmPager 0 3
+ I Module FvwmTaskBar
+ I Module FvwmIconMan
+ I Schedule 5000 PipeRead "echo SetEnv IconManId `xwininfo -name FvwmIconMan | grep xwininfo | cut -d' ' -f4`"
DestroyFunc InitFunction
AddToFunc InitFunction
#+ I Exec exec gnome-settings-daemon
#+ I Exec exec gnome-panel
#+ I Exec exec fbpanel
+ I Exec exec xsetroot -solid SteelBlue4
#+ I Read $./newdecors/aqua.decor
#+ I Test (Init) Exec exec fvwm-root --dither --retain-pixmap $[fvwm_wallpaper]
#+ I Test (Init) Exec exec rxvt -tr -title '__messages_root' -fn 'cure' -g 80x8+20+15 -fg grey -e mtail --remove-blanks -f /var/log/messages
#+ I Test (Init) StartHiddenConsole
+ I Test (Restart) All (Iconic) Test (f $[HOME]/.fvwm/icon.tmp.$[w.id].png) WindowStyle IconOverride, Icon $[HOME]/.fvwm/icon.tmp.$[w.id].png
#DestroyFunc RestartFunction
#AddToFunc RestartFunction
#####
# I Sometimes use xsm, but dont usually bother.
#################
#AddToFunc SessionInitFunction I Nop
#AddToFunc SessionRestartFunction I Nop
#####
# ExitFunction is executed when you ask Fvwm to Quit.
# Test (ToRestart) is true before a Restart.
#################
AddToFunc ExitFunction
+ I Test (!ToRestart) Exec exec rm -f $[HOME]/.fvwm/icon.tmp.*
#+ I Exec exec sync
#####
# Autohide console example: [4]http://dev.gentoo.org/~taviso/autohide_console.png
##################
#DestroyFunc StartHiddenConsole
#AddToFunc StartHiddenConsole
#+ I Exec exec crxvt-gb +sb -geometry 144x8+0+0 -name HiddenConsole
#+ I Wait HiddenConsole
#+ I Autohide HiddenConsole 250 0 N
#####
# Menu definitions
# Beep if theres a missing SubMenu to remind me to write it.
#################
DestroyMenu MenuFvwmRoot
AddToMenu MenuFvwmRoot *me.png* Title Top
+ MissingSubmenuFunction Beep
+ "%debian.png%Debian" Popup /Debian
+ "" Nop
+ %terminal-remote.xpm%"&Rxvt" Exec exec crxvt-gb -title '.: crxvt-gb :.'
#+ %terminal.xpm%"&Aterm" Exec exec aterm -title '.: a t e r m :.'
+ "" Nop
#+ %word-processor.xpm%"Office" Popup MenuOffice
#+ %network.xpm%"Internet" Popup MenuInternet
#+ %editor.xpm%"Editors" Popup MenuEditors
#+ %video.xpm%"Multimedia" Popup MenuMultimedia
+ %utility.xpm%"Utilities" Popup MenuUtilities
#+ %developement.xpm%"Development" Popup MenuDevel
#+ %game.xpm%"Games" Popup MenuGames
#+ %monitoring.xpm%"Logins" Popup Menulogins
+ "" Nop
+ %start.png%"&Run..." Exec exec grun
+ "" Nop
+ %terminal-special.xpm%"FvwmConsole" Module FvwmConsole -terminal rxvt
+ %system.xpm%"Preferences" Popup MenuFvwmConfig
+ %window.xpm%"Window Controls" Popup MenuFvwmWindowOps
+ "" Nop
#+ %choice-no.xpm%"&Xkill" Pick Destroy
#+ %refresh.xpm%"R&efresh" Refresh
+ %dillo.png%"Decors" Popup NewDecors
#+ %colors.xpm%"&Wallpaper" Popup WallpaperMenu
+ %themes.xpm%"&Themes" Popup ThemesMenu
+ %display.xpm%"&Screenshot" Exec exec scrot --quality 100
+ "" Nop
+ %lock.xpm%"&Lock Screen" Exec exec xscreensaver-command -lock
+ "" Nop
+ %quit.xpm%"Exit Fvwm" Popup MenuQuit-Verify
############# Menus
# I have made a patch to fvwm-theme to save wallpaper automatically,
# and load it next time. However, I can not browser the thumbnail,
# which I think would turn to be a night mare if there were too many
# wallpapers. Moreover, fvwm-wallpaper can not work recursively, that
# is to say, I have to put all wallpapers in the single ~/wallpaper
# directory, which is not a so good solution :)
#Read $[HOME]/.fvwm-wallpaper/menu
Colorset 7 fg black, bg white, NoShape, Tint #5a8ade 60
Colorset 8 fg black, bg white, NoShape, Tint #f6f6f6 20
# System Debian Menu
Read /etc/X11/fvwm/menudefs.hook
DestroyMenu MenuOffice
AddToMenu MenuOffice
+ %word-processor.xpm%"Word Processor" Exec exec oowriter
+ %acroread.xpm%"Acrobat Reader" Exec exec acroread
+ %xpdf.xpm%"Xpdf" Exec exec xpdf
+ %calculator.xpm%"Calculator" Exec exec xcalc
#+ %paper_pencil2.png%"Sticky Notes" Exec exec xpad
+ %xpaint.png%"Xpaint" Exec exec xpaint
DestroyMenu MenuInternet
AddToMenu MenuInternet
+ %gaim-menu.xpm%"Gaim" Exec exec gaim
#+ %news_newspaper.png%"News Reader"%ctl_alt_n.png% Exec exec pan
+ %chat.xpm%"Xchat" Exec exec xchat-2
#+ %network_view.png%"Network Analyser" Exec exec sudo ethereal
#+ %music_notes_view.png%"File Sharing" Exec exec giFToxic
#+ %mail.png%"E-Mail Client"%ctl_alt_m.png% Exec exec mulberry
+ "" Nop
+ %%"Firefox" Exec exec firefox
#+ %browser_ship-wheel.png%"Mozilla Firebird" Exec exec MozillaFirebird
#+ %hand_world_web-site.png%"Dillo Fast Web Browser" Exec exec dillo
DestroyMenu MenuEditors
AddToMenu MenuEditors
+ %vim.xpm%"gVim" Exec exec gvim -geom 115x46
+ %gnu.xpm%"Emacs" Exec exec emacs
#+ %mail_edit.png%"Gedit Editor" Exec exec gedit
+ %editor.xpm%"Xedit Editor" Exec exec xedit
DestroyMenu MenuMultimedia
AddToMenu MenuMultimedia
+ MissingSubmenuFunction FuncFvwmMenuDirectory
+ %xmms.xpm%"XMMS" Exec exec xmms
#+ %graphics_woman_panel.png%"Xv Graphics Viewer" Exec exec xv
+ %gqview.xpm%"gqview" Exec exec gqview
+ %gimp.xpm%"GIMP" Exec exec gimp
#+ %hardware_audio_cd.png%"Audio CD Player" Exec exec grip
+ %aumix.xpm%"Audio Mixer" Exec exec aumix
+ "" Nop
+ %hardware_video_camera_display.png%"Browse Videos" Popup $[fvwm_video_path]
+ %music_notes_view.png%"Browse Music" Popup $[fvwm_audio_path]
+ %graphics_presentation_person.png%"Browse Images" Popup $[fvwm_image_path]
DestroyMenu MenuUtilities
AddToMenu MenuUtilities
#+ %folder_view.png%"Nautilus File Manager" Exec exec nautilus --no-desktop
#+ %hardware_computers.png%"VMware Workstation" Exec exec vmware
#+ %document_graph.png%"3D File System Explorer" Exec exec fsv
+ %viewer.xpm%"Magnifying Glass" Exec exec xmag
+ %window.png%"Window Information" Exec exec xmessage "`xwininfo`"
+ %gears.png%"Process Information" Exec exec crxvt-gb -title '.: t o p :.' -tr -e top
+ "" Nop
+ %graphics_convert_polaroid.png%"Expose Page" FvwmExpose
+ %desk_desktop.png%"Show Desktop" All (AcceptsFocus CurrentPage !Iconic !Shaded) Thumbnail
DestroyMenu MenuDevel
AddToMenu MenuDevel
#+ %html_edit.png%"Bluefish Html Editor" Exec exec bluefish
#+ %widget_buttons.png%"Anjuta Development Environment" Exec exec anjuta
+ %gnu.xpm%"Emacs" Exec exec emacs
+ %item.xpm%"Graphical Debugger" Exec exec ddd
DestroyMenu MenuGames
AddToMenu MenuGames
+ MissingSubmenuFunction FuncFvwmMenuDirectory
#+ %games_jesters-cap.png%"MAME Arcade Emulator" Exec exec gxmame
#+ %games_shooters_target.png%"Super Nintendo Emulator" Exec exec zsnes
#+ %games_roleplaying_muds_people.png%"Nethack Adventure Game" Exec exec nethack
#+ %games_jesters-cap.png%"MS-DOS Emulator" Exec exec xdosemu
#+ "" Nop
#+ %plane.png%"Browse Super Nintendo Games" Popup $[fvwm_rom_path]
#####
# I start fvwm from my ~/.xinitrc like this:
# exec ssh-agent fvwm2
# So if i select "Add Agent Identity" from this menu, it adds my default ssh key to ssh-agent.
#################
DestroyMenu MenuLogins
AddToMenu MenuLogins
#+ %telephone_out.png%"SDF Public Access UNIX System"%ctl_alt_s.png% Exec exec aterm -g \
# 102x42 -title '.: s d f :.' -e ssh tty.freeshell.org
#+ %computer_network.png%"Gentoo Linux Dev Server" Exec exec aterm -g \
# 102x42 -title '.: t e r m i n a l :.' -e ssh dev.gentoo.org
#+ %key2.png%"Add Agent Identity" Exec ssh-add < /dev/null || ( test -x /usr/lib/misc/ssh-askpass || xmessage "Please install net-misc/x11-ssh-askpass." )
#+ "" Nop
#+ %computer_x11.png%"Large Terminal Emulator" Exec exec aterm -g 102x42 -title '.: t e r m i n a l :.'
#+ %computer_x11.png%"Mini Terminal Emulator" Exec exec rxvt -g 63x8 -title '.: m i n i t e r m :.' -e sh
#####
# You can browse directories and files with the fvwm-menu-directory
# script included with Fvwm, its very configurable (as you might expect!),
# and very useful.
#
# [5]%40hpc.uh.edu/msg05260.html
#################
DestroyFunc FuncFvwmMenuDirectory
AddToFunc FuncFvwmMenuDirectory
+ I PipeRead 'case $0 in \
$[fvwm_rom_path]*) myexec=$[fvwm_rom_exec] mypng=games_puzzles_dice.png;; \
$[fvwm_video_path]*) myexec=$[fvwm_video_exec] mypng=film.png;; \
$[fvwm_audio_path]*) myexec=$[fvwm_audio_exec] mypng=audio.png;; \
$[fvwm_image_path]*) myexec=$[fvwm_image_exec] mypng=graphics_presentation_person.png;; \
esac; \
fvwm-menu-directory --icon-title folder_view.png --icon-file ${mypng:-file_text_view.png} \
--icon-dir folder_paper_closed.png --dir $0 --xterm exec --exec-file ${myexec:-gvim}'
DestroyMenu MenuQuit-Verify
AddToMenu MenuQuit-Verify
+ "Quit Fvwm Now" Quit
+ "Restart Fvwm..." Restart
+ "" Nop
+ "Restart twm" Restart twm
+ "Restart xterm" Restart xterm
+ "" Nop
+ "Cancel" Nop
DestroyMenu MenuFvwmConfig
AddToMenu MenuFvwmConfig
+ "Colour Browser" Exec exec xcolors
+ "Colour Picker" Exec exec xcolorsel
+ "Edit fvwm2rc" Exec exec gvim -geom 115x46 ~/.fvwm/.fvwm2rc
+ "" Nop
+ "Fvwm Modules" Popup MenuFvwmModules
+ "" Nop
+ "Configure FvwmForm..." Module FvwmForm FvwmForm-Form
+ "Configure Cursor..." Module FvwmForm FvwmForm-RootCursor
+ "Configure Screensaver..." Exec exec xscreensaver-demo
+ "Configure Mouse..." Module FvwmScript FvwmScript-PointerSetup
+ "Configure Keyboard..." Module FvwmScript FvwmScript-KeyboardSetup
+ "Configure Bell..." Module FvwmScript FvwmScript-BellSetup
+ "General Settings..." Module FvwmScript FvwmScript-BaseConfig
DestroyFunc SwitchDecor
AddToFunc SwitchDecor
+ I Style * IconTitleColorset
+ I Style * HilightIconTitleColorset
+ I Style * IconBackgroundColorset
+ I Read $./newdecors/$0
DestroyMenu NewDecors
AddToMenu NewDecors "Decors" Title
+ "ABC" Function SwitchDecor abc.decor
+ "Apple Aqua" Function SwitchDecor aqua.decor
+ "BlueGray" Function SwitchDecor bluegray.decor
+ "Blue Wing" Function SwitchDecor blue_wing.decor
+ "Celtic" Function SwitchDecor celtic.decor
+ "Default" Function SwitchDecor default.decor
+ "Emerald" Function SwitchDecor emerald.decor
+ "Glass" Function SwitchDecor glass.decor
+ "Gold Leaf" Function SwitchDecor goldleaf.decor
+ "Leather" Function SwitchDecor leather.decor
+ "Marble" Function SwitchDecor marble.decor
+ "Metal" Function SwitchDecor metal.decor
+ "MWM" Function PlainDecor #cdc7b8 #97715a
+ "Pink Pearl" Function SwitchDecor pinkpearl.decor
+ "Purple and Silver" Function SwitchDecor purpsilver.decor
+ "Rainbow" Function SwitchDecor rainbow.decor
+ "Red and Gold" Function SwitchDecor redgold.decor
+ "Silver" Function SwitchDecor silver.decor
+ "Simple" Function SwitchDecor simple.decor
+ "Springtime" Function SwitchDecor springtime.decor
+ "Starry" Function SwitchDecor starry.decor
+ "Stone Age" Function SwitchDecor stoneage.decor
+ "Water" Function SwitchDecor water.decor
+ "Wine" Function SwitchDecor wine.decor
+ "Wood" Function SwitchDecor wood.decor
+ "Plain Decors" Popup Fractal-Decors
DestroyMenu Fractal-Decors
AddToMenu Fractal-Decors "Fractal Decors" Title
+ "Circled Vine" Function PlainDecor #847383 #403b5b
+ "Fanar" Function PlainDecor #cdc7b8 #97715a
+ "Old Lace" Function PlainDecor #b197a2 #f7eecf
+ "Startdust" Function PlainDecor #8c95b4 #3d3571
+ "Sunset Flowers" Function PlainDecor #8a9a8f #3b3d4a
+ "Swimming" Function PlainDecor #a08895 #684f62
+ "Twist of Fate" Function PlainDecor #938988 #364147
DestroyFunc PlainDecor
AddToFunc PlainDecor
+ I Colorset 0 fg $0, bg $1, TiledPixmap, Pixmap
+ I Colorset 1 fg $1, bg $0, TiledPixmap, Pixmap
+ I Style * IconTitleColorset
+ I Style * IconBackgroundColorset
+ I Style * HilightIconTitleColorset
+ I Read $./plain.decor
#####
# `Pick` is very handy, if it's obvious which window you're talking about,
# The command is executed immediately within the context of that window.
#
# If it isnt obvious, for example, you select `Move` from the Root menu, the
# cursor becomes a crosshair, and you can select the window you you would like
# to apply the command to by clicking it.
#
# This saves a lot of work, you can use `Pick` with everything that might be
# Called without context and only write one function/menu instead of two.
#################
DestroyMenu FvwmMoveMethods
AddToMenu FvwmMoveMethods
+ "Move to Top" Pick AnimatedMove keep 0p
+ "Move to Left" Pick AnimatedMove 0p keep
+ "Move to Right" Pick PipeRead \
"echo AnimatedMove `expr $[vp.width] - $[w.width]`p keep"
+ "Move to Bottom" Pick PipeRead \
"echo AnimatedMove keep `expr $[vp.height] - $[w.height]`p"
+ "" Nop
+ "Center Window" Pick PipeRead \
"echo AnimatedMove `expr \\( $[vp.width] - $[w.width] \\) / 2`p \
`expr \\( $[vp.height] - $[w.height] \\) / 2`p"
+ "" Nop
+ "Pack Up" Pick PackWrapperUp
+ "Pack Left" Pick PackWrapperLeft
+ "Pack right" Pick PackWrapperRight
+ "Pack down" Pick PackWrapperDown
+ "" Nop
+ "Move To Page" Popup MenuPageList
+ "" Nop
+ "Interactive Move" Pick Move
DestroyMenu MenuPageList
AddToMenu MenuPageList
+ "1" Pick MoveToPage 0 0
+ "2" Pick MoveToPage 1 0
+ "3" Pick MoveToPage 2 0
+ "4" Pick MoveToPage 0 1
+ "5" Pick MoveToPage 1 1
+ "6" Pick MoveToPage 2 1
+ "7" Pick MoveToPage 0 2
+ "8" Pick MoveToPage 1 2
+ "9" Pick MoveToPage 2 2
#####
# WindowOps, Main window controls menu.
#################
DestroyMenu MenuFvwmWindowOps
AddToMenu MenuFvwmWindowOps
+ "Raise/Lower" Pick RaiseLower
+ "Iconify" Pick Iconify
+ "Maxmimise" Pick Maximize
+ "Resize" Pick Resize
+ "Thumbnail " Pick Thumbnail
+ "Move" Popup FvwmMoveMethods
+ "Shade" Pick WindowShade Toggle
+ "" Nop
+ "Stick" Pick Stick
+ "Scroll" Pick Module FvwmScroll
+ "Refresh" Pick RefreshWindow
+ "" Nop
+ "Identify" Pick Module FvwmIdent
+ "Zoom" Pick Exec exec xmag -source $[w.width]x$[w.height]+$[w.x]+$[w.y] -mag 2
+ "" Nop
+ "Close" Pick Close
+ "Destroy" Pick Destroy
DestroyMenu MenuFvwmModules
AddToMenu MenuFvwmModules
+ "Animation " Module FvwmAnimate
+ "Button-Bar " Module FvwmButtons
+ "Identify " Module FvwmIdent
+ "IconMan " Module FvwmIconMan
+ "Banner " Module FvwmBanner
+ "Console " Module FvwmConsole -terminal rxvt
+ "Pager " Module FvwmPager 0 3
+ "Backer " Module FvwmBacker
+ "ScrollBar " Module FvwmScroll 50 50
+ "FvwmTaskBar " Module FvwmTaskBar
+ "AutoRaise " Module FvwmAuto 200 Raise Nop
+ "WinList " Module FvwmWinList
+ "" Nop
+ "Stop Module " Popup MenuFvwmStopModule
DestroyMenu MenuFvwmStopModule
AddToMenu MenuFvwmStopModule
+ "Stop Button-Bar " KillModule FvwmButtons
+ "Stop IconMan " KillModule FvwmIconMan
+ "Stop Pager " KillModule FvwmPager
+ "Stop Backer " KillModule FvwmBacker
+ "Stop ScrollBar " KillModule FvwmScroll
+ "Stop FvwmTaskBar " KillModule FvwmTaskBar
+ "Stop AutoRaise " KillModule FvwmAuto
+ "Stop WinList " KillModule FvwmWinList
#####
# Name: FuncFvwmFocusPolicyChange
# Bound: MenuFvwmConfig, Focus Policy Changes.
# Purpose: Start using a new Focus Policy.
#
#################
DestroyFunc FuncFvwmFocusPolicyChange
AddToFunc FuncFvwmFocusPolicyChange
+ I Style * $0
+ I Recapture
#####
# Name: PackWindowUp
# Bound: Alt+Shift+Up When a window is active
# Purpose: Interrogate all windows on the current page, find the window with an edge
# closest to active window, and slide the Active window upto that edge, or
# the Page edge, if no window is in the way.
#
# The Wrappers are required to look after the Context while we're testing
# windows. Could also do it with a load of variables, but this is nicer.
#
# See PackWindowLeft for a description of the logic (i know it looks a little
# cryptic).
#
# Sometimes terminals seem to need WindowRefresh, but 99% of the time it just
# works, it creates a little flicker so I'll leave it out until it starts to bug
# me.
#
# Windows are also Raised, you can disable this.
#
#################
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] preshWindow
AddToFunc PackWrapperUp
+ I SetEnv THIS_WIN $[w.id]
+ I NoWindow PackWindowUp $[w.y] $[w.x] $[w.width] $[w.id]
+ I WindowId $[THIS_WIN] WarpToWindow 50 50
#####
# 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 SetEnv THIS_WIN $[w.id]
+ I NoWindow PackWindowDown $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]
+ I WindowId $[THIS_WIN] WarpToWindow 50 50
#####
# 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 SetEnv THIS_WIN $[w.id]
+ I NoWindow PackWindowLeft $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]
+ I WindowId $[THIS_WIN] WarpToWindow 50 50
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 SetEnv THIS_WIN $[w.id]
+ I NoWindow PackWindowRight $[w.y] $[w.x] $[w.width] $[w.id] $[w.height]
+ I WindowId $[THIS_WIN] WarpToWindow 50 50
DestroyFunc CenterWindow
AddToFunc CenterWindow
+ I SetEnv THIS_WIN $[w.id]
+ I ThisWindow Piperead "echo Move \
$(( $[vp.width]/2-$[w.width]/2 ))p \
$(( $[vp.height]/2-$[w.height]/2 ))p"
+ I WindowId $[THIS_WIN] WarpToWindow 50 50
DestroyFunc ResizeCenter
AddToFunc ResizeCenter
+ I WarpToWindow 50 50
+ I Resize $0 $1 $2
#+ I CenterWindow
#####
# Name: WheelToggleShade
# Bound: Mouse Buttons 4 and 5 (wheel up and down) on Titlebars
# Purpose: Shade or unshade the window when the Mouse wheel is rolled up or
# down on the Titlebar. Rolling the Wheel up calls the Function with
# argument `True` and rolling it down uses `False`, so rolling the wheel
# down when the window isnt shaded has no effect, which I like :)
#
#################
DestroyFunc WheelToggleShade
AddToFunc WheelToggleShade D WindowShade $0
#####
# Name: DestroyOnHold
# Bound: Titlebar Button 2 (X)
# Purpose: When clicked, Raise the window Immediately.
# If the button is pressed and released, Close the Window. If it is pressed
# and held, Destroy it, and issue a Beep to confirm.
#
# There is a 100ms delay before issuing `Close` so I have a chance to see the
# animation when the button changes from ActiveDown to ActiveUp :).
#
#################
DestroyFunc DestroyOnHold
AddToFunc DestroyOnHold I Raise
+ C Schedule 100 Close
+ H Destroy
+ H Beep
#####
# Name: Thumbnail
# Purpose: Iconify a window with a reduced screenshot of the application
# Window, looks really cool.
#
# Uses FvwmEvent to remove the Icon when deiconified, you will want
# to remove this if you use WindowStyle elsewhere.
#
# Thumbnailing example: [6]http://dev.gentoo.org/~taviso/step2.png
#
##################
DestroyFunc Thumbnail
AddToFunc Thumbnail
+ I Raise
+ I PipeRead "xwd -silent -id $[w.id] | convert -scale $[fvwm_icon_size] -frame 1x1 \
-mattecolor black -quality 0 xwd:- png:$[HOME]/.fvwm/icon.tmp.$[w.id].png \
&& echo WindowStyle IconOverride, Icon $[HOME]/.fvwm/icon.tmp.$[w.id].png, StaysOnBottom \
|| echo Nop"
+ I Iconify
DestroyFunc DeThumbnail
AddToFunc DeThumbnail
+ I DestroyWindowStyle
+ I Exec exec rm -f $HOME/.fvwm/icon.tmp.$[w.id].png
# FIXME: This will destroy all Windowstyle settings.
#*FvwmEvent: deiconify DeThumbnail
# FIXME: Make this more useful.
# XXX: This doesnt do much yet, you can play with it if you like.
# Example: [7]http://dev.gentoo.org/~taviso/fvwm_expose.png
DestroyFunc FvwmExpose
AddToFunc FvwmExpose
+ I AddToMenu FvwmExposeMenu ".: e x p o s e :." Title
+ I All (!Iconic !Shaded CurrentPage AcceptsFocus)\
PipeRead "echo Raise; \
xwd -silent -id $[w.id] | convert -scale 128 -frame 1x1 \
-mattecolor white -quality 0 xwd:- \
png:$[HOME]/.fvwm/icon.exp.$[w.id].png \
&& echo AddToMenu FvwmExposeMenu \
%$[HOME]/.fvwm/icon.exp.$[w.id].png%\\\'\"$[w.name]\" WindowID $[w.id] WarpToWindow 50 50 \
&& echo AddToMenu FvwmExposeMenu " Nop \
|| Nop"
+ I Popup FvwmExposeMenu
+ I DestroyMenu FvwmExposeMenu
+ I Exec exec rm -f $[HOME]/.fvwm/icon.exp.*
AddToFunc WindowListFunc I WarpToWindow 50 50
DestroyFunc FuncAutoEnter
AddToFunc FuncAutoEnter
#+ I Autohide HiddenConsole 250 500 N
#+ I Autohide MyStartMenu 50 4000 N
+ I Autohide FvwmPager 50 50 N
#+ I Autohide FvwmTaskBar 100 250 S
####
# These functions modified from the functions provided in the fvwm FAQ.
# [8]http://www.fvwm.org/documentation/faq/#7.17
#################
AddToFunc Autohide
+ I ThisWindow ($0) Deschedule $[w.id]
+ I TestRc (!Match) Deschedule -$[w.id]
+ I ThisWindow ($0) ThisWindow (shaded) AutohideShow $1 $3
+ I TestRc (!Match) All ($0, !shaded) AutohideHide $2 $3
AddToFunc AutohideShow
+ I Schedule $0 -$[w.id] WindowShade $1 off
+ I Schedule $0 -$[w.id] Raise
+ I Schedule $0 -$[w.id] Deschedule $[w.id]
+ I Schedule $0 -$[w.id] Deschedule -$[w.id]
AddToFunc AutohideHide
+ I Schedule $0 $[w.id] WindowShade $1 on
+ I Schedule $0 $[w.id] Deschedule $[w.id]
+ I Schedule $0 $[w.id] Deschedule -$[w.id]
#####
# Miscellaneous Functions
#################
DestroyFunc My-Maximize
AddToFunc My-Maximize
+ I SetEnv THIS_WIN $[w.id]
#+ I Piperead echo "SetEnv MYTEMP `expr $[pointer.wx] \\* 100`"
#+ I Piperead echo "SetEnv THIS_X `expr $[MYTEMP] / $[w.width]`"
#+ I SetEnv THIS_X $[pointer.wx]
+ I SetEnv THIS_Y $[pointer.wy]
+ I Maximize
+ I WindowId $[THIS_WIN] WarpToWindow 50 $[THIS_Y]p
DestroyFunc My-Move
AddToFunc My-Move
+ I SetEnv THIS_WIN $[w.id]
#+ I SetEnv THIS_X $[pointer.wx]
+ I SetEnv THIS_Y $[pointer.wy]
+ I Move $0 $1
+ I WindowId $[THIS_WIN] WarpToWindow 50 $[THIS_Y]p
DestroyFunc My-Iconify
AddToFunc My-Iconify
+ I SetEnv THIS_WIN $[w.id]
+ I Iconify
+ I WindowId $[THIS_WIN] WarpToWindow 50 5p
AddToFunc Raise-to-Top
+ I Layer 0 ontop
+ I Raise
DestroyFunc Move-or-Raise
AddToFunc Move-or-Raise
+ I Raise
+ M Move
#+ D WindowShade Toggle
+ D My-Maximize
DestroyFunc Maximize-Func
AddToFunc Maximize-Func
+ M Maximize 0 100
+ C Maximize 0 80
+ D Maximize 100 100
DestroyFunc Move-or-Iconify
AddToFunc Move-or-Iconify
+ I Raise
+ M Move
+ C Iconify
DestroyFunc Resize-or-Raise
AddToFunc Resize-or-Raise
+ I Raise
+ M Resize
+ D Lower
DestroyFunc Get-FvwmIconMan
AddToFunc Get-FvwmIconMan
# I am not sure whether how to ref fvwmiconman with a name instead of windowid
+ I WindowId $[IconManId] WarpToWindow 50 50
DestroyFunc Raise-FvwmIconMan
AddToFunc Raise-FvwmIconMan
# I am not sure whether how to ref fvwmiconman with a name instead of windowid
+ I WindowId $[IconManId] RaiseLower
#####
# FvwmPager is probably the most advanced desktop pager ever written,
# of course its highly configurable, has many advanced features, and can
# be made to look very eye candy.
#
# You can drag the Windows around inside the Pager, pull windows from
# other desktops out onto your current page, or drag the viewport into
# non-standard positions.
#
# This pager gets swallowed into my FvwmButtons Bar. The pages are seperated
# by solid white lines, the pager itself is tinted transparent and the colours
# lighten as focus and the viewport changes.
#
# You can write titles, or draw icons into the Windows, but i prefer to use
# the Balloons (tooltips) to find the Names.
#
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
# | | | |
# +-----+-----+-----+
#
#################
# high color of focus window
Colorset 2 fg white, bg SteelBlue2, Tint #b5b2ff 80
# color of focus window
Colorset 3 fg #63656e, bg SteelBlue4, Tint #b5b2ff 60
# main color
Colorset 4 fg SteelBlue3, bg SteelBlue4, sh black, hi SteelBlue2, RootTransparent Buffer
# balloon color
Colorset 5 fg black, bg Khaki1, Plain
# focus pager
Colorset 6 fg SteelBlue2, bg DodgerBlue4
DestroyModuleConfig FvwmPager: *
*FvwmPager: Geometry +0+0
*FvwmPager: Rows 1
# main color
*FvwmPager: Colorset * 4
# focus pager
*FvwmPager: HilightColorset * 6
# focus window
*FvwmPager: WindowColorsets 3 2
# Balloon color
*FvwmPager: BalloonColorset * 5
*FvwmPager: Font "xft:Bitstream Vera Sans Mono:style=Roman:size=11"
*FvwmPager: SmallFont "-*-verdana-medium-r-normal-*-10-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-10-*-*-*-*-*-*-*"
*FvwmPager: Balloons All
*FvwmPager: BalloonFont "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmPager: BalloonYOffset +2
*FvwmPager: BalloonBorderWidth 1
*FvwmPager: SloppyFocus
*FvwmPager: UseSkipList
*FvwmPager: MoveThreshold 3
#*FvwmPager: SolidSeparators
*FvwmPager: WindowLabelFormat "%i"
*FvwmPager: WindowBorderWidth 1
#*FvwmPager: Window3DBorders
*FvwmPager: Label 0 General
*FvwmPager: Label 1 Network
*FvwmPager: Label 2 Program
*FvwmPager: Label 3 Media
##### Press Button Simulation
# http://www.fvwm.org/documentation/faq/#toc_4.7
# TODO
DestroyFunc press_fvwmbuttons
AddToFunc press_fvwmbuttons
+ I SetEnv pointer_x $[pointer.x]
+ I SetEnv pointer_y $[pointer.y]
+ I Next ("MyStartMenu", CirculateHit) WarpToWindow $1 $2
+ I FakeClick depth 0 press $0 release $0
+ I WindowId root WarpToWindow $[pointer_x]p $[pointer_y]p
DestroyModuleConfig FvwmButtons: *
################## FvwmButtons button-bar ################################
#*FvwmButtonsBack DodgerBlue3
#bisque3
*MyStartMenu: Geometry 63x16+0+0
*MyStartMenu: Back SteelBlue4
*MyStartMenu: (Panel(down, indicator, delay 0, steps 1, NoHints, position Button left 0 0 noplr) \
NavButtons "Module FvwmButtons NavButtons")
#*MyStartMenu: Font -*-simsun-medium-r-*-*-16-*-*-*-*-*-*-*
#*NavPanel: Geometry 80x352
#*NavPanel: (Swallow "FvwmButtons" "Module FvwmButtons NavButtons")
#*NavPanel: Font -*-simsun-medium-r-*-*-16-*-*-*-*-*-*-*
########### NavButtons: tools bar ##############################
#Colorset 10 fg black, bg #c6c3c6, RootTransparent Buffer, Tint #efebef 65
Colorset 10 fg white, bg SteelBlue4, Tint #efebef 65
*NavButtons: Columns 23
#*NavButtons: Font "Shadow=1 1 SE:xft:Bitstream Vera Sans Mono:style=Roman:size=10"
*NavButtons: Font "xft:Bitstream Vera Sans Mono:style=Roman:size=10"
*NavButtons: Colorset 10
*NavButtons: Frame 1
*NavButtons: Padding 2 2
*NavButtons: Geometry 124x240
*NavButtons: Rows 21
*NavButtons: (Size 1x21, Back #dedbde, Frame 1, Action (Mouse 1) `Nop`)
#*NavButtons: (Size 22x1, Frame 0, Back #c6c3c6, Action (Mouse 1) `Nop`)
*NavButtons: (Title (Center) "", Size 22x1)
*NavButtons: (Size 11x5, Swallow wmcpuload, 'Exec exec wmcpuload -bw -bl -lc rgb:ee/82/ee')
*NavButtons: (Size 11x5, Swallow wmmemload, 'Exec exec wmmemload -bw -bl -lc rgb:ee/c9/00')
*NavButtons: (Size 11x5, Swallow wmnet, 'Exec exec wmnet')
*NavButtons: (Size 11x5, Swallow wmclockmon, 'Exec exec wmclockmon -bw')
#*NavButtons: (Size 11x5, Frame 0, Back #c6c3c6, Action (Mouse 1) `Nop`)
#*NavButtons: (Title (Center) "Info", Size 22x1)
*NavButtons: (Size 11x5, Swallow wmcalclock, '')
*NavButtons: (Size 11x5, Swallow wmmaiload, '')
#*NavButtons: (Size 11x5, Frame 0, Back #c6c3c6, Action (Mouse 1) `Nop`)
#*NavButtons: (Title (Center) "Games", Size 22x1)
#*NavButtons: (Size 11x5, Swallow wmmatrix, '')
#*NavButtons: (Size 11x5, Swallow wmufo, '')
*NavButtons: (Size 22x4, Frame 0, Back #c6c3c6, Action (Mouse 1) `Nop`)
#*NavButtons: (Size 11x5, Frame 0, Back #c6c3c6, Action (Mouse 1) `Nop`)
#*NavButtons: (Size 22x7, Swallow "FvwmPager" "FvwmPager 0")
#*NavButtons: (Size 22x7, Swallow "FvwmPager" "FvwmPager 1")
#*NavButtons: (Size 22x7, Swallow "FvwmPager" "FvwmPager 2")
#*NavButtons: (Size 22x7, Swallow "FvwmPager" "FvwmPager 3")
*NavButtons: (Title (Center) "I love you, Mom!" Size 22x1, Frame 1, Back #c6c3c6, Action (Mouse 1) `Nop`)
#*NavButtons: (Size 22x2, Swallow peksystray, 'Exec exec fbpanel')
#*PagerButtons: (Swallow "FvwmPager" "FvwmPager 0 3")
#################### FvwmTaskBar ###############################################
Colorset 11 fg white, bg SteelBlue4, sh black, hi SteelBlue2, RootTransparent Buffer
#Colorset 11 fg white, RootTransparent Buffer
Colorset 12 fg SteelBlue4, bg white, sh SteelBlue2, hi black, RootTransparent Buffer
#Colorset 12 fg SteelBlue4, bg white, RootTransparent Buffer
DestroyModuleConfig FvwmTaskBar: *
*FvwmTaskBar: Geometry +0-0
*FvwmTaskBar: Rows 1
#*FvwmTaskBar: Font "xft:Bitstream Vera Sans Mono:style=Roman:size=10"
*FvwmTaskBar: Font "-*-verdana-medium-r-normal-*-11-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
#*FvwmTaskBar: StatusFont "xft:Bitstream Vera Sans Mono:style=Roman:size=10"
*FvwmTaskBar: StatusFont "-*-verdana-medium-r-normal-*-11-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
#*FvwmTaskBar: SelFont "xft:Bitstream Vera Sans Mono:style=Roman:size=11"
*FvwmTaskBar: SelFont "-*-verdana-bold-r-normal-*-11-*-*-*-*-*-iso8859-*,-*-simsun-bold-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmTaskBar: Colorset 11
*FvwmTaskBar: Action Click1 Iconify
*FvwmTaskBar: Action Click2 Maximize
*FvwmTaskBar: Action Click3 RaiseLower
*FvwmTaskBar: Action Click4 Popup MenuFvwmWindowOps rectangle $widthx$height+$left+$top -2p -100m
*FvwmTaskBar: Action Click5 Popup MenuFvwmWindowOps rectangle $widthx$height+$left+$top -2p -100m
*FvwmTaskBar: AutoStick
#*FvwmTaskBar: AutoHide
*FvwmTaskBar: AutoFocus
*FvwmTaskBar: UseSkipList
*FvwmTaskBar: DeskOnly
#*FvwmTaskBar: PageOnly
*FvwmTaskBar: ShowTips
*FvwmTaskBar: HighlightFocus
*FvwmTaskBar: ShowTransients
#*FvwmTaskBar: NoDefaultStartButton
#*FvwmTaskBar: StartMenu MenuFvwmRoot
*FvwmTaskBar: StartCommand Raise-FvwmIconMan
*FvwmTaskBar: StartName
*FvwmTaskBar: StartIcon fvwm.xpm
#buttons/feline-light.xpm
*FvwmTaskBar: NoBrightFocus
#*FvwmTaskBar: 3DFvwm
*FvwmTaskBar: BellVolume 100
*FvwmTaskBar: MailBox $[HOME]/Mail/
*FvwmTaskBar: MailCommand Exec crxvt-gb -geometry 100x40+0+0 -e mutt
*FvwmTaskBar: MailCheck 600
*FvwmTaskBar: IconColorset 11
*FvwmTaskBar: FocusColorset 11
*FvwmTaskBar: ClockFormat %A %b%d %R
*FvwmTaskBar: WindowButtonsRightMargin 0
*FvwmTaskBar: WindowButtonsLeftMargin 0
#*FvwmTaskBar: StartButtonRightMargin 1
#*FvwmTaskBar: AutoHide 6
#------FvwmIconMan
#
DestroyModuleConfig FvwmIconMan: *
*FvwmIconMan: Nummanagers 1
*FvwmIconMan: Resolution global
*FvwmIconMan: Background steelblue4
*FvwmIconMan: Foreground white
*FvwmIconMan: Font "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmIconMan: ButtonGeometry 233x0
*FvwmIconMan: ManagerGeometry 1x0+0-21
*FvwmIconMan: UseWinList true
*FvwmIconMan: DrawIcons true
*FvwmIconMan: Shape true
*FvwmIconMan: FollowFocus true
*FvwmIconMan: Sort name
*FvwmIconMan: PlainButton flat white steelblue
*FvwmIconMan: SelectButton up white dodgerblue4
*FvwmIconMan: FocusButton up white brown
*FvwmIconMan: FocusAndSelectButton down white maroon
#NOTICE: pay attention here, we shoule make the title name consistent with
# Get-FvwmIconMan, otherwise xwininfo will faile
#*FvwmIconMan: Title "Windows List"
*FvwmIconMan: TitleButton raisededge white steelblue
*FvwmIconMan: Tips always
*FvwmIconMan: TipsFont "-*-verdana-medium-r-normal-*-12-*-*-*-*-*-iso8859-*,-*-simsun-medium-r-normal-*-12-*-*-*-*-*-*-*"
*FvwmIconMan: NoIconAction "SendToModule FvwmAnimate animate"
*FvwmIconMan: ReliefThickness 1
*FvwmIconMan: Action Mouse 1 N sendcommand "Iconify off, Raise"
*FvwmIconMan: Action Mouse 2 N sendcommand "WarpToWindow 50 50"
*FvwmIconMan: Action Mouse 3 N sendcommand "Popup MenuFvwmWindowOps rectangle $widthx$height+$left+$top 0 -100m"
*FvwmIconMan: Action Mouse 4 N bif Prev 3, gotobutton -1, warp, ret, gotobutton Prev, warp
*FvwmIconMan: Action Mouse 5 N bif Next 3, gotobutton 0, warp, ret, gotobutton Next, warp
*FvwmIconMan: Action Key Up N bif Prev 3, gotobutton -1, warp, ret, gotobutton Prev, warp
*FvwmIconMan: Action Key Down N bif Next 3, gotobutton 0, warp, ret, gotobutton Next, warp
*FvwmIconMan: Action Key Return N sendcommand "Iconify off, Raise"