Dominik Vogt wrote:
> For testing pusposes I need to get an overwiev of what types of
> commands people use in fvwm.  Could everybody please look through
> their configuration files and post any commands:
> 
> 1) That contain whitespace, quoting characters or variables
>    (e.g. $[foo] or $w) in  the first word of the line.

PipeRead "echo InfoStoreAdd ratio `perl -e 'printf 
\"%.1f\",log($[vp.width]*$[vp.height])/log(10)-log(1024*768)/log(10)+1'`"
=> calculates a ratio for resolution dependent things

*************************************************************

#-----------------------------------------------------------------------
# replacement for iconify. Creates a small thumb with little app icon
# on the upper right and the name of the app at the bottom
#-----------------------------------------------------------------------
DestroyFunc FuncThumbnail
AddToFunc   FuncThumbnail
+ I Raise
+ I ThisWindow (!Iconic) PipeRead "echo SetEnv app_name `xprop -id $[w.id] 
WM_CLASS |cut -d',' -f2 |cut -d'\"' -f2`"
+ I PipeRead "echo SetEnv Icon-$[w.id] `fns-find-icon -i $[w.id]`"
+ I PipeRead 'test ! -d "${FVWM_USERDIR}/temp" && mkdir "${FVWM_USERDIR}/temp"'
+ I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
    "sleep 0.001; xwd -silent -id $[w.id] | convert -scale 128x72! -frame 1x1 \
    -mattecolor black -quality 0 xwd:- 
png:$[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png \
    && echo WindowStyle IconOverride, Icon 
$[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png \
    || echo Nop"
+ I TestRc (Match) Test (f $[Icon-$[w.id]], f 
$[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png) PipeRead \
    "convert $[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png \\\( $[Icon-$[w.id]] 
-scale 24x24 \\\) \
    -gravity northeast -geometry +10+10 -compose multiply -composite \
    -fill white -undercolor '#00000080' -gravity south -annotate +0+5 \" 
$[app_name] \" \
    $[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png; echo Nop"
+ I Iconify

#-----------------------------------------------------------------------
# replacement for deiconify.
#-----------------------------------------------------------------------
DestroyFunc FuncDeThumbnail
AddToFunc   FuncDeThumbnail
+ I Test (i $[Icon-$[w.id]]) WindowStyle Icon $[Icon-$[w.id]]
+ I TestRc (NoMatch) WindowStyle NoIconOverride, Icon
+ I Exec rm -f $[FVWM_USERDIR]/temp/icon.tmp.$[w.id].png
+ I All (Iconic, CurrentPage) PlaceAgain icon
+ I PipeRead 'if [ -O $[Icon-$[w.id]] ]; then rm -f $[Icon-$[w.id]];fi'
+ I UnsetEnv Icon-$[w.id]
+ I UnsetEnv app_name

*************************************************************

#-----------------------------------------------------------------------
# Shows a FvwmForm Infobox with one or multiple message line(s)
# realized with shell commands over PipeRead
#-----------------------------------------------------------------------
# Example:
# FuncShowMessage "<title>" "<message_1>" ... "<message_n>"
DestroyFunc FuncShowMessage
AddToFunc   FuncShowMessage
+ I PipeRead `echo 'DestroyModuleConfig  FvwmForm-Messages: *' > 
${FVWM_USERDIR}/FvwmForm-Messages; \
              echo '*FvwmForm-Messages: Font 8x13' >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
              echo '*FvwmForm-Messages: WarpPointer' >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
              echo "*FvwmForm-Messages: Title   \\"\\$\[gt.$0\]\\"" >> 
${FVWM_USERDIR}/FvwmForm-Messages `
+ I PipeRead `start=0; for i in $*; do \
              if [ "$start" -gt "0" ]; then \
                echo '*FvwmForm-Messages: Line    left' >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
                msg=$i; \
                echo "*FvwmForm-Messages: Text  \\"\\$\[gt.$msg\]\\"" >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
              fi; \
              start=$(($start+1)); \
              done `
+ I PipeRead `echo '*FvwmForm-Messages: Line   center' >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
              echo '*FvwmForm-Messages: Button  quit \"\$\[gt. Ok \]\" ^M' >> 
${FVWM_USERDIR}/FvwmForm-Messages; \
              echo '*FvwmForm-Messages: Command !(rm -f 
${FVWM_USERDIR}/FvwmForm-Messages)' >> ${FVWM_USERDIR}/FvwmForm-Messages `
+ I Schedule 100 Module FvwmForm FvwmForm-Messages

Example:
#     Button    Context Modifi      Function
Mouse 0         T       SCM         FuncShowMessage  "Mouse Bindings for 
Titlebar" \
"Mouse 1:   Drag moves window" \
"           Maximize on double click" \
"Mouse 2:   Drag moves window" \
"           Raise or lower with click" \
"Mouse 3:   WindowOpsTrimmed menu with click" \
"           WindowOpsFull menu with ALT + click" \
"Mouse 4/5: Shade/unshade window" \
"           with rolling wheel up/down"

*************************************************************

#-----------------------------------------------------------------------
# Wallpaper Browser by Taviso.
#-----------------------------------------------------------------------
DestroyFunc FuncWallpaperBrowser
AddToFunc   FuncWallpaperBrowser
+ I PipeRead 'test ! -d "${FVWM_USERDIR}/wallpapers" && mkdir 
"${FVWM_USERDIR}/wallpapers"; \
    test ! -d "${FVWM_USERDIR}/wallpapers/.thumbs" && mkdir 
