# Thumbnails

SetEnv ThumbWidth 128
SetEnv ThumbHeight 128

# One of (best to worst): resize, scale, sample
SetEnv ThumbQuality "resize"
SetEnv ThumbBorderColor "gray"

SetEnv ThumbDirectory "/tmp"
SetEnv ThumbIconDirectory "$[FVWM_CONFIGDIR]/bigicons"

#SetEnv SelectOnReleaseKey Alt_L

DestroyFunc Thumbnail
AddToFunc Thumbnail
+ I Current (!Iconifiable) Break
+ I CreateThumbnail

DestroyFunc DeThumbnail
AddToFunc DeThumbnail
+ I Nop
+ D RemoveThumbnail
+ D DeIconify

DestroyFunc CloseThumbnail
AddToFunc CloseThumbnail
+ D RemoveThumbnail
+ D Close

DestroyFunc CreateThumbnail
AddToFunc CreateThumbnail
+ I Raise
+ I Piperead "xwd -silent -id $[w.id] > $[ThumbDirectory]/icon.tmp.$[w.id].xwd"
+ I Iconify
+ I Exec nice -19 convert -$[ThumbQuality] $[ThumbWidth]x$[ThumbHeight] -frame 1x1 \
    -mattecolor $[ThumbBorderColor] -quality 0 \
    xwd:$[ThumbDirectory]/icon.tmp.$[w.id].xwd png:$[ThumbDirectory]/icon.tmp.$[w.id].png; \
    rm $[ThumbDirectory]/icon.tmp.$[w.id].xwd; test -f $[ThumbIconDirectory]/$[w.miniiconfile] && composite -geometry +5+5 \
    $[ThumbIconDirectory]/$[w.miniiconfile] $[ThumbDirectory]/icon.tmp.$[w.id].png $[ThumbDirectory]/icon.tmp.$[w.id].png; \
    FvwmCommand 'WindowId $[w.id] WindowStyle NeverFocus, WindowListSkip, FixedPosition, Colorset $[cs-quakeconsole], HilightColorset $[cs-quakeconsole], EWMHMiniIconOverride, IconOverride, Icon $[ThumbDirectory]/icon.tmp.$[w.id].png, MiniIcon $[ThumbDirectory]/icon.tmp.$[w.id].png'; \
    FvwmCommand 'WindowId $[w.id] Layer 0 2'

DestroyFunc RemoveThumbnail
AddToFunc RemoveThumbnail
+ I PipeRead "echo WindowStyle Icon \\$\\[Icon-$[w.id]\\]"
+ I PipeRead "echo WindowId $[w.id] Layer 0 4"
+ I UnsetEnv Icon-$[w.id]
+ I DestroyWindowStyle
+ I Exec exec rm -f $[ThumbDirectory]/icon.tmp.$[w.id].png

DestroyFunc ThumbnailListFunc
AddToFunc ThumbnailListFunc
+ I RemoveThumbnail
+ I DeIconify

DestroyFunc ThumbnailList
AddToFunc ThumbnailList
+ I WindowList "$*" Function ThumbnailListFunc CurrentDesk NoGeometry MaxLabelWidth 30 OnlyIcons NoHotkeys NoCurrentDeskTitle UseListSkip SelectOnRelease $[SelectOnReleaseKey]

DestroyFunc Thumbnails-Off
AddToFunc Thumbnails-Off
+ I DestroyFunc Thumbnail
+ I AddToFunc Thumbnail I Current (!Iconifiable) Break
+ I AddToFunc Thumbnail I Iconify

DestroyFunc Thumbnails-On
AddToFunc Thumbnails-On
+ I DestroyFunc Thumbnail
+ I AddToFunc Thumbnail I Current (!Iconifiable) Break
+ I AddToFunc Thumbnail I CreateThumbnail

# Just a little trick to make sure that all icons will be shown even if there is no MiniIcon set
Style * MiniIcon none

# Small test to check if ImageMagick is installed
#Thumbnails-Off
#Test (x convert) Thumbnails-On

