+#
+# Ian's twm configuration file.
+#
+
+# RandomPlacement
+DecorateTransients
+TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
+IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
+IconifyByUnmapping
+NoCaseSensitive
+IconManagerGeometry "119x286+0+0"
+NoDefaults
+DontMoveOff
+OpaqueMove
+Zoom
+NoRaiseOnMove
+NoRaiseOnResize
+SortIconManager
+SqueezeTitle
+RestartPreviousState
+WarpCursor
+Function "select" { f.iconify f.deiconify }
+WindowFunction f.function "select"
+WindowRing { "emacs" "emacs18" "XTerm" }
+OldFashionedTwmWindowsMenu
+
+NoStackMode {
+ "Iceweasel"
+}
+
+VirtualDesktop "8228x3848-0-0" 48
+
+#VirtualDesktop "6432x3608-208-0" 48
+
+#VirtualDesktop "6400x3600-208-0" 48
+# +32,+8
+
+#VirtualDesktop "5136x3076-208-0" 48
+#VirtualDesktop "5120x3072-237-0" 48
+# +16,+4
+
+#VirtualDesktop "4x3-208-0" 48
+
+NotVirtualGeometries
+PanDistanceX 100
+PanDistanceY 100
+
+FixManagedVirtualGeometries
+FixTransientVirtualGeometries
+SnapRealScreen
+
+NoTitle {
+ "TWM Icon Manager"
+ "VTWM Desktop"
+ "xclock"
+ "panel"
+ "xload"
+ "xacpi-simple"
+}
+
+DontSqueezeTitle {
+ "emacs"
+ "emacs18"
+ "epoch"
+ "Emacs"
+}
+
+DontShowInDisplay {
+ "VTWM Desktop"
+ "xb ian"
+ "xb sysadmin"
+ "xb chiark"
+ "xb iwj"
+ "xclock"
+ "xload"
+ "XLoad"
+ "panel"
+ "xacpi-simple"
+}
+
+NailedDown {
+ "VTWM Desktop"
+ "xb ian"
+ "xb sysadmin"
+ "xb chiark"
+ "xb iwj"
+ "xclock"
+ "xwrits"
+ "xload"
+ "XLoad"
+ "panel"
+ "xacpi-simple"
+}
+
+Cursors
+{
+ Frame "crosshair"
+ Title "crosshair"
+ Icon "crosshair"
+ IconMgr "crosshair"
+ Move "fleur"
+ Resize "fleur"
+ Menu "sb_left_arrow"
+ Button "hand2"
+ Wait "watch"
+ Select "dot"
+ Destroy "pirate"
+}
+
+Color
+{
+ BorderColor "yellow"
+ DefaultBackground "black"
+ DefaultForeground "white"
+ TitleBackground "midnight blue"
+ TitleForeground "light steel blue"
+ MenuBackground "midnight blue"
+ MenuForeground "light steel blue"
+ MenuTitleBackground "midnight blue"
+ MenuTitleForeground "light steel blue"
+ IconBackground "midnight blue"
+ IconForeground "light steel blue"
+ IconBorderColor "red"
+ IconManagerBackground "orange1"
+ IconManagerForeground "black"
+ BorderTileForeground "red"
+ BorderTileBackground "red"
+
+ VirtualBackground "midnight blue"
+ DesktopDisplayBackground "black"
+ DesktopDisplayBorder "light steel blue"
+ RealScreenBackground "white"
+}
+
+Monochrome
+{
+ BorderColor "black"
+ DefaultBackground "black"
+ DefaultForeground "white"
+ TitleBackground "white"
+ TitleForeground "black"
+ MenuBackground "black"
+ MenuForeground "white"
+ MenuTitleBackground "black"
+ MenuTitleForeground "white"
+ IconBackground "black"
+ IconForeground "white"
+ IconBorderColor "white"
+ IconManagerBackground "white"
+ IconManagerForeground "black"
+ BorderTileForeground "black"
+ BorderTileBackground "white"
+}
+
+# Define some useful functions for motion-based actions.
+MoveDelta 3
+Function "forcemove-or-lower" { f.forcemove f.deltastop f.lower }
+Function "move-or-raise" { f.move f.deltastop f.raise }
+
+# Root window buttons
+Button1 = : root : f.menu "hosts"
+Button2 = : root : f.menu "TwmWindows"
+Button3 = : root : f.menu "programs"
+Button1 = m : root : f.unfocus
+
+Button1 = : desktop : f.movescreen
+Button2 = : desktop : f.movescreen
+#Button3 = : desktop : f.iconify
+
+# Per window buttons
+Button1 = : icon|iconmgr|frame|title : f.function "move-or-raise"
+Button2 = : icon|iconmgr|frame|title : f.function "forcemove-or-lower"
+Button3 = : icon|iconmgr|frame|title : f.menu "windowmenu"
+Button1 = shift : icon|iconmgr|frame|title : f.iconify
+Button2 = shift : icon|iconmgr|frame|title : f.resize
+Button3 = shift : icon|iconmgr|frame|title : f.zoom
+Button1 = m : icon|iconmgr|frame|title : f.focus
+Button3 = m : icon|iconmgr|frame|title : f.saveyourself
+Button1 = control : icon|iconmgr|frame|title : f.forcemove
+Button3 = control : icon|iconmgr|frame|title : f.delete
+Button3 = control|shift : icon|iconmgr|frame|title : f.destroy
+Button1 = control|shift|m : window|frame|title : f.destroy
+Button2 = control|shift|m : window|frame|title : f.forcemove
+Button3 = control|shift|m : window|frame|title : f.menu "windowmenu"
+
+"Up" = m : all : f.function "pan-up"
+"Down" = m : all : f.function "pan-down"
+"Left" = m : all : f.function "pan-left"
+"Right" = m : all : f.function "pan-right"
+
+Function "pan-up" {
+ !"raise-mini-desktop"
+ f.panup "100"
+}
+Function "pan-down" {
+ !"raise-mini-desktop"
+ f.pandown "100"
+}
+Function "pan-left" {
+ !"raise-mini-desktop"
+ f.panleft "100"
+}
+Function "pan-right" {
+ !"raise-mini-desktop"
+ f.panright "100"
+}
+
+Function "drag-with-up" {
+ f.nail
+ f.panup "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+
+Function "drag-with-down" {
+ f.nail
+ f.pandown "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+Function "drag-with-left" {
+ f.nail
+ f.panleft "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+Function "drag-with-right" {
+ f.nail
+ f.panright "100"
+ f.raise
+ f.nail
+ !"raise-mini-desktop"
+}
+
+"Up" = m|shift : window|frame|title : f.function "drag-with-up"
+"Down" = m|shift : window|frame|title : f.function "drag-with-down"
+"Left" = m|shift : window|frame|title : f.function "drag-with-left"
+"Right" = m|shift : window|frame|title : f.function "drag-with-right"
+
+# Accelerators out of icon manager
+# "F1" = : icon|window|frame|title : f.iconify
+"F2" = : icon|window|frame|title : f.raise
+"F3" = : icon|window|frame|title : f.lower
+"F1" = : iconmgr : f.hideiconmgr
+"F2" = : iconmgr : f.hideiconmgr
+"F7" = : all : f.warpring "prev"
+"F8" = : all : f.warpring "next"
+"Menu" = : icon|window|frame|title : f.showiconmgr
+
+# Accelerators in icon manager
+"F7" = : iconmgr : f.previconmgr
+"F8" = : iconmgr : f.nexticonmgr
+"Menu" = : iconmgr : f.function "select"
+
+# Accelerators everywhere for new clients
+"F4" = : all : !"xtrlock &"
+"F6" = : all : !"LC_CTYPE=en_GB.utf-8 xterm &"
+
+menu "windowmenu"
+{
+ "Window Menu" f.title
+ "Close" f.delete
+ "Destroy" f.destroy
+ "" f.nop
+ "Icon" f.iconify
+ "Nail" f.nail
+ "Zoom" f.zoom
+ "Resize" f.resize
+ "Identify" f.identify
+ "Forced move" f.forcemove
+ "" f.nop
+ "Mouse help" f.menu "windowmice"
+}
+
+menu "windowmice"
+{
+ "Modifiers Leftbutton Middle Right" f.nop
+ "" f.nop
+ " Move/Raise Move/Lower Menu" f.nop
+ " Shift: Iconify Resize Zoom" f.nop
+ " Meta: Focus/Unfocus Checkpoint" f.nop
+ " Control: Forced Move Delete" f.nop
+ "Control+Shift: Destroy" f.nop
+}
+
+menu "special"
+{
+ "Management" f.title
+ "Refresh" f.refresh
+ "Restart" f.function "restart"
+ "" f.nop
+ "Kill twm" f.quit
+ "" f.nop
+ "Show icon list" f.showiconmgr
+ "Hide icon list" f.hideiconmgr
+}
+
+Function "restart" {
+ !"rm .configs/mini-desktop-window-id"
+ f.restart
+}
+
+menu "programs"
+{
+ "Programs" f.title
+ "Emacs restart" !".configs/startemacs"
+ "Emacs left" !"emacs -geometry 79x40+0+35 &"
+ "" f.nop
+ "IRC Diziet" !"xterm -geometry 80x24+24-0 -T ' IRC' -e sh -c 'ssh -vt ijackson@tunnel.chiark.greenend.org.uk screen -x irc; read x' &"
+# "IRC iwj" !"xterm -geometry 80x70+340-0 -T 'IRC iwj' -e irc iwj cam.irc.devel.ncipher.com &"
+ "" f.nop
+ "Trn" !"xterm -geometry 80x45+240+95 -e trn &"
+ "Archie" !"xarchie &"
+ "Calc" !"xcalc &"
+# "Xab large" !"xab &"
+# "Xab small" !"perl -e '$xab=\"xab\"; exec $xab \"other-xab\"' &"
+ "" f.nop
+ "Management" f.menu "special"
+ "Hosts" f.menu "hosts"
+ "Games" f.menu "games"
+ "Demos" f.menu "demos"
+}
+
+
+Menu "hosts"
+{
+ "Hosts" f.title
+
+
+
+
+ "" f.nop
+ "Relativity" !"xterm-CT 'Relativity' -e ssh -p24 r-ian@relativity.dynamic.greenend.org.uk &"
+ "" f.nop
+ "Lewes" !"xterm-CT 'lewes rlogin' -e rlogin lewes &"
+ "Scunthorpe" !"xterm-CT 'scunthorpe rlogin' -e rlogin scunthorpe &"
+ "Saintpaul" !"xterm-CT 'saintpaul rlogin' -e rlogin saintpaul &"
+ "Slough" !"xterm-CT 'slough rlogin' -e rlogin slough &"
+ "Guildford" !"xterm-CT 'guildford rlogin' -e rlogin guildford &"
+ "York" !"xterm-CT 'york rlogin' -e rlogin york &"
+# "Greenock" !"xterm-CT 'greenock rlogin' -e rlogin greenock &"
+ "" f.nop
+ "Ursa" !"xterm-CT 'ursa rlogin' -e rlogin ursa.cus.cam.ac.uk -l iwj10 &"
+ "Taurus" !"xterm-CT 'taurus ssh' -e ssh taurus.cus.cam.ac.uk -l iwj10 &"
+ "Taurus rlogin" !"xterm-CT 'taurus rlogin' -e rlogin taurus.cus.cam.ac.uk -l iwj10 &"
+ "Bootes" !"xterm-CT 'bootes rlogin' -e rlogin bootes.cus.cam.ac.uk -l iwj10 &"
+ "Thor" !"xterm-CT 'thor rlogin' -e rlogin hammer.thor.cam.ac.uk -l iwj10 &"
+ "" f.nop
+ "Leek" !"xterm-CT 'leek rlogin' -e rlogin leek.cam-orl.co.uk -l iwj&"
+ "Lobster" !"xterm-CT 'lobster rlogin' -e rlogin lobster.cam-orl.co.uk -l iwj&"
+ "" f.nop
+ "Shep" !"xterm-CT 'shep ssh' -e ssh shep.cl.cam.ac.uk -l iwj10 &"
+ "Ouse" !"xterm-CT 'ouse ssh' -e ssh ouse.cl.cam.ac.uk -l iwj10 &"
+ "" f.nop
+ "Chiark" !"xterm-CT 'chiark ssh' -e ssh chiark.greenend.org.uk -l ijackson &"
+ "Chiark ian" !"xterm-CT 'chiark ssh ian' -e ssh chiark.greenend.org.uk -l ian &"
+ "Chiark II" !"xterm-CT 'chiark ssh II' -e ssh chiark.greenend.org.uk -t -l ijackson personal/linux/bin/II &"
+ "Iguana" !"xterm-CT 'iguana ssh' -e ssh iguana.ucam.org -l ijackson &"
+ "Utter" !"xterm-CT 'utter ssh' -e ssh utter.chaos.org.uk -l ijackson &"
+ "" f.nop
+ "Club" !"xterm-CT 'club rlogin' -e rlogin club.damtp.cam.ac.uk -l iwj10 &"
+ "Greed" !"xterm-CT 'greed rlogin' -e rlogin greed.damtp.cam.ac.uk -l iwj10 &"
+ "Enghp" !"xterm -geometry 80x50 -T 'enghp' -e rlogin enghp.chu.cam.ac.uk -l iwj10 &"
+ "Impren" !"xterm-CT 'impren rlogin' -e rlogin impren.al.cl.cam.ac.uk -l ijackson &"
+ "" f.nop
+ "Novare -v" !"xterm-CT 'novare -v' -e ssh -v debian.novare.net -l iwj &"
+ "Novare" !"xterm-CT 'novare' -e ssh debian.novare.net -l iwj &"
+ "Debian" !"xterm-CT 'debian' -e rlogin ftp.debian.org -l iwj &"
+ "Debra" !"xterm-CT 'debra' -e rlogin debra.debian.org -l iwj &"
+ "GNU" !"xterm-CT 'gnu' -e rlogin mescaline.gnu.org -l ijackson &"
+ "GNU dist" !"xterm-CT 'gnudist' -e rlogin gnudist.gnu.org -l ijackson &"
+ "Master" !"xterm-CT 'master' -e ssh master.debian.org -l iwj &"
+ "Va" !"xterm-CT 'va' -e ssh va.debian.org -l iwj &"
+ "Nyx" !"xterm-CT 'nyx - rlogin' -e rlogin nyx.cs.du.edu -l ijackson &"
+ "Sunsite" !"xterm-CT 'sunsite' -e rlogin sunsite.unc.edu -l iwj &"
+ "White" !"xterm-CT 'white' -geometry 80x25 -e sh -c \
+ 'rlogin white.dogwood.com; line >/dev/null' &"
+}
+
+Menu "demos"
+{
+ "Demos - probably broken" f.title
+ "Ico" !"ico &"
+ "Maze" !"maze &"
+ "Muncher" !"muncher &"
+ "Plaid" !"plaid &"
+ "Worm" !"worm &"
+ "Colors" !"xcolors &"
+ "Eyes" !"xeyes &"
+ "Life" !"xlife &"
+ "XLogo" !"xlogo &"
+}
+
+Menu "games"
+{
+ "Games - probably broken" f.title
+ "Chomp" !"xchomp &"
+ "Cbzone" !"cbzone &"
+ "MazeWar" !"xterm -e mazewar &"
+ "Mille" !"xmille &"
+ "Reversi" !"reversi &"
+ "Roids" !"roids &"
+ "Robots" !"xrobots &"
+ "Shanghai" !"xmj &"
+ "Solitaire" !"xsol &"
+ "Spider" !"spider &"
+}