Here's an implementation that makes icon captures based on Scott
Smedley's suggestion and Tavis Ormandy's fvwm2rc file.

It forks off the stuff that takes a long time and renices it to the
lowest possible priority.  The downside is that  there's a small chance
it will result in not getting an icon, and or the wrong icon because
there is only one variable to store icon captures.  I have yet to cause
the second condition, though the first I can cause on my slow machine if
I try real hard.

I'll try to figure out how to make it thread-safe later on today.

This uses FvwmPerl, along with this command for it: 
DestroyFunc eval
AddToFunc eval I SendToModule FvwmPerl eval $*

Enjoy!

DestroyFunc CaptureIcon
AddToFunc CaptureIcon
+ I raise
+ I eval open(TEMP12,"xwd -silent -id $[w.id] |"); \
    local $/; \
    $e=<TEMP12>; \
    close(TEMP12);

DestroyFunc UseCaptured
AddToFunc UseCaptured
+ I eval my $pid; $SIG{'CHLD'}='IGNORE'; if(!($pid=fork)) { \
    open(TEMP12, "|convert -scale $[fvwm_icon_size] -frame 1x1 \
    -mattecolor black -quality 0 xwd:- \
    png:$[HOME]/.fvwm/icon.tmp.$[w.id].png"); \
print TEMP12 $e; close(TEMP12); \
cmd("WindowId $[w.id] WindowStyle IconOverride, \
     Icon $[HOME]/.fvwm/icon.tmp.$[w.id].png, StaysOnBottom"); \
     } else { setpriority 0,$pid,19 }

DestroyFunc FastThumb
AddToFunc FastThumb
+ I CaptureIcon
#Use perl to store the pipe so that it can be used in asynchronous
coding.
+ I Iconify
+ I UseCaptured


--
Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to [EMAIL PROTECTED]
To report problems, send mail to [EMAIL PROTECTED]

Reply via email to