TKNEWSBIFF(1) - phpMan

Command: man perldoc info search(apropos)  


TKNEWSBIFF(1)                        General Commands Manual                        TKNEWSBIFF(1)



NAME
       tknewsbiff - pop up a window when news appears

SYNOPSIS
       tknewsbiff [ server or config-file ]

INTRODUCTION
       tknewsbiff  pops  up  a  window  when there is unread news in your favorite newsgroups and
       removes the window after you've read the news.  tknewsbiff can optionally  play  a  sound,
       start your newsreader, etc.


SELECTING NEWSGROUPS
       By  default,  the  configuration file ~/.tknewsbiff describes how tknewsbiff behaves.  The
       syntax observes the usual Tcl rules - however, even if you don't know  Tcl,  all  but  the
       most esoteric configurations will be obvious.

       Each newsgroup (or set of newsgroups) to be watched is described by using the "watch" com-
       mand.  For example:


       watch dc.dining
       watch nist.*
       watch comp.unix.wizard  -threshold 3
       watch *.sources.*       -threshold 20


       For each newsgroup pattern, any newsgroup that matches it and which you are subscribed  to
       (according to your newsrc file) is eligible for reporting.  By default, tknewsbiff reports
       on the newsgroup if there is at least one unread article.  The "-threshold"  flag  changes
       the threshold to the following number.  For example, "-threshold 3" means there must be at
       least three articles unread before tknewsbiff will report the newsgroup.

       If no watch commands are given (or no configuration file exists),  all  groups  which  are
       subscribed to are watched.

       To  suppress  newsgroups  that would otherwise be reported, use the "ignore" command.  For
       example, the following matches all comp.* and nist.* newgroups except for nist.posix or .d
       (discussion) groups:


       watch comp.*
       watch nist.*
       ignore nist.posix.*
       ignore *.d


       The flag "-new" describes a command to be executed when the newsgroup is first reported as
       having unread news.  For example, the following lines invoke the UNIX  command  "play"  to
       play a sound.


       watch dc.dining -new "exec play /usr/local/sounds/yumyum.au"
       watch rec.auto* -new "exec play /usr/local/sounds/vroom.au"


       You  can cut down on the verbosity of actions by defining procedures.  For example, if you
       have many -new flags that all play sound files, you could define a sound procedure.   This
       would allow the -new specification to be much shorter.


       proc play {sound} {
            exec play /usr/local/sounds/$sound.au
       }

       watch dc.dining -new "play yumyum"
       watch rec.auto* -new "play vroom"


       As an aside, you can put an "&" at the end of an "exec" command to get commands to execute
       asynchronously.  However, it's probably not a good idea to  do  this  when  playing  sound
       files anyway.

       "newsgroup" is a read-only variable which contains the name of the newsgroup that is being
       reported.  This is useful when the action is triggered by a  pattern.   For  example,  the
       following line could run the newsgroup name through a speech synthesizer:


       watch * -new {
            exec play herald.au
            exec speak "New news has arrived in $newsgroup."
       }


       The  flag  "-display"  describes  a  command  to  be  executed every time the newsgroup is
       reported as having unread news.  The special command "display" is the default command.  It
       schedules  $newsgroup  to  be  written  to tknewsbiff's display when it is rewritten.  For
       example, by explicitly providing a -display flag that omits the display command,  you  can
       disable the display of newsgroups that are already reported via -new.


       watch dc.dining -new {exec play yumyum.au} -display {}


       If you want to execute an action repeatedly and still display the newsgroup in the default
       manner, explicitly invoke the display command via the -display flag.  For example:


       watch *security* -display {
            exec play red-alert.au
            display
       }


       Actions associated with the -new and -display flags are executed only once for each match-
       ing  newsgroup.   The command executed is the one associated with the first pattern in the
       configuration file that matches and observes the given threshold.

       Any command that is simply listed in the configuration file is executed each  time  before
       the  update  loop  in tknewsbiff.  The reserved (but user-defined) procedure "user" is run
       immediately after the newsgroups are scheduled to be written to  the  display  and  before
       they are actually written.

       For  example,  suppose  unread articles appear in several rec.auto groups and you play the
       same sound for each one.  To prevent playing the sound several times in a  row,  make  the
       -new  command simply set a flag.  In the user procedure, play the sound if the flag is set
       (and then reset the flag).

       The user procedure could also be used to start a newsreader.  This would avoid the  possi-
       bility  of starting multiple newsreaders just because multiple newsgroups contained unread
       articles.  (A check should, of course, be made to make  sure  that  a  newsreader  is  not
       already running.)


