# RABBIT'S ULTRIX-LIKE VTWM configuration file v.1.5.0 NoGrabServer RestartPreviousState NoDefaults NoTitle # remove this to restore titlebars ShowIconManager IconManagerGeometry "1700x24+0+0" 10 SortIconManager IconifyByUnmapping #comment this to minimize windows to desktop icons NoMenuShadows # especially useful if you run picom or compton RightHandSidePulldownMenus NaturalAutoPanBehavior NotVirtualGeometries FixManagedVirtualGeometries FixTransientVirtualGeometries SortIconManager #comment this if you want windows to be shown in the iconmgr in the order in which they were spawned RandomPlacement #comment this if you want to place windows manually, or add a list after this if you want some windows to be placed automatically and all others manually. "Random" is a misnomer. MoveDelta 3 ResizeRegion "NorthEast" FramePadding 2 ButtonIndent -2 TitlePadding 0 TitleButtonBorderWidth 0 BorderWidth 1 BorderBevelWidth 0 ButtonBevelWidth 1 DoorBevelWidth 0 IconBevelWidth 0 IconManagerBevelWidth 0 InfoBevelWidth 0 MenuBevelWidth 0 TitleBevelWidth 0 VirtualDesktopBevelWidth 0 ClearBevelContrast 40 DarkBevelContrast 40 #VirtualDesktop "5x2-0-0" 16 #default placement and size VirtualDesktop "5x2+519-0" 20 #in the middle on my monitor PanDistanceX 100 PanDistanceY 100 PanResistance 750 AutoPan 100 TitleFont "-adobe-courier-medium-r-normal--*-100-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-courier-medium-r-normal--*-100-*-*-*-*-*-*" VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Lists # #NoHighlight WarpCursor Immutable { "VTWM Icon Manager" #makes wm controls fixed. "VTWM Desktop" #add whatever you want to be unmoveable } NailedDown { "VTWM *" "xclock" "xload" #add whatever you want to be present on the real screen at all times } DontShowInDisplay { "VTWM *" "xclock" "xload" #add whatever you don't want to see in the panner } IconManagerDontShow { "VTWM *" "xclock" "xload" #these will not be present in the iconmanager. It may be worth adding donticonifybyunmapping for these programs. } Pixmapsdd { MenuIconPixmap ":rarrow" IconManagerPixmap ":dot" #as far as I can tell these are builtin icons, probably a bitmap literal in the actual code of VTWM itself. Replace these at your peril. } Color { DefaultBackground "#11454a" DefaultForeground "gray85" BorderColor "white" # Change this to change the active window frame (focus hint) BorderTileBackground "gray60" # Change both of these to change the BorderTileForeground "gray60" # color of the inactive window frame DoorBackground "#11454a" DoorForeground "gray85" TitleBackground "#11454a" TitleForeground "lightgray" MenuBackground "lightgray" MenuForeground "#11454a" MenuTitleBackground "#11454a" MenuTitleForeground "lightgray" IconBackground "#11454a" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "#11454a" IconManagerForeground "gray85" VirtualBackground "gray70" VirtualForeground "black" DesktopDisplayBackground "gray85" DesktopDisplayForeground "black" RealScreenBackground "gray60" } Monochrome { DefaultBackground "gray50" DefaultForeground "gray85" BorderColor "gray70" BorderTileBackground "gray60" BorderTileForeground "gray60" DoorBackground "gray50" DoorForeground "gray85" TitleBackground "gray50" TitleForeground "gray85" MenuBackground "gray50" MenuForeground "gray85" MenuTitleBackground "gray70" MenuTitleForeground "gray50" IconBackground "gray50" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "gray50" IconManagerForeground "gray85" VirtualBackground "gray70" VirtualForeground "black" DesktopDisplayBackground "gray85" DesktopDisplayForeground "black" RealScreenBackground "gray60" } # FUNCTIONS AND KEYBINDINGS --- PAY ATTENTION TO THIS SECTION. # Syntax for these bindings is "
= [MOD[ | MOD | MOD] : : # Where MAIN KEY is the non-modifier key or mouse button to be bound, MOD is one of m=alt, c=ctrl, s=shift, l=caps lock, mod1..5 = mN, # CONTEXT is what aspect of the WM is under the mouse pointer and COMMAND is a function of VTWM of the form"f." Function "move-or-iconify" { f.move f.deltastop f.iconify } Function "move-or-raiselower" { f.move f.deltastop f.raiselower } Function "warpwindow" { f.warpsnug f.warp f.warpsnug } Button3 = : root : f.menu "arrange" #right click on root window Button2 = : root : f.menu "main" #center click on root window Button1 = : root : f.menu "apps" #left click on root window #these bring up the main menus. #"r" = m : all : f.exec "rofi -show run &" #ALT-R: replace this with your program launcher... I can't get dmenu to work with this but rofi is fantastic. #"e" = m : root : f.exec "thunar ~ &" #ALT-E: replace this with your GUI file manager "t" = m : root : f.exec "xterm &" #ALT-T: probably any terminal will do just as well "w" = m : root : f.panup "100" #Use ALT + WASD keys as arrows to pan around on the root window. "s" = m : root : f.pandown "100" "a" = m : root : f.panleft "100" "d" = m : root : f.panright "100" "w" = c | m : window : f.topzoom #Use CTR+ALT+WASD on a window to expand a window to half the screen (in that direction) "s" = c | m : window : f.bottomzoom "a" = c | m : window : f.leftzoom "d" = c | m : window : f.rightzoom "w" = s | m : window : f.fullzoom #ALT+SHIFT+W: maximize window "s" = s | m : window : f.zoom #ALT+SHIFT+S: expand window to full height of screen "d" = s | m : window : f.horizoom #ALT+SHIFT+D: expand window to full width of screen. #ALTERNATELY, YOU COULD USE K for W, H for A, J for S and L for D... this will be familiar to vim users and nethack players. Button1 = m : window : f.function "move-or-raiselower" #ALT + left click on window to move Button2 = m : window : f.iconify #ALT + center click on window to minimize Button3 = m : window : f.resize #ALT + right click on window to resize. Button1 = m | s : window : f.ring ## ALT + SHIFT + left click does a very interesting function in this setup --> ## it adds the window to a circle of windows. Then, another command will "warp" ## you to the window, both moving your cursor there (giving it focus) and ## raising it to the foreground Button2 = m | s : window : f.focus ## ALT + SHIFT + center click causes a window to have persistent focus even if the ## cursor is over another window. Button3 = m | s : window : f.nail ## ALT + SHIFT + right click will cause a window to remain in the same position ## on the real screen when the real screen is panned around the virtual desktop Button3 = m | c : window : f.delete # CTR + ALT + right click to close a window normally (hangup) Button2 = m | c : window : f.kill # CTR + ALT + center click to force close (kill) Button1 = m | c : window : f.menu "arrange" # CTR + ALT + left click: this brings up the window menu which has many of the same functions. "Delete" = m | c : root : f.restart # CTR+ALT+DEL to restart the WM, rereading this file "F4" = m : root : f.quit # ALT+F4 on the root window is MS-WIN-like keybinding to logout of this WM "Tab" = m : all : f.warpring "next" # ALT+TAB '' '' '' '' '' '' '' '' warp to next in ring "Tab" = m | s : all : f.warpring "prev" # ALT+SHIFT+TAB warp to previous in ring Button1 = : icon : f.function "move-or-iconify" Button3 = : icon : f.menu "arrange" Button1 = : iconmgr : f.iconify # left click on item in iconmanager to minimize or deminimize Button2 = : iconmgr : f.warp # center click on an item to go to that window (moves cursor) Button3 = : iconmgr : f.menu "arrange" # right click on an item to access window menu Button1 = : virtual : f.movescreen Button2 = : virtual : f.movescreen Button3 = : virtual : f.movescreen Button1 = : desktop : f.movescreen Button2 = : desktop : f.warp # morph desktop to window Button3 = : desktop : f.function "warpwindow" # morph window to desktop # MENUS # This section is extremely self-explanatory. Just don't use "f.exec" without putting a & at the end of the command line. If you don't you WILL # softlock the WM unless you enable smart command execution... I don't care to in my own .vtwmrc but you probably can. menu "main" { " Commands " f.title "" f.separator "Show Icon Mgr" f.showiconmgr "Hide Icon Mgr" f.hideiconmgr "Show Desktop" f.showdesktopdisplay "Hide Desktop" f.hidedesktopdisplay "Show/hide nailed" f.nailedabove "Refresh" f.refresh "" f.separator "Update Display" f.restart "Logout" f.quit } menu "apps" { " Applications " f.title # "Run Command" f.exec "rofi -show run &" # again, replace this with your program launcher "Terminal" f.exec "xterm &" "System" f.menu "system" "Internet" f.menu "internet" "Utilities" f.menu "util" "Other" f.menu "misc" #At the end of this menu is where I put the command to start the compositor, since I don't always want it running, but I frequently do. } menu "system" { " System " f.title "xclock" f.exec "xclock -update 1 &" "xload" f.exec "xload &" "xterm" f.exec "xterm &" #"task manager" f.exec "xterm htop &" # Or replace this with "top" for a program included with most distros, or use a GUI taskmgr } menu "internet" { " Internet " f.title #"Firefox" f.exec "firefox &" # replace these with your favorite internet programs #"Thunderbird" f.exec "thunderbird &" } menu "util" { " Utilities " f.title #"gui text editor" f.exec "gedit &" #"file manager" f.exec "[YOUR FM] &" #"image browser" f.exec "[YOUR IMAGE VIEWER] &" } menu "misc" { " Other " f.title #maybe put games here? } menu "ops" { " Window Manager " f.title "Show Icon Mgr" f.showiconmgr "Hide Icon Mgr" f.hideiconmgr "Show Desktop" f.showdesktopdisplay "Hide Desktop" f.hidedesktopdisplay "Show/hide nailed" f.nailedabove "Refresh" f.refresh } menu "arrange" { " Window " f.title "Set autoraise" f.autoraise "Nail down" f.nail "Add to Ring" f.ring "" f.separator #"Move" f.move #"Resize" f.resize #"Minimize" f.iconify #"" f.separator "Maximize" f.fullzoom "Mazimize horizontal" f.horizoom "Maximize vertical" f.zoom "" f.separator "Left tab" f.squeezeleft "Center tab" f.squeezecenter "Right tab" f.squeezeright "" f.separator "Close" f.delete "Kill" f.destroy }