tin (Usenet client)
authors:
table of contents
tin is a text-mode threading NNTP and spool-based Usenet client for a variety of platforms.
We start with configuring a connection in tin. That done and tin having started without errors, jump over to Interface overview lest you become lost and bewildered in its apparently unwelcoming blank screen of emptiness, which only seems that way to the uninitiated.
Local connection §
tin is installed on tilde.club and
preconfigured to access the local spool of the
news.tilde.club server by default. You need only run
tin without arguments:
$ tin
There is also a local NNTP port on the tilde.club
premises, to which you can connect via:
$ tin -r [-g localhost[:119]]
-r stands for remote, and rtin
acts as an alias to tin -r. -g specifies a
server or its alias, overriding the default, and implies
-r.
Remote connection §
Server configuration §
To connect tin to a remote news server over NNTP, a little
bit of setup is required. By default, most of your tin
configuration is located in the .tin directory in your
home. In order to register a remote server, add a line to the
newsrctable file in that directory, with the following
whitespace-separated fields:
server address with an optional port after a colon, which is needed only for non-standard ports,
path to the
newsrcfile for that server, for internal use by tin to store an index of downloaded articles. for each newsgroup.optionally–but highly recommended—a short alias for the server, to facilitate invocation of tin.
For example, here are a few lines from my
newsrctable:
news.tilde.club ~/.tin/newsrc.club tc
news.eternal-september.org ~/.tin/newsrc.e-s es
fidonews.mine.nu ~/.tin/newsrc.mine.nu fi
news.gmane.io ~/.tin/newsrc.gmane gm
* ~/.tin/newsrc.local
Now you can connect to any of the registered servers via
tin -g. For example, to read the tilde.club
server configured above, enter:
$ tin -g tc
But you will not be able to post yet if the server requires authentication, as most servers do:
Authentication §
tin reads your credentials for each server from the file
.newsauth, by default located in your home directory. It
also has a table structure similar to that of newsrctable,
with one line per server. This time, the fields are:
- server address,
- password,
- username.
For example, my line for the tilde.club server (with a
fake password, however) is:
news.tilde.club ant H1dd3nPa$$w0rd
Some servers (Eternal September being one
of them) require that the client authenticate immediately upon
connect, or they will not show you all newsgroups, if any. To cause
tin to authenticate early, pass the -A option,
e.g:
tin -Ag es
If you are among the unlucky fellows who are guilty of using a
password with space or (we are embarrassed to say) tab characters, you
will need to enclose it in double quotes ("). Make sure
your .newsauth is not readable by other users:
$ ls -ld ~/.newsauth # view permissions
$ chmod 600 ~/.newsauth # set permissions
Specifying the NNTPS protocol §
By default, tin connects over the unencrypted NNTP
protocol. These days, however, most servers support the more secure
NNTPS. To cause tin to use it, it should be invoked with the
-T option. So, the final invocation for Eternal
September, with the necessary initial authorisation and the
recommended encrypted connection, is:
$ tin -ATg es
Persisting server-specific commandline parameters §
To save the remembering whether -T and -A
are required for a server and typing them at every invocation, these
options can be indicated in the server-specific configuration file
serverrc, the default full path to which is:
~/.tin/<server>/serverrc
where <server> is the news server hostname (as
specified in newsrctable). The
add_cmd_line_opts parameter in that file specifies
additional commandline options that tin is to assume while
connecting to that server. For example, to set -A and
-T for Eternal September, I added the following
line:
add_cmd_line_opts=-AT
to my ~/.tin/news.eternal-september.org/serverrc .
Now I can connect with just:
$ tin -g es
See tin(5) for a list parameters supported in that configuration option.
Interface overview §
Built-in help §
When tin starts for what it thinks is the first time, it
shows an introductory help screen, which you are advised to peruse. If
you skipped it, press q to quit tin, delete your
~/.tin directory, (or rename it if it already contains your
customisations, to reinstate it later) and start tin again.
After the intro, you end up in the main interface, where context-sensitive help is available in two forms:
- as a brief on-screen summary of most important keys, toggled by
Hand shown by default, and - as a more (but not quite) complete full-screen command reference
invoked by
hand sporting its own keys summary (H) for navigation.
Basic operation §
tin works at four nested levels with (more or less :-) uniform navigation within and between them:
| Level | Operates on | Symbol |
|---|---|---|
| selection | newsgroups | S |
| group | threads | G |
| thread | articles | T |
| article | single article | A |
tin starts at the topmost level (selection), showing a list
of subscribed newsgroups. If you are running it for the first time, the
list will be empty. Press y to yank in the available
newsgroups, then subscribe to the desired ones, by selecting a group
with either of j/k for up/down,
[0-9]+ for group number, or / for textual
search, and subscribing to it with s. Press y
again to see only subscribed groups.
Whereas the selection, group, and article levels are linked with
fixed up/down transitions, the thread level is the odd one out, for it
comes between the group and article levels only upon explicit invocation
from either of them by the l key. Furthermore, if the
article level was entered from the thread level the level-up
command (q) goes back to the thread level instead of the
group level.
The levels share many common keys for navigation and operations, often borrowed from The Vi editor interface. The most important keys are:
| Key | Level | Action |
|---|---|---|
| H | SGTA | toggle panel with brief help |
| h | SGTA | view full-screen help |
| j,k | SGTA | next/prev. group/thread/article/line |
| [1-9]+ | SGR | highlight by entry number |
| Return | SGT | level-down (into highlighted element) |
| q | SGTA | level-up, or quit |
| l | GA | open thread view, mem. as list of articles |
| / | SGTA | search forward |
| ? | SGTA | search backwards |
| y | S | toggle display of all/subscribed groups |
| s,u | S | subscribe/unsubscribe to/from selected group |
| r | SG | switch between read/all |
| TAB,n | S | into next unread group |
| TAB | GTA | open next unread article |
| N,P | GA | open prev/next unread article |
| n,p | GA | open next/prev article |
| N | S | select next unread group |
| w | G | write a new post |
| f | A | follow-up (reply) |
| c,C | SGTA | catch-up (mark read) group (SG) or thread
(TA) and move to the (c:next, C:next unread)
one |
| K | GTA | mark current thread (G) or article (TA) as read and move to the next unread one |
| z | SGA | mark group/base article/article unread |
| Z | TA | mark thread unread |
| Y | S | load new posts from the server (if any) |
| M | SGTA | open the menu |
Solutions to typical problems §
Posting fails for lack of an FQDN §
Well, do get yourself an FQDN, becoming a first-class
netizen. While you are busy acquiring a domain, obtaining a static IP
from your ISP, building yourself a server, and configuring an
authoritative domain-name server on it, set your $HOSTNAME
environment variable to a value resembling an FQDN, by adding some such
statement as
export HOSTNAME=invalid.domain
to your interactive shell’s init script (~/.profile,
~/bash_profile, &c) as a temporary solution1.
If such mockery is below your standards or otherwise offends your
taste, add the line disable_sender=ON to the
/etc/tin.defaults file. You will need root access to do
that. If you don’t have it, ask your BOFH systems
administrator to do it for you.
Tin takes too long to start §
Try starting it with the -Q option.
See also §
tin(1) for a UI reference and tin(5) for a configuration reference.
Credits §
The following people have helped improve the article:
- lafe,
- The Free Thinker,
- Urs Janßen.
Debits §
- Shall I describe the common prefixes on
- groups,
- threads, and
- articles,
- arrange the principal keys in the way most convenient to the
learner:
- with grouping by relative function
- with ordering by decreasing importance.
- abridge that list, leaving out the less important ones?
Questions and improvement proposals are welcome at the author’s
@tilde.club e-mail.
There is nothing more permanent than the temporary.↩︎