MORE VARIABLES
       The following example lines show variables that can affect the behavior of tknewsbiff


       set delay          120
       set server         news.nist.gov
       set server_timeout 60
       set newsrc         ~/.newsrc
       set width          40
       set height         20
       set active_file    /usr/news/lib/active


       tknewsbiff  alternates  between  checking  for unread news and sleeping (kind of like many
       undergraduates).  The "delay" variable describes how many seconds to sleep.

       The "server" variable names an NNTP news-server.  The default  is  "news".   The  "server"
       variable is only used if the "active_file" variable is not set.

       The  "server_timeout"  variable describes how how many seconds to wait for a response from
       the server before giving up.  -1 means wait forever or until the server itself times  out.
       The default is 60 seconds.

       The  "newsrc"  variable  describes  the name of your .newsrc file.  By default, tknewsbiff
       looks in your home directory for a newsrc file.   A  server-specific  newsrc  is  used  if
       found.  For example, if you have set server to "cubit.nist.gov", then tknewsbiff looks for
       ~/.newsrc-cubit.nist.gov.  (This is the Emacs gnus convention - which is  very  convenient
       when you read news from multiple servers.)  If there is no server-specific newsrc, tknews-
       biff uses ~/.newsrc.

       The "width" variable describes the width that tknewsbiff will use to display  information.
       If  any newsgroup names are long enough, they will be truncated so that the article counts
       can still be shown.  You can manually resize the window to see what was  truncated.   How-
       ever,  if  your configuration file sets the width variable, the window will be restored to
       that size the next time that tknewsbiff checks for unread news and updates its display.

       The "height" variable describes the maximum height that tknewsbiff  will  use  to  display
       information.   If  fewer newsgroups are reported, tknewsbiff will shrink the window appro-
       priately.  You can manually resize the window but if  your  configuration  file  sets  the
       height  variable,  the  window will be restored to that size the next time that tknewsbiff
       checks for unread news and updates its display.

       The "active_file" variable describes the name of the news active file.  If set, the active
       file  is read directly in preference to using NNTP (even if the "server" variable is set).
       This is particularly useful for testing out new configuration files since you can  edit  a
       fake  active  file and then click button 2 to immediately see how tknewsbiff responds (see
       BUTTONS below).

       If the environment variable DOTDIR is set, then its value is used as a directory in  which
       to  find all dotfiles instead of from the home directory.  In particular, this affects the
       tknewsbiff configuration file and the .newsrc file (assuming the newsrc  variable  is  not
       set explicitly).


WATCHING DIFFERENT NEWS SERVERS
       To  watch  multiple  servers,  run  tknewsbiff  multiple times.  (Since you need different
       .newsrc files and the servers have different newsgroups and article numbers anyway,  there
       is no point in trying to do this in a single process.)

       You can point tknewsbiff at a different server with an appropriate argument.  The argument
       is tried both as a configuration file name and as a suffix to the string "~/.tknewsbiff-".
       So  if  you want to watch the server "kidney", store the tknewsbiff configuration informa-
       tion in ~/.tknewsbiff-kidney".  The following two commands will both use  that  configura-
       tion file.


            tknewsbiff kidney
            tknewsbiff ~/.tknewsbiff-kidney


       In  both cases, the actual server to contact is set by the value of the server variable in
       the configuration file.

       If no configuration file is found, the argument is used as the server  to  contact.   This
       allows tknewsbiff to be run with no preparation whatsoever.

       If  the argument is the special keyword "active" (or ends in "/active"), it is used as the
       name of an active file.  This is in turn used to initialize the variable "active_file"  so
       that tknewsbiff reads from the active file directly rather than using NNTP.

       Creating your own active file is a convenient way of testing your configuration file.  For
       example, after running the following command, you can repeatedly edit your active file and
       trigger  the update-now command (either by pressing button 2 or setting the delay variable
       very low) to see how tknewsbiff responds.

       The active file must follow the format of a real active file.  The format is one newsgroup
       per line.  After the newsgroup name is the number of the highest article, the lowest arti-
       cle.  Lastly is the letter y or m.  m means the newsgroup is moderated.  y  means  posting
       is allowed.


WINDOW
       When unread news is found, a window is popped up.  The window lists the names of the news-
       groups and the number of unread articles in each (unless suppressed by the -display flag).
       When  there is no longer any unread news, the window disappears (although the process con-
       tinues to run).


