NAME

     knews - Karl's threaded newsreader for X


SYNOPSIS

     knews [ options ]


DESCRIPTION

     Knews is a threaded newsreader with an  X  Window  interface
     that  uses  NNTP  to  get  news.  This manual is intended to
     explain things that are not apparent from the interface,  so
     if  you just want to get started, you probably don't need to
     read this.


OPTIONS

     In addition to the standard X Toolkit options knews  accepts
     the  following  options, which set various X resources.  For
     an explanation of what the resources do, see the sections on
     resources and the config file.

     You don't have to type out the entire name of the option, as
     long as it is unique.

     -nntpServer hostname
          Sets the  resource  'Knews.nntpServer'  to  'hostname'.
          This  will  cause  knews  to  connect to this server on
          startup.

     +/-bell
          Sets the resource 'Knews.bell' to True/False.

     +/-separate
          Sets   the    resource    'Knews.separateWindows'    to
          True/False.

     +/-active
          Sets the resource 'Knews.readActiveFile' to True/False.

     +/-descriptions
          Sets  the  resource   'Knews.retrieveDescriptions'   to
          True/False.

     +/-fill
          Sets the resource 'Knews.fillNewsrcFile' to True/False.

     +/-keep
          Sets the resource 'Knews.keepThreadInfo' to True/False.

     -install
          This will make knews install its own colormap.

     -visual class
     -depth bits
          These will set the  resources  'Knews.visualClass'  and
          'Knews.visualDepth'.

     +/-icase
          Will   set   the   resource   'Knews.icaseRegexps'   to
          True/False.



THE THREAD TREE

     The articles in a thread are displayed as nodes in a tree. A
     border inside a node indicates that the article is unread, a
     border  outside  a  node  indicates  that  the  article   is
     'tagged', and a dashed branch in the tree indicates a change
     of subject. By default, you can scroll around  in  the  tree
     with the middle mouse button. An empty box in the tree indi-
     cates a 'fake' article, i.e. one that  has  expired  on  the
     server,  has  not  yet  arrived or was posted in a different
     newsgroup.



TAGGING ARTICLES

     Articles in the thread tree can be  tagged  with  the  third
     mouse  button.   Clicking  on a subject with the third mouse
     button causes the unread  articles  in  that  thread  to  be
     tagged  in  preorder (depth first). Once you have tagged the
     articles, you can mark then read/unread, save or  pipe  them
     in order, and so on.



CLICKING ON URLS

     Knews supports a simple form of clicking on URLs.  It  works
     by  selecting a piece of text in the article text window and
     clicking on it with the middle mouse button.  If there is no
     selection,  knews will make a crude guess as to what the URL
     might be.  The resource Knews.urlCommand  must  be  set  for
     this to work, see the section on X resources for details.



DRAG AND DROP

     The all groups list and the kill list can  be  reordered  by
     drag'n'drop.   The  default  translation is the second mouse
     button.



ABORT

     You may abort the interaction with the NNTP  server  at  any
     time. This causes the connection to be closed, and a new one
     to be opened. Note that this puts  a  certain  load  on  the
     server.




THREAD AHEAD

     Knews is capable of threading groups in the background while
     you are e.g. reading another group.  To do this you click on
     one or more groups in the group list with  the  right  mouse
     button.   Knews then opens a second connection to the server
     and uses it to thread the selected groups.   The  status  of
     the thread ahead is shown in the group list as a character:

     -       The group is scheduled for thread ahead.
     *       The group is being threaded.
     +       The group has been threaded.



REGULAR EXPRESSIONS

     The regular expressions used by knews are  POSIX.2  extended
     regular  expressions,  similar to those used by egrep(1), by
     default case insensitive.  Note that these are not  anchored
     by default, so that e.g. the expression 'alt' will match any
     string containing the three character sequence  'alt'.   See
     Henry Spencer's excellent man-page for details, regex(7).



SEARCHING

     Article heads and bodies may be searched for regular expres-
     sions.   Searching  applies  to  read  or unread articles as
     specified with the 'only unread' toggle, and starts with the
     'next' article.  The newsgroup list may also be searched.

     Note: the 'Stop' button stops the  search  as  soon  as  the
     current article has been retrieved from the server.  This is
     different from 'Abort' which requires closing and  reopening
     the connection to the server.

     It is also possible to  use  XPAT  searching,  if  the  nntp
     server  supports  it.   To do this, you fill in the 'Header'
     field on the search popup with the header you're  interested
     in (e.g. 'Content-Type') and the wildcard field with a wild-
     card expression.  Pressing 'Submit' then sends this  to  the
     server,  and after a while it responds with a list of match-
     ing articles.  You can then move between those articles with
     the 'Next' and 'First' buttons on the search popup.



