User Tools

Site Tools


wm:fvwm:config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
wm:fvwm:config [2021/12/29 21:09] – ↷ Page moved from fvwm:config to wm:fvwm:config warnaudwm:fvwm:config [2022/04/12 10:11] (current) – ↷ Links adapted because of a move operation 134.21.209.213
Line 1: Line 1:
 +My Main configuration file - please review before switching to it!\\
 +\\
 +This is the main config file, common to all my configuration.
 +\\
 +====== Config File ======
 +<code perl>
  
 +###############
 +# Default config file for defcon1
 +###
 +#
 +
 +###[ Software used ]#
 +# - imlibsetroot for the bakground
 +# - urxvt for terminale (Xterm in case)
 +# - trayer
 +# - xscreensaver
 +# - imagemagick
 +# - emelfm2
 +# - htop
 +# - screen
 +# - gmrun
 +
 +###[ Help and info ]#
 +# man fvwm !!
 +# right-clik on desktop / RTFM
 +# (FAQ) http://fvwmwiki.xteddy.org/IRC/HashFvwm/
 +# (Wiki) http://fvwmwiki.xteddy.org/
 +# (Forums) fvwmforums.org
 +# (IRC) #fvwm@freenode.net
 +# Google !
 +
 +###############
 +# Variables
 +###
 +#
 +####[ Folders ]#
 +# Wallpaper folder
 +Setenv fvwm_wallpapers $[FVWM_USERDIR]/settings/wallpapers
 +# Themes images
 +Setenv fvwm_images $[FVWM_USERDIR]/settings/images
 +# Temporary files
 +SetEnv fvwm_temp $[FVWM_USERDIR]/temp
 +# Scripts location
 +SetEnv fvwm_scripts $[FVWM_USERDIR]/scripts
 +# Icons location
 +SetEnv fvwm_icons $[FVWM_USERDIR]/settings/icons
 +# Screenshot storage
 +SetEnv fvwm_screenshots $[FVWM_USERDIR]/screenshots
 +# Default application icons
 +ImagePath $[fvwm_icons]:/usr/share/icons:+
 +# Windows placement files
 +SetEnv fvwm_place $[FVWM_USERDIR]/settings/placement
 +
 +###############
 +# Environnement setup
 +###
 +#
 +####[ Desktop configuration ]#
 +# On Fvwm you can have several desktops each of them can have pages!
 +# The visible part is called viewport and can overlap from 2 to 4
 +# pages depending on the configuration you set
 +# On this configuration I set 1 desktop composed of 9 pages in 3x3 like
 +#   +-----+-----+-----+
 +#    1  |  2  |  3  |
 +#   +-----+-----+-----+
 +#    4  |  5  |  6  |
 +#   +-----+-----+-----+
 +#    7  |  8  |  9  |
 +#   +-----+-----+-----+
 +# WARNING: the number are those used for the bindings since 0 is not that convenient... after 9
 +# So Page 0 will be binded to key Ctrl+1, Page 1 to Ctrl+2 ... See Binding section
 +
 +# Syntaxe to set it is: DeskTopSize HorizontalxVertical
 +DeskTopSize 3x3
 +# Mwm Emulation set for resizing and moving windows
 +Emulate Mwm
 +
 +# Lets ignore those modifiers: CapsLock(L) Numlock(2) Scrolllock(5)
 +IgnoreModifiers L25
 +
 +# Millisecond time before fvwm consider a click to be hold
 +ClickTime 250
 +
 +# Default margin around the viewport
 +# it is used for normal maximisation of window
 +# Syntax: EwmhBaseStruts left right top bottom  (size in pixels)
 +EwmhBaseStruts 10 10 10 10
 +
 +# Size in pixel(s) where EdgeResistance and EdgeScroll 
 +# are activated
 +EdgeThickness 1
 +
 +# Avoid moving while puting the mouse on the edge
 +EdgeScroll 0 0
 +
 +# If you want more desktop, you can name them 
 +# Desktop Names (I only have one desktop so itś kinda useless - given here as example)
 +DesktopName 0 Work
 +# Examples:
 +#DesktopName 1 Communications
 +#DesktopName 2 Office
 +#DesktopName 3 Remote Control
 +#DesktopName 4 Media
 +#DesktopName 5 System
 +
 +# For the apps to know the number of desktops
 +EwmhNumberOfDesktops 1
 +
 +###############
 +# Colorsets
 +###
 +#
 +####[ Default color ]#
 +Colorset 0 fg white, bg #262626, hi #262626, sh #262626
 +
 +####[ Windows]#
 +# Active windows
 +Colorset 1 fg darkgrey, bg #262626, hi #262626, sh #262626
 +# Inactive windows
 +Colorset 2 fg white, bg #293F7B, hi #293F7B, sh #293F7B
 +
 +####[ Menus ]#
 +# Default
 +Colorset 3 fg white, bg black, Translucent black 60, sh #4B63B2, hi #4B63B2
 +# Highlighted
 +Colorset 4 fg blue, bg grey
 +# Titles
 +Colorset 5 fg white, bg #4B63B2
 +
 +####[ Pager ]#
 +# Colorset viewport
 +Colorset 6 Transparent, Tint #ffffff 30
 +## Pager windows 
 +# normal
 +Colorset 7 Transparent, hi #ffffff, sh #ffffff, Tint #042883 30
 +# hilight
 +Colorset 8 Transparent, hi #ff0000, sh #ff0000, Tint #607ABD 60
 +## Balloons
 +Colorset 9 fg white, bg #042883
 +
 +### [ Default ]
 +# In case of doubt, default colorset
 +DefaultColorset 0
 +
 +###############
 +# Decorations
 +###
 +#
 +
 +# Default window decoration
 +# I made it simple I just hate those buttons everywhere ... ;-)
 +# Centered title, 18 pixels height, no 3D/shadow decoration
 +# button 1 handles the mini icon of the application and is flat
 +DestroyDecor DefaultDecor
 +AddToDecor DefaultDecor
 ++ TitleStyle Centered Height 18 -- Flat
 ++ ButtonStyle 1 MiniIcon -- UseTitleStyle HiddenHandles Flat
 +
 +
 +###############
 +# Fonts
 +###
 +#
 +####[ Default ]#
 +DefaultFont "xft:Bitstream Vera Sans:size=10:antialias=true:style=bold"
 +
 +###############
 +# Style
 +###
 +#
 +####[ ALL windows ( see the * )]# 
 +
 +# Miliseconds before moving window from page to page activates
 +Style * EdgeMoveDelay 0,EdgeMoveResistance 0
 +# All windows have a 3 pixels border
 +# These 3 pixels can be used to handle the window
 +Style * HandleWidth 3, BorderWidth 3
 +# All windows use the mouse focus and when clicked it raises
 +# them on top
 +Style * MouseFocus, Lenience, FPClickRaisesFocused, CirculateHit
 +# All windows uses default decoration
 +Style * UseDecor DefaultDecor
 +# Child windows are also decorate the same way
 +Style * DecorateTransient
 +# Default window colorset
 +Style * Colorset 1
 +# Border colorset of focused windows
 +Style * HilightColorset 2
 +# Border colorset
 +Style * BorderColorset 1
 +# Default font for window's title
 +Style * Font "xft:Swiss911 XCm BT:size=10:antialias=true"
 +# Note: this font is available in the ressource folder
 +
 +# Prevent Iconification of all windows:
 +Style * !Iconifiable
 +
 +####[ Special Styles that requires patches ]# (works without)
 +# Rounded corners über alles
 +#Style * RoundedCorners
 +# Border under the window's title
 +#Style * BorderUnderTitle
 +# Not a grid like Mwm but only a rectangle
 +#Style * ResizeOutlineThin
 +# Inactive window's title font
 +#Style * InactiveFont "xft:Swiss911 UCm BT:size=10:antialias=true"
 +
 +####[ Menus style (all) ]#
 +# Default
 +# no 3D, sub-menu margin of 10 pixels and 100% on the right,
 +# displayed after 200ms and removed if we go back to parent item
 +MenuStyle "*" Hilight3DOff, PopupOffset 10 100, PopupDelay 200, RemoveSubmenus
 +# Default font
 +MenuStyle "*" Font "xft:Swiss911 XCm BT:size=13:antialias=true"
 +# Title font
 +MenuStyle "*" TitleFont "xft:Space Age:size=12:antialias=true:style=bold"
 +# Normal and Highlighted menus colorset and animation on
 +MenuStyle "*" MenuColorset 3, HilightBack, ActiveColorset 4, Animation
 +# Shape of sub menus arrows
 +MenuStyle "*" TrianglesSolid
 +# Title colorset
 +MenuStyle "*" TitleColorset 5
 +# Border size: 2 pixels, no lines under the title, long separators
 +MenuStyle "*" BorderWidth 2, TitleUnderlines0, SeparatorsLong
 +# Items format (yes it's klingon style ...)
 +# icon + 4px + menu zone+ 10px
 +# icon + 5px + first column left aligned +5px
 +# Second column left align +5 px
 +# 3rd column right align +5px
 +# second mini column left aligned + 5px
 +# 2 pixels + sub menu shape +3px
 +# finally 5px + end of zone
 +MenuStyle "*" ItemFormat "%.4s%.10|%.5i%.5l%.5l%.5r%.5i%2.3>%5|"
 +# Verticale space above and under title
 +MenuStyle "*" VerticalTitleSpacing 4 4
 +# Verticale space above and under menu items
 +MenuStyle "*" VerticalItemSpacing 4 4
 +
 +####[ menu style requiring patch ]#
 +# Slight rounded corners
 +#MenuStyle "*" RoundedCorners, SlightlyRoundedCorners
 +# Flat separators
 +# MenuStyle "*" FlatSeparators
 +
 +###############
 +# Bindings
 +###
 +#######
 +# 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 <X>  <Context> <Modifier> <Action>
 +#         Mouse <X> <Context> <Modifier> <Action>
 +####################
 +# You can assign action to the mouse buttons / key bindings
 +# regarding where the focus is (context)
 +
 +# List of contexts:
 +# A : All (everywhere)
 +# R : Root (desktop background)
 +# I : Icon
 +# F : Frame Corner (window corner)
 +# S : Frame Side (window sides)
 +# T : Application Title (Title bar)
 +# 0-9 : Title bar buttons
 +# W : Window (the application window)
 +
 +## Modifiers list:
 +# Keyboard
 +# (A)ny, (C)ontrol, (S)hift, (M)eta = Alt, (N)othing
 +# Syntax: Key <key> context Modifier Function
 +
 +####[ Keyboard ]#
 +
 +# Win+tab Open Windows' list on the current Page and swith on selected window 
 +# after release of the Win key
 +Key Tab A 4 WindowList (CurrentPage) Root c c NoDeskSort, SelectOnRelease Super_L
 +
 +# Alt+tab Open Windows' list on the current Desk and swith on selected window 
 +# after release of the Alt key
 +Key Tab A M WindowList (CurrentDesk) Root c c NoDeskSort, SelectOnRelease Meta_L
 +
 +# Shift + Tab circuls around urxvt terms and switch on selected term after
 +# realease of left shift
 +#Key Tab A S WindowList (urxvt) Root c c NoDeskSort, SelectOnRelease Shift_L
 +
 +# Change page on the desktop with control + right/left
 +# Up/Down disabled since I use horizontal desktop with 3 pages
 +Key Up A C GotoPage wrapx wrapy 0p -1p
 +Key Down A C GotoPage wrapx wrapy 0p +1p
 +Key Right A C GotoPage wrapx wrapy +1p 0p
 +Key Left A C GotoPage wrapx wrapy -1p 0p
 +
 +# Change Desktop with  Alt or Ctrl + Up/Down (inverted to match Pager) - Given as example not used
 +#Key Up A M GotoDesk -1 0 0 5
 +#Key Down A M GotoDesk 1 0 0 5
 +#Key Up A C GotoDesk -1 0 0 5
 +#Key Down A C GotoDesk 1 0 0 5
 +
 +# Move direclty to page (Ctrl + PageNum)
 +Key 1 A C GotoPage 0 0
 +Key 2 A C GotoPage 1 0
 +Key 3 A C GotoPage 2 0
 +Key 4 A C GotoPage 0 1
 +Key 5 A C GotoPage 1 1
 +Key 6 A C GotoPage 2 1
 +Key 7 A C GotoPage 0 2
 +Key 8 A C GotoPage 1 2
 +Key 9 A C GotoPage 2 2
 +
 +# Exit Menu (Ctrl + 0)
 +Key 0 A C Module FvwmButtons ModQuit
 +
 +
 +# Move directly to desktop (Alt + DeskNum) - Given as example not used
 +#Key 1 A M GotoDesk 0 0
 +#Key 2 A M GotoDesk 0 1
 +#Key 3 A M GotoDesk 0 2
 +#Key 4 A M GotoDesk 0 3
 +#Key 5 A M GotoDesk 0 4
 +#Key 6 A M GotoDesk 0 5
 +
 +# Start screensaver (Win + x)
 +Key X A 4 Exec exec xscreensaver-command -lock
 +
 +# Identify window (win + i)
 +Key I A 4 Module FvwmIdent
 +
 +# Maxime "fullscreen" focused window (win + m) 
 +Key M W 4 Pick Maximize toggle 100 100
 +
 +# Maximize "horizontaly" focused windows (win + Left or win + right)
 +Key Right W 4 Current Maximize toggle growright 0
 +Key Left W 4 Current Maximize toggle growleft 0
 +
 +# Maximize "verticaly" focused windows (win + Up or win + down)
 +Key Up W 4 Pick Maximize toggle 0 growup
 +Key Down W 4 Pick Maximize toggle 0 growdown
 +
 +# Resize Windows
 +# Grow right Meta+Right
 +Key Right W M Current ResizeWindowRight
 +# Grow Down Meta + Down
 +Key Down W M Current ResizeWindowBottom
 +# Shrink left Meta+left
 +Key Left W M Current ResizeWindowLeft
 +# Shrink up Meta +up
 +Key Up W M Current ResizeWindowUp
 +
 +AddToFunc ResizeWindowRight
 ++ I PipeRead "echo Resize $(($[cw.width] + 15))p keep"
 +
 +AddToFunc ResizeWindowLeft
 ++ I PipeRead "echo Resize $(($[cw.width] - 15))p keep"
 +
 +AddToFunc ResizeWindowBottom
 ++ I PipeRead "echo Resize keep $(($[cw.height] + 15))p"
 +
 +AddToFunc ResizeWindowUp
 ++ I PipeRead "echo Resize keep $(($[cw.height] - 15))p"
 +
 +# Restart fvwm (Ctrl + Backspace)
 +Key BackSpace A C Restart
 +
 +# Toggle the file manager (win + e)
 +Key E A 4 ToggleFMPanel
 +
 +# Start a Terminal (win + t)
 +Key T A 4 FvwmTerm
 +
 +# Screenshot of a window (Win +s)
 +Key S A 4 Pick (CirculateHit) FvwmWindowScreenshot
 +
 +# Screenshot of the complete page (Win + Shift + s)
 +Key S A S4 FvwmDesktopScreenshot
 +
 +# Make window sticky (Win + P) P = Pin
 +Key P A 4 Stick
 +
 +# Quake Console on Ctrl + Esc
 +Key escape A C ToggleConsole
 +
 +# Window Menu (Ctrl + space)
 +Key space W C Menu MenuFvwmWindow
 +
 +# Main menu (Ctrl + Home) Displayed specially on the top left border
 +Key Home A C Menu MenuFvwmMain Root +20p +20p
 +
 +# Application launcher (Win + r)
 +Key R A 4 ToggleFvwmLauncher
 +
 +# Toggle ControlPanel (Win + F1)
 +Key F1 A 4 ToggleControlPanel
 +
 +####[ Mouse ]#
 +# Syntax :Mouse Button Context Modifier Fonction
 +# Button numbers are:
 +# +------------+
 +# | ||  ||  || |
 +# |            |
 +# +------------+
 +#       3
 +
 +# Disable left clik on desktop
 +Mouse 1 R A -
 +# Right clik on desktop opens main menu
 +Mouse 3 R A Menu MenuFvwmMain
 +# Middle click on title bar close the window
 +Mouse 2 T A Close
 +# Right-Click on the title bar open the window menu
 +Mouse 3 T A Menu MenuFvwmWindow
 +# Wheel up on window's title shades the window
 +Mouse 4 T A FvwmWindowShade True
 +# Wheel down on window's title unshade the window
 +Mouse 5 T A FvwmWindowShade False
 +# Win + left click Move window
 +Mouse 1 W 4 Pick move
 +
 +####[ Applications Styles ]#
 +
 +# Style for trayer : not in windows list no border/title/handles
 +Style panel WindowListSkip, CirculateSkip, BorderWidth 0, HandleWidth 0, !Title
 +Style "acroread" StartsOnPage 0 1 2, NoTitle
 +#Style "rdesktop" !Title, !Borders, !Handles
 +Style "SSH_TERM" PositionPlacement +30p +30p, BorderWidth 2, !Handles, !Title, Sticky
 +
 +###############
 +# Functions
 +###
 +#
 +
 +# Remove the ability of crappy apps that takes the focus on their own
 +# http://fvwmwiki.xteddy.org/IRC/HashFvwm/#index21h2
 +DestroyFunc UrgencyFunc
 +
 +# Function run at start
 +DestroyFunc StartFunction
 +AddToFunc StartFunction
 +# First start
 ++ I Test (Init) SSH_KEY_TERM
 ++ I Test (Init) Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/internet-wallpaper-268439.jpg
 +# On reload
 +#+ I Test (Restart)
 +# On all start / restart
 +# TO BE SET IN .fvwm/settings/hostname files # + I Exec exec trayer --edge bottom --align right --widthtype pixel --width 130 --margin 0 --transparent true --alpha 255 --expand true
 ++ I Module FvwmEvent
 ++ I Module FvwmCommandS
 +
 +DestroyFunc ExitFunction
 +AddToFunc ExitFunction
 +# On quit
 +#+ I Test (Quit) 
 +# On restart
 ++ I Test (ToRestart) Exec exec killall trayer
 ++ I Test (ToRestart) KillModule ControlPanel
 +# DOESN'T WORK # + I Test (ToRestart) Exec exec xkill -id `xwininfo -name QUAKE | grep 'Window id:' | cut -d " " -f 4`
 +# On quit and restart
 +#+ I KillModule MyBuggyModule
 +
 +# FvwmWindowShade manage shading/unshading of a window
 +# 3 possibilities:
 +# True : shades
 +# False : unshades
 +# "blank" : invert status
 +DestroyFunc FvwmWindowShade
 +AddToFunc FvwmWindowShade
 ++ D WindowShade $0
 +
 +# Fonctions Screenshot
 +# Requires imagemagick
 +# Part of the window menu
 +# To use it elsewher: 
 +# Call the function with 'Pick (CirculateHit) FvwmWindowScreenshot'
 +DestroyFunc FvwmWindowScreenshot
 +AddToFunc FvwmWindowScreenshot
 ++ I ThisWindow (!Shaded,!Iconic) Exec import -window $[w.id] -quality 100 -silent $fvwm_screenshots/screenshot-`date +%F[%T]`.$[w.id].$[w.visiblename].jpg
 +
 +# Function that takes a screenshot of the complete desktop after $0 seconds
 +DestroyFunc FvwmDesktopScreenshot
 +AddToFunc FvwmDesktopScreenshot
 ++ I Exec sleep $0; import -window root -quality 100 -silent $fvwm_screenshots/screenshot-`date +%F[%R]`.jpg
 +
 +# A function that launches a urxvt terminal and setting it's name  and number
 +Style Terminal* TitleAtRight, PositionPlacement UnderMouse, MiniIcon mini_konsole.png
 +DestroyFunc FvwmTerm
 +AddToFunc FvwmTerm
 ++ I Piperead 'echo SetEnv fvwm_term_nb $((${fvwm_term_nb} + 1))'
 ++ I Exec exec urxvt -b 10 -name "Terminal ~ $fvwm_term_nb" -title "Terminal ~ $fvwm_term_nb"
 +
 +# Function that launches Firefox
 +Style Firefox StartsOnPage 0 0 0, !Title, !Borders, !Handles
 +DestroyFunc FvwmWeb
 +AddToFunc FvwmWeb
 ++ I Exec exec firefox
 +
 +# Function that launches videolan (vlc)
 +Style vlc StartsOnPage 0 2 1, !Title, !Borders, !Handles
 +DestroyFunc FvwmVideo
 +AddToFunc FvwmVideo
 ++ I Exec exec vlc
 +
 +# Event handle
 +# For Windows And Pages
 +DestroyModuleConfig FvwmEvent*
 +*FvwmEvent: add_window FvwmManageWindows
 +*FvwmEvent: new_page FvwmManagePages
 +# Add events on close_windows / quit page
 +
 +# Manage Windows
 +# I use this to auto maximize full screen some apps
 +DestroyFunc FvwmManageWindows
 +AddToFunc FvwmManageWindows
 ++ I ThisWindow ("Firefox") Maximize ewmhiwa
 ++ I ThisWindow ("Thunderbird") Maximize ewmhiwa
 ++ I ThisWindow ("libreoffice-*") Maximize ewmhiwa
 ++ I ThisWindow ("acroread") Maximize ewmhiwa
 ++ I ThisWindow ("vlc") Maximize ewmhiwa
 ++ I ThisWindow ("FVWMRESULT") WarpToWindow 50 50
 +
 +# Manage Pages
 +DestroyFunc FvwmManagePages
 +AddToFunc FvwmManagePages
 ++ I Exec exec echo "Desktop:" $[desk.n] "Page:" $[page.nx] $[page.ny] | osd_cat -d 1
 ++ I FvwmAutoStartApp
 +
 +# Auto-start Applications when on certain desks
 +# Kind of swith that launch the FvwmDeskNPageXY regarding which desk/page you are
 +DestroyFunc FvwmAutoStartApp
 +AddToFunc FvwmAutoStartApp
 +# if on desk 0 page 0 0 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 0 && $[page.ny] -eq 0 ]] && echo "FvwmDesk0Page00"'
 +# if on desk 0 page 0 1 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 0 && $[page.ny] -eq 1 ]] && echo "FvwmDesk0Page01"'
 +# if on desk 0 page 0 2 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 0 && $[page.ny] -eq 2 ]] && echo "FvwmDesk0Page02"'
 +# if on desk 0 page 1 0 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 1 && $[page.ny] -eq 0 ]] && echo "FvwmDesk0Page10"'
 +# if on desk 0 page 1 1 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 1 && $[page.ny] -eq 1 ]] && echo "FvwmDesk0Page11"'
 +# if on desk 0 page 1 2 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 1 && $[page.ny] -eq 2 ]] && echo "FvwmDesk0Page12"'
 +# if on desk 0 page 2 0 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 2 && $[page.ny] -eq 0 ]] && echo "FvwmDesk0Page20"'
 +# if on desk 0 page 2 1 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 2 && $[page.ny] -eq 1 ]] && echo "FvwmDesk0Page21"'
 +# if on desk 0 page 2 2 
 ++ I PipeRead '[[ $[desk.n] -eq 0 && $[page.nx] -eq 2 && $[page.ny] -eq 2 ]] && echo "FvwmDesk0Page22"'
 +# to be continued if needed on other desks
 +
 +# Man page display function
 +# parameter: command name
 +DestroyFunc FvwmViewManPage
 +AddToFunc FvwmViewManPage
 ++ I Exec exec xterm -fg White -bg DarkBlue -g 80x40 -fn 7x14 -fb 7x14bold \
 +-n "Manual Page - $0" -T "Manual Page - $0" -e man "$0"
 +
 +# Nice urxvt terminal without title bar
 +# On the second page of the second desktop
 +Style "IRSSI"       MiniIcon irssi.png, Icon irssi.png , EWMHMiniIconOverride, NoTitle, StartsOnPage 0 1 1
 +DestroyFunc FvwmIrssi
 +AddToFunc FvwmIrssi
 ++ I Exec exec urxvt -title IRSSI -name IRSSI -geometry 143x42+33+74 +sb -bc -e screen -A -d -R IRSSI -c ~/.fvwm/settings/programs/.screenrc-irssi
 +
 +# File Browser
 +DestroyFunc FvwmFm
 +AddToFunc FvwmFm
 ++ I Exec exec emelfm2
 +
 +# Main Terminal
 +Style "FVWMSCREEN" NoTitle, StartsOnPage 0 0 1, PositionPlacement +15p +15p
 +DestroyFunc FvwmScreen
 +AddToFunc FvwmScreen
 ++ I Exec exec urxvt -title FVWMSCREEN  -geometry 148x40+10+90 +sb -bc -e screen -c ~/.fvwm/settings/programs/.screenrc-main -ARd FVWMSCREEN
 +#+ I PipeRead 'cat $[fvwm_place]/`eval hostname`.FVWMSCREEN'
 +
 +# Fvwm config editor
 +Style "FVWM CONFIG" EWMHMiniIconOverride, NoTitle, FixedPosition, FixedSize
 +DestroyFunc FvwmEditor
 +AddToFunc FvwmEditor
 ++ I Exec exec urxvt -tr -tint white -sh 30 -title "FVWM CONFIG" -geometry 189x47+13+76 +sb -bc -e screen -c ~/.fvwm/settings/programs/.screenrc-fvwmedit -ARd FvwmEdit
 +
 +# Mail App
 +Style "Thunderbird" StartsOnPage 0 1 0, !Title, !Borders, !Handles
 +DestroyFunc FvwmMail
 +AddToFunc FvwmMail
 ++ I Exec exec thunderbird
 +
 +DestroyFunc FvwmTeamViewer
 +AddtoFunc FvwmTeamViewer
 ++ I Exec exec sudo systemctl start teamviewerd
 ++ I Exec exec `sleep 5 && teamviewer`
 +
 +# Office tools
 +Style "libreoffice-*" StartsOnPage 0 1 2, NoTitle
 +DestroyFunc FvwmCalc
 +AddToFunc FvwmCalc
 ++ I Exec exec libreoffice --nologo --calc
 +
 +DestroyFunc FvwmWriter
 +AddToFunc FvwmWriter
 ++ I Exec exec libreoffice --nologo --writer
 +
 +DestroyFunc FvwmImpress
 +AddToFunc FvwmImpress
 ++ I Exec exec libreoffice --nologo --impress
 +
 +## Per desk/page wallpaper / menu
 +DestroyFunc FvwmDesk0Page00
 +AddToFunc FvwmDesk0Page00
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/internet-wallpaper-268439.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page10
 +AddToFunc FvwmDesk0Page10
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/mail-wallpaper-762509.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page20
 +AddToFunc FvwmDesk0Page20
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/music-wallpaper85023.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page01
 +AddToFunc FvwmDesk0Page01
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/LCARS_Cconsole.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page11
 +AddToFunc FvwmDesk0Page11
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/IRC-wallpaper-429097.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page21
 +AddToFunc FvwmDesk0Page21
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/video-1443453.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page02
 +AddToFunc FvwmDesk0Page02
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/virtual-reWalls.com_14280.jpg
 +# Set wallpaper
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page12
 +AddToFunc FvwmDesk0Page12
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/office-wallpaper-2005232.jpg
 +# Set Menu
 +
 +DestroyFunc FvwmDesk0Page22
 +AddToFunc FvwmDesk0Page22
 +# Set wallpaper
 ++ I Exec exec imlibsetroot -s w -x 1 $[fvwm_wallpapers]/picture-crunchyroll-forum-anime-picture-war-page-24.jpg
 +# Set Menu
 +
 +###############
 +# Menus
 +###
 +#
 +# Main menu
 +DestroyMenu MenuFvwmMain
 +AddToMenu MenuFvwmMain  " $[USER] " Title
 ++ ""                            Nop
 ++ "&Terminal"                   FvwmTerm
 ++ "&Screen"                     FvwmScreen
 ++ ""                            Nop
 ++ "&Navigateur Web"             FvwmWeb
 ++ "&Mail"                       FvwmMail
 ++ "&IRC"                        FvwmIrssi
 ++ ""                            Nop
 ++ "Teamviewer"                  FvwmTeamViewer
 ++ ""                            Nop
 ++ "&File Manager"               FvwmFm
 ++ ""                            Nop
 ++ "Tools"                       Popup MenuFvwmTools
 ++ ""                            Nop
 ++ "&System"                     Popup MenuFvwmSystem
 ++ ""                            Nop
 ++ "&Quit"                       Module FvwmButtons ModQuit
 +
 +# System Menu (Network/Service/Config)
 +DestroyMenu MenuFvwmSystem
 +AddToMenu MenuFvwmSystem " Configure System " Title
 ++ ""                            Nop
 ++ "&Fvwm"                       Popup MenuFvwmConfig
 ++ ""                            Nop
 ++ "&Networks"                   Popup MenuFvwmNetworks
 ++ ""                            Nop
 ++ "&Services"                   Popup MenuFvwmServices
 +
 +# Fvwm Configuration Menu
 +DestroyMenu MenuFvwmConfig
 +AddToMenu MenuFvwmConfig "Fvwm" Title
 ++ ""                    Nop
 ++ "&FvwmConsole"        Module FvwmConsole -terminal urxvt
 ++ "&Edit Config"        FvwmEditor
 ++ "&Restart"            Restart
 ++ "&RTFM"               Popup MenuFvwmMan
 +
 +DestroyMenu MenuFvwmTools
 +AddToMenu MenuFvwmTools "Tools" Title
 ++ ""                    Nop
 ++ "&Wavemon"            Exec exec urxvt -e wavemon
 ++ "&Htop"               Exec exec urxvt -e htop
 ++ "&Xterm"              Exec exec xterm
 ++ "X&kill"              Exec exec xkill
 ++ "&Battery"            Nop
 +
 +DestroyMenu MenuFvwmNetworks
 +AddtoMenu MenuFvwmNetworks "Networks" Title
 ++ DynamicPopupAction Function MakeNetworksMenu
 +
 +AddToFunc MakeNetworksMenu
 ++ I DestroyMenu recreate MenuFvwmNetworks
 ++ I AddToMenu MenuFvwmNetworks Networks Title
 ++ I AddToMenu MenuFvwmNetworks "" Nop
 ++ I PipeRead  '$[fvwm_scripts]/gen-networks-menu.sh MenuFvwmNetworks'
 +
 +DestroyMenu MenuFvwmServices
 +AddtoMenu MenuFvwmServices "Services" Title
 ++ DynamicPopupAction Function MakeServicesMenu
 +
 +AddToFunc MakeServicesMenu
 ++ I DestroyMenu recreate MenuFvwmServices
 ++ I AddToMenu MenuFvwmServices Services Title
 ++ I AddToMenu MenuFvwmServices "" Nop
 ++ I PipeRead  '$[fvwm_scripts]/gen-services-menu.sh MenuFvwmServices'
 +
 +
 +DestroyMenu MenuFvwmMan
 +AddToMenu MenuFvwmMan " FVWM Man Pages " Title
 ++ "fvwm"                    FvwmViewManPage fvwm
 ++ "FvwmAnimate"             FvwmViewManPage FvwmAnimate
 ++ "FvwmAuto"                FvwmViewManPage FvwmAuto
 ++ "FvwmBacker"              FvwmViewManPage FvwmBacker
 ++ "FvwmBanner"              FvwmViewManPage FvwmBanner
 ++ "FvwmButtons"             FvwmViewManPage FvwmButtons
 ++ "FvwmCommand"             FvwmViewManPage FvwmCommand
 ++ "FvwmConsole"             FvwmViewManPage FvwmConsole
 ++ "FvwmConsoleC.pl"         FvwmViewManPage FvwmConsoleC.pl
 ++ "FvwmCpp"                 FvwmViewManPage FvwmCpp
 ++ "FvwmDebug"               FvwmViewManPage FvwmDebug
 ++ "FvwmDragWell"            FvwmViewManPage FvwmDragWell
 ++ "FvwmEvent"               FvwmViewManPage FvwmEvent
 ++ "FvwmForm"                FvwmViewManPage FvwmForm
 ++ "FvwmGtk"                 FvwmViewManPage FvwmGtk
 ++ "FvwmGtkDebug"            FvwmViewManPage FvwmGtkDebug
 ++ "FvwmIconBox"             FvwmViewManPage FvwmIconBox
 ++ "FvwmIconMan"             FvwmViewManPage FvwmIconMan
 ++ "FvwmIdent"               FvwmViewManPage FvwmIdent
 ++ "FvwmM4"                  FvwmViewManPage FvwmM4
 ++ "FvwmPager"               FvwmViewManPage FvwmPager
 ++ "FvwmPerl"                FvwmViewManPage FvwmPerl
 ++ "FvwmProxy"               FvwmViewManPage FvwmProxy
 ++ "FvwmRearrange"           FvwmViewManPage FvwmRearrange
 ++ "FvwmSave"                FvwmViewManPage FvwmSave
 ++ "FvwmSaveDesk"            FvwmViewManPage FvwmSaveDesk
 ++ "FvwmScript"              FvwmViewManPage FvwmScript
 ++ "FvwmScroll"              FvwmViewManPage FvwmScroll
 ++ "FvwmTaskBar"             FvwmViewManPage FvwmTaskBar
 ++ "FvwmTheme"               FvwmViewManPage FvwmTheme
 ++ "FvwmWharf"               FvwmViewManPage FvwmWharf
 ++ "FvwmWinList"             FvwmViewManPage FvwmWinList
 ++ "FvwmWindowMenu"          FvwmViewManPage FvwmWindowMenu
 ++ ""                        Nop
 ++ "fvwm-config"             FvwmViewManPage fvwm-config
 ++ "fvwm-perllib"            FvwmViewManPage fvwm-perllib
 ++ "fvwm-root"               FvwmViewManPage fvwm-root
 ++ "fvwm-bug"                FvwmViewManPage fvwm-bug
 ++ "fvwm-convert-2.2"        FvwmViewManPage fvwm-convert-2.2
 ++ "fvwm-convert-2.4"        FvwmViewManPage fvwm-convert-2.4
 ++ ""                        Nop
 ++ "fvwm-menu-desktop"       FvwmViewManPage fvwm-menu-desktop
 ++ "fvwm-menu-directory"     FvwmViewManPage fvwm-menu-directory
 ++ "fvwm-menu-headlines"     FvwmViewManPage fvwm-menu-headlines
 ++ "fvwm-menu-xlock"         FvwmViewManPage fvwm-menu-xlock
 +
 +# Dedicated page menu
 +DestroyMenu MenuFvwmWindow
 +AddToMenu MenuFvwmWindow " Window Operations " Title
 ++ ""                        Nop
 ++ "&Move to Page"           PopUp MenuFvwmMovetoPage
 ++ ""                        Nop
 ++ "&Identification"         FvwmIdent
 ++ ""                        Nop
 ++ "&Take Capture"           FvwmWindowScreenshot
 ++ ""                        Nop
 ++ "&Maximize"               PopUp MenuFvwmMaximize
 ++ ""                        Nop
 ++ "&Close"                  Close
 ++ "&Kill"                   Destroy
 +
 +# Switch to Page Menu
 +DestroyMenu MenuFvwmMovetoPage
 +AddToMenu MenuFvwmMovetoPage " Move this window to " Title
 ++ "Page &1 (Browser)"       MoveToPage 0 0
 ++ "Page &2 (Mail)"          MoveToPage 1 0
 ++ "Page &3 (Music)"         MoveToPage 2 0
 ++ "Page &4 (Terminal)"      MoveToPage 0 1
 ++ "Page &5 (Comms)"         MoveToPage 1 1
 ++ "Page &6 (Videos)"        MoveToPage 2 1
 ++ "Page &7 (VMs)"           MoveToPage 0 2
 ++ "Page &8 (Office)"        MoveToPage 1 2
 ++ "Page &9 (Pictures)"      MoveToPage 2 2
 +
 +# Maximize Menu
 +DestroyMenu MenuFvwmMaximize
 +AddToMenu MenuFvwmMaximize " Maximize this window " Title
 ++ "&Horizontal"             Maximize 100 0
 ++ "&Vertical"               Maximize 0 100
 ++ "&Max"                    Maximize 100 100
 ++ "&Full screen"            Maximize ewmhiwa 100 100
 +
 +###############
 +# Panels (FvwmButtons / Pager ...)
 +###
 +#
 +
 +####[ Nice exit window centered - well as much as possible ]#
 +
 +Style ModQuit NoTitle,StaysOnTop, Sticky, HandleWidth 0, BorderWidth 1, !Handles, PositionPlacement Center, NoPPosition, NoUSPosition
 +
 +DestroyModuleConfig ModQuit: *
 +*ModQuit: Geometry 320x100@p
 +*ModQuit: Font "xft:Bitstream Vera Sans:size=10:antialias=true:style=bold"
 +*ModQuit: Colorset 11
 +*ModQuit: Rows 3
 +*ModQuit: Columns 4
 +*ModQuit: Frame 0
 +*ModQuit: Padding 5
 +*ModQuit: BoxSize fixed
 +*ModQuit: (1x2, Icon cancel.png, ActionOnPress, Action 'KillModule FvwmButtons ModQuit')
 +*ModQuit: (1x2, Icon konsole.png, ActionOnPress, Action Quit)
 +*ModQuit: (1x2, Icon reload.png, ActionOnPress, Action 'Exec exec sudo systemctl reboot')
 +*ModQuit: (1x2, Icon exit.png, ActionOnPress, Action 'Exec exec sudo systemctl poweroff')
 +*ModQuit: (1x1, Title "Oups")
 +*ModQuit: (1x1, Title "Exit")
 +*ModQuit: (1x1, Title "Reboot")
 +*ModQuit: (1x1, Title "Halt")
 +
 +# Default FvwmPager configuration
 +DestroyModuleConfig FvwmPager: *
 +*FvwmPager: DeskTopScale 9
 +*FvwmPager: DeskHilight
 +*FvwmPager: MiniIcons
 +*FvwmPager: Balloons
 +*FvwmPager: Font none
 +*FvwmPager: UseSkipList
 +*FvwmPager: BalloonColorset * 1
 +*FvwmPager: Fore grey
 +*FvwmPager: Back black
 +*FvwmPager: Hilight darkgrey
 +*FvwmPager: SloppyFocus
 +
 +# Control Panel
 +Style "ControlPanel" !Handles, !Title, Sticky, !Borders, WindowListSkip
 +DestroyModuleConfig ControlPanel: *
 +*ControlPanel: Geometry +0+0
 +*ControlPanel: Background black
 +*ControlPanel: Rows 1
 +*ControlPanel: Columns 2
 +*ControlPanel: Frame 0
 +*ControlPanel: (1x1, Swallow (UseOld,Respawn) "Conky" 'Exec exec conky -o -c ~/.fvwm/settings/programs/.conkyrc')
 +*ControlPanel: (1x1, Swallow (UseOld,Respawn) "FvwmPager" 'Module FvwmPager')
 +
 +DestroyFunc StartControlPanel
 +AddtoFunc StartControlPanel
 ++ I Module FvwmButtons ControlPanel
 ++ I Wait ControlPanel
 ++ I Next (ControlPanel) Maximize ewmhiwa 100 345p
 ++ I Next (ControlPanel) State 1 True
 +
 +DestroyFunc ToggleControlPanel
 +AddToFunc ToggleControlPanel
 ++ I None (ControlPanel) StartControlPanel
 ++ I TestRc (NoMatch) All (ControlPanel,State 1) AnimatedMove +0p 50-50w ewmhiwa
 ++ I TestRc (Match) All (ControlPanel) Focus
 ++ I TestRc (Match) All (ControlPanel) WarpToWindow 50 50
 ++ I TestRc (NoMatch) All (ControlPanel) AnimatedMove +0p -$[vp.height]p ewmhiwa
 ++ I Next (ControlPanel) State 1 toggle
 +
 +DestroyFunc SSH_KEY_TERM
 +AddToFunc SSH_KEY_TERM
 ++ I Exec exec xterm -fg White -bg black -g 80x1 -fn 7x14bold -n "SSH_TERM" -T "SSH_TERM" -e /bin/bash -l -c "PS1=\"\";ssh localhost exit"
 ++ I Wait SSH_TERM
 ++ I TestRc (Match) All (SSH_TERM) Focus
 ++ I TestRc (Match) All (SSH_TERM) WarpToWindow 10 50
 +
 +# Console quake
 +DestroyFunc StartConsole
 +AddtoFunc StartConsole
 ++ I Exec exec urxvt +tr -title QUAKE -name quake -bc +sb -geometry +0+0 -e screen -A -d -R QUAKE -c ~/.fvwm/settings/programs/.screenrc-quake
 +#+ I Exec exec urxvt -title QUAKE -name QUAKE -geometry +0+0 +sb -bc -e screen -A -d -R QUAKE -c ~/.fvwm/settings/programs/.screenrc-quake
 ++ I Wait quake
 ++ I Next (quake) Maximize ewmhiwa 100 0
 ++ I Next (quake) State 1 True
 +
 +DestroyFunc ToggleConsole
 +AddToFunc ToggleConsole
 ++ I None (quake) StartConsole
 ++ I TestRc (NoMatch) All (quake,State 1) AnimatedMove +0p +0p ewmhiwa
 ++ I TestRc (Match) All (quake) Focus
 ++ I TestRc (Match) All (quake) WarpToWindow 50 50
 ++ I TestRc (NoMatch) All (quake) AnimatedMove +0p -$[vp.height]p ewmhiwa
 ++ I Next (quake) State 1 toggle
 +
 +Style quake WindowListSkip, BorderWidth 2, !Handles, !Title, Sticky
 +
 +
 +# FileManager Panel
 +DestroyFunc StartFMPanel
 +AddtoFunc StartFMPanel
 ++ I Exec exec emelfm2
 ++ I Wait emelfm2
 ++ I Next (emelfm2) Maximize ewmhiwa 80 50
 ++ I Next (emelfm2) State 1 True
 +
 +DestroyFunc ToggleFMPanel
 +AddToFunc ToggleFMPanel
 ++ I None (emelfm2) StartFMPanel
 ++ I TestRc (NoMatch) All (emelfm2,State 1) AnimatedMove 10 50-50w ewmhiwa Warp
 ++ I TestRc (Match) All (emelfm2) Focus
 ++ I TestRc (Match) All (emelfm2) WarpToWindow 50 50
 ++ I TestRc (NoMatch) All (emelfm2) AnimatedMove 10 +$[vp.height]p ewmhiwa
 ++ I Next (emelfm2) State 1 toggle
 +
 +Style emelfm2  BorderWidth 0, !Handles, !Title, Sticky, MiniIcon mini_emelfm2.png, EWMHMiniIconOverride, PositionPlacement Center, FPGrabFocus
 +
 +# Small Launcher that never dies (as default …) - works good with gtk-theme-bleufear
 +Style "FvwmLauncher" !Handles, !Title, Sticky, !Borders, WindowListSkip
 +# Output terminal
 +Style "FVWMRESULT" !Handles, !Title, Sticky, !Borders
 +DestroyModuleConfig FvwmLauncher: *
 +*FvwmLauncher: Geometry 605x60+10+10
 +*FvwmLauncher: Background black
 +*FvwmLauncher: Rows 1
 +*FvwmLauncher: Columns 1
 +*FvwmLauncher: Frame 0
 +*FvwmLauncher: (1x1, Swallow (UseOld,Respawn) "Gmrun" 'Exec exec gmrun')
 +
 +DestroyFunc StartFvwmLauncher
 +AddtoFunc StartFvwmLauncher
 ++ I Module FvwmButtons FvwmLauncher
 ++ I Wait FvwmLauncher
 ++ I Next (FvwmLauncher) State 1 True
 +
 +DestroyFunc ToggleFvwmLauncher
 +AddToFunc ToggleFvwmLauncher
 ++ I None (FvwmLauncher) StartFvwmLauncher
 ++ I TestRc (NoMatch) All (FvwmLauncher,State 1) AnimatedMove +10p +10p ewmhiwa
 ++ I TestRc (Match) All (FvwmLauncher) Focus
 ++ I TestRc (Match) All (FvwmLauncher) WarpToWindow 10 50
 ++ I TestRc (NoMatch) All (FvwmLauncher) AnimatedMove +10p -$[vp.height]p ewmhiwa
 ++ I Next (FvwmLauncher) State 1 toggle
 +
 +# Read specific host config file for specific menus/functions/styles or overloading original ones
 +PipeRead 'cat ~/.fvwm/settings/$(uname -n)'
 +
 +# vim:ft=fvwm
 +</code>
 +
 +
 +====== tweaks ======
 +Some tweaks for your system
 +===== sudoers =====
 +<code bash>
 +yourlogin ALL=(ALL) NOPASSWD: /usr/bin/poweroff, /usr/bin/reboot, /usr/bin/shutdown, /usr/bin/systemctl, /usr/bin/ip
 +</code>
 +
 +===== gmrun =====
 +Please see [[software:gui:gmrun|GmRun]]