|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
It is possible to specify a customized menu item format, change a command (usually launching a browser) and add menu icons (there is a support for the wm-icons package).
Format specifiers for a headline format:
%h - headline
%u - url
%d - date in the native format (that site backend supplied)
%[strftime-argument-string] - date/time, see strftime(3)
the date/time is represented accourding to the local time;
date and/or time fields that can't be guessed are stripped
Example: %[|%d %B %Y| %H:%M %S]
If site supplied only date - this becomes %[|%d %B %Y|],
if site supplied no date - this becomes an empty string.
%{name} - site specific named value, like %{comments}
%(text) - arbitrary text, good for escaping or aligning
These specifiers can receive an optional integer size, positive for right adjusted string or negative for left adjusted, example: %8x; and optional *num or *-num, which means to leave only the first or last (if minus) num of chars, the num must be greater than 3, since the striped part is replaced with ``...'', example: %*30x. Both can be combined: %-10*-20x, this instructs to get only the 20 last characters, but if the length is less then 10 - to fill with up to 10 spaces on the right.
In fact, --exec=``mozilla '%u''' is equivalent to --command=``Exec mozilla '%u'''
WORK_HOME of this script is ~/.fvwm/.fvwm-menu-headlines. It is created if needed.
Option parameters can be specified either using '=' or in the next argument. Short options are ok if not ambiguous: "-h", "-t"; but be careful with short options, what is now unambiguous, can become ambiguous in the next versions.
0,30 * * * * fvwm-menu-headlines --file --site freshmeat 1,31 * * * * fvwm-menu-headlines --file --site linuxtoday 2,32 * * * * fvwm-menu-headlines --file --site slashdot
Then add these lines to your fvwm configuration file:
DestroyFunc FuncFvwmMenuHeadlines AddToFunc FuncFvwmMenuHeadlines + I Read "$HOME/.fvwm/.fvwm-menu-headlines/$0.menu"
DestroyMenu MenuHeadlines AddToMenu MenuHeadlines "Headlines" Title + MissingSubmenuFunction FuncFvwmMenuHeadlines + "FreshMeat" Popup freshmeat + "LinuxToday" Popup linuxtoday + "Slashdot" Popup slashdot
2. Another way to use this script (only if you have fast network/proxy) is to run it every time you want to open your Headlines submenus. (Note, the submenu that is once created is not reloaded, use ``Reset all''.)
In this case your fvwm configuration lines could be:
DestroyFunc FuncFvwmMenuHeadlines AddToFunc FuncFvwmMenuHeadlines + I PipeRead "fvwm-menu-headlines --site $0"
DestroyMenu MenuHeadlines AddToMenu MenuHeadlines "Headlines" Title + MissingSubmenuFunction FuncFvwmMenuHeadlines + "FreshMeat" Popup freshmeat + "Slashdot" Popup slashdot + "LinuxToday" Popup linuxtoday + "GNOME News" Popup gnome-news + "KDE News" Popup kde-news + "" Nop + "Reset all" FuncResetHeadlines
DestroyFunc FuncResetHeadlines AddToFunc FuncResetHeadlines + I DestroyMenu freshmeat + I DestroyMenu linuxtoday + I DestroyMenu slashdot + I DestroyMenu gnome-news + I DestroyMenu kde-news
And finally, add ``Popup MenuHeadlines'' somewhere.
3. Here is a usual usage. Use FvwmConsole or FvwmCommand to run fvwm commands from a shell script. Every time you want headlines from some site, execute (give any additional options if you want):
PipeRead "fvwm-menu-headlines --site newsforge --name MenuHeadlinesNewsForge" # this may take several seconds, you may use: BusyCursor Read true Popup MenuHeadlinesNewsForge
$siteInfo->{'myslashdot'} = {
'name' => "MySlashdot",
'host' => "myslashdot.org",
'path' => "/myslashdot.xml",
'func' => \&processMySlashdot,
# the following string is only used in --info
'flds' => 'time, title, department, topic, author, url',
};
sub processMySlashdot () {
return processXml(
'story',
# mandatory 'h', 'u' and 'd' aliases or undef
{ 'h' => 'title', 'u' => 'url', 'd' => 'time' },
sub ($) { # convert 'd' string to (y, m, d, H, M, S)
$_[0] =~ /(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/;
($1, ($2 || 0) - 1, $3, $4, $5, $6);
}, +0, # timezone offset; already in UTC
);
}
1;
Jeff Meininger <jeffm@boxybutgood.com> (http://rive.boxybutgood.com/WMHeadlines/).
Reimplemented for FVWM and heavily enhanced by:
Mikhael Goikhman <migo@homemail.com>, 16 Dec 1999.
Last modified on December 07, 2004