FILE NAME EXPANSION

     In most places where knews uses  file  names,  such  as  the
     save/pipe  popup,  the  save/pipe action procedures, and the
     newsrcFile options etc, ~ is expanded to $HOME, and the fol-
     lowing %'s are expanded:

     %%      %
     %n      The name of the current group.
     %N      The name of the current group, capitalized.
     %g      The name of the current group, slashed.
     %G      The name of the current group, capitalized and slashed.
     %s      The name of the nntp server.
     %p      The number of the port the server listens to.
     %a      The number of the currently selected article.

     Slashed means that the dots are replaced with slashes.  Note
     that  if  you save an entire thread to a file continaing %a,
     the number will not change with the article.



THE KILL FILE

     The kill file may be used to 'kill'  (mark  read)  or  'hot'
     (mark  interesting)  articles, subjects and threads based on
     different criteria.  As of version 0.9.4, hot articles Since
     the  entries  in the kill file are processed in order, it is
     possible to put kills at the beginning, so that the articles
     are killed before they have a chance to become hot.

     Each line in the kill file specifies an entry  according  to
     the following syntax:

     (F)(S)(A)[Col] || Group regexp || Field expression

     (F)
          This is a character specifying  to  which  header  this
          entry applies.  Legal values are:

          'M'     The 'Message-ID:' header, by far the most efficient.
          'S'     The 'Subject:' header.
          'F'     The 'From:' header.
          'X'     The 'Xref:' header.

          Note that 'X' only  works  if  the  'Xref:'  header  is
          included  in  the  overview files from the server. Also
          note that the 'Re: ' prefix is not considered  part  of
          the subject.

          Entries applying to a message-id  automatically  expire
          when the relevant article has expired.

     (S)
          This is a character specifying the scope of the  entry,
          i.e.  what articles are killed/'hotted' when this entry
          applies to an article. Legal values are:

          'A'     This article.
          'S'     All articles with the same subject.
          'T'     The entire thread.
          't'     The subthread starting with this article.

     (A)
          This is a character specifying the action of the entry.
          Legal values are:

          'K'     Kill, which means mark read.
          'H'     Hot, which means mark interesting.
          'h'     Hotish, which is like hot but may be faster.

          Hotish behaves just like hot except in a few cases:  If
          the scope is Article and the field is From, only unread
          articles are affected.  This will speed killing up  for
          normal  behavior.   Optimizations  for other scopes and
          fields may be implemented in the future.

     [col]
          In 'hot' entries, this is the color used  to  mark  the
          relevant articles with.

     ||
          This two character sequence is used as a separator.

     Group regexp
          Only newsgroups matching this regular  expression  will
          be affected by this entry.

     Field expression
          If the header field is 'S', 'F' or 'X', this is a regu-
          lar  expression,  and the entry applies to all matching
          articles. If the header field is 'M', this is a message
          id; this id is probably the fastest type of kill entry,
          since it can be checked with a single hash lookup.

     To see what articles were killed: when  you  have  read  all
     unread  articles, or marked them read, use the 'mark unread,
     killed' feature on the misc menu.



MIME VIEWERS AND MAILCAP FILES

     Knews has internal  support  for  content-types  text/plain,
     message/rfc822,    message/partial,    multipart/mixed   and
     multipart/digest.  For other types, knews will  look  for  a
     mailcap  entry  for  that  type (see mailcap(5)).  If one is
     found, a clickable line will be inserted in the article text
     window  that  is  used  to start the viewer.  If there is no
     viewer, then if the type is a subtype of  text,  knews  will
     display  it,  if  it  is  a subtype of multipart, knews will
     treat it as multipart/mixed, and otherwise knews  will  give
     the user opportunity to 'Save or Pipe'.

     Mailcap files are found via the environment  variable  MAIL-
     CAPS,  which  is  a  colon separated list of path names.  If
     this variable is not set, a default list of

     $HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap

     will be used.  Note that all files found will be  merged  to
     produce the mailcap database.

     As a hack around miss/over  designed  mailcap  files,  knews
     will ignore entries for text/plain and multipart/mixed.



TEXT/PLAIN ARTICLES

     The following resources determine how knews will display  an
     article of type text/plain with a particular charset:

     Knews.charset.headerFont
     Knews.charset.bodyFont
     Knews.charset.quoteFont
     Knews.charset.listFont
     Knews.charset.treeFont
     Knews.charset.encoding
     Knews.charset.headEncHack

     The header, body and quote fonts  are  used  for  displaying
     headers,  ordinary  text and quoted text in the article win-
     dow.  Knews also has some support for encoded  16-bit  char-
     sets,  this  is specified with the encoding resource.  Legal
     values for this are:

     utf-7       The encoding specified for unicode in rfc 1642.
     16-bit      Straight 16-bit network byte order.
     hz-gb-2312  The encoding for chinese described in rfc 1842.
     ksc-5601    Also called iso-2022-kr, described in rfc 1557.
     big5        Another encoding for chinese.

     Note that due to the authors non-existent  understanding  of
     asian  languages  these  encodings have not been extensively
     tested.  Lots of guess work here.

     For every newsgroup it is  possible  to  specify  a  default
     charset (see the section on THE CONFIG FILE).  The fonts for
     this charset will be used to display articles without proper
     MIME-headers.   Also,  the  listFont and treeFont (which may
     not be encoded) will be used in the thread list and  article
     tree, respectively.

     When specifying an encoded charset as defaultCharset, it may
     be  desirable  to still assume that headers are ascii.  This
     may be accomplished by setting  the  'headEncHack'  resource
     listed above, and setting the headerFont to an ascii (super-
     set) font.




