On 24 May 2002 01:36:45 +0200, Riswick, J.G.A. van wrote: > > In my fvwm setup I use a perl script that interacts with fvwm > using FvwmCommand. For instance, when the root menu pops up, > I use a perl script to insert some items dynamically, like an > entry 'Close connection' that kills wvdial when it is running. Now, > sometimes, especially when a lot of applications are running, > this makes popping up the root menu rather slow. > > So I was wondering if it is any faster when I'd convert > the perl script into a fvwm module.
It depends on the implementation. You may do it in many ways. Using PipeRead, FvwmCommand, using FvwmPerl (3 ways: eval, load and preprocess). Even if you decide to create your own module you may do it differently. (1) A module that creates a menu after receiving a request message. (2) A module that watches a network and updates a menu when needed. In (1) you don't spend time on watching network, but spend time when opening a menu. In (2) you open a menu immediately, but the module works. Anyway, if you have a persistent module you don't spend time to create processes and initiate pipes on every menu change, this is done once. > I stumbeled upon Module.pm. Is this meant to write fvwm > modules in perl? Unfortunately, I can't find the documentation > for this interface. Where can I find this? Documentation will be available once the perl library API is finalized. For example, I want to add the colorset structure and more. Currently see the source of FvwmPerl and 4 example modules in perl at: ftp://ftp.fvwm.org/pub/fvwm/devel/sources/tests/perl/ -------------------------------------------------------------- Here is an implementation of your module using the method (1). #!/usr/bin/perl -w # # Usage: run this module from StartFunction, then at any time execute: # SendToModule /path/to/MyMenuCreator create-menu use lib `fvwm-config -p | tr -d '\n'`; use FVWM::Module; my $module = new FVWM::Module( Mask => M_STRING, # SyncMask => M_STRING, # needed to process message synchronously # Name => "MyMenuCreator", # needed for *MyMenuCreator: config value # EnableOptions => { q => sub { die "-q is not implemented yet" } }, ); $module->addHandler(M_STRING, sub { my $menuName = "MyRootMenu"; $module->sendText("DestroyMenu $menuName"); $module->sendText("AddToMenu $menuName bla-bla Title"); $module->sendText("+ 'Close connection' Exec killall wvdial") if grep "ppp0", `cat /proc/net/dev`; }); $module->eventLoop; -------------------------------------------------------------- Here is an implementation of your module using the method (2). #!/usr/bin/perl -w use lib `fvwm-config -p | tr -d '\n'`; use FVWM::Module; my $module = new FVWM::Module; local $SIG{ALRM} = \&checkNetwork; alarm(10); # check every 10 seconds sub checkNetwork { if (grep "ppp0", `cat /proc/net/dev`) { my $menuName = "MyRootMenu"; $module->sendText("Beep"); } alarm(10); } $module->eventLoop; Regards, Mikhael. -- 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]
