This is an Acme Usenet News reader that supports simplistic threading, provides a little bit of support for remembering the position you've read up to so far, and has the possibility of using a killfile. The code is based very heavily on /acme/news, which was the starting point for this little exercise. There are four little programs, that make up the functionality: readnews is the newsgroup reader itself, gethi is a small utility to find out the index number of the most recent message available in a newsgroup, newnews is an rc script making use of gethi to list the newsgroups which have unread messages, and newgroups is a simple rc script to query your nntp server for new newsgroups. readnews [-d /mnt/news] [-K] news.group Readnews allows the reading (and posting, if allowed) of messages in the newsgroup. The -d option allows use of a different mount point of the news hierarchy file system (as provided by nntpfs(4)), the default is /mnt/news. The -K option enables a simple killfile filter. Readnews reads the file $home/lib/newsrc/ to find the index number of the message up to which articles have been read. This file gets updated when readnews is terminated by middle-clicking Del of the thread/article list window. When the killfile is enabled, readnews reads $home/lib/newsrc/killfile and only displays threads and articles that do not match any of the kill patterns. The killfile format is one pattern per line; A pattern begins with either the letter 'F' (match against the From field of an article) or the letter 'S' (match against the subject of an article) followed by a regexp(6). The matching is done against from and subject strings that have been converted to lowercase. If the regexp matches, the article is not displayed. Here is an example killfile: S.*(money|cash|dollar|spam).* S.*(great|business).*(opportunity|venture).* F.*annoying.*character.* The initial display of the readnews pane is the list of unread threads available in the news group. Threading is based purely on the subject string of the articles. Two actions in the tag line of this pane (Expand and Collapse) flip between showing just the threads and listing all articles (still threaded) and their authors. Right clicking on a message number opens that message in a new pane. The Del action in the tag line will terminate readnews if no message panes are open. The message panes display the article with a reduced header and an indication of where the article is situated in the thread. To show the full header, use the Header action of the message pane's tag. The two actions Prev and Next allow navigating the articles in the thread being displayed. Prev and Next reuse the message pane. gethi [-d /mnt/news] news.group Gethi prints the highest index number available in the news group on standard output. newnews Newnews reads the file $home/lib/newsrc/groups, which should list news groups you are interested in, one per line, and prints the commands to read the news groups usind readnews followed by how many unread messages there are as a comment. Here is and example groups file: alt.audio.minidisc comp.risks comp.security.announce comp.os.inferno comp.os.plan9 de.rec.musik.hifi