MESSAGE/PARTIAL

     Unless the config option assemblePartials is False (see  the
     section  on THE CONFIG FILE), when knews encounters an arti-
     cle of type message/partial, it will be rememberered.   When
     all  the  parts  have  been seen, a notice will be popped up
     offering to assemble the parts.

     There is also an entry on the misc menu that allows a number
     of   articles  to  be  tagged  and  processed  to  look  for
     message/partial articles.



POSTING MIME

     When you post an article containing 8  bit  characters  that
     doesn't  have  a  Content-Type header, knews will add such a
     header with charset equal to the value of the defaultCharset
     config  option.   Also,  when quoting articles with Content-
     Type: text/plain and charset equal  to  the  defaultCharset,
     knews will decode the article before quoting.  In both these
     contexts,  the  charset   iso-8859-1   will   be   used   if
     defaultCharset is not set.



READING THE SPOOLDIR

     Knews supports a rather obscure mechanism for  communicating
     with  an arbitrary program instead of an nntp server.  Using
     knewsd(1), this can be used for  reading  news  (in)directly
     from  the spool dir, or even mail folders if they are in the
     correct format.  This is how it works:  If the  nntp  server
     is  given as #str, where str is an arbitrary string not con-
     taining white space or the characters '/', '.' or '*', knews
     finds the value of the resource Knews.#str and tries to exe-
     cute that program.  The program has its standard  input  and
     output  connected  to  knews.  If you use this resource set-
     ting:

     Knews.#spool: knewsd -spool /var/spool/news \
             -active /usr/local/news/active

     with the appropriate paths for your system, you can read the
     spool directory by specifying the nntp server as '#spool' in
     e.g. the connect dialogue.  This could  easily  be  used  to
     read mh(1) style mail folders too.