"${FVWM_USERDIR}/wallpapers/.thumbs"'
+ I FuncCreateWpDirLinks
+ I PipeRead '_dir_path=`basename "$0"`; \
              sep=`test "$_dir_path" != "wallpapers" && echo /`; \
              echo SetEnv dir_path "${sep}`echo \\"\\$_dir_path\\" | sed 
\\"s#\\.#/#g;s#//#/\\.#g\\"`${sep}"'
+ I PipeRead ' \
    for i in "$0/"*; do \
        test -f "${FVWM_USERDIR}/wallpapers/.thumbs/${i##*/}" -a "${i}" -ot 
"${FVWM_USERDIR}/wallpapers/.thumbs/${i##*/}" || { \
                convert -define jpeg:size=200 -strip -quality 0 -thumbnail 42 
"${i}" "png:${FVWM_USERDIR}/wallpapers/.thumbs/${i##*/}" 2>/dev/null \
                    || continue; \
            }; \
    done; \
    fvwm-menu-directory --title "$[dir_path]" \
    --icon-file __PIXMAP__ --links \
    --icon-dir folder-images.svg:$[infostore.MenuIconSize] \
    --dir "$0" --command-file="FuncNewWallpaper \\"%f\\"" \
    --exec-t="^xv -wait 2 *" --func-name FuncWallpaperBrowser | sed \
    
"s#__PIXMAP__\\(.*\\)\\\"\\(.*/\\)\\(.*\\)\\\"#\\$[FVWM_USERDIR]/wallpapers/.thumbs/\\3\\1\\2\\3#g"'
+ I UnsetEnv dir_path

#-----------------------------------------------------------------------
# Create links in wallpaper directory to additional directories
#-----------------------------------------------------------------------
DestroyFunc FuncCreateWpDirLinks
AddToFunc   FuncCreateWpDirLinks
+ I PipeRead 'for _dir in `echo $[infostore.additional_wp_dirs] | sed "s#:# 
#g"`; do \
                if [ -d "$_dir" ]; then \
                    _dir_name=`echo "$_dir" | sed "s#^/##;s#/#.#g"`; \
                    if [ ! -L "${FVWM_USERDIR}/wallpapers/$_dir_name" ]; then \
                        ln -s "$_dir" "${FVWM_USERDIR}/wallpapers/$_dir_name"; \
                    fi; \
                fi; \
              done'
+ I FuncRemoveWpDirLinks

#-----------------------------------------------------------------------
# Remove links of obsolete additional directories in wallpaper directory
#-----------------------------------------------------------------------
DestroyFunc FuncRemoveWpDirLinks
AddToFunc   FuncRemoveWpDirLinks
+ I PipeRead ' \
    _wp_dirs=`echo "$[infostore.additional_wp_dirs]" | sed 
"s#^/\\|/\\\\$##g;s#:/#:#g;s#/:#:#g;s#/#\\.#g"`; \
    for _link in `find "${FVWM_USERDIR}/wallpapers" -maxdepth 1 -type l`; do \
        if [ -d "$_link" ]; then \
            _basename=`basename "$_link"`; \
            if [ -n "${_wp_dirs##*$_basename*}" ]; then \
                rm -f "$_link"; \
            fi; \
        fi; \
    done'

Example:
#-----------------------------------------------------------------------
# Dynamic Configuration sub menu for setting a background with
# a picture or FvwmBaker (default background) 
# realized with MissingSubmenuFunction (for the pictures)
#-----------------------------------------------------------------------
AddToMenu MenuWallpaperConfiguration DynamicPopupAction 
FuncMenuWallpaperConfiguration

DestroyFunc FuncMenuWallpaperConfiguration
AddToFunc   FuncMenuWallpaperConfiguration
+ I DestroyMenu MenuWallpaperConfiguration
+ I AddToMenu MenuWallpaperConfiguration "$[gt.Background Configuration]" Title
+ I AddToMenu MenuWallpaperConfiguration DynamicPopupAction 
FuncMenuWallpaperConfiguration
+ I Test (EnvMatch DesktopIconsOn 0) Test (I $[infostore.fvwm_wallpaper]) \
    AddToMenu MenuWallpaperConfiguration "$[gt.Set &Default 
background]%delete.svg:$[infostore.MenuIconSize]%"          FuncDelWallpaperlink
+ I AddToMenu MenuWallpaperConfiguration MissingSubmenuFunction 
FuncWallpaperBrowser
+ I AddToMenu MenuWallpaperConfiguration "$[gt.Set &Wallpaper 
background]%background.svg:$[infostore.MenuIconSize]%"    Popup 
$[FVWM_USERDIR]/wallpapers


*************************************************************

#-----------------------------------------------------------------------
# Restore the previous state of a window
#-----------------------------------------------------------------------
DestroyFunc FuncRestore
AddToFunc   FuncRestore
+ I ThisWindow (!Iconic !Shaded Maximized) Maximize    false
+ I ThisWindow (!Iconic  Shaded          ) WindowShade false
+ I ThisWindow ( Iconic                  ) Iconify     false

*************************************************************

> 3) Fvwm allows to start modules without using the "Module" command,
>    e.g. with just "FvwmButtons" instead of "Module FvwmButtons".
>    Do you use this?  Did you know that's possible?

No, no. Even though it is inconsistent. Better is to use "Module" infront
all the time to see that it is a module and not a function.

-- Thomas --

-- 
--
"Two things are infinite: the universe and human stupidity; and I'm not sure 
about the the universe."   --   Albert Einstein

Reply via email to