# $dotat: rcfiles/fvwm2rc,v 1.202 2007/09/27 14:05:00 fanf2 Exp $ define(colour1,CadetBlue1)dnl define(colour2,CadetBlue4)dnl # application border define(BORDERap,2)dnl # window manager border define(BORDERwm,2)dnl # space between windows define(TRENCH,0)dnl define(FONT,fixed)dnl define(FONTw,6)dnl define(FONTh,13)dnl define(STDw,80)dnl define(STDh,25)dnl # Now loads of maths to work out the sizes and positions of things # based on what we have seen so far. Some programs not controlled by # fvwm2 don't get their geometries from here (e.g. Emacs). define(INNER,eval(2*BORDERap))dnl define(OUTER,eval(2*BORDERwm+TRENCH))dnl define(SPACING,eval(INNER+OUTER))dnl define(CENTREx,eval(WIDTH/2))dnl define(CENTREy,eval(HEIGHT/2))dnl define(Wstd,eval(STDw*FONTw+INNER))dnl define(Hstd,eval(STDh*FONTh+INNER))dnl define(Wch1,eval(WIDTH/FONTw))dnl define(Hch1,eval(HEIGHT/FONTh))dnl define(Wch2,eval((WIDTH-SPACING)/(2*FONTw)))dnl define(Hch2,eval((HEIGHT-SPACING)/(2*FONTh)))dnl define(Wch3,eval((WIDTH-2*SPACING)/(3*FONTw)))dnl define(Hch3,eval((HEIGHT-2*SPACING)/(3*FONTh)))dnl define(W1,eval(Wch1*FONTw+INNER))dnl define(W2,eval(Wch2*FONTw+INNER))dnl define(W3,eval(Wch3*FONTw+INNER))dnl define(H1,eval(Hch1*FONTh+INNER))dnl define(H2,eval(Hch2*FONTh+INNER))dnl define(H3,eval(Hch3*FONTh+INNER))dnl define(W1o,eval(W1+OUTER))dnl define(W2o,eval(W2+OUTER))dnl define(W3o,eval(W3+OUTER))dnl define(H1o,eval(H1+OUTER))dnl define(H2o,eval(H2+OUTER))dnl define(H3o,eval(H3+OUTER))dnl define(X1,eval(CENTREx-W1/2-BORDERwm))dnl define(Y1,eval(CENTREy-H1/2-BORDERwm))dnl define(X21,eval(CENTREx+TRENCH/2))dnl define(Y21,eval(CENTREy+TRENCH/2))dnl define(X20,eval(X21-W2o))dnl define(Y20,eval(Y21-H2o))dnl define(X31,eval(CENTREx-W3/2-BORDERwm))dnl define(Y31,eval(CENTREy-H3/2-BORDERwm))dnl define(X30,eval(X31-W3o))dnl define(Y30,eval(Y31-H3o))dnl define(X32,eval(X31+W3o))dnl define(Y32,eval(Y31+H3o))dnl define(X2m,eval(CENTREx-W2/2-BORDERwm))dnl define(W3wch,eval(W3*2/FONTw))dnl define(W3w,eval(W3wch*FONTw+INNER))dnl define(X3w01,eval(X32-OUTER-W3w))dnl define(X3w12,eval(X31))dnl define(X3wm,eval(CENTREx-W3w/2-BORDERwm))dnl # disable standard settings from # /usr/X11R6/share/fvwm/ConfigFvwmDefaults # remove default menu DestroyMenu MenuFvwmRoot Silent Key Help R A - Key F1 R A - # remove default window controls DestroyFunc FuncFvwmRaiseLowerX Mouse 1 T A - Mouse 1 FS A - Mouse 1 FST A - Mouse 2 M N - # more fanfish key for this Key Escape A MC - Key Escape A 41 EscapeFunc # good grief Key Tab A M - # these defaults are OK: default style, # WindowListFunc, UrgencyFunc, UrgencyDoneFunc # now the real stuff starts ClickTime 10 MoveThreshold 0 # disable viewport scrolling EdgeScroll 0 0 EdgeThickness 0 DeskTopSize 1x1 # control moving windows off the edge EdgeResistance 100 16 # position of feedback window Emulate mwm DefaultFont FONT CursorStyle TOP top_left_arrow CursorStyle LEFT top_left_arrow CursorStyle RIGHT top_left_arrow CursorStyle BOTTOM top_left_arrow CursorStyle TOP_LEFT top_left_arrow CursorStyle TOP_RIGHT top_left_arrow CursorStyle BOTTOM_LEFT top_left_arrow CursorStyle BOTTOM_RIGHT top_left_arrow Style "*" ResizeOpaque OpaqueMoveSize 1000 # colours DefaultColors black colour2 Style "*" HilightFore black Style "*" HilightBack colour1 Style "*" BackColor colour2 # focus things ColormapFocus FollowsFocus Style "*" SloppyFocus Style "*" TileCascadePlacement BorderStyle -- Flat Style "*" NoTitle Style "*" BorderWidth BORDERwm Style "*" HandleWidth BORDERwm Style "*" NoPPosition Style "*" NoIcon Style "xwrits" Sticky Style "xwrits" StaysOnTop Style "SshAskpass" Sticky Style "SshAskpass" StaysOnTop Style "Fvwm*" Sticky Style "Fvwm*" ClickToFocus Style "Fvwm*" WindowListSkip Style "Fvwm*" BackColor colour1 MenuStyle "*" Foreground black MenuStyle "*" Background colour2 MenuStyle "*" ActiveFore colour1 MenuStyle "*" HilightBack black MenuStyle "*" Hilight3DOff MenuStyle "*" Animation MenuStyle "*" PopupImmediately MenuStyle "*" PopupOffset 0 96 MenuStyle "*" TitleUnderlines2 MenuStyle "*" TrianglesSolid *FvwmIdentFore grey80 *FvwmIdentBack black *FvwmIdentFont FONT # FvwmForm alias *ConfirmQuitGrabServer *ConfirmQuitWarpPointer *ConfirmQuitFont FONT *ConfirmQuitInputFont FONT *ConfirmQuitButtonFont FONT *ConfirmQuitFore black *ConfirmQuitBack colour2 *ConfirmQuitItemFore colour1 *ConfirmQuitItemBack colour2 *ConfirmQuitLine center *ConfirmQuitText "Do you really want to quit?" *ConfirmQuitLine expand *ConfirmQuitButton quit " Quit " *ConfirmQuitCommand Quit *ConfirmQuitButton quit "Cancel" ^[ *ConfirmQuitCommand Nop # functions # use PipeRead as a blocking exec AddToFunc StartFunction + "I" PipeRead "xrdb -DFONT=FONT -load .xresources" AddToFunc InitFunction + "I" Exec exec xv -quit -root doc/graphics/dotat-bg-2.xpm + "I" Exec exec sshadd < /dev/null + "I" Exec exec xautolock -secure AddToFunc TidyPointer + "I" WarpToWindow +4p -4p AddToFunc PointerTopLeft + "I" CursorMove -100 -100 + "I" CursorMove +4p +4p AddToFunc PointerTopRight + "I" CursorMove +100 -100 + "I" CursorMove -4p +4p AddToFunc StdSize + "I" Resize Wstd`p' Hstd`p' + "I" TidyPointer AddToFunc DragMove + "M" Move + "H" Move AddToFunc DragResize + "M" Resize + "H" Resize AddToFunc ClickMagic + "C" Exec firefox $(xclip -o) # a bit of M4 to do some tedious stuff define(PosFunc,`AddToFunc PosX$1$2Y$3$4 + "I" Resize W$1`p' H$3`p' + "I" Move +X$1$2`p' +Y$3$4`p' + "I" TidyPointer' )dnl PosFunc(1,,1,) PosFunc(2,0,1,) PosFunc(2,1,1,) PosFunc(2,m,1,) PosFunc(3,0,1,) PosFunc(3,1,1,) PosFunc(3,2,1,) PosFunc(3w,01,1,) PosFunc(3w,m,1,) PosFunc(3w,12,1,) PosFunc(2,0,2,0) PosFunc(2,1,2,0) PosFunc(2,0,2,1) PosFunc(2,1,2,1) PosFunc(3,0,3,0) PosFunc(3,1,3,0) PosFunc(3,2,3,0) PosFunc(3,0,3,1) PosFunc(3,1,3,1) PosFunc(3,2,3,1) PosFunc(3,0,3,2) PosFunc(3,1,3,2) PosFunc(3,2,3,2) PosFunc(2,0,3,0) PosFunc(2,1,3,0) PosFunc(2,0,3,1) PosFunc(2,1,3,1) PosFunc(2,0,3,2) PosFunc(2,1,3,2) PosFunc(3,0,2,0) PosFunc(3,1,2,0) PosFunc(3,2,2,0) PosFunc(3,0,2,1) PosFunc(3,1,2,1) PosFunc(3,2,2,1) # menus # because of the grave characters in the following changequote({,})dnl AddToMenu Window "window" Title + "&warp" TidyPointer + "&big" PosX1Y1 + "half 1 &[" Popup Window.PosX20 + "half 2 &]" Popup Window.PosX21 + "third 1 &=" Popup Window.PosX30 + "third 2 &\\" Popup Window.PosX31 + "third 3 &`" Popup Window.PosX32 + "" Nop + "mo&ve" Move + "si&ze" Resize + "&desk" Popup Window.desks + "s&tick" Stick + "&info" FvwmIdent + "kill" Destroy + "close" Close AddToMenu Window.PosX20 + "&big" PosX20Y1 + "half 1 &[" PosX20Y20 + "half 2 &]" PosX20Y21 + "third 1 &=" PosX20Y30 + "third 2 &\\" PosX20Y31 + "third 3 &`" PosX20Y32 AddToMenu Window.PosX21 + "&big" PosX21Y1 + "half 1 &[" PosX21Y20 + "half 2 &]" PosX21Y21 + "third 1 &=" PosX21Y30 + "third 2 &\\" PosX21Y31 + "third 3 &`" PosX21Y32 AddToMenu Window.PosX30 + "&big" PosX30Y1 + "half 1 &[" PosX30Y20 + "half 2 &]" PosX30Y21 + "third 1 &=" PosX30Y30 + "third 2 &\\" PosX30Y31 + "third 3 &`" PosX30Y32 AddToMenu Window.PosX31 + "&big" PosX31Y1 + "half 1 &[" PosX31Y20 + "half 2 &]" PosX31Y21 + "third 1 &=" PosX31Y30 + "third 2 &\\" PosX31Y31 + "third 3 &`" PosX31Y32 AddToMenu Window.PosX32 + "&big" PosX32Y1 + "half 1 &[" PosX32Y20 + "half 2 &]" PosX32Y21 + "third 1 &=" PosX32Y30 + "third 2 &\\" PosX32Y31 + "third 3 &`" PosX32Y32 # because of the grave characters in the preceding changequote(`,')dnl AddToMenu Root "menu" Title + "&xterm" Exec xt + "&apps" Popup Root.apps + "&ssh" Popup Root.ssh + "&list" WindowList + "" Nop + "quit" Module FvwmForm ConfirmQuit + "&reload" Restart fvwm2 -cmd "FvwmM4 -m4prog gm4 HOME/.fvwm2rc" AddToMenu Root.apps + "pstree" Exec xt psless + "&top" Exec xt top + "vm&stat" Exec xt systat -vm 1 + "&dc" Exec xt dc + "&units" Exec xt units + "&man" Exec xt -q w3mman + "&w3m" Exec xt -q w3m + "&perldoc" Exec xt -q perldoc + "&rfc" Exec xt -q rfc + "&jep" Exec xt -q jep + "&info" Exec xt -q info + "&gv" Exec exec gv + "x&v" Exec exec xv + "&emacs" Exec exec emacs-newframe + "&firefox" Exec exec firefox + "pdf" Exec exec xpdf AddToMenu Root.ssh + "&root" Exec xt ssh root@localhost + "chiar&k" Exec xt ssh fanf@chiark.greenend.org.uk + "&FreeBSD" Popup Root.ssh.FreeBSD + "&apache" Exec xt ssh fanf@apache.org + "&exim" Exec xt ssh fanf2@sesame.csx.cam.ac.uk + "" Nop + "&work" Popup Root.ssh.work + "&jabber" Popup Root.ssh.jabber + "&hermes" Popup Root.ssh.hermes + "&cyrus" Popup Root.ssh.cyrus + "&ppsw" Popup Root.ssh.ppsw + "c&us" Popup Root.ssh.cus AddToMenu Root.ssh.FreeBSD + "&freefall" Exec xt ssh fanf@freefall.FreeBSD.org + "&hub" Exec xt ssh fanf@hub.FreeBSD.org AddToMenu Root.ssh.work + "c&yan" Exec xt ssh fanf2@cyan.csi.cam.ac.uk + "cyan-&3" Exec xt ssh root@cyan-3.csi.cam.ac.uk AddToMenu Root.ssh.jabber + "&wogan" Exec xt ssh fanf2@wogan.chat.cam.ac.uk + "&parky" Exec xt ssh fanf2@parky.chat.cam.ac.uk + "&dame-edna" Exec xt ssh fanf2@dame-edna.chat.cam.ac.uk + "&wogan (root)" Exec xt ssh root@wogan.chat.cam.ac.uk + "&parky (root)" Exec xt ssh root@parky.chat.cam.ac.uk AddToMenu Root.ssh.hermes + "&hermes" Exec xt ssh fanf2@hermes.cam.ac.uk + "hermes-&1" Exec xt ssh fanf2@hermes-1.csi.cam.ac.uk + "hermes-&2" Exec xt ssh fanf2@hermes-2.csi.cam.ac.uk + "&lists" Exec xt ssh fanf2@lists.cam.ac.uk + "lists-&1" Exec xt ssh fanf2@lists-1.csi.cam.ac.uk + "lists-&2" Exec xt ssh fanf2@lists-2.csi.cam.ac.uk + "&canvas" Exec xt ssh fanf2@canvas.csi.cam.ac.uk + "&otanes" Exec xt ssh fanf2@otanes.csi.private.cam.ac.uk + "fanf&9" Exec xt ssh fanf9@hermes.cam.ac.uk AddToMenu Root.ssh.cyrus + "0&0" Exec xt ssh fanf2@cyrus-0.csi.private.cam.ac.uk + "0&1" Exec xt ssh fanf2@cyrus-1.csi.private.cam.ac.uk + "0&2" Exec xt ssh fanf2@cyrus-2.csi.private.cam.ac.uk + "0&3" Exec xt ssh fanf2@cyrus-3.csi.private.cam.ac.uk + "0&4" Exec xt ssh fanf2@cyrus-4.csi.private.cam.ac.uk + "0&5" Exec xt ssh fanf2@cyrus-5.csi.private.cam.ac.uk + "0&6" Exec xt ssh fanf2@cyrus-6.csi.private.cam.ac.uk + "0&7" Exec xt ssh fanf2@cyrus-7.csi.private.cam.ac.uk + "0&8" Exec xt ssh fanf2@cyrus-8.csi.private.cam.ac.uk + "0&9" Exec xt ssh fanf2@cyrus-9.csi.private.cam.ac.uk + "1&0" Exec xt ssh fanf2@cyrus-10.csi.private.cam.ac.uk + "1&1" Exec xt ssh fanf2@cyrus-11.csi.private.cam.ac.uk + "1&2" Exec xt ssh fanf2@cyrus-12.csi.private.cam.ac.uk + "1&3" Exec xt ssh fanf2@cyrus-13.csi.private.cam.ac.uk + "1&4" Exec xt ssh fanf2@cyrus-14.csi.private.cam.ac.uk + "1&5" Exec xt ssh fanf2@cyrus-15.csi.private.cam.ac.uk + "1&6" Exec xt ssh fanf2@cyrus-16.csi.private.cam.ac.uk + "1&7" Exec xt ssh fanf2@cyrus-17.csi.private.cam.ac.uk + "1&8" Exec xt ssh fanf2@cyrus-18.csi.private.cam.ac.uk + "1&9" Exec xt ssh fanf2@cyrus-19.csi.private.cam.ac.uk + "2&0" Exec xt ssh fanf2@cyrus-20.csi.private.cam.ac.uk + "2&1" Exec xt ssh fanf2@cyrus-21.csi.private.cam.ac.uk + "2&2" Exec xt ssh fanf2@cyrus-22.csi.private.cam.ac.uk + "2&3" Exec xt ssh fanf2@cyrus-23.csi.private.cam.ac.uk + "2&4" Exec xt ssh fanf2@cyrus-24.csi.private.cam.ac.uk + "2&5" Exec xt ssh fanf2@cyrus-25.csi.private.cam.ac.uk + "2&6" Exec xt ssh fanf2@cyrus-26.csi.private.cam.ac.uk + "2&7" Exec xt ssh fanf2@cyrus-27.csi.private.cam.ac.uk + "2&8" Exec xt ssh fanf2@cyrus-28.csi.private.cam.ac.uk + "2&9" Exec xt ssh fanf2@cyrus-29.csi.private.cam.ac.uk + "3&0" Exec xt ssh fanf2@cyrus-30.csi.private.cam.ac.uk + "3&1" Exec xt ssh fanf2@cyrus-31.csi.private.cam.ac.uk + "3&2" Exec xt ssh fanf2@cyrus-32.csi.private.cam.ac.uk + "3&3" Exec xt ssh fanf2@cyrus-33.csi.private.cam.ac.uk + "3&4" Exec xt ssh fanf2@cyrus-34.csi.private.cam.ac.uk + "3&5" Exec xt ssh fanf2@cyrus-35.csi.private.cam.ac.uk + "3&6" Exec xt ssh fanf2@cyrus-36.csi.private.cam.ac.uk + "3&7" Exec xt ssh fanf2@cyrus-37.csi.private.cam.ac.uk + "3&8" Exec xt ssh fanf2@cyrus-38.csi.private.cam.ac.uk + "3&9" Exec xt ssh fanf2@cyrus-39.csi.private.cam.ac.uk AddToMenu Root.ssh.ppsw + "&0" Exec xt ssh fanf2@ppsw-0.csi.cam.ac.uk + "&1" Exec xt ssh fanf2@ppsw-1.csi.cam.ac.uk + "&2" Exec xt ssh fanf2@ppsw-2.csi.cam.ac.uk + "&3" Exec xt ssh fanf2@ppsw-3.csi.cam.ac.uk + "&4" Exec xt ssh fanf2@ppsw-4.csi.cam.ac.uk + "&5" Exec xt ssh fanf2@ppsw-5.csi.cam.ac.uk + "&6" Exec xt ssh fanf2@ppsw-6.csi.cam.ac.uk + "&7" Exec xt ssh fanf2@ppsw-7.csi.cam.ac.uk + "&8" Exec xt ssh fanf2@ppsw-8.csi.cam.ac.uk + "&9" Exec xt ssh fanf2@ppsw-9.csi.cam.ac.uk AddToMenu Root.ssh.cus + "c&us" Exec xt ssh fanf2@cus.cam.ac.uk + "" Nop + "&draco" Exec xt ssh fanf2@draco.cus.cam.ac.uk + "&libra" Exec xt ssh fanf2@libra.cus.cam.ac.uk + "&virgo" Exec xt ssh fanf2@virgo.cus.cam.ac.uk # misc keys Key Escape WSF 4 TidyPointer Key Tab WSF 4 RaiseLower Key apostrophe A 4 PointerTopLeft Key quotedbl A 4S PointerTopRight Key Return A 4 Menu Root Nop Key Return A 4S Menu Window Nop Key Return A 4C WindowList Key Return A 4M Menu Window.desks Nop Mouse 1 R A Menu Root Nop Mouse 2 R A Menu Window Nop Mouse 3 R A WindowList # window manipulation Mouse 1 IWSF 4 DragMove Mouse 2 IWSF 4 ClickMagic Mouse 3 IWSF 4 DragResize Key minus WSF 4 StdSize Key equal WSF 4 PosX30Y1 Key backslash WSF 4 PosX31Y1 Key grave WSF 4 PosX32Y1 Key plus WSF 4S PosX3w01Y1 Key bar WSF 4S PosX3wmY1 Key asciitilde WSF 4S PosX3w12Y1 Key bracketleft WSF 4 PosX20Y1 Key braceleft WSF 4S PosX20Y1 Key bracketright WSF 4 PosX21Y1 Key braceright WSF 4S PosX21Y1 Key BackSpace WSF 4 PosX2mY1 Key BackSpace WSF 4S PosX1Y1 # pointer movement Key Left A 4 CursorMove -W3o`p' 0 Key Right A 4 CursorMove +W3o`p' 0 Key Up A 4 CursorMove 0 -H3o`p' Key Down A 4 CursorMove 0 +H3o`p' Key Left A 4S CursorMove -25 0 Key Right A 4S CursorMove +25 0 Key Up A 4S CursorMove 0 -25 Key Down A 4S CursorMove 0 +25 Key Left A 4C CursorMove -10 0 Key Right A 4C CursorMove +10 0 Key Up A 4C CursorMove 0 -10 Key Down A 4C CursorMove 0 +10 # desktop switching Key Left A 41 Desk -1 0 39 Key Right A 41 Desk +1 0 39 Key Up A 41 Desk -4 0 39 Key Down A 41 Desk +4 0 39 # now a bit of m4 to do the really tedious stuff AddToFunc ZapToDesk + "I" MoveToDesk 0 $0 + "I" GotoDesk 0 $0 + "I" Big define(desk3,`Key $1 A 4 GotoDesk 0 $3 AddToMenu Window.desks "&$2" ZapToDesk $3')dnl define(desk,desk3(`$1',`$1',`$2'))dnl desk( 1, 0 ) desk( 2, 1 ) desk( 3, 2 ) desk( 4, 3 ) desk( 5, 4 ) desk( 6, 5 ) desk( 7, 6 ) desk( 8, 7 ) desk( 9, 8 ) desk( 0, 9 ) desk( q, 10 ) desk( w, 11 ) desk( e, 12 ) desk( r, 13 ) desk( t, 14 ) desk( y, 15 ) desk( u, 16 ) desk( i, 17 ) desk( o, 18 ) desk( p, 19 ) desk( a, 20 ) desk( s, 21 ) desk( d, 22 ) desk( f, 23 ) desk( g, 24 ) desk( h, 25 ) desk( j, 26 ) desk( k, 27 ) desk( l, 28 ) desk3(semicolon, `;', 29) desk( z, 30 ) desk( x, 31 ) desk( c, 32 ) desk( v, 33 ) desk( b, 34 ) desk( n, 35 ) desk( m, 36 ) desk3(comma, `,', 37) desk3(period, `.', 38) desk3(slash, `/', 39)