X RESOURCES

     There are a number of X resources that affect the  behaviour
     and  appearance  of  knews.    Most  widgets  in  the widget
     hierarchy has resources named background , foreground , sha-
     dowWidth  , and so on. For more information see the applica-
     tion defaults file Knews.ad included in the distribution. To
     get a feeling for resources, try editres(1).
     Knews contains a small xpm-file to pixmap converter,  so  it
     is possible to use settings like e.g.

     Knews*backgroundPixmap:  ~/pixmaps/texture.xpm

     Knews.nntpServer
          If this resource is set, knews  automatically  connects
          to  this  nntp  server  on  startup. This overrides the
          NNTPSERVER environment variable. If the server  listens
          to  a  non-standard  port,  you may specify this e.g as
          foo.bar:1234. If you don't want knews  to  autoconnect,
          don't set this or $NNTPSERVER.

     Knews.editCommand
          This resource specifies the editor used to edit  posts.
          Possible values include:

          Knews.editCommand:  xemacs +%i %s
          Knews.editCommand:  emacs +%i %s
          Knews.editCommand:  xterm -e vi +%i %s

          %s stands for the name of a temporary file, and %i  for
          the  line where editing should begin. The default value
          of this resource is a compile time option.

     Knews.urlCommand
          This command is used  for  clicking  on  URLs.   %s  is
          expanded  to  the  URL, and the result is passed to the
          shell.  As a simple security measure, URLs will not  be
          allowed  to  contain quotes, parentheses, whitespace or
          ampersands.

     Knews.needsTerminal
     Knews.copiousOutput
          These are two shell command templates that will be used
          for  mailcap viewers that have the needsterminal or the
          copiousoutput flag set,  respectively.   In  these,  %C
          will  be  expanded to the relevant mailcap command.  An
          example should explain it:

          Knews.needsTerminal:     exec xterm -e /bin/sh -c '%C'
          Knews.copiousOuptut:     exec xterm -e /bin/sh '(%C) | less'

     Knews.mimeTypes
          This  should  point  to  a  file  whose  contents  maps
          filename  extensions to mime types.  The syntax of this
          file is examplified by the following list  of  compiled
          in types:

          image/jpeg              jpg jpeg
          image/gif               gif
          application/postscript  ps
          This is used to guess the Content-Type of attachments.

     Knews.bell
          Setting this resource to False will turn off the bell.

     Knews.separateWindows
          Setting this resource to True will  make  knews  use  a
          different top level window for the article text widget.

     Knews.stderrTimeout
          When knews starts a pipe or similar,  it  captures  the
          standard  error  output  and  displays  it  in a notice
          popup.  This resource is the time in milliseconds  this
          popup  should  stay up.  The default is 10000.  Setting
          this to 0 means  stay  up  indefinitely,  and  negative
          means no popups.

     Knews.showCache
          If this is True, knews will show the state of the arti-
          cle  caches  in  a small popup.  See the config options
          cacheAheadSize and cacheTrailSize for details.

     Knews.mailName
          If you have a mail address  which  isn't  of  the  form
          'userid@domain.name',  you  can set this to the part of
          the address that goes before the '@', e.g.

          Knews.mailName:      FirstName.LastName

          Note that your  userid  will  still  be  used  for  the
          'Sender' header if necessary.

     Knews.useIcon
          If this is set to True (the default), knews will use an
          icon.

     Knews.confirmQuit
          Setting this to True will make knews ask for  confirma-
          tion before disconnecting or quitting.

     Knews.visualClass   class
     Knews.visualDepth   bits
          If these are set knews will use a visual of the  speci-
          fied  class  and depth.  Typical values for depth are 8
          or 24.   Legal  values  for  class  are  'StaticGray)',
          'GrayScale',  'StaticColor', 'PseudoColor', 'TrueColor'
          and 'DirectColor'.  The depth will  be  ignored  if  no
          class is specified.

     Knews.installCmap
          If this is set to  True,  knews  will  create  its  own
          colormap.

     The following resources can be used to change various color,
     font and geometry settings:

     Knews*grouplist.preferredLines
     Knews*grouplist.preferredColumns
          These resources specify the number of lines and columns
          the grouplist widget will start up with. The default is
          14 for lines and 84 for columns.

     Knews*text.preferredLines
     Knews*text.preferredColumns
          These resources specify the number of lines and columns
          the  article  text widget start up with. The default is
          32 for lines and 84 for columns.

     Knews*ArtTree.nodeColumns
          The width of the nodes in the article tree  in  charac-
          ters.  The default is 16.

     Knews*rubberColor
          The color used for rubberbanding in one or two widgets.
          The default is red.

     Knews.headerColor
     Knews.bodyColor
     Knews.quoteColor
          The colors used for headers, ordinary text  and  quoted
          text respectiely in the article window.

     Knews*innerColor
     Knews*innerDashed
          The color and line style used for the border of  unread
          articles  in the article tree. The defaults are Red and
          False.

     Knews*outerColor
     Knews*outerDashed
          The color and line style used for the border of  tagged
          articles  in  the  article tree. The defaults are fore-
          ground and False.

     Knews*ScrList.font
          The font used in the lists.

     Knews.defaultHotColor
          The color used for hot entries in the  kill  file  when
          the specified color is invalid or cannot be allocated.


     Some miscellaneous resources:

     Knews.icaseRegexps
          Setting this to False  will  make  regular  expressions
          case sensitive.  They are case insensitive by default.

     Knews.readActiveFile
     Knews.retrieveDescriptions
     Knews.fillNewsrcFile
     Knews.showNumberLines
     Knews.keepThreadInfo
     Knews.checkForNewGroups
          These set the default values for the corresponding con-
          figuration  options.   Their  main  purpose is to allow
          command line arguments.  Read the section on the config
          file for details.

     Knews.newsrcTemplate
     Knews.oldNewsrcTemplate
          These set the  default  values  for  the  configuration
          options   newsrcFile  and  oldNewsrcFile,  the  default
          values are ~/.newsrc-%s and ~/.oldnewsrc-%s.   A  value
          not containing %s will not be accepted; if you want the
          traditional ~/.newsrc for a particular server, see  the
          resource Knews.configNntpServer below.

     Knews.configFile
          The configuration file  used  by  knews.   The  default
          value  is ~/.knews/config-%s, a value not containing %s
          will not be accepted.

     Knews.configNntpServer
     Knews.configPostingAgent
          Setting configNntpServer will make knews Do  The  Right
          Thing  when  the  user  first  connects to this server,
          which means setting the newsrc file for this server  to
          ~/.newsrc when creating the config file.

          If the configPostingAgent is set this will be used  for
          the   postingAgent   config   option   for   the   con-
          figNntpServer.

     Knews.generatePath
          If this is set to True,  knews  will  generate  a  Path
          header  for  articles.   The header will be 'Path: d!u'
          where d and u are such that the From  header  generated
          by knews would be 'From: u@d'.

     Knews.autoSubscribe
          The value of this resource will be used when creating a
          new  newsrc file.  If it starts with a '/', it is taken
          as a pathname of a file whose contents will be inserted
          into  the  new newsrc file, otherwise the literal value
          of this resource will be inserted into the newsrc file.
          The default value is
             news.answers:\nnews.newusers.questions:\n

     Knews.bogusFileSystem
          When knews checks for new groups,  it  uses  the  atime
          (time  of  last  access)  of  the  config  file.   Some
          filesystems (e.g. AFS) have no concept  of  atime,  but
          fakes   it  with  mtime  (time  of  last  modification)
          instead.  Setting this resource to True will make knews
          forcibly update the mtime of the config file.




