################################## # ____________________________ # ( _________________________) # ) (__ _ _ _ _ # ( __)( \/ )( \/\/ )/\/\ # ) ( \ / \ // \ # (___) \/ \/\/(_/\/\_) 2.6 # # # This is the default configuration file shipped with fvwm. # # This config file is organized as follows: # # 1: Functions # 2: Styles # 3: Colorsets # 4: Menus # 5: Bindings # 6: Decor # 7: Modules # ################################# # InfoStoreAdd can be used to store variable data internal to fvwm. # The variable can then be used in the configuration as $[infostore.name]. # # You can also use environment variables but for data internal to fvwm # use InfoStore variables instead. # # The following is used in various menus and also sets the terminal # that FvwmConsole uses. Change this to your terminal of choice InfoStoreAdd terminal st InfoStoreAdd altterminal urxvtc ImagePath +:$[FVWM_USERDIR]/icon/PixelFengShui ImagePath +:$[FVWM_USERDIR]/icon/PixelFengShui/24 ImagePath +:$[FVWM_USERDIR]/icon/Yoritsuki ImagePath +:$[FVWM_USERDIR]/icon/Yoritsuki/24 ImagePath +:$[FVWM_USERDIR]/icon/pixmap # read .sidebar.fvwm2rc SetEnv fvwmscript $[HOME]/.fvwm/fvwmscript/ SetEnv themedir $[HOME]/.fvwm/themes/ ########### # 1: Functions # # Fvwm can use custom functions for various tasks. # The syntax for defining a function named FunctionName is: # # DestroyFunc FunctionName # AddToFunc FunctionName # + I [Action to do Immediately] # + C [Action to do on a Mouse Click] # + D [Action to do on a Mouse Double Click] # + H [Action to do on a Mouse Hold] # + M [Action to do on a Mouse Motion] ########### # Start Function # # The start function is run right after fvwm is done reading # the config file. This function run after each restart # so using Test (Init) or Test (Restart) can further control # actions that are run during the first time run (Init) or # actions that are run after a restart. DestroyFunc StartFunction AddToFunc StartFunction + I Test (Init) Module FvwmBanner + I Module FvwmButtons LeftPanel # + I Module FvwmScript sidebar + I Module FvwmScript fvwmscript/org-clock + I Module FvwmEvent EventNewDesk # Mouse Bindings Functions DestroyFunc RaiseMoveX AddToFunc RaiseMoveX + I Raise + M $0 + D $1 DestroyFunc RaiseMove AddToFunc RaiseMove + I Raise + M $0 DestroyFunc MoveToCurrent AddToFunc MoveToCurrent + I ThisWindow MoveToPage + I ThisWindow MoveToDesk # Function: ViewManPage $0 # # This function loads the man page $0 in an terminal # and is used with the help menu. DestroyFunc ViewManPage AddToFunc ViewManPage + I Exec exec $[infostore.terminal] -g 80x40 \ -n "Manual Page - $0" -T "Manual Page - $0" -e man "$0" # Function: SetBG $0 # # SetBG is used with the background menu to set the background # image and configure it to be loaded the next time fvwm is run. # Note, fvwm-root can't use .jpeg or resize images. Use something # like display, feh, etc. DestroyFunc SetBG AddToFunc SetBG + I Test (f $[FVWM_USERDIR]/images/background/$0) \ Exec exec fvwm2-root $[FVWM_USERDIR]/images/background/$0 + I TestRc (Match) Exec exec ln -fs images/background/$0 \ $[FVWM_USERDIR]/.BGdefault + I TestRc (Match) Break + I Test (!f $[FVWM_DATADIR]/default-config/images/background/$0) Break + I Exec exec fvwm2-root $[FVWM_DATADIR]/default-config/images/background/$0 + I Exec exec ln -fs $[FVWM_DATADIR]/default-config/images/background/$0 \ $[FVWM_USERDIR]/.BGdefault # Function: IconManClick # # This function is run from FvwmIconMan when the button is clicked. DestroyFunc IconManClick AddToFunc IconManClick + I ThisWindow (Raised, !Shaded, !Iconic, CurrentPage) Iconify + I TestRc (Match) Break + I ThisWindow WindowShade off + I ThisWindow Iconify off + I ThisWindow Raise + I ThisWindow (AcceptsFocus) FlipFocus # Function: ToggleTitle # # This function will toggle if fvwm shows the TitleBar. DestroyFunc ToggleTitle AddToFunc ToggleTitle + I ThisWindow (State 1) WindowStyle Title + I TestRc (Match) State 1 False + I TestRc (Match) Break + I WindowStyle !Title + I State 1 True # Function: ChangeDesk # # This function is called by FvwmEvent every time the Desk is changed. DestroyFunc ChangeDesk AddToFunc ChangeDesk + I SendToModule FvwmButtons ChangeButton desk0 Colorset 10 + I SendToModule FvwmButtons ChangeButton desk1 Colorset 10 + I SendToModule FvwmButtons ChangeButton desk2 Colorset 10 + I SendToModule FvwmButtons ChangeButton desk3 Colorset 10 + I SendToModule FvwmButtons ChangeButton desk$0 Colorset 11 # Function used for tiling/un-tiling windows. estroyFunc TileLeft AddToFunc TileLeft + I ThisWindow (!Shaded, !Iconic) Maximize 50 100 + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 DestroyFunc TileRight AddToFunc TileRight + I ThisWindow (!Shaded, !Iconic) Maximize 50 100 + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 +0 DestroyFunc TileTop AddToFunc TileTop + I ThisWindow (!Shaded, !Iconic) Maximize 100 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 DestroyFunc TileBottom AddToFunc TileBottom + I ThisWindow (!Shaded, !Iconic) Maximize 100 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 -0 DestroyFunc TileTopLeft AddToFunc TileTopLeft + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 +0 DestroyFunc TileTopRight AddToFunc TileTopRight + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 +0 DestroyFunc TileBottomLeft AddToFunc TileBottomLeft + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move +0 -0 DestroyFunc TileBottomRight AddToFunc TileBottomRight + I ThisWindow (!Shaded, !Iconic) Maximize 50 50 + I ThisWindow (Maximized, !Shaded, !Iconic) Move -0 -0 DestroyFunc ChangeTheme AddToFunc ChangeTheme + I Read $[themedir]/$0.sys + I Exec exec xrdb -merge ~/.Xresources.d/Xresources.$1 + I Exec exec echo "emacsclient -e \"$2\"" >> /tmp/fvwm_theme.log # To change the theme, you can call the function like this: # ChangeTheme theme_name Xresources_file_name # For example: # ChangeTheme "dark_theme" "dark_theme.Xresources" ############# # 2: Styles # ############# # Desktops and Pages # # Fvwm has both Virtual Desktops and Pages. Each Desktop is built from # a grid of Pages. The following sets the name of four Desktops and then # divides each Desktop into a 2x2 grid of Pages that are positioned as # # +---+---+ # | | | # +---+---+ # | | | # +---+---+ # DesktopName 0 Main DesktopName 1 Desk1 DesktopName 2 Desk2 DesktopName 3 Desk3 DesktopSize 2x2 # EdgeScroll will move the view port between the Pages when the mouse # moves to the edge of the screen. This set the amount of distance to # scroll at 100% (full page) and the EdgeResistance which is a timer # for how long the mouse as at the edge before it scrolls. # # Set EdgeScroll 0 0 and/or EdgeResistance -1 to disable. EdgeScroll 100 100 EdgeResistance 300 EdgeThickness 1 Style * EdgeMoveDelay 350, EdgeMoveResistance 350 # EwmhBaseStruts [left] [right] [top] [bottom] # Reserves space along the edge(s) of the Screen that will not # be covered when maximizing or placing windows. EwmhBaseStruts screen $[monitor.0.name] 120 0 0 0 # This sets the ClickTime and MoveThreshold used to determine # Double Clicks, Hold and Move for the mouse. ClickTime 250 MoveThreshold 3 # Sets the focus style to SloppyFocus and a mouse click # in a window will Raise it. Style * SloppyFocus, MouseFocusClickRaises # Default Font DefaultFont "xft:Iosevka Comfy:size=14:antialias=True" # Window Placement Style * MinOverlapPlacement, GrabFocusOff, !UsePPosition # Sets all windows to OpaqueMove (vs a wired frame) and windows will # snap to each other and the edge of the screen. OpaqueMoveSize unlimited Style * ResizeOpaque, SnapAttraction 15 SameType ScreenAll, SnapGrid # Transient Windows (such as open file windows) Style * DecorateTransient, StackTransientParent Style * !FPGrabFocusTransient, FPReleaseFocusTransient # WindowShade Style * WindowShadeScrolls, WindowShadeSteps 10 # Ignore Numlock and other modifiers for bindings # See http://fvwm.org/documentation/faq/#why-do-numlock-capslock-and-scrolllock-interfere-with-clicktofocus-andor-my-mouse-bindings IgnoreModifiers L25 # Decor Styles Style * BorderWidth 5, HandleWidth 5, MWMButtons, FvwmBorder, FirmBorder Style * Colorset 1, HilightColorset 2 Style * BorderColorset 3, HilightBorderColorset 4 # Disable Icons from appearing on desktop. # Comment this out or use Style * Icon to get the icons back. Style * Icon # Style * IconBox 990x150-20-10, IconGrid 234 134, IconFill right bottom Style * IconBox 64x1080-0+0 # Window Specific Styles Style LeftPanel !Title, !Borders, !Handles, Sticky, \ WindowListSkip, NeverFocus, FixedPosition Style conky !Title, !Borders, !Handles, Sticky, \ WindowListSkip, NeverFocus Style ConfirmQuit !Title, PositionPlacement Center, WindowListSkip, Layer 6 Style ConfirmOff !Title, PositionPlacement Center, WindowListSkip, Layer 6 Style FvwmIdent WindowListSkip Style st MiniIcon teacup.png, Icon teacup-big.png, EWMHMiniIconOverride, FPGrabFocus Style urxvt MiniIcon teacup.png, Icon teacup-big.png, EWMHMiniIconOverride, FPGrabFocus Style firefox MiniIcon "Chouchin Reinensai-24x24.png", Icon "Chouchin Reinensai.png", EWMHMiniIconOverride, IconOverride Style LibreWolf MiniIcon "Chouchin Kuroshiro-24x24.png", Icon "Chouchin Kuroshiro.png", EWMHMiniIconOverride, IconOverride Style emacs MiniIcon Shodou-24x24.png, IconOverride, Icon Shodou.png, EWMHMiniIconOverride Style Pcmanfm MiniIcon Bonsai-24x24.png, IconOverride, Icon Bonsai.png, EWMHMiniIconOverride Style "Org-Clock" Sticky, !Title, !Handles, NoClose, PositionPlacement 50-50w 0, WindowListSkip, NeverFocus, FixedPosition, StaysOnBottom Style sowon MiniIcon "Furoisu (bath chair)-24x24.png", Icon "Furoisu (bath chair).png", EWMHMiniIconOverride, IconOverride Style * Font "xft:Iosevka Comfy:Thin:size=14:antialias=True", FPGrabFocus ## Program styles # Style "*EMMS Playlist*" MiniIcon Shamisen-24x24.png, IconOverride, Icon Shamisen.png, EWMHMiniIconOverride, FPGrabFocus # Style "*tmr-tabulated-view*" MiniIcon "Furoisu (bath chair)-24x24.png", IconOverride, "Icon Furoisu (bath chair).png", EWMHMiniIconOverride, FPGrabFocus # Style *notmuch* MiniIcon "Kinchaku (drawstring bag)-24x24.png", IconOverride, Icon "Kinchaku (drawstring bag).png", EWMHMiniIconOverride, FPGrabFocus # Style "*elfeed-search*" MiniIcon "Shichirin (charcoal brazier)-24x24.png", IconOverride, Icon "Shichirin (charcoal brazier).png", EWMHMiniIconOverride, FPGrabFocus # Style "*Org Agenda*" MiniIcon "Kakejiku-24x24.png", IconOverride, Icon "Kakejiku.png", EWMHMiniIconOverride, FPGrabFocus ####### # 3: Colorsets # # Colorsets can be used to configure the color of the various # parts of fvwm such as window decor, menus, modules, etc. # # Colorset Convention # # 0 - Default # 1 - Inactive Windows # 2 - Active Window # 3 - Inactive Windows Borders # 4 - Active Windows Borders # 5 - Menu - Inactive Item # 6 - Menu - Active Item # 7 - Menu - Grayed Item # 8 - Menu - Title # 9 - Reserved # 10+ Modules # 10 - Module Default # 11 - Module Hilight # 12 - Module ActiveButton (Mouse Hover) # 13 - FvwmPager Active Page # 14 - FvwmIconMan Iconified Button ########### Read $[themedir]/modus-vivendi.sys ####### # 4: Menus ########### MenuStyle * MenuColorset 5, ActiveColorset 6, GreyedColorset 7, TitleColorset 8 MenuStyle * Hilight3DOff, HilightBack, HilightTitleBack, SeparatorsLong MenuStyle * TrianglesSolid MenuStyle * ActiveFore, !Animation, PopupOffset -5 100 # MenuStyle * ItemFormat "%|%3.1i%5.3l%5.3>%|" MenuStyle * Font "xft:Iosevka Comfy:Thin:size=14:antialias=True" # Root Menu # # The root menu will PopUp with a click in the root # window or using alt-f1 (or menu). DestroyMenu MenuFvwmRoot AddToMenu MenuFvwmRoot "Fvwm Menu" Title # + "&Programs%Kanban (sign)-24x24.png%" Popup MenuPrograms Test (x emacs) + "&Emacs%Shodou-24x24.png%" Exec exec emacsclient -c -a 'emacs' Test (x firefox) + "&Firefox%Chouchin Reinensai-24x24.png%" Exec exec firefox Test (x firefox-bin) + "&Firefox%Chouchin Reinensai-24x24.png%" Exec exec firefox-bin Test (x librewolf) + "Libre&wolf%Chouchin Kuroshiro-24x24.png%" Exec exec librewolf Test (x librewolf-bin) + "Libre&wolf%Chouchin Kuroshiro-24x24.png%" Exec exec librewolf-bin Test (x pcmanfm) + "&Files%Bonsai-24x24.png%" Exec exec pcmanfm + "&Terminal%Yunomi (tea cup)-24x24.png%" Exec exec $[infostore.terminal] + "" Nop + "&Flatpak%yukata-24x24.png%" Exec exec launch-flatpak # + "&Anki%Yoritsuki_disk-24x24.png%" Exec exec flatpak run net.ankiweb.Anki # + "&Zeal%Folder-24x24.png%" Exec exec flatpak run org.zealdocs.Zeal # + "Libre&office%Tsukubai-24x24.png%" Exec exec flatpak run org.libreoffice.LibreOffice # + "Cali&bre%yukata-24x24.png%" Exec exec flatpak run com.calibre_ebook.calibre + "" Nop Test (x emacs) + "&Agenda%Kakejiku-24x24.png%" Exec exec emacsclient -c -e '(bard/default-agenda)' Test (x emacs) + "&Calendar%Kanban (sign)-24x24.png%" Exec exec emacsclient -c -e '(bard/open-calendar)' Test (x emacs) + "&Email%Kinchaku (drawstring bag)-24x24.png%" Exec exec emacsclient -c -e '(notmuch-hello)' Test (x emacs) + "&Music%Shamisen-24x24.png%" Exec exec emacsclient -c -e '(emms)' Test (x emacs) + "&RSS%Shichirin (charcoal brazier)-24x24.png%" Exec exec emacsclient -c -e '(elfeed)' Test (x emacs) + "&Timers%Furoisu (bath chair)-24x24.png%" Exec exec emacsclient -c -e '(tmr-tabulated-view)' + "" Nop + "&Settings%Yagura1 (hot spring tower)-24x24.png%" Popup MenuSettings + "Fvwm&Ident%Tourist guidebook-24x24.png%" Module FvwmIdent + "&Wallpapers%Folder2-24x24.png%" Popup MenuWallpaper + "&Color Themes%Gunsen-24x24.png%" Popup MenuThemes + "" Nop + "&Power%Futon (bed)-24x24.png%" Popup MenuPower + "&Xscreensaver%Andon (lantern)-24x24.png%" Exec exec xscreensaver-command -lock # Programs Menu # # This test for some common programs and adds them to the menu. # When adding programs you don't need to use the Test (x foo) # lines as this is only to help make this menu portable. DestroyMenu MenuPrograms AddToMenu MenuPrograms "Programs" Title Test (x emacs) + "Emacs" Exec exec emacsclient -c -a 'emacs' Test (x firefox) + "Firefox" Exec exec firefox Test (x firefox-bin) + "Firefox" Exec exec firefox-bin Test (x librewolf) + "Librewolf" Exec exec librewolf Test (x librewolf-bin) + "Librewolf" Exec exec librewolf-bin Test (x google-chrome) + "Google-Chrome" Exec exec google-chrome Test (x gimp) + "Gimp" Exec exec gimp Test (x vlc) + "VLC" Exec exec vlc DestroyMenu MenuWallpaper AddToMenu MenuWallpaper "Wallpaper" Title + "Choose wallpaper" Exec exec $HOME/.local/bin/scripts/wallpaper.sh + "Themed wallpaper" Exec exec $HOME/.local/bin/scripts/load-theme-wallpaper + "Repaint wallpaper" Exec exec $HOME/.cache/wallpaper DestroyMenu MenuThemes AddToMenu MenuThemes "Themes" Title + "Modus &Vivendi" ChangeTheme 'modus-vivendi' 'vivendi' "(modus-themes-select 'modus-vivendi)" + "Vivendi &Tritanopia" ChangeTheme 'vivendi-tritanopia' 'vivendi-tritanopia' "(modus-themes-select 'modus-vivendi-tritanopia)" + "Vivendi &Tinted" ChangeTheme 'vivendi-tinted' 'vivendi-tinted' "(modus-themes-select 'modus-vivendi-tinted)" + "Modus Operandi &Tinted" ChangeTheme 'operandi-tinted' 'operandi-tinted' "(modus-themes-select 'modus-operandi-tinted)" + "Modus &Operandi" ChangeTheme 'modus-operandi' 'operandi' "(modus-themes-select 'modus-operandi)" + "Ef &Autumn" ChangeTheme 'ef-autumn' 'autumn' "(ef-themes-select 'ef-autumn)" + "Ef &Winter" ChangeTheme 'ef-winter' 'winter' "(ef-themes-select 'ef-winter)" + "Ef &Frost" ChangeTheme 'ef-frost' 'frost' "(ef-themes-select 'ef-frost)" + "Ef &Elea Light" ChangeTheme 'ef-elea-light' 'elea-light' "(ef-themes-select 'ef-elea-light)" + "Ef &Elea Dark" ChangeTheme 'ef-elea-dark' 'elea-dark' "(ef-themes-select 'ef-elea-dark)" + "Ef &Cyprus" ChangeTheme 'ef-cyprus' 'cyprus' "(ef-themes-select 'ef-cyprus)" + "Ef &Night" ChangeTheme 'ef-night' 'night' "(ef-themes-select 'ef-night)" + "Ef &Duo-Dark" ChangeTheme 'ef-duo-dark' 'duo-dark' "(ef-themes-select 'ef-duo-dark)" + "Ef &Day" ChangeTheme 'ef-day' 'day' "(ef-themes-select 'ef-day)" + "Ef &Eagle" ChangeTheme 'ef-eagle' 'eagle' "(ef-themes-select 'ef-eagle)" + "Ef &Owl" ChangeTheme 'ef-owl' 'owl' "(ef-themes-select 'ef-owl)" + "Ef &Dream" ChangeTheme 'ef-dream' 'dream' "(ef-themes-select 'ef-dream)" + "Ef &Reverie" ChangeTheme 'ef-reverie' 'reverie' "(ef-themes-select 'ef-reverie)" + "Ef &Maris Dark" ChangeTheme 'ef-maris-dark' 'maris-dark' "(ef-themes-select 'ef-maris-dark)" + "Ef &Maris Light" ChangeTheme 'ef-maris-light' 'maris-light' "(ef-themes-select 'ef-maris-light)" + "Ef &Cherie" ChangeTheme 'ef-cherie' 'cherie' "(ef-themes-select 'ef-cherie)" + "Ef &Rosa" ChangeTheme 'ef-rosa' 'rosa' "(ef-themes-select 'ef-rosa)" + "Ef &Bio" ChangeTheme 'ef-bio' 'bio' "(ef-themes-select 'ef-bio)" + "Ef &Spring" ChangeTheme 'ef-spring' 'spring' "(ef-themes-select 'ef-spring)" + "Ef Kassi&o" ChangeTheme 'ef-kassio' 'kassio' "(ef-themes-select 'ef-kassio)" + "Ef &Symbiosis" ChangeTheme 'ef-symbiosis' 'symbiosis' "(ef-themes-select 'ef-symbiosis)" + "Ef &Trio Dark" ChangeTheme 'ef-trio-dark' 'trio-dark' "(ef-themes-select 'ef-trio-dark)" + "Ef &Melissa Dark" ChangeTheme 'ef-melissa-dark' 'melissa-dark' "(ef-themes-select 'ef-melissa-dark)" + "Ef &Melissa Light" ChangeTheme 'ef-melissa-light' 'melissa-light' "(ef-themes-select 'ef-melissa-light)" + "Ef &Arbutus" ChangeTheme 'ef-arbutus' 'arbutus' "(ef-themes-select 'ef-arbutus)" + "" ChangeTheme 'vivendi' 'vivendi' "(modus-themes-select 'modus-vivendi)" DestroyMenu MenuPower AddToMenu MenuPower + "&Restart" Restart + "&Quit" Module FvwmScript fvwmscript/FvwmScript-ConfirmQuit + "&Poweroff" Module FvwmScript fvwmscript/FvwmScript-ConfirmOff DestroyMenu MenuSettings AddToMenu MenuSettings "Settings" Title Test (x nmtui) + "Network" Exec exec st -e nmtui Test (x arandr) + "Display" Exec exec arandr Test (x btop) + "System" Exec exec st -e btop Test (x blueman-manager) + "Bluetooth" Exec exec blueman-manager # Background Menu # # Backgrounds are located in ~/.fvwm/images/background/ # Menu icons are located in ~/.fvwm/images/bgicons/ DestroyMenu BGMenu AddToMenu BGMenu "Wallpapers" Title # Window Operations Menus DestroyMenu MenuWindowOps AddToMenu MenuWindowOps "Window Operations" Title + "Move" Move + "Resize" Resize + "Iconify" Iconify + "Maximize" Maximize + "Shade" WindowShade + "Stick" Stick + "" Nop + "Close" Close + "More..." Menu MenuWindowOpsLong This 0 0 DestroyMenu MenuWindowOpsLong AddToMenu MenuWindowOpsLong "Window Operations" Title + "Move" Move + "Resize" Resize + "(De)Iconify" Iconify + "(Un)Maximize" Maximize + "(Un)Shade" WindowShade + "(Un)Sticky" Stick + "(No)TitleBar" Pick (CirculateHit) ToggleTitle + "Send To" Popup MenuSendTo + "" Nop + "Close" Close + "Destroy" Destroy + "" Nop + "Raise" Raise + "Lower" Lower + "" Nop + "StaysOnTop" Pick (CirculateHit) Layer 0 6 + "StaysPut" Pick (CirculateHit) Layer 0 4 + "StaysOnBottom" Pick (CirculateHit) Layer 0 2 + "" Nop + "Identify" Module FvwmIdent DestroyMenu MenuIconOps AddToMenu MenuIconOps + "(De)Iconify" Iconify + "(Un)Maximize" Maximize + "(Un)Shade" WindowShade + "(Un)Sticky" Stick + "(No)TitleBar" Pick (CirculateHit) ToggleTitle + "Send To" Popup MenuSendTo + "" Nop + "Close" Close + "Destroy" Destroy + "" Nop + "Raise" Raise + "Lower" Lower + "" Nop + "StaysOnTop" Pick (CirculateHit) Layer 0 6 + "StaysPut" Pick (CirculateHit) Layer 0 4 + "StaysOnBottom" Pick (CirculateHit) Layer 0 2 + "" Nop + "Identify" Module FvwmIdent DestroyMenu MenuSendTo AddToMenu MenuSendTo + "Current" MoveToCurrent + "Page" PopUp MenuSendToPage + "Desk" PopUp MenuSendToDesk DestroyMenu MenuSendToDesk AddToMenu MenuSendToDesk + "Desk 0" MoveToDesk 0 0 + "Desk 1" MoveToDesk 0 1 + "Desk 2" MoveToDesk 0 2 + "Desk 3" MoveToDesk 0 3 DestroyMenu MenuSendToPage AddToMenu MenuSendToPage + "Page (0,0)" MoveToPage 0 0 + "Page (0,1)" MoveToPage 0 1 + "Page (1,0)" MoveToPage 1 0 + "Page (1,1)" MoveToPage 1 1 # Fvwm Man Pages (Help) Menu DestroyMenu MenuFvwmManPages AddToMenu MenuFvwmManPages "Help" Title + "fvwm2" ViewManPage fvwm2 + "FvwmAnimate" ViewManPage Fvwm2Animate + "FvwmAuto" ViewManPage Fvwm2Auto + "FvwmBacker" ViewManPage Fvwm2Backer + "FvwmBanner" ViewManPage Fvwm2Banner + "FvwmButtons" ViewManPage Fvwm2Buttons + "FvwmCommand" ViewManPage Fvwm2Command + "FvwmConsole" ViewManPage Fvwm2Console + "FvwmEvent" ViewManPage Fvwm2Event + "FvwmForm" ViewManPage Fvwm2Form + "FvwmIconMan" ViewManPage Fvwm2IconMan + "FvwmIdent" ViewManPage Fvwm2Ident + "FvwmPager" ViewManPage Fvwm2Pager + "FvwmPerl" ViewManPage Fvwm2Perl + "FvwmProxy" ViewManPage Fvwm2Proxy + "FvwmRearrange" ViewManPage Fvwm2Rearrange + "FvwmScript" ViewManPage Fvwm2Script + "" Nop + "fvwm2-root" ViewManPage fvwm2-root + "fvwm2-menu-desktop" ViewManPage fvwm2-menu-desktop + "fvwm2-menu-directory" ViewManPage fvwm2-menu-directory + "fvwm2-menu-headlines" ViewManPage fvwm2-menu-headlines + "fvwm2-menu-xlock" ViewManPage fvwm2-menu-xlock + "fvwm2-config" ViewManPage fvwm2-config ####### # 5: Mouse and Key bindings # # Contexts: # R = Root Window rrrrrrrrrrrrrrrrrrrrrr # W = Application Window rIrrrr<---------^rrrrr # F = Frame Corners rrrrrr[13TTTT642]rrrrr # S = Frame Sides rIrrrr[wwwwwwwww]rrrrr # T = Title Bar rrrrrr[wwwwwwwww]rrrrr # I = Icon rIrrrrv_________>rrrrr # rrrrrrrrrrrrrrrrrrrrrr # # Numbers are buttons: [1 3 5 7 9 TTTTT 0 8 6 4 2] # # Modifiers: (A)ny, (C)ontrol, (S)hift, (M)eta, (N)othing # # Format: Key # Mouse #################### # Alt-F1 or Menu to load the root menu and Alt-Tab for a WindowList. # Ctrl-F1/F2/F3/F4 will switch between the Virtual Desktops. # Super_R (windows key) will launch a terminal. # # Silent supresses any errors (such as keyboards with no Menu key). CursorStyle ROOT left_ptr CursorStyle TITLE left_ptr CursorStyle DEFAULT left_ptr CursorStyle SYS left_ptr CursorStyle MENU left_ptr CursorStyle WAIT left_ptr Silent Key F1 A M Menu MenuFvwmRoot Silent Key Space A 4 Menu MenuFvwmRoot Silent Key Space A 4S Menu MenuWindowOpsLong Silent Key Tab A M WindowList Root c c NoSticky, NoGeometry, NoDeskSort, CurrentAtEnd, SelectOnRelease Meta_L Silent Key F1 A 4 GotoDesk 0 0 Silent Key F2 A 4 GotoDesk 0 1 Silent Key F3 A 4 GotoDesk 0 2 Silent Key F4 A 4 GotoDesk 0 3 Silent Key F1 A 4S MoveToDesk 0 0 Silent Key F2 A 4S MoveToDesk 0 1 Silent Key F3 A 4S MoveToDesk 0 2 Silent Key F4 A 4S MoveToDesk 0 3 Silent Key 1 A 4 GotoPage 0 0 Silent Key 2 A 4 GotoPage 1 0 Silent Key 3 A 4 GotoPage 0 1 Silent Key 4 A 4 GotoPage 1 1 Silent Key 1 A 4S MoveToPage 0 0 Silent Key 2 A 4S MoveToPage 1 0 Silent Key 3 A 4S MoveToPage 0 1 Silent Key 4 A 4S MoveToPage 1 1 DestroyMenu MenuSendToPage AddToMenu MenuSendToPage + "Page (0,0)" MoveToPage 0 0 + "Page (0,1)" MoveToPage 0 1 + "Page (1,0)" MoveToPage 1 0 + "Page (1,1)" MoveToPage 1 1 # page scrolling custom Mouse 9 R 4 Scroll 0 -100p Mouse 8 R 4 Scroll 0 100p Mouse 9 A 4 Scroll 0 -100p Mouse 8 A 4 Scroll 0 100p #### Programs Keybinding # Silent Key Return A 4 Exec exec $[infostore.terminal] -g 80x32 Silent Key Return A 4 Exec exec $[infostore.terminal] Silent Key Return A 4C Exec exec $[infostore.altterminal] Silent Key Return A 4S Exec exec emacsclient -c -e '(bard/open-terminal-in-current-directory)' Silent Key Backslash A 4 Exec exec $[infostore.terminal] -e bc -l Silent Key E A 4 Exec exec emacs Silent Key N A 4 exec emacsclient -c Silent Key D A 4 Exec exec dmenu_run -c -l 15 # browser Silent Key W A 4 Exec exec librewolf-bin Silent Key W A 4S Exec exec firefox-bin #### Media keybinds Silent Key XF86AudioMute A A Exec exec pactl set-sink-mute @DEFAULT_SINK@ toggle Silent Key XF86AudioRaiseVolume A A Exec exec pactl set-sink-volume @DEFAULT_SINK@ +10% Silent Key XF86AudioLowerVolume A A Exec exec pactl set-sink-volume @DEFAULT_SINK@ -10% Silent Key XF86AudioMicMute A A Exec exec pactl set-source-mute @DEFAULT_SOURCE@ toggle Silent Key XF86AudioPrev A A Exec exec playerctl prev Silent Key XF86AudioNext A A Exec exec playerctl next Silent Key XF86AudioPause A A Exec exec playerctl pause Silent Key P A 4 Exec exec playerctl pause Silent Key XF86AudioPlay A A Exec exec playerctl play ## brightness Silent Key XF86MonBrightnessUp A A Exec exec xbacklight -inc 10 Silent Key XF86MonBrightnessDown A A Exec exec xbacklight -dec 10 #### Script keybinds Silent Key B A 4 Exec exec "$HOME/.local/bin/scripts/scratch.sh" Silent Key N A 4S Exec exec "$HOME/.local/bin/scripts/emacs-launcher" Silent Key D A 4S Exec exec "$HOME/.local/bin/scripts/dired_selector" Silent Key M A 4 Exec exec emacsclient -c -e '(emms)' Silent Key C A 4 Module FvwmScript fvwmscript/org-clock # screenshot Silent Key Print A A Exec exec "$HOME/.local/bin/scripts/maimpick" # Window Buttons: [1 3 5 7 9 TTTTT 0 8 6 4 2] # 1 - Open the WindowOps menu. # 2 - Close on single click, Destroy on double click. # 4 - Maximize (right/middle button will only maximize vertical/horizontal) # 6 - Iconify (minimize) Mouse 1 1 A Menu MenuWindowOps Delete Mouse 1 2 A Close Mouse 1 4 A Maximize 100 100 Mouse 2 4 A Maximize 0 100 Mouse 3 4 A Maximize 100 0 Mouse 1 6 A Iconify # TitleBar: Click to Raise, Move, Double Click to Maximize # Mouse Wheel Up/Down to WindowShade On/Off # Borders: Click to raise, Move to Resize # Root Window: Left Click - Main Menu # Right Click - WindowOps Menu # Middle Click - Window List Menu # Right click TitleBar/Borders for WindowOps Menu Mouse 1 T A RaiseMoveX Move Maximize Mouse 1 FS A RaiseMove Resize Mouse 4 T A WindowShade True Mouse 5 T A WindowShade False Mouse 1 R A Menu MenuFvwmRoot Mouse 2 R A WindowList Mouse 3 R A Menu MenuWindowOpsLong Mouse 1 I A RaiseMoveX Move "Iconify off" Mouse 3 T A Menu MenuWindowOps Mouse 3 I A Menu MenuIconOps # delete window Silent Key Q A 4 Close # Resize window DestroyFunc F-Move-Resize AddtoFunc F-Move-Resize + I Maximize 50 50 + I WarpToWindow 50 50 + I Move + I Maximize 100 100 DestroyFunc F-Move AddtoFunc F-Move + I WarpToWindow 50 50 + I Move DestroyFunc F-Resize AddtoFunc F-Resize + I WarpToWindow 100 100 + I Resize Silent Mouse 3 A 4 F-Resize Silent Mouse 1 A 4 F-Move # deiconify/iconify and rearrange Mouse 1 I A DeiconifyAndRearrange # super + arrows for tiling Silent Key Left A 4 TileLeft 60 100 +0 +0 Silent Key Right A 4 TileRight 40 100 -0 +0 Silent Key Up A 4 TileTop 40 60 -0 +0 Silent Key Down A 4 TileBottom 40 40 -0 -0 Silent Key Left A 4S TileTopLeft 60 100 +0 +0 Silent Key Right A 4S TileTopRight 40 100 -0 +0 Silent Key Up A 4S TileBottomLeft 40 60 -0 +0 Silent Key Down A 4S TileBottomRight 40 40 -0 -0 # Super+C/F/J/H/K/L - center, maximize, move window, etc Silent Key C A 4S AnimatedMove 50-50w 50-50w Silent Key F A 4 Maximize toggle 100 100 Silent Key F A 4S Iconify silent Key H A 4 AnimatedMove +0 w0px Silent Key L A 4 AnimatedMove -0 w0px Silent Key J A 4 AnimatedMove w0px -0 Silent Key K A 4 AnimatedMove w0px +0 Silent Key H A 4S Move w-20px w0px Silent Key L A 4S Move w20px w0px Silent Key J A 4S Move w0px w20px Silent Key K A 4S Move w0px w-20px # Silent Key Minus A 4 ShowDesktop # Silent Key Plus A 4 RestoreDesktop # Maximize in direction until we hit another window. Silent Key Left A 4C Maximize growleft 0 Silent Key Right A 4C Maximize growright 0 Silent Key Up A 4C Maximize 0 growup Silent Key Down A 4C Maximize 0 growdown ####### # 6: Window Decor # # Buttons Locations: [1 3 5 7 9 TTTTT 0 8 6 4 2] # # 1 - WindowOps Menu # 2 - Close # 4 - Maximize # 6 - Minimize ########### TitleStyle Centered Height 25 -- Flat ButtonStyle All ( Colorset 1 -- Flat ) ButtonStyle All Active ( Colorset 0 -- Flat ) AddButtonStyle 1 MiniIcon AddButtonStyle 6 Pixmap minimize__FFFFFF.svg:20x20 AddButtonStyle 4 Pixmap maximize__FFFFFF.svg:20x20 AddButtonStyle 2 Pixmap close__FFFFFF.svg:20x20 ############ # 7: Modules ############# # FvwmIdent # # FvwmIdent is a module that can be used to get the various info about # a window. One use is getting the class/resource/name of a window. DestroyModuleConfig FvwmIdent:* *FvwmIdent: Colorset 10 *FvwmIdent: Font "xft:Iosevka Comfy:size=14:antialias=True" # FvwmBanner # # This displays the Fvwm Logo for 5 seconds. This is displayed # when fvwm starts. DestroyModuleConfig FvwmBanner:* *FvwmBanner: NoDecor *FvwmBanner: Timeout 5 # FvwmScript # # FvwmScript is a module that allows one to write custom desktop # widgets and various other tools. This config uses two FvwmScripts. # - DateTime - uses the output of "date" to display the date/time # on the LeftPanel. # - Quit - This is a popup that asks for quit confirmation before # quitting fvwm. DestroyModuleConfig FvwmScript:* *FvwmScript: DefaultColorset 10 # FvwmButtons - LeftPanel # # FvwmButtons is a powerful module that can be used to build custom # panels and docks. This config uses FvwmButtons to build the LeftPanel. # The panel contains buttons to switch desks, FvwmPager, a system tray, # FvwmIconMan (list of running windows), and a clock. # # Note - To use the system tray you must have "stalonetray" installed. DestroyModuleConfig LeftPanel:* DestroyModuleConfig LeftPanel:* *LeftPanel: Geometry 120x$[vp.height]+0+0 # *LeftPanel: Geometry 120x$[vp.height]-0+0 *LeftPanel: Colorset 10 *LeftPanel: Rows $[vp.height] *LeftPanel: Columns 120 *LeftPanel: Frame 0 *LeftPanel: Font "xft:Comic Code:Bold:size=14:antialias=True" # *LeftPanel: (120x45, Icon "fvwm-logo-small.png", Frame 0) *LeftPanel: (120x5, Frame 0) *LeftPanel: (10x30, Frame 0) *LeftPanel: (25x30, Id desk0, Title "0", Action (Mouse 1) GotoDesk 0 0, Colorset 11, ActiveColorset 12, Frame 0) *LeftPanel: (25x30, Id desk1, Title "1", Action (Mouse 1) GotoDesk 0 1, ActiveColorset 12, Frame 0) *LeftPanel: (25x30, Id desk2, Title "2", Action (Mouse 1) GotoDesk 0 2, ActiveColorset 12, Frame 0) *LeftPanel: (25x30, Id desk3, Title "3", Action (Mouse 1) GotoDesk 0 3, ActiveColorset 12, Frame 0) *LeftPanel: (10x30, Frame 0) *LeftPanel: (5x120, Frame 0) *LeftPanel: (110x120, Swallow FvwmPager 'Module FvwmPager *', Frame 0) *LeftPanel: (5x120, Frame 0) *LeftPanel: (120x5, Frame 0) Test (x stalonetray) PipeRead 'echo "*LeftPanel: (120x$(($[vp.height]-250)), \ Top, Swallow FvwmIconMan \'Module FvwmIconMan\', Frame 0)"' Test (!x stalonetray) PipeRead 'echo "*LeftPanel: (120x$(($[vp.height]-250)),\ Top, Swallow FvwmIconMan \'Module FvwmIconMan\', Frame 0)"' *LeftPanel: (120x80, Swallow DateTime 'Module FvwmScript fvwmscript/FvwmScript-DateTime',\ Frame 0) # *LeftPanel: (120x50, Swallow ACPIStatus 'Module FvwmScript fvwmscript/FvwmScript-ACPIStatus',\ # Frame 0) # FvwmPager # # This module displays the location of the windows on the various Pages # and Desks. This is setup to show only the Pages on the current Desk. DestroyModuleConfig FvwmPager:* *FvwmPager: Colorset * 10 *FvwmPager: HilightColorset * 13 *FvwmPager: BalloonColorset * 10 *FvwmPager: WindowColorsets 10 11 *FvwmPager: Font None *FvwmPager: Balloons All *FvwmPager: BalloonFont "xft:Iosevka Comfy:Italic:size=14:antialias=True" *FvwmPager: Window3dBorders *FvwmPager: MiniIcons # FvwmIconMan # # FvwmIconMan is a powerful tool to list and manage windows. This # is used as the window list in the panel or taskbar. DestroyModuleConfig FvwmIconMan:* *FvwmIconMan: UseWinList true *FvwmIconMan: ButtonGeometry 120x20 *FvwmIconMan: ManagerGeometry 1x1 *FvwmIconMan: Colorset 10 *FvwmIconMan: FocusColorset 11 *FvwmIconMan: IconColorset 14 *FvwmIconMan: FocusAndSelectColorset 12 *FvwmIconMan: SelectColorset 12 *FvwmIconMan: IconAndSelectColorset 12 *FvwmIconMan: DrawIcons always *FvwmIconMan: ReliefThickness 0 *FvwmIconMan: Format "%t" *FvwmIconMan: Font "xft:Iosevka Comfy:size=14:antialias=True" *FvwmIconMan: Action Mouse 0 A ret *FvwmIconMan: Action Mouse 1 A sendcommand IconManClick *FvwmIconMan: Action Mouse 3 A sendcommand "Menu MenuIconOps" *FvwmIconMan: Resolution global *FvwmIconMan: Tips needed *FvwmIconMan: Sort id # FvwmEvent # # FvwmEvent is a module that can run an action or function # on specific events. This instance changes which desk number # is highlighted when the desk is changed. DestroyModuleConfig EventNewDesk:* *EventNewDesk: PassID *EventNewDesk: new_desk ChangeDesk # FvwmForm # # FvwmForm is a module that can be used to build a GUI # form. Used with fvwm-menu-desktop-config.fpl. # This sets the default colorsets. *FvwmFormDefault: Colorset 10 *FvwmFormDefault: ItemColorset 13 # Local configuration file. For use with the default-config. # # If $FVWMUSER_DIR/local.config ($HOME/.fvwm/local.config by default) # exists, then read it. This allows changes to default-config settings # without needing a full copy of the default-config. This will also allow # default-config changes to get used after upgrades (if applicable). Test (f $[FVWM_USERDIR]/local.config) Read $[FVWM_USERDIR]/local.config DesktopConfiguration per-monitor GotoDesk screen $[monitor.primary] 0 2 DestroyFunc SmartPrevPageFlipFocus AddToFunc SmartPrevPageFlipFocus + I Prev (CurrentDesk,AcceptsFocus,!Iconic,Iconifiable) FuncFlipFocusWindow + I TestRc (Match) EchoPageNumberIfFull cyan DestroyFunc DeiconifyAndRearrange AddToFunc DeiconifyAndRearrange + C Iconify off + C All (CurrentPage, Iconic) PlaceAgain Icon DestroyFunc IconFunc AddToFunc IconFunc + C DeiconifyAndRearrange + M Raise + M Move + D DeiconifyAndRearrange DestroyFunc LimitApplication AddToFunc LimitApplication + I Next ($0, CurrentDesk, CirculateHit) FlipFocus + I Next ($0, CurrentDesk, CirculateHit) Raise + I TestRc (NoMatch) None ($0, CurrentDesk) Exec exec $[1-] DestroyFunc ShowDesktop AddToFunc ShowDesktop + I All (CurrentPage, Iconic, State 1) RestoreDesktop + I TestRc (Match) Break + I All (CurrentPage, !Iconic, !State 1) ThisWindow State 1 True + I All (CurrentPage, !Iconic, State 1) Iconify DestroyFunc RestoreDesktop AddToFunc RestoreDesktop + I All (CurrentPage, Iconic, State 1) Iconify off + I All (CurrentPage, State 1) ThisWindow State 1 False Read $[themedir]/iosevka.sys