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