BUTTONS
       Button or key bindings may be assigned by bind commands.  Feel free to change  them.   The
       default bind commands are:


       bind .list <1> help
       bind .list <2> update-now
       bind .list <3> unmapwindow


       By  default button 1 (left) is bound to "help".  The help command causes tknewsbiff to pop
       up a help window.

       By default, button 2 (middle) is bound to "update-now".   The  update-now  command  causes
       tknewsbiff to immediately check for unread news.  If your news server is slow or maintains
       a very large number of newsgroups, or you have a large number of patterns in your configu-
       ration file, tknewsbiff can take considerable time before actually updating the window.

       By  default,  button  3 (right) is bound to "unmapwindow".  The unmapwindow command causes
       tknewsbiff to remove the window from the display until the next time it finds unread news.
       (The mapwindow command causes tknewsbiff to restore the window.)

       As  an  example,  here  is  a binding to pop up an xterm and run rn when you hold down the
       shift key and press button 1 in the listing window.


       bind .list <Shift-1> {
            exec xterm -e rn &
       }


       Here is a similar binding.  However it tells rn to look only  at  the  newsgroup  that  is
       under  the  mouse when you pressed it.  (The "display_list" variable is described later in
       this man page.)


       bind .list <Shift-1> {
            exec xterm -e rn [lindex $display_list [.list nearest %y]] &
       }



OTHER COMMANDS AND VARIABLES
       Built-in commands already mentioned are: watch, ignore, display, help, update-now,  unmap-
       window, and mapwindow.

       Any Tcl and Tk command can also be given.  In particular, the list of newsgroups is stored
       in the list widget ".list",  and  the  scroll  bar  is  stored  in  the  scrollbar  widget
       ".scroll".   So for example, if you want to change the foreground and background colors of
       the newsgroup list, you can say:


            .list config -bg honeydew1 -fg orchid2


       These can also be controlled by the X resource database as well.  However, the  configura-
       tion  file  allows arbitrarily complex commands to be evaluated rather than simple assign-
       ments.

       Certain Tcl/Tk commands can disrupt proper function of tknewsbiff.  These will probably be
       obvious to anyone who knows enough to give these commands in the first place.  As a simple
       example, the program assumes the font in the list box is of fixed width.   The  newsgroups
       will likely not align if you use a variable-width font.

       The following variables are accessible and can be used for esoteric uses.  All other vari-
       ables are private.  Private variables and commands begin with "_" so  you  don't  need  to
       worry about accidental collisions.

       The  array  "db"  is  a  database  which maintains information about read and unread news.
       db($newsgroup,hi) is the highest article that exists.  db($newsgroup,seen) is the  highest
       article that you have read.

       A number of lists maintain interesting information. "active_list" is a list of known news-
       groups.  "seen_list" is a list of newsgroups that have been seen so far as  the  -new  and
       -display flags are being processed.  "previous_seen_list" is "seen_list" from the previous
       cycle.  "ignore_list" is the list of newsgroup patterns to ignore.   "watch_list"  is  the
       list of newsgroup patterns to watch.  "display_list" is the list of newsgroup will be dis-
       played at the next opportunity.


UPDATING YOUR FILES
       tknewsbiff automatically rereads your configuration file each time it wakes  up  to  check
       for  unread  news.  To force tknewsbiff to reread the file immediately (such as if you are
       testing a new configuration or have just modified your newsrc file), press button 2 in the
       display (see BUTTONS above).


CAVEATS
       tknewsbiff defines the number of unread articles as the highest existing article minus the
       highest article that you've read.  So if you've read the last article in the newsgroup but
       no  others,  tknewsbiff  thinks  there are no unread articles.  (It's impossible to do any
       better by reading the active file and it would be very time  consuming  to  do  this  more
       accurately via NNTP since servers provide no efficient way of reporting their own holes in
       the newsgroups.)  Fortunately, this definition is considered a feature by most people.  It
       allows  you  to read articles and then mark them "unread" but not have tknewsbiff continue
       telling you that they are unread.


UNWARRANTED CONCERNS
       Your news administrator may wonder if many people using tknewsbiff severely impact an NNTP
       server.  In fact, the impact is negligible even when the delay is very low.  To gather all
       the information it needs, tknewsbiff uses a single NNTP query  -  it  just  asks  for  the
       active  file.   The  NNTP  server  does no computation, formatting, etc, it just sends the
       file.  All the interesting processing happens locally in the tknewsbiff program itself.


BUGS
       The man page is longer than the program.


SEE ALSO
       "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don  Libes,
       O'Reilly and Associates, January 1995.

AUTHOR
       Don Libes, National Institute of Standards and Technology



                                          1 January 1994                            TKNEWSBIFF(1)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2024-04-20 05:41 @18.216.29.63 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0!Valid CSS!