THE CONFIG FILE

     When knews connects to an NNTP server it reads a  configura-
     tion  file  that  will affect its behavior.  This file is by
     default called ~/.knews/config-%s where %s  expands  to  the
     name  of  the  server,  but  this  may  be  changed with the
     Knews.configFile resource.

     The syntax of the config file is the same as for X  resource
     files.   When knews can't find the configure file, a new one
     will be created containing some default settings and  a  few
     examples  settings  that should be sufficient to clue you in
     as to how it works.

     It is possible to used #include  statements  in  the  config
     file  to  include  other files.  Relative pathnames are con-
     sidered relative to the current working directory, which for
     knews  is  always  $HOME.   ~  pathnames  are not handled in
     #includes (if you want that you have to hack Xlib).

     The following global (i.e. per server) options exist.

     newsrcFile
     oldNewsrcFile
          These specify the newsrc file and  oldnewsrc  file  for
          this  server.  ~ pathnames and the same % expansions as
          for saving are handled.  If  oldnewsrc  is  set  to  an
          empty  string,  no  backup  of  the newsrc file will be
          created.

          The default values for these  are  the  values  of  the
          resources            Knews.newsrcTemplate           and
          Knews.oldNewsrcTemplate,  whose  default   values   are
          ~/.newsrc-%s and ~/.oldnewsrc-%s, respectively.

          For a way of  automatically  using  the  standard  file
          ~/.newsrc  for  a  specific  server,  see  the resource
          Knews.configNntpServer above.

     killFile
          The kill file. The default value is the  value  of  the
          resource Knews.killFileTemplate, whose default value is
          ~/.kill-%s.

     cacheDir
          This directory is used for storing cached articles  and
          thread    data    for    groups.     The   default   is
          ~/.knews/cache-%s.

     readActiveFile
          Setting this to False will stop knews from reading  the
          active  file  when  connecting, using the groups in the
          newsrc file instead.  This will speed up connection  on
          slow  lines  if  you  don't  have  too  many subscribed
          groups.  The default  is  the  value  of  the  resource
          Knews.readActiveFile, whose default is True.

     retrieveDescriptions
          A boolean option indicating whether to  retrieve  news-
          group  descriptions from the server. The default is the
          value of the resource Knews.retrieveDescriptions, whose
          default  is  True.   Setting this to False may slightly
          speed up connection time.

     descriptionsFile
          If this is set, the given file will be  used  to  cache
          group  descriptions: when retrieveDescriptions is True,
          knews saves the descriptions  to  this  file  and  when
          retrieveDescriptions is False, knews reads descriptions
          from this file instead of from the server.

     fillNewsrcFile
          Setting this to True will make knews write  all  groups
          it  knows about to the newsrc file, which may be a good
          idea if the option readActiveFile is set to False.  The
          default     is    the    value    of    the    resource
          Knews.fillNewsrcFile, whose  default  is  False,  which
          means only put information in the newsrc file.

     tryListActive
          When this is True (the default) and  readActiveFile  is
          False,  knews  will  try the "LIST ACTIVE wildmat" nntp
          extension.  If this fails knews will complain and  fall
          back to the old "GROUP" stuff.

     checkForNewGroups
          This is a boolean option indicating  whether  to  check
          for  new  groups  when  connecting  to this server. The
          default is True.  The atime (time of  last  access)  of
          the config file will be used for the check.

     threadAheadGroups
          This is a white-space separated list of  groups  to  be
          automatically  scheduled for thread ahead when connect-
          ing.  The special values 'all' and 'All' may be used to
          designate  all  subscribed  groups with unread articles
          and all subscribed groups, respectively.

     saveThreadInfo
          Setting this to True will allow 'thread ahead' data  to
          be  saved  between  sessions: knews will not remove the
          files with this data when quitting, and when connecting
          knews  will  check  for  these files for all subscribed
          groups.  If this is set, the options  threadAheadGroups
          and keepThreadInfo will be ignored.

     rescanTimeout
          This indicates the time in  minutes  between  automatic
          rescans.   The  default  is  60  minutes,  0  means  no
          automatic rescans.  Regardless of  this,  rescans  will
          only  be  performed  at  special  points,  to prevent a
          'rescan-idle-rescan' loop.

     groupNameColumns
          The width of the group name in the group list,  default
          is 42.

     askHowMany
          Setting this to True will make knews ask at which arti-
          cle the threading of a group should start.  A hack.

     postingAgent
          If this is specified, knews will use this for  posting,
          instead  of  posting via NNTP.  If your server requires
          some kind of  authentication  that  only  inews  under-
          stands,  you  could  set this to 'inews -h'.  Note that
          inews appends the signature, so you don't want knews to
          add one too.

          Also see the resource Knews.configPostingAgent above.

     authInfoPass
     authInfoUser
          These are used to implement the NNTP AUTHINFO USER/PASS
          protocol if required by the server.  These exist mostly
          for backward compatibility; authentication  is  usually
          only  required  when  posting, and then it is better to
          use inews  for  postingAgent,  since  presumably  inews
          knows all about the required authentication.

     Here is an example of some settings that will improve things
     over a slow network connection:

     readActiveFile:          False
     retrieveDescriptions:    False
     descriptionsFile:        ~/.knews/cache-%s/descriptions
     fillNewsrcFile:          True

     but note that you will probably want to read the active file
     and  group  descriptions at least the first time you connect
     to a server.


     The following resources may be set on  a  per  group  basis;
     they  should  be  prefixed  with  the name of the group they
     apply to.

     keepThreadInfo
          This tells knews whether to keep thread information  in
          memory  after  the  group  is  exited.   This will make
          reentering the group fast. Legal values are: True, Sub-
          scribed and False. 'Subscribed' means only do it if the
          group is subscribed, and exists to allow settings  such
          as:

          *keepThreadInfo:    Subscribed

          to keep thread info for  all  subscribed  groups.   The
          default  value  for  this option is 'Subscribed' if the
          resource  Knews.keepThreadInfo  is  set  to  True   and
          'False' otherwise.

     cacheAheadSize
     cacheTrailSize
          These two set the sizes of the two article caches,  the
          defaults  are 0.  The 'ahead cache' is used to prefetch
          articles from the server  in  the  background  using  a
          second  connection.   The 'trail cache' is used to keep
          articles that you have  already  read,  so  that  going
          back, saving or uudecoding will be faster.  The maximum
          values for these are 32.

     sortThreads
          This indicates how the threads  should  be  sorted.   A
          thread  consists of several subjects.  These are sorted
          within the thread according to the  order  they  occur.
          Then the threads are sorted according to the setting of
          this option.  The legal values and their meanings are:

          subject       Alphabetically by the first subject in the thread.
          size          Number of unread articles in the thread.
          full-size     Number of articles in the thread.
          hot           Number of hot articles in the thread.
          date          The date of the first unread article.
          average-date  The average date of unread articles in the thread.
          author        Alphabetically by the first From: line in the thread.
          none          No sorting.
          All these values may be prefixed with a minus  sign  to
          indicate  a reversal of the order, or a plus sign which
          is a no-op.  The default value is none.

     expireKills
          Setting this to False will stop  expirations  from  the
          kill  file.   The  default  is  True,  which means that
          Message-id kills will expire when  you  enter  a  group
          where  the  kill  entry would have been applicable, but
          the article with that message-id was not found.

     attribution
          This string is used to attribute  quotations  when  you
          post a followup. The default is

          In article %m,\n     %f writes:

          where \n is a newline.  The following %'s are expanded:

          %%    %
          %d    The date of the quoted article in the form 01 Jan.
          %f    The From: line of the article replied to.
          %i    The initials of the previous poster.
          %I    The initials of the previous poster, capitalized.
          %m    The message-id of the article replied to.
          %n    The current newsgroup.
          %r    The real name of the previous poster.
          %s    The subject of the quoted article.
          %t    The time of the quoted article in the form 18:24:02.
          %w    The week day of the quoted article.
          %y    The year of the quoted article.

          Thus '%w, %d %y %t GMT' will give the date in  standard
          rfc822 format.

     fullName
          This is the full name used in the 'From:' header in the
          articles you post. The default is $NAME, if set, other-
          wise the gecos field from the password  file,  suitably
          truncated.

     headerFormat
          A colon and white-space separated list specifying which
          headers  to  show  in  the  article window, and in what
          order. The default is

          Subject:Newsgroups:Followup-To:Reply-To:\
          Content-Description:Date:Organization:From:

          If the name of the header starts with a captial  letter
          (From:  as opposed to from:), knews will decode rfc1522
          encoded words encountered in this header.   (Those  are
          the   weird   things   that   look   like   =?iso-8859-
          1?q?stuff_here?=.)  Encoded  16-bit  charsets  are  not
          decoded in headers yet.

     assemblePartials
          This boolean  tells  whether  message/partial  articles
          will be remembered and offered for assembly.

     quoteRegexp
          Lines in an article matching  this  regular  expression
          will be considered quoted lines, and may be marked with
          a different color and font. The default is

          ^[ \t]*[:>|]

          which matches lines beginning with an arbitrary  amount
          of  white  space  (the  \t  denotes a tab, note that \t
          won't actually work) followed by a >, : or | character.

          You  will  probably  want  to  have   this   expression
          anchored...

     defaultCharset
          The fonts for this charset  will  be  used  to  display
          articles  that  lack MIME-headers.  If this is not set,
          us-ascii will be assumed.

          Also, rfc1522 encodings of this charset in the From and
          Subject  header  will  be decoded when displayed in the
          article tree and the thread list.  In this  case,  iso-
          8859-1 is the default.

     showNumberLines
          A boolean option indicating whether to show the  number
          of  lines  in articles in the thread tree.  The default
          is the value  of  the  resource  Knews.showNumberLines,
          whose default is False.

     signatureFile
          The contents of this file will  be  used  to  sign  the
          articles  you  post  (before  editing).  The default is
          ~/.signature.

     subjectColumns
          The width of the subject in the thread list, default is
          56.

     quoteString
     quoteQuoteString
          These strings are used for quoting when posting a  fol-
          lowup  article;  the  first one are used to quote lines
          that were not quoted in the original article,  and  the
          second  one is used for lines that were already quoted.
          What lines are considered quoted is determined  by  the
          quoteRegexp.   The  defaults  are  "> " and ">" respec-
          tively.  In these strings, %i is expanded to  the  ini-
          tials  of  the  previous author and %I to the initials,
          capitalized.

     distribution
          If this is set, it will be used as  the  content  of  a
          'Distribution'  header.  The default value is the value
          of the environment variable DEFNEWSDIS if  set,  other-
          wise empty.

     fullHeader
          A boolean specifying whether to show all headers in the
          article  window.  It  also  means  turn  off  all  MIME
          transformations. The default is False.

     replyTo
          A string used to construct the  'Reply-To:'  header  in
          the  articles you post. The default is the value of the
          environment variable REPLYTO if set, otherwise empty.

     organization
          A string used to construct the  'Organization:'  header
          in  the  articles  you post. The default is $NEWSORG if
          set, otherwise $ORGANIZATION if set, otherwise nothing.

     processXrefs
          If this boolean is True, as it is by default,  articles
          that  are crossposted will be marked read in all groups
          when you read them, mark them read, kill them or  catch
          them up.

          Note that this only applies to subscribed  groups,  and
          will  only  work if the server's overview file contains
          the Xref: headers.

     extraHeaders
          This string is inserted into the head of  all  articles
          you  post (before editing). The default is empty.  This
          could be used to put in Mime headers, like this:

          *extraHeaders:   Content-Type: text/plain; charset=iso-8859-1

     followupHeaders
          This is a combination of extraHeaders and  attribution:
          it  is inserted in the headers of replies and followups
          and the same %'s as in attribution  are  expanded.   An
          example:

          *followupHeaders:   X-Comment-To: %r

     uuDir
          Uudecoded files will end  up  in  this  directory.   Or
          rather, the forked off uudecoding process will be given
          this as its current working directory.  The default  is
          ~/News.

     uuProgram
          This program will be used to uudecode files: it will be
          given  the  bodies of the relevant articles on standard
          input.  The default is NULL,  which  means  that  knews
          will  do  its  best to filter out garbage and then pipe
          the rest to 'uudecode'.

     Here is an example of how to set  different  signatures  for
     different newsgroups:

     swnet*signatureFile:     ~/.signature-svensk
     de*signatureFile:        ~/.signature-deutsch
     *linux*signatureFile:    ~/.signature-linux

     The first sets the file ~/.signature-svensk for  all  groups
     in  the  swnet  hierarchy,  the  second  one  sets  the file
     ~/.signature-deutsch for the de hierarchy, and the last  one
     sets  the  file  ~/.signature-linux for any group containing
     linux as a component (not merely  a  substring).   The  file
     ~/.signature will be used for all other groups.




ACTIONS

     Knews defines a number of actions that can be tied  to  keys
     and buttons via translations.  For the default translations,
     see the application defaults file.

     do-the-right-thing()
          Does the right thing.

     kill-append(field, scope [, color])
     kill-prepend(field, scope [, color])
          These action procedures append and prepend respectively
          entries  to  the  kill  file according to the currently
          selected article.

          Valid values for  the  'field'  parameter  are  "From",
          "Subject"   and  "Message-Id",  and  valid  values  for
          'scope' are "Thread", "Subthread"  and  "Subject".   If
          the  color  parameter  is present, the entry added is a
          hot-entry with that color,  otherwise  it  is  a  kill-
          entry.

          It is probably a good idea to use these  with  field  =
          "message-id", since message-id kills are very efficient
          and expire with the corresponding article.

     tree-up(arg)
     tree-down(arg)
     tree-left(arg)
     tree-right(arg)
     tree-down-right(arg)
          These move around in the thread tree.  If  the  arg  is
          'read', they will also read in the relevant article, if
          arg is 'fake', they will also try to read 'fake'  arti-
          cles.

     list-up(arg)
     list-down(arg)
          These move up and down in the lists. If arg  is  given,
          it is the number of steps, or if it contains a '.', the
          fraction of the window to move.

     enter-mode()
     exit-mode()
          These two actions moves between modes.

     tree-or-list-up(arg)
     tree-or-list-down(arg)
     tree-left-or-exit-mode(arg)
     tree-right-or-enter-mode(arg)
          These  are  combination  actions.   E.g.  tree-or-list-
          up(arg)  does tree-up or list-up(1), depending on which
          is relevant.

     read-article(arg)
          This rereads the current article. If arg is given,  the
          article  is  displayed  with  full  header  and no MIME
          transformations.

     view-thread(arg)
          This moves between the  subject  list  and  the  thread
          tree.  If  arg is 'toggle', it toggles, if arg is 'yes'
          it goes to the tree, and if arg is 'no', it goes to the
          subject list.

     followup(arg)
     reply(arg)
     followup-and-reply(arg)
     post-new()
          These correspond to the options on the  post  menu.  If
          arg  is given as 'yes' or 'no', it indicates whether to
          include quoted text.

     uudecode()
     clear-tagged()
     mark-read-article()
     mark-read-subject()
     mark-read-thread()
     mark-read-subthread()
     mark-read-to-current()
     mark-read-all()
     mark-read-tagged()
     mark-read-non-tagged()
     mark-read-cold()
     mark-unread-article()
     mark-unread-subject()
     mark-unread-thread()
     mark-unread-subthread()
     mark-unread-all()
     mark-unread-tagged()
     mark-unread-killed()
          These perform the corresponding functions on  the  misc
          menu.

     pipe(command, parts [, scope])
     save(filename, parts [, scope])
          Pipe and save actions.  The argument 'parts' is a  com-
          bination  of  the  characters  'f', 's', 'h', 'b', 'e',
          corresponding to the  'bogus  from',  'bogus  subject',
          'head',  'body'  and  'empty  line' options on the save
          popup window.  The 'scope' parameter is  optional,  and
          is  one  of  'window',  'article', 'subject', 'thread',
          'subthread'  and  'tagged',  corresponding   to   those
          options on the save popup.

     tag-thread([all])
     tag-subject([all])
          These tag the unread articles in a thread  or  subject.
          If  'all'  is  specified,  they tag all articles in the
          thread or subject.

     untag-thread()
     untag-subject()
          These untag the tagged articles in a thread or subject.

     tag-hot()
          This action tags all unread hot articles,  same  as  on
          the misc menu.

     catchup()
     unsubscribe()
     subscribe()
          Guess what.

     change-size(pixels)
          Changes the size of the upper portion of the main  win-
          dow by the specified number of pixels.

     schedule-thread-ahead()
          Causes a group to be scheduled for 'thread ahead'.

     popup-find-group()
          Popups the 'find group' popup, same as the 'find group'
          option on the misc menu.



WIDGETS

     The X interface of knews is built with its  own  widget  set
     plus  the  Layout  Widget.  You are welcome to use it if you
     like. Unfortunately there is no documentation.



AUTHOR

     This software is Copyright 1995, 1996 by Karl-Johan Johnsson
     <su95-kjo@nada.kth.se>.

     Permission is hereby granted to copy,  reproduce,  redistri-
     bute  or otherwise use this software as long as: there is no
     monetary profit gained specifically from the use  or  repro-
     duction  of this software, it is not sold, rented, traded or
     otherwise marketed, and this copyright  notice  is  included
     prominently in any copy made.

     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT  WARRANTY  OF  ANY
     KIND,  EXPRESS  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PUR-
     POSE AND NONINFRINGEMENT. ANY USE OF THIS SOFTWARE IS AT THE
     USERS OWN RISK.



ACKNOWLEDGMENTS

     The threading algorithm was  adapted  from  trn.  Thanks  to
     Wayne Davison.

     Knews uses Keith Packard's Layout Widget.

     The distribution includes Henry Spencer's regex package  for
     environments that do not have POSIX.2 regular expressions.

     Thanks to Mattias Jonsson for ardent testing.

     Any problems are of course entirely due to me.


SEE ALSO

     egrep(1),  knewsd(1),   trn(1),   uudecode(1),   mailcap(5),
     newsrc(5), regex(7).



KNOWN PROBLEMS

     If the server doesn't support XOVER, threading will be  very
     slow.

     The kill file editor may seem a bit eccentric.

     The uudecode function may not recognize or correctly  handle
     all cases.



BUGS

     Send bug reports and comments to su95-kjo@nada.kth.se.