TIN(1)

โœจ TIN(1) โœจ โ€” Usenet newsreader ๐Ÿ’–

okay bestie, gather round ๐Ÿซถ this is the manual page for tin and rtin, aka your full-screen Usenet newsreader. it's giving iconic, it's giving old-school internet royalty ๐Ÿ‘‘ and we're gonna read every single line together. no skimming, no cap.


๐ŸŒธ NAME ๐ŸŒธ

tin, rtin โ€” Usenet newsreader ๐Ÿฆ‹


๐Ÿ“œ SYNOPSIS ๐Ÿ“œ

tin [[-h|-H|-V] | [[-a] [-dlnq|-Q] [-ACkrTzxX]] [[-R|-S] -s News_dir]
[-cuvZ] [-4|-6] [-o|-w|-N|-M address] [-D debug_level] [-F filter_file]
[-G article_limit] [-f newsrc_file] [-g server[:port]] [-i
proto_article] [-J tinrc_file] [-L Message-ID] [-m Mail_dir] [-p port]
[-t timeout] [-I index_dir] [newsgroup[,...]]]

๐Ÿ’… DESCRIPTION ๐Ÿ’…

tin is a full-screen, easy-to-use Usenet newsreader. she can read news locally (like in /var/spool/news) or remotely โ€” that's the rtin vibe, or tin -r โ€” via an NNTP (Network News Transport Protocol, RFC 3977) or NNTPS (RFC 8143) server. and she'll automatically use those NOV newsoverview(5)-style index files if they're available locally or via the NNTP [X]OVER command (RFC 2980, RFC 3977). slay โœจ

tin has four separate levels of operation: Selection level, Group level, Thread level and Article level. use the Help (h) command to see a list of commands available at whatever level you're in. iykyk ๐Ÿ’…

on startup, tin will show a list of the newsgroups found in ${TIN_HOMEDIR:-"$HOME"}/.newsrc. an arrow โ†’ or a highlighted bar will point to the first newsgroup. move to a group using the terminal arrow keys (terminal dependent, bestie) or Down (j) and Up (k). use PgUp/PgDn (also terminal dependent) or PageUp (^U) (CTRL-U) and PageDown (^D) (CTRL-D) to page up/down. enter a newsgroup by pressing <CR> ๐ŸŽ€

the GroupNextUnreadArtOrGrp (<TAB>) key enters the next newsgroup with unread articles. so handy fr fr ๐ŸŒธ


๐Ÿšช EXIT STATUS ๐Ÿšช

  • 0 โ€” Successful program execution. No unread news available in batch mode.
  • 1 โ€” Usage, syntax, configuration file or network error.
  • 2 โ€” Unread news available (batch mode (-Z) only).
  • 3 โ€” NNTP error.

๐ŸŽ€ OPTIONS ๐ŸŽ€

  • -4 โ€” Force connecting via IPv4 to the remote NNTP server. Only available when built with IPv6 support. ๐Ÿ’™
  • -6 โ€” Force connecting via IPv6 to the remote NNTP server. Only available when built with IPv6 support. ๐Ÿ’œ
  • -a โ€” Toggle ANSI color (default is off). turn that glow on, bestie ๐ŸŒˆ
  • -A โ€” Force authentication on initial connect. Only available when reading via NNTP. See also ${TIN_HOMEDIR:-"$HOME"}/.newsauth in tin(5). ๐Ÿ”
  • -c โ€” Create/update index files for every group in ${TIN_HOMEDIR:-"$HOME"}/.newsrc or file specified by the -f option and mark all articles as read. ๐Ÿงน
  • -C โ€” Use COMPRESS NNTP extension (RFC 8054) if available. See also nntp_read_timeout_secs, -t and the "SECURITY" and "BUGS" section. ๐Ÿ—œ๏ธ
  • -d โ€” Don't load newsgroup descriptions and server's message of the day (interactive mode). ๐Ÿ™ˆ
  • -D debug-level โ€” Enter debug-level, the levels can specified via number (should be avoided as it will be removed in the future) or name (case insensitive) as listed below. Use comma to give multiple levels, any combinations are allowed (e.g., -D GNKSA,2,NNTP). If removal is requested it will be performed at startup and on normal termination (that is the files are only available while tin is running). ๐Ÿ‘€
    • 1 โ€” NNTP, NNTPS
    • 2 โ€” FILTER, ARTS
    • 4 โ€” NEWSRC, BITMAP
    • 8 โ€” THREADING, REFS
    • 16 โ€” MEMORY, MALLOC
    • 32 โ€” ATTRIBUTES
    • 64 โ€” MISC, GNKSA, ACTIVE
    • 127 โ€” ALL, EVERYTHING
    • 128 โ€” REMOVE, DELETE

For NNTP-level -v controls the verbosity of the output. Depending on the debug-level various files may be written to $TMPDIR and/or on screen output may be given. See also the "SECURITY" section! ๐Ÿšจ

  • -f file โ€” Use the specified file of subscribed to newsgroups in place of ${TIN_HOMEDIR:-"$HOME"}/.newsrc or a file specified via ${TIN_HOMEDIR:-"$HOME"}/.tin/newsrctable. ๐Ÿ“‚
  • -F file โ€” Use the specified filter file instead of ${TIN_HOMEDIR:-"$HOME"}/.filter. ๐Ÿงš
  • -g server[:port] โ€” Use the server[:port] and newsrc specified in ${TIN_HOMEDIR:-"$HOME"}/.tin/newsrctable. Only available when reading via NNTP. If you want to give a port with a plain IPv6 address, the address must be enclosed in square brackets. ๐ŸŒ
  • -G article-limit โ€” Limit the number of articles/group to retrieve from the server. If article-limit is > 0 not more than the last article-limit articles/group are fetched from the server. If article-limit is < 0 tin will start fetching articles from your first unread minus absolute value of article-limit. Default is 0, which means no limit. ๐Ÿ”ข
  • -h โ€” Help listing all command-line options. ๐Ÿ†˜
  • -H โ€” Brief introduction to tin that is also shown the first time it is started. ๐Ÿ‘‹
  • -i proto_article โ€” Import (append) a proto article to the ${TIN_HOMEDIR:-"$HOME"}/.tin/postponed.articles file. The proto article then can be posted via Postponed (O, ^O) or -w or even -o. The proto article should not be MIME encoded and have at least the following headers: From:, Subject: and Newsgroups:. Be aware that if -i is used in conjunction with -o all pending postponed articles will be posted, not just the one given with -i. ๐Ÿ“
  • -I dir โ€” Directory in which to store newsgroup index files. Default is ${TIN_INDEX_NEWSDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.news. This option has no effect if tin retrieves its index files via NNTP and cache_overview_files is turned off. ๐Ÿ—‚๏ธ
  • -J file โ€” Use the specified tinrc file instead of ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc. โš™๏ธ
  • -k โ€” Skip the certificate verification step for NNTPS connections and proceed without checking. This option implies -T. See also the "SECURITY" section. โš ๏ธ
  • -l โ€” Get number of articles per group from the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file. If reading via NNTP this is done with the LIST command (RFC 3977). This might result in incorrect article counts but is usually faster than the default which is to read the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file (either directly or via LIST) and then check the article count via NNTP GROUP command (RFC 3977) -ln. If reading via NNTP and LIST COUNTS (RFC 6048) is available that is used instead as it gives more accurate article counts. ๐Ÿ“Š
  • -L Message-ID โ€” Show the message with the given Message-ID if available. Only available when reading via NNTP. ๐Ÿ”
  • -m dir โ€” Mailbox directory to use. Default is ${TIN_HOMEDIR:-"$HOME"}/Mail. ๐Ÿ“ฌ
  • -M user โ€” Mail unread articles to specified user for later reading. For more information read section "AUTOMATIC MAILING AND SAVING NEW NEWS". ๐Ÿ’Œ
  • -n โ€” Only load groups from the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file that are subscribed to in the user's ${TIN_HOMEDIR:-"$HOME"}/.newsrc. This allows a noticeable speed up when connecting via a slow line, but tin may not be able to detect which groups are moderated. See also -l. ๐Ÿƒโ€โ™€๏ธ
  • -N โ€” Mail unread articles to yourself for later reading. For more information read section "AUTOMATIC MAILING AND SAVING NEW NEWS". ๐Ÿ“ฅ
  • -o โ€” Quick post all postponed articles and exit. In order for this to be really quick, it should be used with -n if possible. ๐Ÿš€
  • -p port โ€” Port to use if reading via NNTP (default is 119 or 563 if NNTPS is enabled, see -T). This also overrides the environment variables $NNTPPORT and $NNTPSPORT if set. Only available when reading via NNTP. ๐Ÿ”Œ
  • -q โ€” Don't check for new newsgroups and skip loading the servers message of the day. ๐Ÿคซ
  • -Q โ€” Quick start. Start tin as quickly as possible. Currently this is equivalent to -dnq. See also the -C and -G command-line options. โšก
  • -r โ€” Read news remotely from the default NNTP server specified in the environment variable $NNTPSERVER or contained in the file /etc/nntpserver. ๐ŸŒ
  • -R โ€” Read news saved by the -S option. ๐Ÿ“–
  • -s dir โ€” Save/read articles to/in directory. Default is ${TIN_HOMEDIR:-"$HOME"}/News. ๐Ÿ’พ
  • -S โ€” Save unread articles for later reading by the -R option. For more information read section "AUTOMATIC MAILING AND SAVING NEW NEWS". ๐Ÿ“ฆ
  • -t timeout โ€” Override the nntp_read_timeout_secs setting. Default is 120 seconds, allowed maximum is 16383. โณ
  • -T โ€” Enable NNTPS (NNTP over TLS). This also overrides the environment variable $NNTPSPORT if set. Only available when reading via NNTP. ๐Ÿ”’
  • -u โ€” Create/update index files for every group in ${TIN_HOMEDIR:-"$HOME"}/.newsrc or file specified by the -f option. This option is disabled if tin retrieves its index files via an NNTP server and cache_overview_files is turned off. ๐Ÿ—ƒ๏ธ
  • -v โ€” Verbose mode for -c, -D, -M, -N, -S, -u, -V and -Z options. Can be used multiple times to increase verbosity. ๐Ÿ—ฃ๏ธ
  • -V โ€” Print version information and compilation options. ๐Ÿท๏ธ
  • -w โ€” Quick mode to post an article to a group and then exit. This option implies -d. In order for this to be really quick, it should be used with -n if possible. โœ๏ธ
  • -x โ€” No-posting mode. You cannot post articles if you use this option. ๐Ÿšซ
  • -X โ€” No overwrite mode. ${TIN_HOMEDIR:-"$HOME"}/.newsrc and files in ${TIN_HOMEDIR:-"$HOME"}/.tin will not be overwritten but may be created if they don't exist. Should be used with -x if possible. ๐Ÿ›ก๏ธ
  • -z โ€” Only start tin if there is any new/unread news. If there is news tin will position cursor at first group with unread news. Useful for putting in login file. ๐ŸŒ™
  • -Z โ€” vibe-check if there's any new/unread news and then bail out with the appropriate exit status. Slap -v on there too and it prints how many unread articles are sitting in each group. Exit codes are: 0 = no news, 1 = something went wrong ๐Ÿ˜ญ, 2 = new/unread news exists. Chef's kiss for scripting, fr fr. ๐Ÿซถ

Okay so tin can also switch up its own options on the fly via the OptionMenu (M) command. Any changes you make get written to ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc. Wanna know more? Go peek at the section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" and also tin(5). โœจ

A list of groups can be dropped after all the other command-line options, which is lowkey iconic if you wanna yank in or subscribe to a hand-picked subset of the active newsgroups. The patterns tin gets? They're explained in "NEWSGROUP LISTS & WILDCARDS".

If you name a single group, or a wildcard that only matches one group, bestie you're going straight into that group. Anything else and the normal group selection screen shows up โ€” except all your matching groups are hanging out in there too, like you'd yanked just those ones in. ๐Ÿ’…

With the -w flag, a given group-name becomes the default group to post to. Specify more than one group, or a wildcard? Only the first group โ€” or the first group that matches โ€” gets used.

Heads up: the moment you use SelectYankActive (y) to yank in all active groups, or SelectToggleReadDisplay (r) to flip the read/unread status, your command-line groups are gone. Use SelectSyncWithActive (Y) to reread the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file and get them back. ๐Ÿ™ˆ

NB: with the -n flag, if you're reading via NNTP it can happen that only unsubscribed groups in the ${TIN_HOMEDIR:-"$HOME"}/.newsrc file (or the newsrc-file you gave with the -f command-line switch, or via ${TIN_HOMEDIR:-"$HOME"}/.tin/newsrctable) can be matched. Not me finding out the hard way ๐Ÿ’€

Command-line options have higher priority than attributes and tinrc options. So a command-line option wins over configured values โ€” with one single exception: if a port is given for the newsserver in ${TIN_HOMEDIR:-"$HOME"}/.tin/newsrctable, that port overrides any port given on the command-line. Periodt. Also, the order of command-line options doesn't matter at all. If they're mutually exclusive, the one with the highest priority gets chosen and a warning may pop up. ๐ŸŽ€


๐ŸŒˆ USAGE ๐ŸŒˆ

๐Ÿ’– NEWS ADMINISTRATION ๐Ÿ’–

Maintaining Netnews on large networks of machines can be a pretty time-consuming job โ€” ask me how I know, I discovered it the hard way when I got handed the job of maintaining our news system and news users. ๐Ÿ˜ญ

A user starting tin for the very first time can be automatically subscribed to a list of newsgroups that the news administrator deems appropriate. That subscriptions file should be created in your news lib directory โ€” i.e. ${TIN_LIBDIR:-NEWSLIBDIR}/subscriptions โ€” and it should be world readable. And if you read news via NNTP, then your news server has to support the LIST SUBSCRIPTIONS command. It's part of the NNTP List Extensions (RFC 6048) and all modern servers should understand it. Slay. โœจ

๐Ÿฆ‹ SCREEN FORMAT ๐Ÿฆ‹

tin has four separate levels of operation: Selection level, Group level, Thread level and Article level. Four levels, one icon. ๐Ÿ‘‘

At the Selection level the title displays (the name of the news server โ€” with a "[T]"- or "[k]"-suffix if reading via NNTPS (insecurely) โ€” and) the number of subscribed groups (containing new unread articles). The newsgroups show up in the middle of the screen, usually with the number of unread articles on the same line right in front of them, but that can be customized via select_format.

->M    1     2  comp.security.announce  Announcements from the CERT abou
  M    2     1  news.admin.announce     Announcements for news adminstra
       3    22  news.software.misc      News-related software other than
       4  1475  news.software.nntp      The Network News Transfer Protoc
  X    5   124  news.software.readers   Discussion of software used to r

There may also be a character prefixing the line. Explanation time, bestie:

  • u โ€” this group is unsubscribed. Wanna see only your subscribed groups? Use the SelectToggleReadDisplay (r) or SelectYankActive (y) toggle keys.
  • M โ€” this is a moderated group. Any posts you make have to be approved by the group administrator before they go public. tin will ask for confirmation before you post to a moderated group.
  • N โ€” this is a new newsgroup, created since you last used tin. New newsgroups are not subscribed to by default (though, see the $AUTOSUBSCRIBE / $AUTOUNSUBSCRIBE environment variables). Subscribe to it the normal way if you want it to keep appearing in your Selection Menu. Just ignore new newsgroups and they'll be gone next time you start tin โ€” but then you'll have to yank in all the groups to find them in a later session. ๐Ÿ™ˆ
  • D โ€” this group no longer exists. If you don't wanna see it anymore, unsubscribe from it the normal way. This flag only appears if you set strip_bogus to "Mark with D on selection screen" in the Options Menu.
  • X โ€” you may no longer make posts to this group. Often a group gets superseded by a more appropriately named one.
  • = โ€” this group has been renamed and you may no longer post to it. If you do, you'll get an error from your news server telling you the correct group to post to.

At the Group level the title contains the name of the group, the number of conversation threads, the abbreviated threading method (thread_articles), the limit of articles to get (if set; getart_limit), the total number of (unread) articles (art_marked_read or art_marked_unread), the number of hot articles art_marked_selected, the number of read hot articles (if any; art_marked_read_selected), the number of recent articles (art_marked_recent) and the number of killed articles (art_marked_killed). I.e.:

                   alt.sources (5B -50/23+ 0* 3o 0K)

The characters after the numbers depend on configuration and on whether show_only_unread_arts is currently active or not. Some numbers could be missing if the specific option isn't enabled. It might also contain an M, X or = (see above; may not work with the -n command-line switch) if the group is moderated, set to no posting, or postings to it get redirected.

If a thread has unread articles, it's marked with art_marked_unread in front of the total number of articles in the thread. If there are recent articles within the thread, it might be marked with art_marked_recent in front of the total number of articles in the thread โ€” this is controlled by the recent_time option. If a thread has hot articles in it (see also the section "FILTERING ARTICLES"), it's marked with art_marked_selected in front of the total number of articles in the thread. The display can be customized via group_format.

de.admin.net-abuse.announce (11B 13+ 1* 1o 0K) M
->   1   +   3  108 bincancels in de.talk.sex        Christopher Lueg <l
     2   +       69 EMP/ECP gecancelt. xynx. BI= 10  Henning Weede <hwee
     3   o       93 EMP gecancelt. SouthBeach/Palms  Henning Weede <hwee
     4   *      368 <1997-11-12> Fremdcancel-FAQ     Thomas Roessler <ro

At the Thread level the screen usually (depends on the threading method used) looks like this, but it can be customized via thread_format:

->   1      [   7]  What is this funny tree in the thre Robert F. Simmig
     2      [  12]  +->                                 Sephan Wagner <s
     3      [ 230]  | `->Tin thread-level (was: What is Bob Johnson <bob
     4      [  22]  `->tin threading menu               Brian Richardson

At the Article level the page header has the following format:

Sun, 28 Dec 1997 21:21:01   de.admin.news.groups       Thread   20 of 86
Lines 50   Re: EINSPRUCH zu RESULT:de.comm.mobil.ALL   Article  47 of 59
Urs Janssen <urs@akk.org>         at Arbeitskreis Kultur und Kommunikati

article-body

The look of the Selection, Group and Thread level can be customized. See the section "CUSTOMIZING THE SCREEN FORMAT". ๐ŸŽจ

๐Ÿ’œ COMMON MOVING KEYS ๐Ÿ’œ

This is the table of the common keys for moving around all levels within tin. No cap. ๐Ÿ•น๏ธ

  • Beg. of list/article โ€” Home on ANSI/vt100, FirstPage (^) on other terminals
  • End of list/article โ€” End on ANSI/vt100, LastPage ($) on other terminals
  • Page Up โ€” PgUp on ANSI/vt100, PageUp (u, ^U or ^B) on other terminals
  • Page Down โ€” PgDn on ANSI/vt100, PageDown (^D or ^F or <SPACE>) on other terminals
  • Line Up โ€” Up arrow on ANSI/vt100, Up (k or ^P) on other terminals
  • Line Down โ€” Down arrow on ANSI/vt100, Down (j or ^N) on other terminals

๐ŸŒธ COMMON EDITING COMMANDS ๐ŸŒธ

An emacs(1) style editing package lets you edit input strings with zero stress. And there's a history list so you can reuse previously entered strings like it's nothing. Besides the cursor keys, these commands are available while you're editing a string:

  • ^A, ^E โ€” move to beginning or end of line, respectively.
  • ^F, ^B โ€” non-destructive move forward or back one location, respectively.
  • ^D โ€” delete the character currently under the cursor, or send EOF if there are no characters in the buffer.
  • ^H, <DEL> โ€” delete character left of the cursor.
  • ^K โ€” delete from cursor to end of line.
  • ^P, ^N โ€” move through history, previous and next, respectively.
  • ^L, ^R โ€” redraw the current line.
  • <CR> โ€” places line on history list if non-blank, appends newline and returns to the caller.
  • <ESC> โ€” aborts the present editing operation. ๐Ÿ˜ญ

โญ GLOBAL COMMANDS โญ

These commands are available at all 4 menu levels and always have the same effect. Iconic behaviour tbh.

  • ShellEscape '!' โ€” shell escape. ShellEscape by itself launches a shell; ShellEscape <command> runs an external <command>. This facility may have been disabled by the System Administrator. ๐Ÿ’€
  • ToggleColor '&' โ€” toggle use of ANSI color.
  • RedrawScr '^L' โ€” redraw the current screen.
  • ScrollUp '<' โ€” scroll screen up by one line.
  • ScrollDown '>' โ€” scroll screen down by one line.

Postponed O, ^O

Bestie, this is the "I'll deal with it later" button ๐Ÿ’Œ โ€” it reloads a postponed article.

Heads up tho: if your system is being weird and blocks the Postponed key, you have to quote it first by pressing ^V (CTRL-V). Sneaky little workaround, no cap.

The postpone-menu offers these actions:

  • PromptYes (y) โ€” reload and spawn editor ๐Ÿ–Š๏ธ
  • PostponeOverride (Y) โ€” post the article (without spawning editor)
  • PostponeAll (A) โ€” post all postponed articles (without spawning editor)
  • PromptNo (n) โ€” skip this article
  • Quit (q) โ€” quit the postponed menu
Real talk: currently there is no "simple" way to delete a postponed article from the postponed-file. You have to do this whole little ritual instead: reload it with Postponed, enter the editor with PromptYes (y), quit the editor, discard the posting with Quit (^O, y, q). Iconic? no. Works? yes. โœจ

See also the -o command-line switch.

Help h

Help screen of all the commands available on whatever menu you're currently on. You can use SearchSubjF (/), SearchSubjB (?) and SearchRepeat (\) to search on this screen. Quit (q) takes you back to the menu. ๐ŸŽ€

ToggleHelpDisplay H

Toggles the display of the help mini menu at the bottom of the screen, plus the posting etiquette that shows up after composing an article (beginner_level). ๐ŸŒธ

DisplayPostHist W

Lists the articles posted by user โ€” the date posted, the newsgroup and the subject all get listed. Peep the "POSTING HISTORY LISTING" section for more. ๐Ÿ“œ

Version v

Prints tin version information. ๐Ÿ‘‘


๐Ÿฆ‹ NEWSGROUP SELECTION COMMANDS ๐Ÿฆ‹

  • 4 โ€” select group 4, bestie.

MarkAncientArtRead ^E

Mark all articles in the current group older than a given time in days, or a date string formatted according to RFC 5322, as read. โณ

SelectResetNewsrc ^R

Reset ${TIN_HOMEDIR:-"$HOME"}/.newsrc file.

โš ๏ธ This will destroy all records of which articles have been read, so use this carefully. I'm serious, bestie, be careful. ๐Ÿ˜ญ

SetRange #

Choose a range of articles to be affected by the next command. See the "RANGES" section for the tea. ๐Ÿ“

SelectSortActive .

Sort the list of newsgroups. ๐Ÿ”ค

SearchRepeat \

Repeat the previous search. ๐Ÿ”

SearchSubjF /

Search for a group by name and description (if displayed). ๐Ÿ”

SearchSubjB ?

Backward search through the group names and descriptions. โฌ†๏ธ

SelectReadGrp ^J, <CR>

Read current group. ๐Ÿ“–

SelectEnterNextUnreadGrp <TAB>, n

Enter next group with unread news. Will wrap around to the beginning of the group selection list looking for unread groups. ๐Ÿ”„

Catchup c

Make current group as all read [after confirmation] and move to the next group in the group selection list. โœ…

CatchupNextUnread C

Mark current group as all read [after confirmation] and enter the next unread group in the group selection list. โœ…

SelectToggleDescriptions d

Toggle display to show just the group name, or the group name and the group descriptions. ๐Ÿ‘€

EditFilter E

Edit the filter file and reload it afterward. ๐Ÿงน

SelectGoto g

Choose a new group by name. This command can be used to access any group, even those not currently yanked in. ๐Ÿšช

ToggleInfoLastLine i

Toggle the display of the description of the current newsgroup in the last line. This will not be available if tin was started with the -d option. โ„น๏ธ

ToggleInverseVideo I

Toggle inverse video. ๐ŸŽจ

ConnectionInfo J

Show details about current connection. ๐Ÿ”Œ

LookupMessage L

Look up article by Message-ID:. If none of the groups listed in the Newsgroups:-header of the referenced article is available, just the contents of the Newsgroups:-header will be displayed in the last line. At this level this command only works if reading via NNTP and the server supports [X]HDR (RFC 2980, RFC 3977) or XPAT (RFC 2980). ๐Ÿ•ต๏ธ

SelectMoveGrp m

Move the current group within the group selection list. By entering 1 the group will become the first displayed group in the list, by entering 8 the eighth group in the list etc. By entering $ the group will be the last group displayed. ๐Ÿ”€

OptionMenu M

User configurable options menu (for more information see section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES"). โš™๏ธ

SelectNextUnreadGrp N

Positions the cursor on the next group with unread articles in it. ๐ŸŽฏ

Quit q

Quit tin โ€” ask the user to confirm if confirm_choice is set accordingly. ๐Ÿ‘‹

QuitTin Q

Quit tin โ€” don't ask the user to confirm. ๐Ÿ’จ

SelectToggleReadDisplay r

Toggle display of all subscribed to groups and just those groups containing unread articles. Command has no effect if groups were specified on the command-line when tin was started. ๐Ÿ™ˆ

BugReport R

Mail a bug report or comment to <tin-bugs@tin.org>. This is the best way of getting bugs fixed and features added/changed. ๐Ÿ›

SelectSubscribe s

Subscribe to current group. ๐Ÿ’–

SelectSubscribePat S

Subscribe to groups matching user specified pattern. See the section "NEWSGROUP LISTS & WILDCARDS" for the types of pattern that tin understands. โœจ

SelectUnsubscribe u

Unsubscribe to current group. This can be used to remove bogus groups. See strip_bogus in the "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" section. ๐Ÿ—‘๏ธ

SelectUnsubscribePat U

Unsubscribe to groups matching user specified pattern. See the section "NEWSGROUP LISTS & WILDCARDS" for the types of pattern that tin understands. โœจ

Post w

Post an article to current group. If posting fails for some reason, you'll get the chance to PostEdit (e) the article again, PostPostpone (o) it for later processing (see also the -o command-line switch) or discard it via Quit (q). ๐Ÿ“ฎ

SelectQuitNoWrite X

Quit tin without saving any changes to the configuration. ๐Ÿšซ

SelectYankActive y

Yanks in all groups. Toggles the displayed groups between all the groups in the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file and just those that are subscribed to in ${TIN_HOMEDIR:-"$HOME"}/.newsrc. ๐Ÿชฃ

SelectSyncWithActive Y

Reread the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file to see if any new news has arrived since starting tin. ๐Ÿ“ก

SelectMarkGrpUnread z, Z

Mark all articles in the current group as unread. ๐Ÿ’ค


๐ŸŒˆ GROUP INDEX COMMANDS ๐ŸŒˆ

All searches in this level are limited to unread articles if in show_only_unread_arts mode. GroupToggleReadUnread (r) can be use toggle the setting right before/after the search. ๐Ÿง 

  • 4 โ€” select article 4.

Auto select article(s) using a menu. Read the section "FILTERING ARTICLES" for more information. ๐ŸŽ›๏ธ

MarkAncientArtRead ^E

Mark all articles in the current group older than a given time in days, or a date string formatted according to RFC 5322, as read. โณ

Kill article(s) using a menu. Read the section "FILTERING ARTICLES" for more information. ๐Ÿ’€

MarkFeedRead ^X

Mark current article, thread, range, auto-selected (hot) articles, articles matching pattern or tagged articles as read. A prompt asks which type should be marked. โœ…

MarkFeedUnread ^W

Mark current article, thread, range, auto-selected (hot) articles, articles matching pattern or tagged articles as unread. A prompt asks which type should be marked. ๐Ÿ’ค

SetRange #

Choose a range of articles to be affected by the next command. See the section "RANGES" for more information. ๐Ÿ“

LastViewed -

Re-enter the last message that was viewed. โช

SearchRepeat \

Repeat the previous search. ๐Ÿ”

SearchSubjF /

Search forward for specified subject. ๐Ÿ”

SearchSubjB ?

Search backward for specified subject. ๐Ÿ”Ž

GroupSelThd *

Select current thread for later processing. ๐Ÿงต

GroupDoAutoSel +

Selects all threads in current group. It is a shortcut for calling GroupSelPattern with a pattern of *. โšก

GroupToggleThdSel .

Toggle selection of current thread. If at least one unread article (but not every unread article) in the current thread is selected, then all unread articles become selected. ๐Ÿ”

GroupSelThdIfUnreadSelected ;

For each thread in current group, if it at least one unread article is selected, all unread articles become selected. This is useful for auto-selection on author where reader wants to see entire thread. ๐Ÿ‘€

GroupSelPattern =

Prompts for a pattern with which to match on. All threads whose subjects match the pattern will be marked selected. A pattern of * will match all subjects. Entering just <CR> will reuse the last pattern that was entered. ๐ŸŽฏ

GroupReverseSel @

Reverse all selections on all articles. ๐Ÿ”„

GroupUndoSel ~

Undo all selections on all articles. It clears the toggle effect of GroupMarkUnselArtRead (X) command. Thus after first doing a GroupMarkUnselArtRead, one can then do GroupUndoSel to reset articles. Thus, one can iteratively whittle down uninteresting threads. ๐Ÿงผ

Pipe |

Pipe current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles into command. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more information. ๐Ÿšฐ

  • QuickFilterSelect '[' โ€” Auto-select article(s) with a single key (after confirmation, bestie ๐Ÿ’…). The defaults for selection come from these four tinrc config variables: default_filter_select_case, default_filter_select_expire, default_filter_select_global and default_filter_select_header. Read the section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" for the full explanation of these variables, and "FILTERING ARTICLES" for more info on filtering. โœจ
  • QuickFilterKill ']' โ€” Kill article(s) with a single key (after confirmation ๐Ÿ’€). The defaults for killing come from these four tinrc config variables: default_filter_kill_case, default_filter_kill_expire, default_filter_kill_global and default_filter_kill_header. Read the section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" for the full explanation of these variables, and "FILTERING ARTICLES" for more info on filtering. ๐ŸŽ€
  • GroupReadBasenote '^J' '<CR>' โ€” Read current article. That's it. That's the vibe. ๐Ÿ“–
  • GroupNextUnreadArtOrGrp '<TAB>' โ€” View next unread article or group. Slay. ๐Ÿฆ‹
  • SearchAuthF 'a' โ€” Author forward search. This searches for articles with a specific ''From:'' line. ๐Ÿ”
  • SearchAuthB 'A' โ€” Author backward search. Otherwise, see SearchAuthF ('a') above. ๐Ÿ‘‘
  • SearchBody 'B' โ€” Search the body of all articles in group (ngl, can be slow ๐Ÿ˜ญ). You can abort the search using Quit ('q'). ๐Ÿ›‘
  • Catchup 'c' โ€” Mark all articles as read (after confirmation) then return to the group selection list. Move cursor to next group. โœ…
  • CatchupNextUnread 'C' โ€” Mark all articles as read (after confirmation) and enter the next group with unread news. ๐Ÿ”ฅ
  • GroupToggleSubjDisplay 'd' โ€” Cycle the display of the author through all the possible options for the tinrc variable show_author. ๐Ÿ”„
  • GroupCancel 'D' โ€” Cancel (delete) or supersede (overwrite) the current article. It must have been posted by the same user. The cancel message can be seen in the newsgroup 'control' or 'control.cancel'. โš ๏ธ
  • EditFilter 'E' โ€” Edit the filter file and reload it afterward. ๐Ÿงš
  • GroupGoto 'g' โ€” Choose a new group by name. This command can be used to access any group, even those not currently yanked in. ๐Ÿ‘€
  • GroupToggleGetartLimit 'G' โ€” Toggle article/group limit. ๐ŸŽš๏ธ
  • ToggleInfoLastLine 'i' โ€” Display the subject of the first article in the current thread in the last line. ๐Ÿ’ฌ
  • ToggleInverseVideo 'I' โ€” Toggle inverse video. ๐ŸŒˆ
  • ConnectionInfo 'J' โ€” Show details about current connection. ๐Ÿ“ก
  • GroupMarkThdRead 'K' โ€” Mark article/thread as read and move onto the next unread article/thread. If a range of articles/threads is set, the range will be marked as read instead of the current article/thread. When tagged articles/threads are present, a prompt asks how to proceed. ๐Ÿท๏ธ
  • GroupListThd 'l' โ€” Open the thread under the current cursor position. ๐Ÿงต
  • LookupMessage 'L' โ€” Look up article by ''Message-ID:''. If not reading via NNTP or the server neither supports [X]HDR (RFC 2980, RFC 3977) nor XPAT (RFC 2980), only the IDs in the current group are searched. ๐Ÿ”Ž
  • GroupMail 'm' โ€” Mail current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to someone. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more information. ๐Ÿ“ง
  • OptionMenu 'M' โ€” User configurable options menu (for more information see section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES"). โš™๏ธ
  • GroupNextGroup 'n' โ€” Go to next group. โžก๏ธ
  • GroupNextUnreadArt 'N' โ€” Go to the next unread article. โญ๏ธ
  • Print 'o' โ€” Send current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to printer. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more information. ๐Ÿ–จ๏ธ
  • GroupPrevGroup 'p' โ€” Go to previous group. โฌ…๏ธ
  • GroupPrevUnreadArt 'P' โ€” Go to previous unread article. โฎ๏ธ
  • Quit 'q' โ€” Return to previous level. ๐Ÿšช
  • QuitTin 'Q' โ€” Quit tin โ€” don't ask the user to confirm. ๐Ÿ’€
  • GroupToggleReadUnread 'r' โ€” Toggle the display between all articles and unread articles. ๐Ÿ‘€
  • BugReport 'R' โ€” Mail a bug report or comment to <tin-bugs@tin.org>. This is the best way of getting bugs fixed and features added/changed. ๐Ÿ›
  • GroupSave 's' โ€” Save current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more information. ๐Ÿ’พ
  • GroupAutoSave 'S' โ€” Save marked articles automatically without further prompting. ๐Ÿค–
  • GroupTag 't' โ€” Toggle tag-status of current article / thread for GroupMail ('m') / Pipe ('|') / Print ('o') / GroupSave ('s') / GroupRepost ('x'). ๐Ÿท๏ธ
  • GroupTagParts 'T' โ€” Automatically tag/untag all the parts of the current multi-part message in order. ๐Ÿงฉ
  • GroupToggleThreading 'u' โ€” Cycle the threading mode through no threading, threading by subject, threading by references, threading on both subject and references, group multipart articles into a thread (''Subject:'' based). ๐Ÿงต
  • GroupUntag 'U' โ€” Untag all articles that were tagged. โŒ
  • Post 'w' โ€” Post an article to the current group. If posting fails for some reason, you'll get the chance to edit the article again via PostEdit ('e'), postpone it for later processing via PostPostpone ('o') (see also ''-o'' command-line switch) or discard it via Quit ('q'). โœ๏ธ
  • GroupRepost 'x' โ€” Repost an already posted article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to another newsgroup(s). Useful for reposting from global to local newsgroups. Do not use this to crosspost your own articles. ๐Ÿšซ
  • GroupMarkUnselArtRead 'X' โ€” Mark all unread articles that have not been selected as read, redraw screen to reflect changes and put index at the first thread to begin reading. Pressing GroupMarkUnselArtRead ('X') again will toggle back to the way it was before. See GroupUndoSel ('~') command for clearing the toggle effect, leaving the group will also clear the toggle effect and make the changes permanent. ๐Ÿ”„
  • MarkArtUnread 'z' โ€” Mark current article as unread. ๐Ÿ“Œ
  • MarkThdUnread 'Z' โ€” Mark current thread as unread. If a range of threads is set, the range will be marked as unread instead of the current thread. When tagged threads are present, a prompt asks how to proceed. ๐Ÿ“Œ

โœจ THREAD LISTING COMMANDS โœจ

  • 4 โ€” Select article 4 within thread. ๐Ÿ”ข
  • MenuFilterSelect '^A' โ€” Auto select article(s) using a menu. Read the section "FILTERING ARTICLES" for more information. ๐ŸŽ›๏ธ
  • MenuFilterKill '^K' โ€” Kill article(s) using a menu. Read the section "FILTERING ARTICLES" for more information. ๐ŸŽ›๏ธ
  • MarkFeedRead '^X' โ€” Mark current article, thread, range, auto-selected (hot) articles, articles matching pattern or tagged articles as read. A prompt asks which type should be marked. โœ…
  • MarkFeedUnread '^W' โ€” Mark current article, thread, range, auto-selected (hot) articles, articles matching pattern or tagged articles as unread. A prompt asks which type should be marked. ๐Ÿ“Œ
  • SetRange '#' โ€” Choose a range of articles to be affected by the next command. See the section "RANGES" for more information. ๐Ÿ“
  • LastViewed '-' โ€” Re-enter the last message that was viewed. ๐Ÿ”™
  • SearchRepeat '\' โ€” Repeat the previous search. ๐Ÿ”
  • SearchSubjF '/' โ€” Search forward for specified subject. ๐Ÿ”
  • SearchSubjB '?' โ€” Search backward for specified subject. ๐Ÿ”
  • ThreadSelArt '*' โ€” Select current thread for later processing. ๐Ÿงต
  • ThreadToggleArtSel '.' โ€” Toggle selection of current article. ๐Ÿ”˜
  • ThreadReverseSel '@' โ€” Reverse article selections. ๐Ÿ”„
  • ThreadUndoSel '~' โ€” Undo all selections on current thread. โ†ฉ๏ธ
  • Pipe '|' โ€” Pipe current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles into command. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more information. ๐Ÿ“ค
  • ThreadReadArt '^J' '<CR>' โ€” Read current article within thread. ๐Ÿ“–
  • ThreadReadNextArtOrThread '<TAB>' โ€” View next unread article within thread. โญ๏ธ
  • SearchAuthF 'a' โ€” Author forward search. This searches for articles with a specific ''From:'' line. The search will wrap over into the next thread if nothing is found in the current one. ๐Ÿ”
  • SearchAuthB 'A' โ€” Author backward search. Otherwise, see SearchAuthF ('a') above. ๐Ÿ‘‘
  • SearchBody 'B' โ€” Search the body of all articles in group (can be slow). You can abort the search using Quit ('q'). ๐Ÿ›‘
  • Catchup 'c' โ€” Mark thread as read (after confirmation) and return to the group index page. Move cursor to next thread. โœ…
  • CatchupNextUnread 'C' โ€” Mark thread as read (after confirmation) and enter the next thread containing unread news. ๐Ÿ”ฅ
  • ThreadToggleSubjDisplay 'd' โ€” Cycle the display of the author through all the possible options for the tinrc variable show_author. ๐Ÿ”„
  • ThreadCancel 'D' โ€” Cancel (delete) or supersede (overwrite) the current article. It must have been posted by the same user. The cancel message can be seen in the newsgroup 'control' or 'control.cancel'. โš ๏ธ
  • EditFilter 'E' โ€” Edit the filter file and reload it afterward. ๐Ÿงš
  • ThreadFollowupQuote 'f' โ€” Post a followup to the current article with a copy of the article included. ๐Ÿ’ฌ
  • ThreadFollowup 'F' โ€” Post a followup to the current article without a copy of the article included. ๐Ÿ’ฌ
  • ToggleInfoLastLine 'i' โ€” puts the subject of the current article riiight there in the last line. like, the actual bottom line of your terminal. so handy bestie โœจ
  • ToggleInverseVideo 'I' โ€” flip the inverse video on/off. yes, the whole vibe inverts ๐Ÿ’…
  • ConnectionInfo 'J' โ€” shows you the details about the current connection. nosy in the best way ๐Ÿฆ‹
  • ThreadMarkArtRead 'K' โ€” marks the article as read and bounces you to the next unread one. if a range of articles is set, it marks the range as read instead of just the current article. and when there are tagged articles hanging around, it hits you with a prompt asking how to proceed. iykyk ๐ŸŽ€
  • LookupMessage 'L' โ€” looks up an article by Message-ID:. if you're not reading via NNTP, or the server supports neither [X]HDR (RFC 2980, RFC 3977) nor XPAT (RFC 2980), then only the IDs in the current group get searched. lowkey limited but it is what it is ๐Ÿ’€
  • ThreadMail 'm' โ€” mails the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to someone. head to the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for the full tea ๐Ÿซถ
  • Print 'o' โ€” sends the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to the printer. yes, an actual printer, in this economy ๐Ÿ˜ญ. more deets in "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES"
  • Quit 'q' โ€” return to the previous level. just one step back bestie, no drama ๐ŸŒธ
  • QuitTin 'Q' โ€” quit tin entirely, and it will not ask the user to confirm. it's giving main character exit, no goodbyes ๐Ÿ’…
  • BugReport 'R' โ€” mails a bug report or a comment to <tin-bugs@tin.org>. fr fr this is the best way of getting bugs fixed and features added/changed, so if you love it, tell them ๐Ÿฅฐ
  • ThreadSave 's' โ€” saves the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles. the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" has the lore ๐ŸŽ€
  • ThreadAutoSave 'S' โ€” saves the marked articles automatically, no further prompting. silent, efficient, iconic โœจ
  • ThreadTag 't' โ€” toggles the tag status of the current article, so you can mail, pipe, print, save or repost it later. collecting articles like they're stickers ๐Ÿ’–
  • ThreadTagParts 'T' โ€” automatically tags/untags all the parts of the current multi-part message, in order. so satisfying when it lines up ๐ŸŒˆ
  • ThreadUntag 'U' โ€” untags all the tagged threads. clean slate, fresh start ๐Ÿงš
  • Post 'w' โ€” posts an article to the current group. if posting fails for some reason, you get another shot: edit the article again via PostEdit ('e'), postpone it for later processing via PostPostpone ('o') (see also the '-o' command-line switch), or discard it via Quit ('q'). no pressure, you got options ๐Ÿซถ
  • MarkArtUnread 'z' โ€” marks the current article in the thread as unread. if a range of articles is set, it marks the range as unread instead of the current article. and when tagged articles are present, a prompt asks how to proceed. ๐ŸŽ€
  • MarkThdUnread 'Z' โ€” marks all articles in the thread as unread. whole thread, back to unread, periodt ๐Ÿ’…

๐ŸŒธ ARTICLE VIEWER COMMANDS ๐ŸŒธ

  • 0 โ€” read the first (base) article in this thread.
  • 4 โ€” read response 4 in this thread.
  • MenuFilterSelect '^A' โ€” auto selects article(s) using a menu. the section "FILTERING ARTICLES" has the whole story ๐Ÿ”ฅ
  • PageReplyQuoteHeaders '^E' โ€” replies through mail to the author of the current article, with a copy of the article and all headers included. citation game strong ๐Ÿ“ฉ
  • PagePGPCheckArticle '^G' โ€” performs pgp(1) / gpg(1) operations on the article. heads up: this expects inline pgp (RFC 9580) and not MIME pgp (RFC 3156). read the spec bestie ๐Ÿ”
  • PageToggleRaw '^H' โ€” toggles the display mode between raw (including all headers) and cooked. ๐Ÿณ
  • MenuFilterKill '^K' โ€” kills article(s) using a menu. see "FILTERING ARTICLES" for the details ๐Ÿ’€
  • PageToggleTabs '^T' โ€” toggles the TAB width between 4 and 8 characters. pick your fighter ๐ŸŒธ
  • PageFollowupQuoteHeaders '^W' โ€” posts a followup to the current article with a copy of the article with all headers included.
  • PageToggleTex2iso '"' โ€” toggles TeX to ISO decoding for the current article. the default behavior comes from the tex2iso_conv variable in the tinrc file. โœจ
  • PageToggleAllHeaders '*' โ€” toggles the display of all headers vs. the headers listed in news_headers_to_display. ๐Ÿ™ˆ
  • PageArticleInfo ''' โ€” detailed MIME information of the article. the receipts, if you will ๐Ÿงพ
  • PageToggleRot '%' โ€” toggles ROT-13 decoding for this article. retro cipher moment ๐Ÿ”ฅ
  • PageToggleInlineData '(' โ€” toggles the display of data sections outside of MIME, like uuencoded or yenc data. the default behavior comes from the hide_inline_data variable in the tinrc file. ๐Ÿซถ
  • PageReveal ')' โ€” okay so the form feed character (^L) is often used to hide 'spoilers' that the reader may not initially wish to see when viewing an article. any text after a form feed is not displayed. this key-press acts like a reveal key and turns the hidden text back on. scrolling down will also reveal the text, and scrolling up will hide it again. no spoilers bestie ๐Ÿซฃ
  • LastViewed '-' โ€” re-enters the last message that was viewed. like a little back button for your attention span ๐Ÿ’…
  • SearchRepeat '\' โ€” repeats the previous search. lazy girl's best friend, honestly ๐ŸŽ€
  • SearchSubjF '/' โ€” forward search the text of this article.
  • SearchSubjB '?' โ€” backward search the text of this article.
  • PageSkipIncludedText ':' โ€” skips to the end of the next quoted text-block in this article. quoted text is everything which matches quote_regex, quote_regex2 or quote_regex3. bye to the wall of quotes ๐Ÿ‘‹
  • PageTopThd '<' โ€” go to the first article in the current thread.
  • PageBotThd '>' โ€” go to the last article in the current thread.
  • PageToggleHighlight '_' โ€” toggles word highlighting on/off. โœจ
  • PageToggleVerbatim ',' โ€” cycles through the various options of verbatim_handling. ๐ŸŒˆ
  • Pipe '|' โ€” pipes the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles into a command. see "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more ๐Ÿซถ
  • QuickFilterSelect '[' โ€” auto selects article(s) with a single key. the defaults used for selection are set based upon these four tinrc config variables: default_filter_select_case, default_filter_select_expire, default_filter_select_global and default_filter_select_header. read the section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" for a full explanation of these variables, and "FILTERING ARTICLES" for more on filtering. one key, big power ๐Ÿ’…
  • QuickFilterKill ']' โ€” kills article(s) with a single key. the defaults used for killing are based upon these four tinrc config variables: default_filter_kill_case, default_filter_kill_expire, default_filter_kill_global and default_filter_kill_header. read "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES" for the full explanation of those variables, and "FILTERING ARTICLES" for the filtering tea. ๐Ÿ’€
  • PageNextThd '^J' '<CR>' โ€” go to the next base article.
  • PageNextUnread '<TAB>' โ€” go to the next unread article. if the tinrc variable goto_next_unread doesn't contain PageNextUnread, then this key will first page through the current article. ๐Ÿฆ‹
  • SearchAuthF 'a' โ€” author forward search.
  • SearchAuthB 'A' โ€” author backward search.
  • SearchBody 'B' โ€” searches the body of all articles in the group (can be slow ๐ŸŒ). you can abort the search using Quit ('q').
  • Catchup 'c' โ€” marks the current thread as read [after confirmation] and returns to the previous menu. moves the cursor to the next item. ๐ŸŽ€
  • CatchupNextUnread 'C' โ€” marks the rest of the current thread as read [after confirmation] and enters the next thread with unread articles. โœจ
  • PageCancel 'D' โ€” cancels (deletes) or supersedes (overwrites) the current article. it must have been posted by the same user. the cancel message can be seen in the newsgroup 'control' or 'control.cancel'. big moves, use responsibly ๐Ÿ”ฅ
  • PageEditArticle 'e' โ€” edits the current article. this is restricted to mailgroups and saved news. ๐Ÿซถ
  • EditFilter 'E' โ€” edits the filter file and reloads it afterward. ๐Ÿงš
  • PageFollowupQuote 'f' โ€” posts a followup to the current article with a copy of the article included.
  • PageFollowup 'F' โ€” posts a followup to the current article without including a copy of the article. clean and unfussy ๐Ÿ’…
  • PageFirstPage 'g' โ€” go to the start of the article.
  • PageLastPage 'G' โ€” go to the end of the article.
  • ToggleInfoLastLine 'i' โ€” displays the subject of the current article in the last line. โœจ
  • ToggleInverseVideo 'I' โ€” toggles inverse video.
  • ConnectionInfo 'J' โ€” shows details about the current connection. ๐ŸŒธ
  • PageKillThd 'K' โ€” marks the rest of the thread as read and moves onto the next unread thread. ๐Ÿ’€
  • PageListThd 'l' โ€” shows the thread menu that the current article is a part of. see the family tree ๐ŸŒณ
  • LookupMessage 'L' โ€” looks up an article by Message-ID:. if you're not reading via NNTP, or the server supports neither [X]HDR (RFC 2980, RFC 3977) nor XPAT (RFC 2980), then only the IDs in the current group get searched. ๐Ÿ™ˆ
  • PageMail 'm' โ€” mails the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to someone. see "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more. ๐Ÿ“ฉ
  • OptionMenu 'M' โ€” the user configurable options menu (for more information see the section "GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES"). your settings, your rules ๐Ÿ‘‘
  • PageNextArt 'n' โ€” go to the next article.
  • PageNextUnreadArt 'N' โ€” go to the next unread article.
  • Print 'o' โ€” sends the current article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles to the printer. see "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more. ๐Ÿ˜ญ
  • PagePrevArt 'p' โ€” go to the previous article.
  • PagePrevUnreadArt 'P' โ€” go to the previous unread article.
  • Quit 'q' โ€” return to the previous level.
  • QuitTin 'Q' โ€” quit tin โ€” don't ask the user to confirm. no takebacks bestie ๐Ÿ’…
  • PageReplyQuote 'r' โ€” replies through mail to the author of the current article with a copy of the article included. ๐Ÿซถ
  • PageReply 'R' โ€” reply by mail to whoever wrote the article you're looking at, and no, you don't drag the original article along with you. just the reply, bestie ๐Ÿ’Œ
  • PageSave 's' โ€” save the current article / thread / the auto-selected (hot) ones / articles matching a pattern / tagged articles. the whole deets live in the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" ๐Ÿ’พ
  • PageAutoSave 'S' โ€” save your marked articles automatically, no further prompting, it just goes. slay.
  • PageTag 't' โ€” toggle the tag status of the current article so you can mail, pipe, print, save or repost it. tagging is literally the group-chat @ mention of Usenet ๐Ÿท๏ธ
  • PageGroupSel 'T' โ€” bounce back up to group selection level.
  • PageGotoParent 'u' โ€” go to the parent article. yes, the article has a parent, it's giving family tree ๐ŸŒณ
  • PageViewUrl 'U' โ€” show a list of all the URLs chilling in the current article. more in the section "URL LISTING" ๐Ÿ”—
  • PageViewAttach 'V' โ€” show a list of the current article's attachments. more in the section "ATTACHMENT LISTING" ๐Ÿ“Ž
  • Post 'w' โ€” post an article to the current group. and if posting fails for whatever reason (rude), you get another shot: edit it again with PostEdit ('e'), postpone it for later processing with PostPostpone ('o') (also peep the '-o' command-line switch), or just yeet it with Quit ('q'). โœจ
  • PageRepost 'x' โ€” repost an already-posted article / thread / auto-selected (hot) articles / articles matching pattern / tagged articles into another newsgroup (or several). super useful for reposting from global to local newsgroups.
bestie, do not use this to crosspost your own articles. that's not the vibe. ๐Ÿšซ
  • MarkArtUnread 'z' โ€” mark the article as unread.
  • MarkThdUnread 'Z' โ€” mark the whole current thread as unread.

โœจ URL LISTING โœจ

PageViewUrl ('U') pulls up a list of every URL in the current article. on top of the usual moving keys, you've got these:

  • UrlSelect '^J' '<CR>' โ€” the current URL gets prompted and opened using the url_handler. '<ESC>' or giving no input at all skips the URL. no pressure ๐Ÿ’…
  • SearchSubjF '/' โ€” URL forward search.
  • SearchSubjB '?' โ€” URL backward search.
  • SearchRepeat '\' โ€” repeat the previous search.
  • ShellEscape '!' โ€” shell escape.
  • ToggleInfoLastLine 'i' โ€” toggle showing the current URL in the last line.
  • Help 'h' โ€” help screen of commands available.
  • ToggleHelpDisplay 'H' โ€” toggle the display of the help mini menu at the bottom of the screen and the posting etiquette after composing an article (beginner_level).

๐ŸŽ€ ATTACHMENT LISTING ๐ŸŽ€

PageViewAttach ('V') shows you a list of attachments on the current article. on top of the usual moving keys, here's what you can do:

  • AttachPipe 'p' โ€” pipe the attachment into a command.
  • AttachSave 's' โ€” save the current attachment / tagged attachments to disk.
  • AttachSelect '^J' '<CR>' โ€” view the attachment.
  • AttachTag 't' โ€” tag one or more attachments for saving.
  • AttachTagPattern '=' โ€” prompts you for a pattern to match. every attachment whose name/description or content type/transfer encoding matches that pattern gets tagged. โœจ
  • AttachToggleTagged '@' โ€” reverse the tagging of all attachments.
  • AttachUntag 'U' โ€” untag every tagged attachment.
  • SearchSubjF '/' โ€” attachment forward search.
  • SearchSubjB '?' โ€” attachment backward search.
  • SearchRepeat '\' โ€” repeat the previous search.
  • GlobalPipe '|' โ€” pipe the attachment into a command. heads up: this uses the raw attachment, no decoding is done. no cap.
  • ShellEscape '!' โ€” shell escape.
  • ToggleInfoLastLine 'i' โ€” toggle showing the name/description of the current attachment in the last line.
  • Help 'h' โ€” help screen of commands available.
  • ToggleHelpDisplay 'H' โ€” toggle the display of the help mini menu at the bottom of the screen and the posting etiquette after composing an article (beginner_level).

๐ŸŒˆ POSTING HISTORY LISTING ๐ŸŒˆ

DisplayPostHist ('W') shows you a list of every article you've posted before, all stored in ${TIN_HOMEDIR:-"$HOME"}/.tin/posted. here's what it shows you: a time stamp in "dd-mm-yy"-format, a single letter telling you which action kicked off the message, the group names (possibly shortened, see also abbreviate_groupname) or a mail address the message was sent to, and the subject of the message. on top of the usual moving keys, you get:

  • PostedArticlesSelect '^J' '<CR>' โ€” the article with the current Message-ID: gets opened, if it's available. quick note though: this requires that the Message-ID: of the article was recorded in ${TIN_HOMEDIR:-"$HOME"}/.tin/posted, which may not always be the case. if you're using NNTP and the internal inews (inews_prog set to "--internal") and either the server proposes a Message-ID: during the POST (RFC 3977) command, or tin is built to generate Message-ID:, then this should be the case. with an external inews (and reading from local spool) it is not.
  • SearchSubjF '/' โ€” URL forward search.
  • SearchSubjB '?' โ€” URL backward search.
  • SearchRepeat '\' โ€” repeat the previous search.
  • ShellEscape '!' โ€” shell escape.
  • ToggleInfoLastLine 'i' โ€” toggle showing the current Message-ID: in the last line.
  • Help 'h' โ€” help screen of commands available.
  • ToggleHelpDisplay 'H' โ€” toggle the display of the help mini menu at the bottom of the screen and the posting etiquette after composing an article (beginner_level).

๐Ÿ‘‘ GLOBAL OPTIONS MENU AND TINRC CONFIGURABLE VARIABLES ๐Ÿ‘‘

okay so at startup, tin reads in the configuration files (also see tin(5)). they're full of variables that configure how tin behaves. if it exists, the global config file, /etc/tin/tinrc, gets read first. after that, your own config file gets read from ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc. the global one is iconic for handing system-wide defaults to new users who don't have a private tinrc yet.

you can configure all these variables yourself by editing ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc directly. most of them can also be set in the GLOBAL OPTIONS MENU, which you reach by pressing OptionMenu ('M') at any level. it lets you customize how tin behaves. the options get saved to ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc when you exit tin โ€” so don't edit that file directly while tin is running, bestie, that's how you get chaos. ๐Ÿ˜ญ

in the options menu, use the cursor keys the normal way to move around. use ConfigSelect ('^J' or '<CR>') to 'open' the option you wanna change. you'll need to enter a new value, or use '<SPACE>' to toggle through the available options. ConfigSelect saves the new value; '<ESC>' aborts without saving your changes. ๐Ÿซถ

same as the other menus, RedrawScr ('^L') redraws the screen. you can use SearchSubjF ('/'), SearchSubjB ('?') and SearchRepeat ('\') to search for a specific option. use Quit ('q') to exit the option menu and keep your changes. use QuitTin ('Q') to exit without keeping your changes.

the options menu gives you access to the attributes menu for the current group via the ConfigToggleAttrib ('<TAB>') command. press ConfigToggleAttrib again and you toggle back to the options menu. more info in the section "ATTRIBUTES MENU AND GROUP ATTRIBUTES".

the ConfigScopeMenu ('S') command brings up the scopes menu. more info in the section "SCOPES MENU".

and finally, the ConfigServerrcMenu ('s') command brings up the serverrc menu, where you can change values from ${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/serverrc. more info in the section "SERVERRC MENU".

here's the full list of every available variable, bestie. the name in round brackets is the name of the corresponding setting in ${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc. ๐Ÿ’–

  • Abbreviate long newsgroup names (abbreviate_groupname) โ€” if ON, abbreviate long newsgroup names at group selection level and article level (if necessary) like this: news.software.readers โ†’ n.software.readers โ†’ n.s.readers โ†’ n.s.r.. Default is OFF.
  • Add posted articles to filter (add_posted_to_filter) โ€” if ON, add posted articles which start a new thread to filter for highlighting follow-ups. Default is ON.
  • Insert User-Agent:-header (advertising) โ€” turn ON advertising in header (User-Agent:). Default is ON.
  • Skip multipart/alternative parts (alternative_handling) โ€” if ON, strip multipart/alternative messages automatically. Default is ON.
  • Character to show deleted articles (art_marked_deleted) โ€” the character used to show that an article was deleted. Default is 'D'.
  • Character to show inrange articles (art_marked_inrange) โ€” the character used to show that an article is in a range. Default is '#'.
  • Character to show returning arts (art_marked_return) โ€” the character used to show that an article will return as an unread article when the group is next entered. Default is '-'.
  • Character to show selected articles (art_marked_selected) โ€” the character used to show that an article/thread is auto-selected (hot). Default is '*'.
  • Character to show recent articles (art_marked_recent) โ€” the character used to show that an article/thread is recent (not older than X days). See also recent_time. Default is 'o'.
  • Character to show unread articles (art_marked_unread) โ€” the character used to show that an article has not been read. Default is '+'.
  • Character to show read articles (art_marked_read) โ€” the character used to show that an article was read. Default is ' '.
  • Character to show killed articles (art_marked_killed) โ€” the character used to show that an article was killed. Default is 'K'. kill_level must be set accordingly.
  • Character to show read selected arts (art_marked_read_selected) โ€” the character used to show that an article was hot before it was read. Default is ':'. kill_level must be set accordingly.
  • Ask before using MIME viewer (ask_for_metamail) โ€” if ON, tin will ask before using a MIME viewer (metamail_prog) to display MIME messages. this only happens if a MIME viewer is set. Default is OFF.
  • attachment_format โ€” Format string for the Attachment level. It's the format string tin uses for Attachment level representation. Peep the section "CUSTOMIZING THE SCREEN FORMAT" for the full tea. Default is "%t%s%e%c%d". โœจ
  • auto_cc_bcc โ€” Send you a cc and/or bcc automatically. Like, automatically put your name in the ''Cc:'' (1) or ''Bcc:'' (2) field or to both (3) fields when mailing an article. Default is 'No' (0). ๐Ÿ’Œ
  • auto_list_thread โ€” List thread using right arrow key. If ON automatically list thread when entering it using right arrow key. Default is ON. ๐Ÿ”ฅ
  • auto_reconnect โ€” Reconnect to server automatically. Default is OFF. ๐Ÿซถ
  • batch_save โ€” Save articles in batch mode. If set ON articles/threads will be saved in batch mode when save ''-S'' or mail ''-M, -N'' is specified on the command line. Default is ON. ๐Ÿ“ฆ
  • beginner_level โ€” Show mini menu & posting etiquette. If set ON a mini menu of the most useful commands will be displayed at the bottom of the screen for each level. Also a short posting etiquette will be displayed after composing an article. Default is ON. ๐Ÿผ
  • cache_overview_files โ€” Cache NNTP overview files locally. If ON, create local copies of NNTP overview files. This can be used to considerably speed up accessing large groups when using a slow connection. See also "INDEX FILES" and getart_limit. Default is OFF. ๐Ÿ—‚๏ธ
  • compress_overview_files โ€” Compress locally cached NNTP overview files. If ON, locally cached NNTP overview files (cache_overview_files) are saved in compressed form (RFC 1952). Useful to reduce local disk space used. Default is OFF. ๐Ÿ—œ๏ธ
  • cancel_lock_algo โ€” Hash algorithm for cancel-locks. Use this hash algorithm for cancel-locks (RFC 8315). Only available when built with cancel-lock support. none disables the generation of cancel-locks. Valid values are none, sha1, sha256 and sha512. Default is sha1. See also ${TIN_HOMEDIR:-"$HOME"}/.cancelsecret in tin(5). ๐Ÿ”
  • catchup_read_groups โ€” Catchup read groups when quitting. If set ON the user is asked when quitting if all groups read during the current session should be marked read. Default is OFF. ๐Ÿƒโ€โ™€๏ธ
  • col_back โ€” Standard background color. Standard background color. ๐ŸŽจ
  • col_extquote โ€” Color of quoted text from external sources. Color of quoted text from external sources. ๐ŸŒˆ
  • col_from โ€” Color of sender (From:). Color of sender (From:). ๐Ÿ‘ค
  • col_head โ€” Color of article header lines. Color of header-lines. ๐Ÿ“ฐ
  • col_help โ€” Color of help text. Color of help pages. ๐Ÿ†˜
  • col_invers_bg โ€” Color for inverse text (background). Color of background for inverse text. ๐Ÿ”„
  • col_invers_fg โ€” Color for inverse text (foreground). Color of foreground for inverse text. ๐Ÿ”ƒ
  • col_message โ€” Color of status messages. Color of status messages in last line. ๐Ÿ’ฌ
  • col_markdash โ€” Color of highlighting with _dash_. Color of words emphasized like _this_. See also word_h_display_marks and word_highlight. โž–
  • col_markslash โ€” Color of highlighting with /slash/. Color of words emphasized like /this/. See also word_h_display_marks and word_highlight. โž—
  • col_markstar โ€” Color of highlighting with stars. Color of words emphasized like *this*. See also word_h_display_marks and word_highlight. โญ
  • col_markstroke โ€” Color of highlighting with -stroke-. Color of words emphasized like -this-. See also word_h_display_marks and word_highlight. โž–
  • col_minihelp โ€” Color of mini help menu. Color of mini help menu. ๐Ÿ“‹
  • col_newsheaders โ€” Color of actual news header fields. Color of actual news header fields. ๐Ÿ“ง
  • col_normal โ€” Standard foreground color. Standard foreground color. ๐Ÿ–๏ธ
  • col_quote โ€” Color of quoted lines. Color of quoted lines. ๐Ÿ’ฌ
  • col_quote2 โ€” Color of twice quoted line. Color of twice quoted lines. ๐Ÿ’ฌ
  • col_quote3 โ€” Color of >=3 times quoted line. Color of >=3 times quoted lines. ๐Ÿ’ฌ
  • col_response โ€” Color of response counter. Color of response counter. This is the text that says "Response x of y" in the article viewer. ๐Ÿ”ข
  • col_signature โ€” Color of signatures. Color of signatures. โœ๏ธ
  • col_score_neg โ€” Color of negative score. Color of negative score. ๐Ÿ‘Ž
  • col_score_pos โ€” Color of positive score. Color of positive score. ๐Ÿ‘
  • col_urls โ€” Color of urls highlight. Color of urls highlight. ๐Ÿ”—
  • col_verbatim โ€” Color of verbatim blocks. Color of verbatim blocks. ๐Ÿ“
  • col_subject โ€” Color of article subject lines. Color of article subject. ๐Ÿ“Œ
  • col_text โ€” Color of text lines. Color of text-lines. ๐Ÿ“„
  • col_title โ€” Color of help/mail sign. Color of help/mail sign. ๐Ÿท๏ธ
  • confirm_choice โ€” Which actions require confirmation. Ask for manual confirmation to protect the user. ๐Ÿ˜‡
    • commands โ€” Ask for confirmation before executing certain dangerous commands (e.g., Catchup ('c')). Commands that this affects are marked in this manual with '[after confirmation]'. Default is commands & quit. โš ๏ธ
    • quit โ€” You'll be asked to confirm that you wish to exit tin when you use the Quit ('q') command. ๐Ÿšช
    • select โ€” Ask for confirmation before marking all not selected (with GroupMarkUnselArtRead ('X') command) articles as read. โœ…
  • date_format โ€” Format string for display of dates. Format string used for date representation. A description of the different format options can be found in strftime(3). tin uses strftime(3) when available and supports most format options in its fallback code. Default is "%a, %d %b %Y %H:%M:%S". ๐Ÿ“…
  • default_art_search โ€” (no description in the manual, bestie, it's just vibing here) ๐Ÿซฅ
  • default_author_search โ€” (no description, just the name) ๐Ÿซฅ
  • default_config_search โ€” The last article/author/config option that was searched for. ๐Ÿ”
  • default_filter_days โ€” Default is 28. ๐Ÿ“†
  • default_filter_kill_case โ€” Default for quick (1 key) kill filter case. ON = filter case sensitive, OFF = ignore case. Default is OFF. ๐Ÿ” 
  • default_filter_kill_expire โ€” Default for quick (1 key) kill filter expire. ON = limit to default_filter_days, OFF = don't ever expire. Default is OFF. โณ
  • default_filter_kill_global โ€” Default for quick (1 key) kill filter global. ON=apply to all groups, OFF=apply to current group. Default is ON. ๐ŸŒ
  • default_filter_kill_header โ€” Default for quick (1 key) kill filter header. ๐Ÿ“‹
    1. ''Subject:'' (case sensitive)
    2. ''Subject:'' (ignore case)
    3. ''From:'' (case sensitive)
    4. ''From:'' (ignore case)
    5. ''Message-ID:'' & full ''References:'' line
    6. ''Message-ID:'' & last ''References:'' entry only
    7. ''Message-ID:'' entry only
    8. ''Lines:''
  • default_filter_select_case โ€” Default for quick (1 key) auto-selection filter case. ON=filter case sensitive, OFF=ignore case. Default is OFF. ๐Ÿ”ก
  • default_filter_select_expire โ€” Default for quick (1 key) auto-selection filter expire. ON = limit to default_filter_days, OFF = don't ever expire. Default is OFF. โŒ›
  • default_filter_select_global โ€” Default for quick (1 key) auto-selection filter global. ON=apply to all groups, OFF=apply to current group. Default is ON. ๐ŸŒŽ
  • default_filter_select_header โ€” Default for quick (1 key) auto-selection filter header. ๐Ÿ“‹
    1. ''Subject:'' (case sensitive)
    2. ''Subject:'' (ignore case)
    3. ''From:'' (case sensitive)
    4. ''From:'' (ignore case)
    5. ''Message-ID:'' & full ''References:'' line
    6. ''Message-ID:'' & last ''References:'' entry only
    7. ''Message-ID:'' entry only
    8. ''Lines:''
  • default_goto_group โ€” (no description, just the name) ๐Ÿซฅ
  • default_group_search โ€” (no description, just the name) ๐Ÿซฅ
  • default_mail_address โ€” (no description, just the name) ๐Ÿซฅ
  • default_move_group โ€” (no description, just the name) ๐Ÿซฅ
  • default_pattern โ€” (no description, just the name) ๐Ÿซฅ
  • default_pipe_command โ€” (no description, just the name) ๐Ÿซฅ
  • default_post_newsgroups โ€” (no description, just the name) ๐Ÿซฅ
  • default_post_subject โ€” (no description, just the name) ๐Ÿซฅ
  • default_range_group โ€” (no description, just the name) ๐Ÿซฅ
  • default_range_select โ€” (no description, just the name) ๐Ÿซฅ
  • default_range_thread โ€” (no description, just the name) ๐Ÿซฅ
  • default_repost_group โ€” (no description, just the name) ๐Ÿซฅ
  • default_save_file โ€” (no description, just the name) ๐Ÿซฅ
  • default_save_mode โ€” (no description, just the name) ๐Ÿซฅ
  • default_select_pattern โ€” (no description, just the name) ๐Ÿซฅ
  • default_shell_command โ€” (no description, just the name) ๐Ÿซฅ
  • default_subject_search โ€” (no description, just the name) ๐Ÿซฅ
  • dont_break_words โ€” Don't break words when wrapping. Do not break long lines inside a word. This applies to the body except for verbatim blocks. See also wrap_column. Default is OFF. โœ‚๏ธ
  • draw_arrow โ€” Draw โ†’ instead of highlighted bar. Allows groups/articles to be selected by an arrow 'โ†’' if set ON or by a highlighted bar if set OFF. Default is OFF. โžก๏ธ
  • editor_format โ€” Invocation of your editor. The format string used to create the editor start command with parameters. Default is '%E +%N %F' with %E=Editor, %N=Linenumber and %F=Filename (e.g., /bin/vi +7 .article). See also $VISUAL and $EDITOR under "ENVIRONMENT". โœ๏ธ
  • extquote_handling โ€” Detection of external quotes. If ON quotes from external sources will be detected. Default is OFF. ๐Ÿ”
  • extquote_regex โ€” Regex used to show external quotes. A regular expression that will be applied when reading articles. All matching lines are shown in col_extquote. If extquote_regex is blank, then tin uses a built-in default. ๐Ÿงฉ
  • force_screen_redraw โ€” Force redraw after certain commands. Specifies whether a screen redraw should always be done after certain external commands. Default is OFF. ๐Ÿ”„
  • getart_limit โ€” Number of articles to get. If getart_limit is > 0 not more than the last getart_limit articles/group are fetched from the server. If getart_limit is < 0 tin will start fetching articles from your first unread minus absolute value of getart_limit. Note that setting getart_limit to anything except 0 disables cache_overview_files. Default is 0, which means no limit. ๐Ÿ“ฅ
  • group_catchup_on_exit โ€” Catchup group using left key. If ON catchup group when leaving with the left arrow key. Default is ON. โฌ…๏ธ
  • group_format โ€” Format string for the Group level. Format string tin uses for Group level representation. See the section "CUSTOMIZING THE SCREEN FORMAT". Default is "%n %m %R %L %s %F". ๐Ÿ“‹
  • goto_next_unread โ€” Go to the next unread article with. Which keys tin should accept to jump to the next unread article. Possible is any combination of PageDown and PageNextUnread. When PageDown is set, tin jumps to the next article at the end of the current one. When PageNextUnread is set, tin jumps immediately to the next article when PageNextUnread ('<TAB>') is pressed. Default is PageNextUnread. โญ๏ธ

Display none mime data as an attachment (hide_inline_data)

Okay bestie, this one is about hiding big ugly blobs of encoded data and swapping them for a cute lil tag line instead. ๐Ÿ’–

  • Set it to 'Nothing' (0) and you get the raw data in all its unfiltered glory. No hiding, no shame.
  • Set it to 'Complete UU/YENC' (1) and sections of uuencoded or yenc data get shown with a single tag line showing the size and filename โ€” much the same as a MIME attachment.
  • Set it to 'Any UU/YENC' (2) and literally any line that looks like uuencoded or yenc data gets folded into a tag line. This is useful when uuencoded or yenc data is split across more than one article, but heads up: it can also lead to false positives. ๐Ÿ™ˆ
  • Set it to 'Inline PGP' (4) and any inline PGP data is hidden.
  • Set it to 'Shar' (8) and shar-archives are hidden. This should be used with care as it may hide other shell snippets and any following text as well. ๐Ÿ˜ญ

You can also toggle this whole setting in the article viewer via PageToggleUue ('('). Default is 'Nothing' (0).

The possible values are:

       0   Nothing
       1   Complete UU/YENC
       2   Any UU/YENC
       4   Inline PGP
       5   Complete UU/YENC & Inline PGP
       6   Any UU/YENC & Inline PGP
       8   Shar
       9   Complete UU/YENC & Shar
      10   Any UU/YENC & Shar
      12   Inline PGP & Shar
      13   Compl. UU/YENC & PGP & Shar
      15   Hide all

Regex used to hide matching lines (hideline_regex)

A regular expression to hide matching lines in pager. Could be used to hide excessive quoting, e.g. via '^>\s?>\s?>'. If left blank, no lines will be hidden. โœจ

This option does not affect lines within verbatim blocks, and it is applied after trim_article_body and suppress_soft_hyphens. Order matters, bestie.

External inews (inews_prog)

Path, name and options of external inews(1). ๐Ÿซถ

If you are reading via NNTP the default value is "--internal" (use built-in NNTP inews), else it is "inews -h". The article is passed to inews_prog on STDIN via '< article'.


(info_in_last_line)

If ON, show current group description or article subject in the last line (not in the global menu) โ€” ToggleInfoLastLine ('i') toggles setting. This facility is useful as the full width of the screen is available to display long subjects. ๐Ÿ‘‘

Default is OFF.


Use interactive mail reader (interactive_mailer)

Interactive mailreader: if greater than 0 your mailreader will be invoked earlier for reply so you can use more of its features (e.g., MIME, pgp, ...).

  • 1 means include headers
  • 2 means don't include headers (old use_mailreader_i=ON option)
  • 0 turns off usage

This option has to suit mailer_format. Default is 0.


Use inverse video for page headers (inverse_okay)

If ON use inverse video for page headers and URL highlighting. Default is ON. ๐ŸŒˆ


Keep failed arts in ~/dead.articles (keep_dead_articles)

If ON keep all failed postings in ${TIN_HOMEDIR:-"$HOME"}/dead.articles besides keeping the last failed posting in ${TIN_HOMEDIR:-"$HOME"}/dead.article. Default is ON. ๐Ÿ’€ (yes, your failures get archived, it's giving preservation)


Keep expired filter rules in file (keep_expired_filters)

If ON keep expired filter rules in the file, but no longer evaluate them. Default is OFF.


Filter which articles (kill_level)

This option controls the processing and display of articles that are killed. There are 3 options:

  1. 0 Kill only unread arts โ€” this is the 'traditional' behavior of tin. Only unread articles are killed once only by marking them read. As filtering only happens on unread articles with kill_level set to 0, art_marked_killed and art_marked_read_selected are only shown once. When you reenter the group the mark will be gone.
  2. 1 Kill all arts & show with K โ€” will process all articles in the group and therefore there is a processing overhead when using this option. Killed articles are threaded as normal but they will be marked with art_marked_killed.
  3. 2 Kill all arts and never show โ€” will process all articles in the group and therefore there is a processing overhead when using this option. Killed articles simply does not get displayed at all.

Default is 0 (Kill only unread arts).


Use 8-bit characters in mail headers (mail_8bit_header)

Allows 8-bit characters unencoded in the header of mail message. Default is OFF.

Turning it ON is effective only if mail_mime_encoding is also set to 8bit. Leaving it OFF is safe for most users and compliant to Internet Mail Standard (RFC 5322 and RFC 2047). ๐Ÿ’…

Mail address (mail_address)

User's mail address (and full name), if not username@host. This is used when creating articles, sending mail and when pgp(1) / gpg(1) signing (RFC 9580).


MIME encoding in mail messages (mail_mime_encoding)

MIME encoding of the body in mail message, if necessary (8bit, base64, quoted-printable, 7bit). Default is quoted-printable. โœจ


Quote line when mailing (mail_quote_format)

Format of quote line when replying (via mail) to an article:

  • %A = Address
  • %D = Date
  • %F = Fullname+Address
  • %G = Groupname
  • %M = Message-ID
  • %N = Fullname
  • %C = Firstname
  • %I = Initials

If the article has multiple addresses, only the first is evaluated. Default is "In article %M you wrote:"


Format of the mailbox (mailbox_format)

Select one of the following mailbox-formats: MBOXO (default, except on SCO), MBOXRD or MMDF (default on SCO). See mbox(5) and RFC 4155 for more details on MBOXO and MBOXRD and mmdf(5) for more details about MMDF. ๐ŸŽ€


Mail directory (maildir)

The directory where articles/threads are to be saved in mbox(5) format. This feature is mainly for use with the mutt(1) mail program. It allows the user to save articles/threads/groups simply by giving '=' as the filename to save to. Default is ${TIN_HOMEDIR:-"$HOME"}/Mail.


Invocation of your mail command (mailer_format)

The format string used to create the mailer command with parameters that is used for mailing articles to other people. Default is '%M "%T" < %F' (e.g., /bin/mail "iain" < ~/.article). The flexible format allows other mailers with different command-line parameters to be used such as

   sendmail -oem -t < %F
   mutt -H %F
   claws-mail --compose "mailto:%T?subject=%S&insert=%F"

interactive_mailer must be set adequate. The following substitutions are supported:

   %F              filename
   %M              default_mailer
   %S              subject-field
   %T              to-filed
   %U              username
   %%              %

'Mark as (un)read' ignores tags (mark_ignore_tags)

When this is ON, the GroupMarkThdRead ('K'), ThreadMarkArtRead ('K'), MarkThdUnread ('Z') at Group level and MarkArtUnread ('z') at Thread level functions mark just the current article or thread, ignoring other tagged, (un)read articles.

When OFF, the same function presents a menu with choices of the current thread or article, all tagged, unread articles, or nothing. ๐Ÿ’œ


Mark saved articles/threads as read (mark_saved_read)

If ON mark articles that are saved as read. Default is ON. โœ…


Viewer program for MIME articles (metamail_prog)

Path, name and options of external metamail(1) program used to view non-textual parts of articles. To use the built-in viewer, set to --internal. This is the default value when metamail(1) is not installed. Leave it blank if you don't want any automatic viewing of non-textual attachments.

The PageViewAttach ('V') command can always be used to manually view any attachments. See also ask_for_metamail.

MM_CHARSET (mm_charset)

Charset supported locally, which is also used for MIME header (charset parameter and charset name in header encoding) in mail and news postings.

If MIME_STRICT_CHARSET is defined at compile time, text in charset other than the value of this parameter is considered not displayable and represented as '?'. Otherwise, all character sets are regarded as compatible with the display.

If it's not set, the value of the environment variable $MM_CHARSET is used. US-ASCII or compile-time default is used in case neither of them is defined.

If your system supports iconv(3) or ucnv_*(), this option is disabled and you should use mm_network_charset instead. ๐Ÿฆ‹

MM_NETWORK_CHARSET (mm_network_charset)

Charset used for posting and MIME headers; replaces mm_charset. Conversion between mm_network_charset and local charset (determined via nl_langinfo(3)) is done via iconv(3) or ucnv_*().

If none of these functions are available on your system this option is disabled and you have to use mm_charset instead.

mm_network_charset is limited to one of the following charsets:

   US-ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, KOI8-{R,U,RU},
   EUC-{CN,JP,KR,TW}, ISO-2022-{CN,CN-EXT,JP,JP-1,JP-2}, Big5, UTF-8

Not all values might work on your system, see iconv_open(3) for more details. If it's not set, the value of the environment variable $MM_CHARSET is used. US-ASCII or compile-time default is used in case neither of them is defined.


Attribute of highlighting with _dash_ (mono_markdash)

Character attribute of words emphasized like _this_. It depends on your terminal which attributes are usable. See also word_h_display_marks and word_highlight.


Attribute of highlighting with /slash/ (mono_markslash)

Character attribute of words emphasized like /this/. It depends on your terminal which attributes are usable. See also word_h_display_marks and word_highlight.


Attribute of highlighting with stars (mono_markstar)

Character attribute of words emphasized like *this*. It depends on your terminal which attributes are usable. See also word_h_display_marks and word_highlight.


Attribute of highlighting with -stroke- (mono_markstroke)

Character attribute of words emphasized like -this-. It depends on your terminal which attributes are usable. See also word_h_display_marks and word_highlight.


(newnews)

These are internal timers used by tin to keep track of new newsgroups. Do not change them unless you understand what they are for. ๐Ÿ’€


Display these header fields (or *) (news_headers_to_display)

Which news headers you wish to see. If you want to see all the headers, place an '*' as this value. This is the only way a wildcard can be used.

If you enter 'X-' as the value, you will see all headers beginning with 'X-' (like X-Alan or X-Pape). You can list more than one by delimiting with spaces. Not defining anything turns off this option. โญ

  • news_headers_to_not_display โ€” Do not display these header fields. It's literally the exact opposite of news_headers_to_display, like a mirror ๐Ÿชž. Say you thought X- headers were A Good Thing(tm) but also thought Alan and Pape were miscreants... well bestie, you'd do something like this:
news_headers_to_display=X- news_headers_to_not_display=X-Alan X-Pape

Not defining anything at all turns this option off. Periodt. ๐Ÿ’…

  • news_quote_format โ€” Quote line when following up. The format of the quote line you get when posting/following up an article. The expansion chars are: %A=Address, %D=Date, %F=Fullname+Address, %G=Groupname, %M=Message-ID, %N=Fullname, %C=Firstname, %I=Initials. Heads up: if the article has multiple addresses, only the first one gets evaluated. Default is "%F wrote:". ๐ŸŽ€
  • nntp_read_timeout_secs โ€” NNTP read timeout in seconds. How many seconds to wait for a response from the server. Default is 120. Setting it to 0 means no timeout, no cap, live your truth. But be careful ๐Ÿซฃ: if you use the -C option together with a low value for nntp_read_timeout_secs, you may hit a timeout (and get disconnected in batch mode) when connecting to large servers or entering large groups โ€” because the timer starts when the command is sent to the server, and the server needs a hot sec to compress that big ol' response. So don't set it too small. fr fr.
  • normalization_form โ€” Unicode normalization form. The normalization form tin should use to normalize Unicode input. The possible values are:
    • 0 โ€” None: no normalization
    • 1 โ€” NFKC: Compatibility Decomposition, followed by Canonical Composition
    • 2 โ€” NFKD: Compatibility Decomposition
    • 3 โ€” NFC: Canonical Decomposition, followed by Canonical Composition
    • 4 โ€” NFD: Canonical Decomposition
    • 5 โ€” NFKC_CF: Compatibility Decomposition, followed by Canonical Composition and Case Folding

Some normalization modes are only available if the library tin uses to do the normalization supports them. NFC should be used if possible (RFC 5198). โœจ

  • page_mime_format โ€” Format string for the display of mime header at Article level. The format string tin uses for mime header at Page level. Peep the section "CUSTOMIZING THE SCREEN FORMAT". Default is "[-- %T%S%*n%z%*l%!c%!d%*e --]".
  • page_uue_format โ€” Format string for the display of uue header at Article level. The format string tin uses for uue header at Page level. See the section "CUSTOMIZING THE SCREEN FORMAT". Default is "[-- %T%S%*n%I%!d%*e --]".
  • page_yenc_format โ€” Format string for the display of yenc header at Article level. The format string tin uses for yenc header at Page level. See the section "CUSTOMIZING THE SCREEN FORMAT". Default is "[-- %*N%!d%I [%F%G]%V%W%X --]".
  • pos_first_unread โ€” Go to first unread article in group. If ON, the cursor goes to the first unread article in the group; otherwise it goes to the last article. Default is ON. ๐Ÿ‘‘
  • post_8bit_header โ€” Use 8-bit characters in news headers. Allows 8-bit characters unencoded in the header of a news article, and if you set this it also disables the generation of MIME-headers when they'd usually be required. Default is OFF. It only gets enacted if post_mime_encoding is also set to 8bit. In a number of local hierarchies where 8-bit characters are used, using unencoded (raw) 8-bit characters in the header is acceptable and sometimes even recommended โ€” so you need to check the convention adopted in the local hierarchy you care about to figure out what to do with this and post_mime_encoding. iykyk ๐ŸŒธ
  • post_mime_encoding โ€” MIME encoding in news messages. MIME encoding of the body in a news message, if necessary. The options are 8bit, base64, quoted-printable, 7bit. Default is 8bit, which leads to no encoding at all. Heads up: base64 and quoted-printable are usually undesired on usenet.
  • post_process_view โ€” View post-processed files. If ON, tin will start an appropriate viewer program to display any files that were post processed and uudecoded. The program is determined using the mailcap(5) file. Default is ON. ๐Ÿฆ‹
  • post_process_type โ€” Post process saved articles. This specifies whether to perform post processing on saved articles. โš ๏ธ Because the shell archive may contain commands you may not want to be executed, be careful when extracting shell archives. The allowed values are:
    • 0 โ€” No (default), no post processing is done.
    • 1 โ€” Shell archives, unpacking of multi-part shar(1) files only.
    • 2 โ€” Yes, binary attachments and data will be decoded and saved.
  • posted_articles_file โ€” Filename to be used for storing posted articles. Keep posted articles in the given file. If the given filename doesn't contain any expandable strings, it gets prefixed with ${TIN_HOMEDIR:-"$HOME"}/Mail/. If no filename is set, then postings won't be saved. See the section "MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES" for more info on the various expansion characters. Default is 'posted'. ๐Ÿ’–
  • print_header โ€” Print all headers when printing. If ON, the full article header is sent to the printer. Otherwise only the ''Subject:'' and ''From:'' fields are output. Default is OFF.
  • printer โ€” Printer program with options. The printer program with options that's used to print articles. The default is lpr(1) for BSD machines and lp(1) for SysV machines. Ngl, printing from tin may have been disabled by the System Administrator. ๐Ÿ™ˆ
  • process_only_unread โ€” Process only unread articles. If ON, only save/print/pipe/mail unread articles (tagged articles excepted). Default is OFF.
  • prompt_followupto โ€” Show empty Followup-To in editor. If ON, show an empty ''Followup-To:'' header when editing an article. Default is OFF.
  • quote_chars โ€” Characters used as quote-marks. The character used in quoting included text to article followups and mail replies. The '_' character represents a blank character and gets replaced with ' ' when read, and %I is replaced by the author's initials. If the article has multiple addresses, only the first is evaluated. Default is '>_'. โœจ
  • quote_style โ€” Quoting behavior. How articles should be quoted when following up or replying to them. There are a number of things that can be done: empty lines can be quoted, signatures can be quoted, and quote_chars can be compressed when quoting multiple times (for example, '> > >' gets turned into '>>>'). The default is to compress quotes, and to quote empty lines.

When you're viewing an article in raw mode ('^H'), and you follow up or reply to it, the signature will be quoted even if it otherwise wouldn't be. And if show_signatures is off, then the signature will never be quoted. No exceptions. ๐Ÿ’€

  • quote_regex โ€” Regex used to show quoted lines. A regular expression that gets applied when reading articles. All matching lines are shown in col_quote. If quote_regex is blank, then tin uses a built-in default.
  • quote_regex2 โ€” Regex used to show twice quoted l. A regular expression that gets applied when reading articles. All matching lines are shown in col_quote2. If quote_regex2 is blank, then tin uses a built-in default.
  • quote_regex3 โ€” Regex used to show >= 3 times q.l. A regular expression that gets applied when reading articles. All matching lines are shown in col_quote3. If quote_regex3 is blank, then tin uses a built-in default.
  • recent_time โ€” Article recentness time limit. If set to 0, this feature is deactivated. Otherwise it means the number of days. Default is 2.
  • render_bidi โ€” Render BiDi. If ON, tin does the rendering of bi-directional text. If OFF, tin leaves the rendering of bi-directional text to the terminal. Default is OFF.
  • reread_active_file_secs โ€” Interval in seconds to reread active. The news ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file gets reread at regular intervals to show if any new news has arrived. Default is 1200. Setting this to 0 disables this feature entirely. ๐Ÿซถ
  • savedir โ€” Directory to save arts/threads in. Directory where articles/threads are saved. Default is ${TIN_HOMEDIR:-"$HOME"}/News.
  • scope_marked_global โ€” Character to show global scopes. The character used to show that a scope was read from the global attributes file. Default is '!'.
  • scope_marked_global_match โ€” Char to show global scope matches. The character used to show that a scope was read from the global attributes file and the current group matches. Default is ':'.
  • scope_marked_local โ€” Character to show local scopes. The character used to show that a scope was read from the local attributes file. Default is ' '.
  • scope_marked_local_match โ€” Char to show local scope matches. The character used to show that a scope was read from the local attributes file and the current group matches. Default is '*'.
  • score_limit_kill โ€” Score limit (kill). If the score of an article is below or equal to this value, the article gets marked as killed. ๐Ÿ’€
  • score_limit_select โ€” Score limit (select). If the score of an article is above or equal to this value, the article gets marked as hot. ๐Ÿ”ฅ
  • score_kill โ€” Default score to kill articles. Score of an article which should be killed โ€” this must be <= score_limit_kill.
  • score_select โ€” Default score to select articles. Score of an article which should be marked hot โ€” this must be >= score_limit_select.
  • scroll_lines โ€” Number of lines to scroll in pager. The number of lines that get scrolled up/down in the article pager when you use cursor-up/down. The default is 1 (line-by-line). Set to 0 to get traditional tin page-by-page scrolling. Set to -1 to get page-by-page scrolling where the top/bottom line is carried over onto the next page โ€” this setting supersedes show_last_line_prev_page=ON. Set to -2 to get half-page scrolling โ€” this setting supersedes full_page_scroll=OFF. ๐ŸŽ€
  • select_format โ€” Format string for the Selection level. Format string tin uses for Selection level representation. See the section "CUSTOMIZING THE SCREEN FORMAT". Default is "%f %n %U %G %d".
  • show_author โ€” In group and thread level, show author by. Which info about the author should be shown. Default is 2, the author's full name.
    • 0 โ€” None, only the ''Subject:'' line will be displayed.
    • 1 โ€” Address, ''Subject:'' line & the address part of the ''From:'' line are displayed.
    • 2 โ€” Full Name, ''Subject:'' line & the author's full name part of the ''From:'' line are displayed (default).

  • 3 โ€” Address and Name, ''Subject:'' line & all of the ''From:'' line are displayed. ๐Ÿ’…
  • Show description of each newsgroup (show_description) โ€” If ON, show a short group description text after the newsgroup name at the group selection level. ๐Ÿฆ‹ The -d command-line flag will override the setting and turn descriptions off. The text used is taken from the ${TIN_LIBDIR:-NEWSLIBDIR}/newsgroups file and, if supported (requires tin to be built with mh-mail-handling support), from ${TIN_HOMEDIR:-"$HOME"}/.tin/mailgroups for mailgroups. Default is ON. โœจ
  • Function for sorting articles (sort_function) โ€” Function used for sorting articles. Default is 0. ๐Ÿ’–
    • 0 โ€” Use qsort(3) for sorting.
    • 1 โ€” Use heapsort(3) for sorting. This might be faster in large groups with long threads (somewhat presorted data). ๐Ÿ”ฅ
  • Show help/mail sign in level titles (show_help_mail_sign) โ€” Allows you to select whether tin shows a help indication, a new mail indication, both, or neither in the various level titles. Default is 3. ๐Ÿ‘‘
    • 0 โ€” Don't show help or mail sign.
    • 1 โ€” Show only help sign.
    • 2 โ€” Show only mail sign if new mail, show only the mail sign, and only if new mail has arrived.
    • 3 โ€” Show mail if new mail else help s., show mail sign if new mail has arrived otherwise show help sign.
  • Show only unread articles (show_only_unread_arts) โ€” If ON, show only new/unread articles; otherwise show all articles. Default is ON. ๐Ÿ˜ญ
  • Show only groups with unread arts (show_only_unread_groups) โ€” If ON, show only subscribed groups that contain unread articles. Default is OFF. ๐Ÿ™ˆ
  • Display signatures (show_signatures) โ€” If OFF, don't show signatures when displaying articles. Default is ON. ๐Ÿ’œ
  • Display article info in pager (show_art_info) โ€” Show additional information about the article at the page level. The article's score can be displayed in the lower left corner (see also col_score_neg and col_score_pos), and the article's language, if detectable, can be displayed in the page header to the right of the line count. If the language is prefixed by a '~' the value is guessed, if it is prefixed by a '+' the value is inherited. If possible, a language tag is converted to the name of the language. In this case, the tag is specified in round brackets after the name. Default is 0. ๐Ÿงš
    • 0 โ€” None, don't show article's score or language.
    • 1 โ€” Article score, show only the article's score.
    • 2 โ€” Article language, show only the article's language.
    • 3 โ€” Score and language, show both, article's score and language.
  • Prepend signature with '\n-- \n' (sigdashes) โ€” If ON, prepend the signature with sigdashes. Default is ON. โญ
  • Create signature from path/command (sigfile) โ€” The path that specifies the signature file to use when posting, following up to or replying to an article. If the path is a directory, then the signature will be randomly generated from files that are in the specified directory. If the path starts with a !, the program the path points to will be executed to generate a signature. In order to pass the group name to the program, %G can be specified. This will be replaced by the name of the current newsgroup. --none will suppress any signature. Default is ${TIN_HOMEDIR:-"$HOME"}/.Sig. ๐Ÿ’Œ
  • Add signature when reposting (signature_repost) โ€” If ON, add signature to reposted articles. Default is ON. ๐ŸŽ€
  • Regex used to highlight /slashes/ (slashes_regex) โ€” A regular expression that will be applied when reading articles. All matching words are shown in col_markslash or mono_markslash. If slashes_regex is blank, then tin uses a built-in default. ๐ŸŒธ
  • Sort articles by (sort_article_type) โ€” This specifies how articles should be sorted. Sort by ascending Date (6) is the default. The following sort types are allowed: ๐Ÿ”ฅ
    • 0 โ€” Nothing, don't sort articles.
    • 1 โ€” Subject: (descending), sort articles by ''Subject:'' field descending.
    • 2 โ€” Subject: (ascending), sort articles by ''Subject:'' field ascending.
    • 3 โ€” From: (descending), sort articles by ''From:'' field descending.
    • 4 โ€” From: (ascending), sort articles by ''From:'' field ascending.
    • 5 โ€” Date: (descending), sort articles by ''Date:'' field descending.
    • 6 โ€” Date: (ascending), sort articles by ''Date:'' field ascending (default).
    • 7 โ€” Score (descending), sort articles by filtering score descending.
    • 8 โ€” Score (ascending), sort articles by filtering score ascending.
    • 9 โ€” Lines: (descending), sort articles by ''Lines:'' field descending.
    • 10 โ€” Lines: (ascending), sort articles by ''Lines:'' field ascending.
  • Sort threads by (sort_threads_type) โ€” This specifies how threads will be sorted. Sort by descending Score (1) is the default. The following sort types are allowed: ๐Ÿ’…
    • 0 โ€” Nothing, don't sort threads.
    • 1 โ€” Score (descending), sort threads by filtering score descending (default).
    • 2 โ€” Score (ascending), sort threads by filtering score ascending.
    • 3 โ€” Last posting date (descending), sort threads by date of last posting descending.
    • 4 โ€” Last posting date (ascending), sort threads by date of last posting ascending.
  • Spamtrap warning address parts (spamtrap_warning_addresses) โ€” Set this option to a list of comma-separated strings to be warned if you are replying to an article by mail where the e-mail address contains one of these strings. The matching is case-insensitive. Example: ๐Ÿ˜ญ
spam,delete,remove
  • Regex used to highlight *stars* (stars_regex) โ€” A regular expression that will be applied when reading articles. All matching words are shown in col_markstar or mono_markstar. If stars_regex is blank, then tin uses a built-in default. ๐ŸŒŸ
  • Strip blanks of end of lines (strip_blanks) โ€” Strips the blanks from the end of each line, therefore speeding up the display when reading on a slow terminal or via modem. Default is ON. ๐Ÿ’จ
  • Remove bogus groups from newsrc (strip_bogus) โ€” Bogus groups are groups that are present in your ${TIN_HOMEDIR:-"$HOME"}/.newsrc file that no longer exist on the news server. There are 3 options. 0 means do nothing & always keep bogus groups. 1 means bogus groups will be permanently removed. 2 means that bogus groups will appear on the Group Selection Menu, prefixed with a 'D'. This allows you to unsubscribe from them as and when you wish. Default is 0 (Always Keep). ๐Ÿ—‘๏ธ
  • No unsubscribed groups in newsrc (strip_newsrc) โ€” If ON, then unsubscribed groups will be permanently removed from your ${TIN_HOMEDIR:-"$HOME"}/.newsrc file. Default is OFF. โœ‚๏ธ
  • Regex with Subject prefixes (strip_re_regex) โ€” A regular expression to find Subject prefixes like "Re:" to remove. If strip_re_regex is blank, then tin(1) uses a built-in default. ๐Ÿ”
  • Regex with Subject suffixes (strip_was_regex) โ€” A regular expression to find Subject suffixes like "(was:" to remove. If strip_was_regex is blank, then tin(1) uses a built-in default. ๐Ÿ”Ž
  • Regex used to highlight -strokes- (strokes_regex) โ€” A regular expression that will be applied when reading articles. All matching words are shown in col_markstroke or mono_markstroke. If strokes_regex is blank, then tin uses a built-in default. ๐Ÿ–๏ธ
  • Wrap around threads on next unread (wrap_on_next_unread) โ€” If enabled, a search for the next unread article will wrap around all articles to find also previous unread articles. If disabled, the search stops at the end of the thread list. Default is ON. ๐Ÿ”„
  • Display "a as Umlaut-a (tex2iso_conv) โ€” If ON, show "a as Umlaut-a, etc. Default is OFF. This behavior can also be toggled in the article viewer via PageToggleTex2iso ('"'). ๐ŸŽญ
  • Thread articles by (thread_articles) โ€” Defines which threading method to use. It's possible to set the threading type on a per group basis by setting the group attribute variable thread_arts to 0 โ€“ 4 in the file ${TIN_HOMEDIR:-"$HOME"}/.tin/attributes. (See also "ATTRIBUTES MENU AND GROUP ATTRIBUTES".) The default is Both Subject and References. The choices are: ๐Ÿงต
    • 0 โ€” None, don't thread.
    • 1 โ€” Subject, thread on ''Subject:'' only.
    • 2 โ€” References, thread on ''References:'' only.
    • 3 โ€” Both Subject and References, thread on ''References:'' then ''Subject:'' (default).
    • 4 โ€” Multipart Subject, thread multipart articles on ''Subject:''.
    • 5 โ€” Percentage Match, thread base upon a partial character match on ''Subject:''.
  • Catchup thread by using left key (thread_catchup_on_exit) โ€” If ON, catchup group/thread when leaving with the left arrow key. Default is ON. โฌ…๏ธ
  • Format string for the Thread level (thread_format) โ€” Format string tin uses for Thread level representation. See the section "CUSTOMIZING THE SCREEN FORMAT". Default is "%n %m [%L] %T %F". ๐Ÿ–ฅ๏ธ
  • Matchingness of a thread (thread_perc) โ€” How closely the subjects must match for two threads to be considered part of the same thread. This is a percentage and the default is 75%. ๐Ÿ”—
  • Score of a thread (thread_score) โ€” How the total score of a thread is computed. Default is 0, the maximum score in this thread. ๐Ÿ“Š
    • 0 โ€” Max, the maximum score in this thread.
    • 1 โ€” Sum, the sum of all scores in this thread.
    • 2 โ€” Average, the average score in this thread.
  • CA certificate file (tls_ca_cert_file) โ€” The name of file containing all trusted CA certificates used for NNTPS (RFC 8143) connections. If left empty, the system default will be used. ๐Ÿ”
  • Transliteration (translit) โ€” If ON, append //TRANSLIT to the first argument of iconv_open(3) to enable transliteration. This means that when a character cannot be represented in the target character set, it can be approximated through one or several similarly looking characters. On systems where this extension doesn't exist, this option is disabled. Default is OFF. ๐ŸŒ
  • How to treat blank lines (trim_article_body) โ€” Allows you to select how tin treats blank lines in article bodies. Default is 0. This option does not affect lines within verbatim blocks and is applied before hideline_regex. ๐Ÿ“
    • 0 โ€” Don't trim article body, do nothing.
    • 1 โ€” Skip leading blank lines.
    • 2 โ€” Skip trailing blank lines.
    • 3 โ€” Skip leading and trailing blank l., skip leading and trailing blank lines.
    • 4 โ€” Compact multiple between text, replace multiple blank lines between text blocks with one blank line.
    • 5 โ€” Compact multiple and skip leading, 4 + 1
  1. Compact multiple and skip trailing, 4 + 2
    1. Compact mltpl., skip lead. & trai., 4 + 3
  • Suppress soft hyphens (suppress_soft_hyphens) โ€” bestie, if this is ON, tin removes soft hyphens from non verbatim blocks of articles whenever they're shown in a UTF-8 locale. The character SOFT HYPHEN (U+00AD) is literally an invisible format character whose whole job is just to hint at a preferred intraword line break spot. But some terminal emulators out here being dramatic and rendering a space or a hyphen where the soft hyphen should be ๐Ÿ™ˆ. So flip this setting to make those articles look cute again. Default is OFF.
  • Regex used to highlight _underline_ (underscores_regex) โ€” a regular expression that gets applied while reading articles. Every matching word shows up in col_markdash or mono_markdash. If underscores_regex is blank, tin just uses a built-in default. Periodt.
  • Remove ~/.article after posting (unlink_article) โ€” if ON, remove ~/.article after posting. Default is ON.
  • Program that opens URLs (url_handler) โ€” the program that gets run when you launch URLs in the article viewer with PageViewUrl ('U'). The actual URL gets appended. Default is url_handler.pl.
  • URL highlighting in message body (url_highlight) โ€” enable highlighting URLs in the message body. Default is ON.
  • Use ANSI color (use_color) โ€” if enabled, tin uses ANSI-colors. Default is OFF.
  • Use scroll keys on keypad (use_keypad) โ€” Default is OFF.
  • Use mouse in xterm (use_mouse) โ€” lets you enable/disable mouse button support in an xterm(1x). Default is OFF.
  • Use slrnface to show ''X-Face:''s (use_slrnface) โ€” if enabled, tin uses slrnface(1) to interpret the ''X-Face:'' header. For this to do literally anything at all, tin has to be running in an xterm(1x) and slrnface(1) has to be in your $PATH. Default is OFF.
  • Use UTF-8 graphics (utf8_graphics) โ€” use UTF-8 characters for the indicator ('โ†’'), thread/attachment tree and ellipsis ('...'). Default is 0.
    • 0 โ€” Don't use UTF-8 characters.
    • 1 โ€” for ellipsis. Use UTF-8 characters for ellipsis.
    • 2 โ€” for indicator and tree. Use UTF-8 characters for indicator and thread/attachment tree.
    • 3 โ€” for ..., indicator and tree. Use UTF-8 characters for ellipsis, indicator and thread/attachment tree.
  • Regex for begin of a verbatim block (verbatim_begin_regex) โ€” a regular expression that tin will use to find the begin of a verbatim block.
  • Regex for end of a verbatim block (verbatim_end_regex) โ€” a regular expression that tin will use to find the end of a verbatim block.
  • Detection and display of verbatim blocks (verbatim_handling) โ€” lets you pick how tin treats verbatim blocks in article bodies. Default is 1.
    • 0 โ€” Don't detect verbatim blocks. Do nothing.
    • 1 โ€” Detect and show verbatim blocks. Detect and show verbatim blocks, including begin and end marks.
    • 2 โ€” Detect, hide begin and end marks. Detect and show verbatim blocks, hide begin and end marks.
    • 3 โ€” Don't show verbatim blocks. Detect verbatim blocks and hide them completely.
  • Wildcard matching (wildcard) โ€” lets you select how tin matches strings. The default is 0 and uses the wildmat(3) notation, which is how this has traditionally been handled. Setting this to 1 lets you use perl(1) compatible regular expressions pcre(3) or pcre2(3) (see also perlre(1) and pcrepattern(3) or pcre2pattern(3)). You'll probably want to update your filter file if you use this regularly. NB: newsgroup names will always be matched using the wildmat(3) notation.
  • What to display instead of mark (word_h_display_marks) โ€” should the leading and ending stars, slashes, strokes and dashes also be displayed, even when they're highlighting marks? ๐Ÿ‘€
    • 0 โ€” no
    • 1 โ€” yes, display mark
    • 2 โ€” print a space instead
  • Word highlighting in message body (word_highlight) โ€” enable word highlighting. See word_h_display_marks for the options available. If use_color is enabled, the colors specified in col_markdash, col_markslash, col_markstar and col_markstroke are used for word highlighting; otherwise the character attributes specified in mono_markdash, mono_markslash, mono_markstar and mono_markstroke are used. Default is ON.
  • Page line wrap column (wrap_column) โ€” sets the column at which a displayed article body should be wrapped. If this value is equal to 0, it defaults to the current screen width. If this value is greater than your current screen width and dont_break_words is unset, the part off-screen is not displayed. So setting this option to a large value can be used to disable wrapping entirely โœจ. If this value is negative, the wrap margin is the current screen width plus the given value (as long as the result is still positive, otherwise it falls back to the current screen width). Default is 0, wrapping at the current screen width.
  • Quote line when crossposting (xpost_quote_format) โ€” format is the same as for news_quote_format, and this one is used when answering to a crossposting to several groups with no ''Followup-To:'' set.

โœจ ATTRIBUTES MENU AND GROUP ATTRIBUTES โœจ

tin lets you set certain attributes on a per group basis, and honestly? iconic. If it exists, the global attributes file, ${TIN_LIBDIR:-NEWSLIBDIR}/attributes, is read. After that, the user's own attributes file ${TIN_HOMEDIR:-"$HOME"}/.tin/attributes is read. The global attributes file is useful for distributing system-wide defaults to new users who have no private attributes file yet ๐Ÿซถ.

Note that the scope=<grouplist> line has to be specified before the attributes are specified for that list. All attributes are set to a reasonable default, so you only have to specify the attribute you actually want to change (e.g., savedir). All toggle attributes are set by specifying ON/OFF. Otherwise, these function exactly the same as their global equivalents. For more details see tin(5).

Attributes can also be changed from the attributes menu, which you can get to with ConfigToggleAttrib ('<TAB>') from the options menu or ScopeSelect ('^J' or '<CR>') from the scopes menu. The attributes menu looks and behaves very similar to the options menu. The title shows the current scope. Attributes set in the current scope are marked with '+' to the left of the attributes number ๐Ÿ’….

If the current scope corresponds exactly to the name of the current group, e.g. after switching to the attributes menu from the options menu using ConfigToggleAttrib ('<TAB>'), attributes that originate from the global attributes file (${TIN_LIBDIR:-NEWSLIBDIR}/attributes) are marked with '!' to the left of the attributes number. This is helpful for identifying such attributes and overriding them if necessary.

Besides the keys for moving around and changing values known from the options menu, the attributes menu provides the following command: ConfigResetAttrib ('r') which resets an attribute to a default value.


๐ŸŒˆ SCOPES MENU ๐ŸŒˆ

The scopes menu (accessible from the options menu with ConfigScopeMenu ('S')) shows all scopes read from the global and local attributes file. Scopes from the global attributes file are marked with scope_marked_global ('!') to the left of the scope number, and scopes from the local attributes file are marked with scope_marked_local (' '). When the scopes menu is accessed from the group, thread, or article level, scopes where the current group matches are marked with scope_marked_global_match (':') for scopes from the global attributes file and with scope_marked_local_match ('*') for scopes from the local attributes file.

In addition to the common moving keys, the following commands are available: ScopeSelect ('^J' or '<CR>') enter the attributes menu for the current scope, ScopeEditAttributesFile ('E') edit the local attributes file, ScopeAdd ('a') add a new scope, ScopeDelete ('d') delete the current scope, ScopeMove ('m') move the current scope to a new position, ScopeRename ('r') rename the current scope. Note that delete (ScopeDelete), rename (ScopeRename) and move (ScopeMove) are not available for global scopes ๐Ÿšซ. ToggleHelpDisplay ('H') toggles the help mini menu at the bottom of the screen and posting etiquette after composing an article (beginner_level).


๐Ÿ–ฅ๏ธ SERVERRC MENU ๐Ÿ–ฅ๏ธ

The serverrc menu (accessible from the options menu with ConfigServerrcMenu ('s')) can be used to change the server specific settings which are stored in ${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/serverrc. Changing the value of cache_overview_files, compress_overview_files or nntp_pipeline_limit becomes effective immediately for all groups visited after the change. Changing any other values, i.e. add_cmd_line_opts or disabled_nntp_cmds, does require a restart to take effect.


๐Ÿ”ฅ FILTERING ARTICLES ๐Ÿ”ฅ

When there's a subject or an author you're either very interested in, or find completely uninteresting, you can easily tell tin to auto-select or auto-kill articles that match rules you specify. This can be anything from the name of the author to the number of lines in an article. so versatile fr fr.

When tin starts up, the user's kill-file ${TIN_HOMEDIR:-"$HOME"}/.tin/filter or the file specified via ''-F'' is read (see also tin(5)). Each time a newsgroup is entered, the rules are applied and articles are killed or selected when they meet certain criteria.

The degree to which rules are applied depends on the kill_level tinrc setting. By default killed articles will only be marked read. Adjust kill_level for more aggressive processing. Articles that match an auto-selection rule are marked with a ''*''.

Filtering rules can be manually entered into ${TIN_HOMEDIR:-"$HOME"}/.tin/filter (but don't do this whilst running tin, else you will lose your changes ๐Ÿ˜ญ) or by using an on-screen menu within tin.

The filtering capabilities of tin have been significantly enhanced over previous versions to include scoring and better pattern matching. It is recommended that you read the file filtering in the tin documentation directory. This file can also be read online at <http://bzr.tin.org/doc/filtering>.

Note that there are two different ways to match strings (see the wildcard tinrc variable): via wildmats or via regular expressions. The latter is more complex but offers significantly more options. If you intend to change the matching type from one to the other, the rules in the filter file need to be changed manually first. For switching from wildmats to regexp there is a helper script w2r.pl(1) in the tools dir and online at <http://bzr.tin.org/tools/w2r.pl>.

Okay so lowkey important tea: regular expressions give you options that wildmats just don't have, and there's no helper script to switch you over. So if you decide to go regex, bestie, stay with regex. They're powerful and fast. Periodt. ๐Ÿ’…

The on-screen filtering menu? You get to it by pressing MenuFilterKill ('^K') or MenuFilterSelect ('^A') at the Group and Article levels. It lets you kill or select an article that matches the current Subject: line, the From: line, or a string you typed in yourself. That user-entered string can be applied to the Subject:, From:, Message-ID:, References:, Xref: or Path: line of an article. The filter can be limited to just the current newsgroup, or it can apply to all newsgroups. Once you've entered it, you can abort the command and not save the new filter, edit the full filter file, or save the filter. Your call, queen. ๐Ÿ‘‘


๐Ÿ“ฎ POSTING ARTICLES ๐Ÿ“ฎ

tin lets you post articles, follow-up to articles you already posted, and reply direct through mail to the author of an article. It's giving full correspondence main character energy. โœจ

Use the Post ('w') command to post an article to a newsgroup. After you enter the post subject, the default editor (i.e., vi(1)) or the editor specified by the $VISUAL or $EDITOR environment variable will be started and you can enter the article. To crosspost articles, simply add a comma and the name of the newsgroup(s) to the end of the Newsgroups: line at the beginning of the article. After saving and exiting the editor, you're asked if you wish to a)bort posting the article, e)dit the article again or p)ost the article to the specified newsgroup(s). Choose wisely bestie ๐Ÿ’–

Use the DisplayPostHist ('W') command to display a history of the articles you have posted. The date the article was posted, which newsgroups the article was posted to and the article's subject line are all displayed. See the section "POSTING HISTORY LISTING" for more information. ๐Ÿ‘€

Use the PageFollowupQuote ('f'), PageFollowup ('F') or PageFollowupQuoteHeaders ('^W') command to post a follow-up article to an already posted article. The PageFollowupQuote command will copy the text of the original article into the editor. The PageFollowupQuoteHeaders command will copy the text and all headers of the original article into the editor. The editing procedure is the same as when posting an article with the Post ('w') command.

Use the PageReplyQuote ('r'), PageReply ('R') or PageReplyQuoteHeaders ('^E') command to reply direct through mail to the author of an already posted article. The PageReplyQuote command will copy the text of the original article into the editor. The PageReplyQuoteHeaders command will copy the text and all headers of the original article into the editor. The editing procedure is the same as when posting an article with the Post ('w') command. After saving and exiting the editor, you're asked if you wish to abort sending the article via PostAbort ('a'), edit the article again via PostEdit ('e') or send the article to the author via PostSend ('s'). ๐Ÿซถ


๐ŸŒธ CUSTOMIZING THE ARTICLE QUOTE STRING ๐ŸŒธ

When posting a followup to an article or replying direct to the author of an article via email, the text of the article can be quoted. The beginning of the quoted text can contain information about the quoted article (e.g., Name and the Message-ID of the article). If the article has multiple addresses, only the first is evaluated. To allow for different situations, certain information from the article can be used in the quoted string. The following variables are expanded if found in the tinrc variables mail_quote_format, news_quote_format or xpost_quote_format:

  • %A โ€” Address (Email)
  • %D โ€” Date (uses date_format)
  • %F โ€” Full address (%N <%A>)
  • %G โ€” Groupname
  • %M โ€” Message-ID
  • %N โ€” Fullname of author
  • %C โ€” Firstname of author
  • %I โ€” Initials of author

e.g.,

mail_quote_format=On %D in %G you wrote:
news_quote_format=In %M, %F wrote:

would expand to:

On Tue, 21 Sep 1993 09:45:51 in alt.sources you wrote:
In <abcINN123@example.org>, Joe Bar <joe@example.org> wrote:

The quoted text section of an article is marked by a preceding quote string at the beginning of each quoted line. The default quote string is set to '>_'. The default can be changed by setting the tinrc variable quote_chars to your own preference. (Note that '_' underline is used to represent a space).


๐Ÿ“ฌ MAILING PIPING PRINTING REPOSTING AND SAVING ARTICLES ๐Ÿ“ฌ

The command interface to GroupMail, PageMail, PostMail or ThreadMail ('m'), Pipe ('|'), Print ('o'), PageRepost or GroupRepost ('x') and GroupSave, PageSave or ThreadSave ('s' and GroupAutoSave, PageAutoSave or ThreadAutoSave 'S') articles is the same for ease of use. Consistency slay. โœจ

Auto-saving with *AutoSave ('S') is a special case and operates only on marked articles. They will be processed without any further prompting according to the default save parameters defined in tinrc or by any attributes set for the current group.

Otherwise, the initial prompt will ask you to select which article, thread, hot (auto-selected), regular expression pattern, tagged articles you wish to mail, pipe etc.

Tagged articles must have already been tagged with a *Tag ('t') command. All tagged articles can be untagged by a *Untag ('U') untag command.

If a regular expression pattern is selected you are asked to enter a pattern (e.g., to match all articles subject lines containing 'net News' you enter "net News"). Any articles that match the entered expression will be mailed, piped etc. See also the wildcard tinrc variable for advanced pattern matching options.

Various expansion characters are recognized when entering the directory and file to save to. Environment variables (prefixed with '$') and user home directories (prefixed by '~' or '~username') can be specified. Environment variables can themselves contain other special characters.

To save articles to a mailbox enter '=<mailbox name>' when asked for the save filename. If you enter just '=' then articles will be saved to a mailbox with the name of the current newsgroup (eg, alt.sources). See maildir.

To save in savedir/<news.group.name>/<filename> format enter '+<filename>'. See savedir. Like '+' %G is expanded to the current news.group.name but without savedir prefixed. %P is expanded to the news.group.name with all '.' replaced by '/'.

If saving multiple files at once the filename (if not referring to a mailbox) will be extended by ".num" where "num" is at least a 3-digit number counting up from 1. Environment variables are allowed within a filename (e.g., $SOURCES/dir/filename).

When saving articles you can specify whether the saved files should be post processed. A default process type can be set via post_process_type.


โœจ AUTOMATIC MAILING AND SAVING NEW NEWS โœจ

tin allows new/unread news articles to be mailed (''-M'' and ''-N'' option) or saved (''-S'' option) in batch mode for later reading. Super useful when you're going on holiday and you don't want to come back and find that expire has removed a whole load of unread articles. ๐Ÿ˜ญ Best to run via cron(8) every day while you're away, after which you'll be mailed a report of which articles were mailed/saved from which newsgroups and the total number of articles mailed/saved. Articles are saved in a private news structure under your savedir directory (default is ${TIN_HOMEDIR:-"$HOME"}/News).

Be careful of using this option if you read a lot of groups because you could overflow your filesystem. ๐Ÿ’€

When using ''-S'' together with a given directory to save to (''-s'' option), the same directory must be specified when reading the articles by ''-R''.

If you only want to save some of your groups use the batch_save tinrc variable. Set to ON or OFF in tinrc to enable/disable saving of all groups and then use the batch_save attribute to fine tune which groups you want to have saved. For example, if you want to save most of your groups, then set batch_save to ON in tinrc and selectively turn off the ones you don't want using attributes.

tin -M iain -c -f newsrc.mail
                    (mail any unread articles in newsgroups specified in
                    file newsrc.mail to the local user iain and mark
                    them as read)

tin -S -c -f newsrc.save
                    (save any unread articles in newsgroups specified in
                    file newsrc.save and mark them as read)

tin -R              (read any articles saved by tin -S)

๐ŸŽฏ RANGES ๐ŸŽฏ

A range is simply a group of items marked using the SetRange ('#') key. Certain tin commands will operate on a range if one exists rather than just the current item. A range is an expression of the form <min>โ€“<max>, e.g., 10โ€“15 will highlight items 10 through 15 on the current screen. Other than absolute numeric positions, '.' can be used in place of the current cursor position and '$' can be used to mean the highest number available. Entering '0' at the prompt undoes the previously entered range selection. Currently the only commands that understand ranges are GroupMarkThdRead ('K'), MarkArtUnread ('z') and MarkThdUnread ('Z'). That's the whole list, no cap. ๐Ÿ’…


๐Ÿฆ‹ NEWSGROUP LISTS & WILDCARDS ๐Ÿฆ‹

Several places in tin allow you to specify a list of newsgroups. These include command-line groups, (un)subscribe groups, the AUTO[UN]SUBSCRIBE mechanism. The scope= attributes file tag and the filter file group= tag also use the same syntax. tin interprets this variable similarly to rn(1). It contains a list of patterns, separated by commas and possibly prefixed with exclamation points. An exclamation point negates the meaning of a match on this pattern, and can be used to cancel certain matches. See wildmat(3) for details about the understood patterns. Some examples:

alt.config,news.*,!news.test

Matches alt.config and everything in the 'news' hierarchy except news.test

See the explanation for the $AUTOSUBSCRIBE and $AUTOUNSUBSCRIBE variables for further examples.


Depending on the setting of the wildcard tinrc variable there are currently a few limitations for interactive searches SearchSubjF ('/'), SearchSubjB ('?'), SearchAuthF ('a'), SearchAuthB ('A'), SearchBody ('B') and SearchRepeat ('\') one should be aware of. Heads up bestie ๐Ÿซถ

  • Wildmat searches automatically enclose the search string in asterisks ('*'), simulating substring searches. This behavior is fixed and cannot be altered.
  • Regex searches automatically replace spaces (' ') and/or tabs ('\t') in the search string with the '\s' meta-character, which matches any whitespace character. This behavior cannot be prevented. Also regex searches are case insensitive by default. To enforce case sensitivity, prefix the search pattern by one of the following: '(?^)' or '(?-i)'.
  • If Unicode normalization is available, search patterns are normalized according to the normalization_form tinrc variable.

๐Ÿ’Œ SIGNATURES ๐Ÿ’Œ

okay so tin is gonna go looking for your signature in one of two places: ${TIN_HOMEDIR:-"$HOME"}/.signature or ${TIN_HOMEDIR:-"$HOME"}/.Sig. pick your fighter ๐Ÿ’–

Here's the tea: if ${TIN_HOMEDIR:-"$HOME"}/.signature exists, that signature gets pulled into the editor for mail commands only. Why not posting too? Because inews(1) is gonna append the signature itself โ€” so a signature in ${TIN_HOMEDIR:-"$HOME"}/.signature will not be pulled into the editor for posting commands. no double-signature jumpscare, we simply don't do that ๐Ÿ’…

A signature in ${TIN_HOMEDIR:-"$HOME"}/.Sig, though? That one gets pulled into the editor for both posting and mailing commands. slay. ๐Ÿฆ‹

Here's a little example of what a .Sig file can look like, iconic honestly:

NAMES  Joe Bar <joe@example.org>
SNAIL  Musterweg 12, 99999 Notreal, Germany

tin also has the capability to generate random signatures on a per-newsgroup basis if you're feeling chaotic. The way you accomplish this: specify the default signature, or the group attribute sigfile, as a directory. So if, for example, the sigfile path is /usr/iain/.sigs and .sigs is a directory, then tin will select a random signature from any file that's in the .sigs directory (note: one signature per numbered file ๐Ÿ—‚๏ธ).

And a random signature can also consist of a fixed part signature โ€” one that can contain your name, address, etc. โ€” followed by the random sig. That fixed part of the random sig is read from the file $HOME/.sigfixed. ๐ŸŽ€


๐ŸŒˆ CUSTOMIZING THE SCREEN FORMAT ๐ŸŒˆ

The look of the Selection, Group and Thread level can be customized via format strings, and these format strings define the content and the position of each element on the screen. Variables are used within the format strings as placeholders. Heads up: if the article has multiple addresses, only the first is evaluated. Here are all the variables you get:

  • %D โ€” date
  • %F โ€” from, name and/or address
  • %G โ€” newsgroup name
  • %I โ€” initials
  • %L โ€” line count
  • %M โ€” message-id
  • %R โ€” number of responses in thread
  • %S โ€” score
  • %T โ€” thread tree
  • %U โ€” unread count
  • %d โ€” newsgroup description
  • %f โ€” newsgroup flag
  • %m โ€” article marks
  • %n โ€” current group/thread/article number
  • %s โ€” subject
  • %% โ€” %

Not all variables can be used in each level, bestie โ€” here's the overview of who's allowed where:

  • %D โ€” group_format, thread_format
  • %F โ€” group_format, thread_format
  • %G โ€” select_format
  • %I โ€” group_format, thread_format
  • %L โ€” group_format, thread_format
  • %M โ€” group_format, thread_format
  • %R โ€” group_format
  • %S โ€” group_format, thread_format
  • %T โ€” thread_format
  • %U โ€” select_format
  • %d โ€” select_format
  • %f โ€” select_format
  • %m โ€” group_format, thread_format
  • %n โ€” select_format, group_format, thread_format
  • %s โ€” group_format
  • %% โ€” select_format, group_format, thread_format

Defaults for the format strings:

select_format: "%f %n %U  %G  %d"
group_format:  "%n %m %R %L  %s  %F"
thread_format: "%n %m  [%L]  %T  %F"

show_description controls whether the newsgroup description is shown or not, and you can also toggle that description with SelectToggleDescriptions ('d'). ๐Ÿซถ

The info displayed with '%F' depends on the value of show_author. GroupToggleSubjDisplay resp. ThreadToggleSubjDisplay ('d') switches through all available options. cute, right?

For date representation, '%D' uses date_format. And yes, you can specify a different date format in round brackets โ€” e.g., '%(%d %b %y %H:%M)D'. See date_format for more details. ๐Ÿ“…

The length of each item (except '%%') can be defined with a positive number after the '%'. So this next one displays the score in the thread level 10 characters wide: '%10S'. ๐Ÿ’…

If the newsgroup name is displayed together with the newsgroup description, the width of the newsgroup name can be controlled via an optional comma separated second value (e.g., '%60,20G'). It is valid to omit the first value (e.g., ('%,20G')). And if no second value is given, tin uses a default value of 32. โœจ

Some variables do have a default width, which may lead to truncation. Truncation for variables which contain only numbers happens by dividing the value with a sufficient power of ten and adding a SI suffix to the result โ€” that is, the variable holds a value of 54321 and the width for the variable is 4, the result will be "54 k". If that's undesired you have to specify a larger width manually, e.g., '%6n'. Here's an overview of the defaults:

  • %I โ€” width 3
  • %L โ€” width 4
  • %M โ€” width 10
  • %R โ€” width 3
  • %S โ€” width 6
  • %U โ€” width 5
  • %n โ€” width 4

If no length is given for '%D', the length is determined by the format string for the date and the date of the current day. But โš ๏ธ if the date format string contains weekdays or months names, it may happen that the date is longer than determined in the first pass โ€” and in that case, the date is truncated before display. This occurs, for example, if the current month is May and the article to which the date is displayed was posted in December. In such cases it might be useful to determine the maximum length manually and specify the length in the format string. ๐Ÿ˜ญ

In case the format string contains '%G' and '%d' and no length is given, tin determines the longest newsgroup name and uses this length for '%G'. The remaining space will be used for '%d'.

When the format string contains the specifier '%F' and '%s' resp. '%T' and no length is given, '%F' will use one third and '%s' resp. '%T' will use two third of the available space.

In addition, a minimum or a maximum screen width can be defined for each item (except '%%'). In this case, the item will only be displayed when the screen is wider resp. smaller than specified. This comes in handy to not overload a small screen but have maximum information on a large screen. The minimum screen width has to be specified by a positive number preceded by an '>', and the maximum screen width has to be specified by a positive number preceded by an '<'. In the following example tin will display the score only if the screen is wider than 100 characters: '%>100S'. ๐Ÿ”ฅ

If both the length and the minimum or maximum screen width should be specified for an item, the length must be the first parameter and the minimum or maximum screen width must be the second one. This next example displays the score with a length of 10 characters only if the screen is wider than 100 characters: '%10>100S'. A second length can be specified for '%F' and '%s' resp. '%T', separated by a colon, which is used if the minimum or maximum screen width is not reached. If no length is specified after the colon, the item is displayed even if the minimum screen width is not reached, and the length is calculated as if no minimum (or maximum) screen width had been specified. So in this example tin will display the subject with a length of 60 characters if the screen is wider than 100 characters, otherwise a length of 40 characters is used: '%60>100:40s'. ๐Ÿ’–

The look of the Attachment level and the mime, uue and yenc header at Page level can be customized too, via format strings. The following variables are available:

  • %C โ€” Charset
  • %c โ€” Like %C but with description
  • %D โ€” Line count
  • %d โ€” Like %D but with description
  • %E โ€” Content encoding
  • %e โ€” Like %E but with description
  • %F โ€” Current YENC part
  • %f โ€” Like %F but with description
  • %G โ€” Total number of YENC parts
  • %g โ€” Like %G but with description
  • %I โ€” Complete/incomplete UUE/YENC part indicator
  • %L โ€” Language
  • %l โ€” Like %L but with description
  • %N โ€” Name
  • %n โ€” Like %N but with description
  • %S โ€” Content subtype
  • %s โ€” Like %S but with description
  • %T โ€” Content type
  • %t โ€” Like %T but with description
  • %V โ€” Size of the current YENC part in bytes
  • %v โ€” Like %V but with description
  • %W โ€” Total size of all YENC parts in bytes
  • %w โ€” Like %W but with description
  • %X โ€” CRC checksum of current yenc part
  • %x โ€” Like %X but with description
  • %Z โ€” Size in bytes
  • %z โ€” Like %Z but with description
  • %% โ€” %

Not all items can be used in each variable. Here's the overview of who goes where:

  • %C โ€” attachment_format, page_mime_format
  • %c โ€” attachment_format, page_mime_format
  • %D โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %d โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %E โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %e โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %F โ€” page_yenc_format
  • %f โ€” page_yenc_format
  • %G โ€” page_yenc_format
  • %g โ€” page_yenc_format
  • %I โ€” page_uue_format, page_yenc_format
  • %L โ€” attachment_format, page_mime_format
  • %l โ€” attachment_format, page_mime_format
  • %N โ€” page_mime_format, page_uue_format, page_yenc_format
  • %n โ€” page_mime_format, page_uue_format, page_yenc_format
  • %S โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %s โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %T โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %t โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %V โ€” page_yenc_format
  • %v โ€” page_yenc_format
  • %W โ€” page_yenc_format
  • %w โ€” page_yenc_format
  • %X โ€” page_yenc_format
  • %x โ€” page_yenc_format
  • %Z โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %z โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format
  • %% โ€” attachment_format, page_mime_format, page_uue_format, page_yenc_format

By default, the string is not truncated. If it exceeds the screen width, it is wrapped. If the % sign is followed by an exclamation mark ('!') for uppercase letters, the element is omitted if there is not enough space. If the % sign is followed by an asterisk ('*') for a lowercase letter, the description is omitted if there is not enough space. And if the % sign is followed by an exclamation mark ('!') for a lowercase letter, the description is omitted first and then the content. The shortening is always from right to left โ€” first the description is omitted, and when no more description is displayed, the content is omitted. If %T and %S, %F and %G or %V and %W follow each other directly, a '/' will be inserted in between. And %Z will always have one decimal point and may have a one letter bi-suffix. ๐Ÿ’…

Defaults for the format strings:

attachment_format:            "%T%S%E%C%d"
page_mime_format:             "[-- %T%S%*n%z%*l%!c%!d%*e --]"
page_uue_format:              "[-- %T%S%*n%I%!d%*e --]"
page_yenc_format:             "[-- %*N%!d%I [%F%G]%V%W%X --]"

๐ŸŽ€ TIPS AND TRICKS ๐ŸŽ€

okay bestie, plot twist: you can basically drive tin with just the four cursor keys. no cap. left arrow = go up a level, right arrow = go down a level, up arrow = go up a line, down arrow = go down a line. that's the whole vibe. ๐Ÿ’…

and if you wanna learn stuff about news software, these newsgroups are literally the plug:

  • news.software.readers (info. about news user agents tin, rn, nn, slrn etc.)
  • news.software.nntp (info. about NNTP)
  • news.answers (Frequently Asked Questions (FAQ) about many different themes)

so many prompts inside tin come with a default choice and the cursor is already sitting on it. hit <CR> and boom, default accepted, no typing required. and most prompts? you can bail out entirely by pressing <ESC>. ๐Ÿ™ˆ

when you run tin inside an xterm(1x), it resizes itself every single time the xterm(1x) resizes. it's giving adaptive. โœจ

also tin will reread the ${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active} file at set intervals (reread_active_file_secs) so it can show off any newly arrived news. ๐Ÿ”ฅ

and if a giant pile of new newsgroups is cluttering up your screen like unread group-chat notifs? press SelectToggleReadDisplay (r') and watch them go away. iconic.


๐Ÿฆ‹ XTERM BUTTONS ๐Ÿฆ‹

if the environment variable $TERM is set to xterm(1x), then guess what โ€” you can just click to select groups and articles. for this whole discussion we're assuming the buttons are assigned conventionally (i.e., Button1 is the left button).

in general (i.e., for the group, thread and article menus):

  • Button1 (left) โ€” enters next (lower) level if you click on an article, otherwise pages down.
  • Button2 (center) โ€” returns to the previous (upper) level if you click on an article, otherwise pages up.
  • Button3 (right) โ€” positions on the article line under mouse cursor, or pages down if you've clicked outside the list of articles.

in the group selection menu, if the mouse is pointing at a group then:

  • left button โ€” moves to and selects the group pointed at, just like SelectReadGrp (<CR>).
  • center button โ€” quits the program, just like Quit (q).
  • right button โ€” moves to the group pointed at.

in the article menu, if the mouse is pointing at an article (or thread) then:

  • left button โ€” reads the article pointed at, just like GroupReadBasenote (<CR>), or the thread, just like GroupListThd (l).
  • center button โ€” exits the menu, catching up on the group if you have group_catchup_on_exit set in your configuration, just like Quit (q).
  • right button โ€” moves to the article (or thread) pointed at.

in the thread menu, if the mouse is pointing at an article then:

  • left button โ€” reads article pointed at, just like ThreadReadArt (<CR>).
  • center button โ€” exits the menu, catching up on the thread if you have thread_catchup_on_exit set in your configuration, just like Quit (q).
  • right button โ€” moves to the article pointed at.

in other menus and areas, button pressing reverts back to the usual cut and paste of xterm(1x) โ€” but only after one click of any button. noted. ๐Ÿ’€


๐ŸŒˆ INDEX FILES ๐ŸŒˆ

if your news server supports NOV index files (see newsoverview(5), most modern installations will) and you have a fast connection to your news server, then bestie you can literally ignore this whole section. slay.

but if your news server doesn't support NOV index files, or your connection to it is giving very slow, then tin can cache the index for each newsgroup โ€” that happens if cache_overview_files is set to ON.

โš ๏ธ heads up: this cache can eat up large amounts of disk space if you read a lot of groups and/or high traffic groups. to reduce the amount of disk space used, compress_overview_files can be set to ON. and be aware that the use of getart_limit will disable cache_overview_files. fr fr, don't forget that part.

each user creates/updates his/her own index files that are stored in ${TIN_INDEX_NEWSDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.news/. if you are reading via NNTP then the news server name will be appended to keep the indexes for different servers separate. if you are reading off the local spool and local overview files already exist, then turning on caching will have no effect. likewise, unless you see significant delays entering a group when reading via NNTP, then turning on caching will have little or no effect.

entering a group the first time tends to be slow because the index file must be built from scratch. ๐Ÿ˜ญ to alleviate the slowness, start tin to create all index files for the groups you subscribe to with tin -u -v and go for a coffee. โ˜• subsequent readings of a group will only need to do incremental updating of the index file and will be much faster, as only new articles will need to be cached. chef's kiss.

as indexing might take some time, you may want to run tin from the system batcher cron(8) with the ''-u'' option:

       30 6 * * * /usr/local/bin/tin -u

and if you're low on local disk space, you should consider to manually purge cached data for groups you are not reading anymore with something like:

       find ${TIN_INDEX_NEWSDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.news* \
       -type f -name "[0-9]*.[0-9]" -atime +28 | xargs rm -f

๐Ÿ’– FILES ๐Ÿ’–

for a detailed description see tin(5).

$MAILCAPS
~/.mailcap
/etc/mailcap
/usr/etc/mailcap
/usr/local/etc/mailcap
/etc/mail/mailcap

/etc/nntpserver

${TIN_HOMEDIR:-"$HOME"}/.cancelsecret

${TIN_HOMEDIR:-"$HOME"}/.mime.types
/etc/mime.types
/etc/tin/mime.types

${TIN_HOMEDIR:-"$HOME"}/.newsauth

${TIN_HOMEDIR:-"$HOME"}/.newsrc

${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/.oldnewsrc

${TIN_HOMEDIR:-"$HOME"}/.signature
${TIN_HOMEDIR:-"$HOME"}/.Sig

${TIN_HOMEDIR:-"$HOME"}/.sigfixed

${TIN_HOMEDIR:-"$HOME"}/.tin/.inputhistory

${TIN_INDEX_MAILDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.mail/

${TIN_INDEX_NEWSDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.news${NNTPSERVER:+"-$NNTPSERVER"}/

${TIN_INDEX_SAVEDIR:-"${TIN_HOMEDIR:-"$HOME"}/.tin"}/.save/

${TIN_HOMEDIR:-"$HOME"}/.tin/active.mail

${TIN_HOMEDIR:-"$HOME"}/.tin/active.save

/etc/tin/attributes
${TIN_HOMEDIR:-"$HOME"}/.tin/attributes

${TIN_HOMEDIR:-"$HOME"}/.tin/filter

${TIN_HOMEDIR:-"$HOME"}/.tin/keymap${${LC_ALL:-"${LC_MESSAGES:-"${LC_CTYPE:-"$LANG"}"}"}:+".${LC_ALL:-"${LC_MESSAGES:-"${LC_CTYPE:-"$LANG"}"}"}"}
/etc/tin/keymap${${LC_ALL:-"${LC_MESSAGES:-"${LC_CTYPE:-"$LANG"}"}"}:+".${LC_ALL:-"${LC_MESSAGES:-"${LC_CTYPE:-"$LANG"}"}"}"}

${TIN_HOMEDIR:-"$HOME"}/.tin/mailgroups

${TIN_HOMEDIR:-"$HOME"}/.tin/newsrctable

${TIN_HOMEDIR:-"$HOME"}/.tin/posted

${TIN_HOMEDIR:-"$HOME"}/Mail/posted

${TIN_HOMEDIR:-"$HOME"}/.tin/postponed.articles

${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/motd

${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/msglog

${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/newsgroups

${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/serverrc

/etc/tin/tinrc
${TIN_HOMEDIR:-"$HOME"}/.tin/tinrc

/etc/tin/tin.defaults

/usr/local/share/locale/${LC_MESSAGES}/LC_MESSAGES/tin.mo

${TIN_LIBDIR:-NEWSLIBDIR}"/"${TIN_ACTIVEFILE:-active}

${TIN_LIBDIR:-NEWSLIBDIR}/active.times

${TIN_LIBDIR:-NEWSLIBDIR}/newsgroups

${TIN_LIBDIR:-NEWSLIBDIR}/organization

${TIN_LIBDIR:-NEWSLIBDIR}/overview.fmt

${TIN_LIBDIR:-NEWSLIBDIR}/subscriptions

๐Ÿงš ENVIRONMENT ๐Ÿงš

  • TINRC โ€” define this variable if you want to specify command-line options that tin should be started with, so you don't have to type them every single time you launch it. the contents of the environment variable are added to the front of the command-line options before it is parsed, therefore allowing an option specified on the command-line to override the same option specified in the environment. hierarchy matters, bestie. ๐Ÿ‘‘
  • TIN_HOMEDIR โ€” define this variable if you do not want the .tin directory in $HOME/. E.g., if you want all tin's private files in /tmp/.tin you would set $TIN_HOMEDIR to /tmp.
  • TIN_INDEX_NEWSDIR โ€” define this variable if you do not want the .news directory in ${TIN_HOMEDIR:-"$HOME"}/.tin/. E.g., if you want all tin's news index files in /tmp/.news you would set $TIN_INDEX_NEWSDIR to /tmp.
  • TIN_INDEX_MAILDIR โ€” define this variable if you do not want the .mail directory in ${TIN_HOMEDIR:-"$HOME"}/.tin/. E.g., if you want all tin's mail index files in /tmp/.mail you would set $TIN_INDEX_MAILDIR to /tmp.
  • TIN_INDEX_SAVEDIR โ€” define this variable if you do not want the .save directory in ${TIN_HOMEDIR:-"$HOME"}/.tin/. E.g., if you want all tin's save index files in /tmp/.save you would set $TIN_INDEX_SAVEDIR to /tmp.
  • TIN_LIBDIR โ€” define this variable if you want to override the NEWSLIBDIR path that was compiled into the tin binary, default is /usr/lib/news. if tin is running in NNTP mode, setting this variable has no effect.
  • TIN_SPOOLDIR โ€” define this variable if you want to override the SPOOLDIR path that was compiled into the tin binary, default is /var/spool/news. if tin is running in NNTP mode, setting this variable has no effect.
  • TIN_NOVROOTDIR โ€” define this variable if you want to override the NOVROOTDIR path that was compiled into the tin binary, default is SPOOLDIR (see above). if tin is running in NNTP mode, setting this variable has no effect.
  • TIN_NOVFILENAME โ€” define this variable if you want to override the OVERVIEW_FILE filename that was compiled into the tin binary, default is .overview. if tin is running in NNTP mode, setting this variable has no effect.
  • TIN_ACTIVEFILE โ€” define this variable if you want to override the NEWSLIBDIR/active path that was compiled into the tin binary. if tin is running in NNTP mode, setting this variable has no effect. if $TIN_LIBDIR is set, it is prepended to $TIN_ACTIVEFILE.
  • NNTPSERVER โ€” the default NNTP server to remotely read news from. this variable only needs to be set if the ''-r'' command-line option is specified and the file /etc/nntpserver does not exist. the ''-g'' command line option overrides $NNTPSERVER. ๐Ÿ’…
  • NNTPPORT โ€” the NNTP TCP-port to read news from. this variable only needs to be set if the TCP-port is not 119 (the default). the ''-p'' command-line option does override $NNTPPORT.
  • $NNTPSPORT โ€” the NNTPS TCP port we use to pull news, bestie. You only need to set this if the port is not 563 (the default, she's iconic). Also jsyk: the -p and -T command-line options do override $NNTPSPORT, so they're the main characters here.
  • $DISTRIBUTION โ€” sets the article header field Distribution: to whatever you put in this variable, instead of the system default. Slay.
  • $ISO2ASC โ€” picks which ISO-to-ASCII charset decoding table character to use when decoding an article's text. Values go from -1 to 5:
    • -1 โ€” no conversion, we're keeping it raw ๐Ÿ’…
    • 0 โ€” the universal table, works for many languages
    • 1 โ€” single-spacing universal table
    • 2 โ€” table for Danish, Dutch, German, Norwegian and Swedish
    • 3 โ€” table for Danish, Finnish, Norwegian and Swedish, using the appropriate ISO 646 variant
    • 4 โ€” table with RFC 1345 codes in brackets
    • 5 โ€” table for printers that allow overstriking with backspace
  • $ORGANIZATION โ€” sets the article header field Organization: to the contents of the variable instead of the system default. Bonus lore: if it points to a readable file, a random line from that file gets used. And if you're reading news on an Apollo DomainOS machine, you gotta use $NEWSORG instead of $ORGANIZATION, no cap.
  • $NEWSORG (DomainOS) โ€” DomainOS-specific, does the same thing as $ORGANIZATION on other OSs (see above โ˜๏ธ).
  • $REPLYTO โ€” sets the article header field Reply-To: to the return address you specify in the variable. Super useful if you want your replies to land at a different address, periodt.
  • $NAME โ€” overrides the full name given in the gecos-field in /etc/passwd. See also mail_address. ๐Ÿ‘‘
  • $REALNAME โ€” same as $NAME but with lower priority. She's the understudy, fr fr.
  • $HOME โ€” pathname of the user's home directory. See environ(5) for more info.
  • $MAILER โ€” this variable has precedence over the default mailer used in all mailing operations within tin. All of them. She runs the group chat.
  • $MAIL โ€” full path to the user's mailbox.
  • $MAILPATH โ€” a colon-separated list of filenames that get checked for new mail. This overrides the $MAIL variable, so she's got seniority.
  • $MAILDIR โ€” full path to the user's maildir folder. This is only evaluated if neither $MAILPATH nor $MAIL are set. Picky much? ๐Ÿ’…
  • $VISUAL โ€” this variable has precedence over the default editor (i.e., vi(1)) used in all editing operations within tin (e.g., posting, replying, follow-ups, ...). The evaluation order is ${VISUAL:-"${EDITOR:-vi}"}. See environ(5) for more info.
  • $EDITOR โ€” if $VISUAL is unset, then this variable gets looked up for a default editor. If $EDITOR and $VISUAL are both unset, tin uses the system's default editor (i.e., vi(1) on UNIX-systems). See environ(5) for more info.
  • $AUTOSUBSCRIBE โ€” a new group gets checked against the list of patterns, and if it matches, tin subscribes the user to that group without asking again. See the section "NEWSGROUP LISTS & WILDCARDS" for an explanation of the valid syntax. For example, setting
AUTOSUBSCRIBE=comp.os.unix.*,talk.*,!talk.politics.*

will automatically subscribe the user to all new groups in the comp.os.unix hierarchy, and all talk groups other than talk.politics groups (which will be queried for as usual). And ofc this does not work if tin is started with the -X command-line switch. ๐Ÿ™ˆ

  • $AUTOUNSUBSCRIBE โ€” handled like the $AUTOSUBSCRIBE variable, but groups matching the list are unsubscribed from without further query. For example, setting
AUTOUNSUBSCRIBE=alt.flame.*,u*,!uk.*

will automatically unsubscribe the user from all new alt.flame groups and all groups starting with u (university groups) other than UK groups (which will be queried for as usual). Bye bestie ๐Ÿ‘‹

  • $TMPDIR โ€” a pathname of a directory made available for tin to create temporary files in.
  • $MAILCAPS โ€” this variable can be used to override the default path search for mailcap(5) files. See also tin(5).
  • $NOMETAMAIL โ€” set this variable to disable the use of metamail(1) or a replacement (e.g., metamutt).
  • $MM_CHARSET โ€” MIME character set used if it's not configured via the tinrc variable mm_charset.
  • $ISPELL โ€” set this variable to point to ispell(1) or a replacement and its cmd-line options.
  • $PGPOPTS โ€” define any additional options you wish to pass to your pgp(1) or gpg(1) program.
  • $PGPPATH โ€” override the name of the pgp(1) directory in $HOME that holds your keys etc..
  • $GNUPGHOME โ€” override the name of the gpg(1) directory in $HOME that holds your keys etc..
  • $LC_CTYPE โ€” this variable determines the locale(5) category for character handling functions. Usually it determines the character classes for pattern matching character classification and case conversion. Currently this is not true for tin (which temporarily unsets $LC_CTYPE right before any match is done to avoid confusion). Its value should be of the form language[_territory][.codeset][@modifier]. See environ(5) for more information.
  • $LC_MESSAGES โ€” formats of informative and diagnostic messages and interactive responses. Its value should be of the form language[_territory][.codeset][@modifier]. See locale(5) and environ(5) for more information.
  • $LC_NUMERIC โ€” numeric value formats. Its value should be of the form language[_territory][.codeset][@modifier]. See locale(5) and environ(5) for more information.
  • $LC_TIME โ€” date and time formats. Its value should be of the form language[_territory][.codeset][@modifier]. See locale(5) and environ(5) for more information.
  • $LC_ALL โ€” this variable overrides the value of the $LANG variable and any other $LC_ variable. Its value should be of the form language[_territory][.codeset]. See locale(5) and environ(5) for more information. She's the final boss of locale vars.
  • $LANG โ€” this variable determines the locale(5) category for any category not specifically selected with a variable starting with $LC_. Its value should be of the form language[_territory][.codeset]. See environ(5) for more information.
  • $LANGUAGE โ€” this variable defines a priority list for translations. Whenever a translation isn't available, the next language from the list gets tried. Its value should be of the form language:language[:language]. Requires $LC_ALL or $LANG to be set. See environ(5) for more information.
  • $COLUMNS โ€” a decimal integer > 0 used to indicate the user's preferred width in column positions for the terminal screen or window. If this variable is unset or null, the implementation determines the number of columns, appropriate for the terminal or window. When $COLUMNS is set, any terminal-width information implied by $TERM will be overridden. Users and portable applications should not set $COLUMNS unless they wish to override the system selection and produce output unrelated to the terminal characteristics. โš ๏ธ
  • $LINES โ€” a decimal integer > 0 used to indicate the user's preferred number of lines on a page or the vertical screen or window size in lines. A line in this case is a vertical measure large enough to hold the tallest character in the character set being displayed. If this variable is unset or null, the implementation determines the number of lines, appropriate for the terminal or window. When $LINES is set, any terminal-height information implied by $TERM will be overridden. Users and portable applications should not set $LINES unless they wish to override the system selection. Same energy, don't do it casually ๐Ÿ’€
  • $TERM โ€” the type of terminal in use. This is used when looking up termcap sequences. See environ(5) for more information.
  • $DISPLAY โ€” display name, pointing to the X server; required for xface.
  • $WINDOWID โ€” used for determining terminal's X window id; required for xface. Should be set by the terminal emulator.
  • $SHELL โ€” the pathname of the user's login shell. Used to set default_shell_command.
  • $XDG_RUNTIME_DIR โ€” the pathname of the user's dir to put non-essential run time files into.

๐Ÿšจ SIGNALS ๐Ÿšจ

tin handles a couple of signals, and honestly they're pretty well-behaved:

  • SIGHUP โ€” terminate gracefully. ๐Ÿ’–
  • SIGTERM โ€” terminate gracefully. ๐Ÿ’–
  • SIGUSR1 โ€” terminate gracefully but do not restore terminal (tty). (Leaving your tty a mess? It's giving chaos. ๐Ÿ™ˆ)
  • SIGUSR2 โ€” write out ${TIN_HOMEDIR:-"$HOME"}/.newsrc-file.

๐Ÿ”’ SECURITY ๐Ÿ”’

okay bestie, listen up, this part matters:

If tin is started in debug mode (-D level) it will create world readable files in $TMPDIR which may contain sensitive data like the user's NNTP password in clear text (if running verbose). On multiuser-systems $TMPDIR should be set to a safe location before starting tin in (verbose) debug mode (e.g., TMPDIR=$HOME tin -vD NNTP). ๐Ÿ’€

Using the -k option to skip certificate verification makes the session insecure as the server's certificate is not checked; avoid this option whenever possible. Like, fr fr, avoid it.

If the server does not initially require authentication but supports compression and compression is requested, tin will exit when authentication is required later on. Using the -A command-line option in conjunction with -C circumvents this behavior. ๐Ÿซถ


โœ… CONFORMING TO โœ…

tin does conform to the Base Definitions volume of IEEE Std 1003.1-2008, Section 12, Utility Conventions (Utility Argument Syntax, Utility Syntax Guidelines). Standards queen. ๐Ÿ‘‘


๐Ÿ“ NOTES ๐Ÿ“

Regular expression support is provided by the PCRE library package pcre(3) or pcre2(3) which is open source software, written by Philip Hazel, and copyright ยฉ by the University of Cambridge, England. <https://www.pcre.org/> โ€” iconic library, iconic author, we love to see it. โœจ


โš ๏ธ CAVEATS โš ๏ธ

Any existing global configuration files in /etc/tin/ are not updated automatically, as an ordinary user normally has no write permission at that location. So like, don't expect her to update herself, she literally can't. ๐Ÿ’…

๐Ÿ’€ BUGS ๐Ÿ’€

okay bestie, listen up, because these are the historical gremlins you might trip over ๐Ÿ‘‘ and we're naming names.

  • CNews NNTPd, noffle(1) (that's <= V1.0-pre5) and NewsCache (that's <= V1.1.91) literally can't handle pipelined GROUP commands (RFC 3977) ๐Ÿ˜ญ. so if you're stuck with any of those mentioned historical servers, set nntp_pipeline_limit in ${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/serverrc to 1 and move on with your life ๐Ÿ’…
  • early versions of NNTPCache (that's <= 2.3.2) and Leafnode (that's <= 1.6) shipped a buggy LISTGROUP implementation ๐Ÿ™ˆ. if you run into trouble with any of those mentioned historical servers, use the ''-n'' command-line flag โ€” or just disable LISTGROUP via disabled_nntp_cmds in ${TIN_HOMEDIR:-"$HOME"}/.tin/$NNTPSERVER/serverrc. your call, queen ๐Ÿ‘‘
  • using the ''-C'' (COMPRESS) flag with INN nnrpd versions between 2.6.1 and 2.7.1 (both inclusive, fr fr) may cause tin to hang and then timeout when it's used together with the ''-n'' flag, or when posting ๐Ÿ˜ฑ. this has been fixed in INN nnrpd version 2.7.2. as a workaround just... don't use ''-C''. simple as that ๐ŸŽ€
before you mail a bug-report to <tin-bugs@tin.org> please check if you're running the latest (stable) release โ€” and if you're not, please upgrade first! ๐Ÿซถ have a look at the doc/TODO file for known bugs. if you still think you've found a bug, use the BugReport ('R') function and write in English. and please do NOT enclose a core-file in your bug-report until we request it ๐Ÿ’€ (we will ask, bestie, we promise)

๐ŸŒˆ HISTORY ๐ŸŒˆ

okay so the lore is iconic. tin is based on the tass(1) newsreader, which was developed by Rich Skrenta and posted to alt.sources in March 1991; its first version was released on August 23rd 1991 โœจ. and tass(1) itself was heavily influenced by notesfiles, a public domain UNIX version of PLATO Notes, developed at the University of Illinois by Ray Essick and Rob Kolstad in 1982 ๐Ÿงš. for a version overview see <http://www.tin.org/history.html> ๐Ÿ’œ


๐Ÿ‘‘ CREDITS ๐Ÿ‘‘

the way this is a whole group project and everyone ate ๐Ÿ“

  • Rich Skrenta โ€” author of tass(1) v3.2 which this newsreader used as its base.
  • Bill Davidsen โ€” author of envarg.c environment variable reading routine.
  • Mike Gleason โ€” author of sigfile.c random signature generation routines.
  • Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> โ€” author of langinfo.c, charset.c and iso2asc.txt ISO-8859-1 documentation.
  • Arnold D. Robbins โ€” author of strftime.c date formatting routine.
  • Rich Salz โ€” author of wildmat.c pattern matching and parsdate.y date parsing routines.
  • Dave Taylor โ€” author of curses.c from the elm(1) mailreader.
  • Chris Thewalt โ€” author of getline.c emacs(1) style editing routine.
  • Steven Madsen โ€” for adding pgp(1) (Pretty Good Privacy) support.
  • Philip Hazel <ph10@cam.ac.uk> โ€” for pcre(3), pcre2(3) (Perl-compatible regular expression library).
  • Mark Martinec <mark.martinec@ijs.si> โ€” for snprintf(3) and vsnprintf(3) fallbacks.
  • Gary S. Brown โ€” for crc32() fallback.
  • Enrik Berkhan โ€” for the NNTPS (NNTP over TLS) and COMPRESS implementation and its preconditions.

โœจ AUTHOR โœจ

Iain Lea <iain@bricbrac.de> ๐Ÿ’–


๐Ÿฆ‹ MAINTAINER ๐Ÿฆ‹

Urs Janssen <urs@tin.org> ๐ŸŒธ


๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

elm(1), emacs(1), gpg(1), inews(1), ispell(1), lp(1), lpr(1), metamail(1), mutt(1), noffle(1), perl(1), perlre(1), pgp(1), rn(1), sendmail(1), shar(1), slrnface(1), tass(1), unshar(1), uudecode(1), vi(1), w2r.pl(1), xterm(1x), heapsort(3), iconv(3), iconv_open(3), nl_langinfo(3), pcre(3), pcre2(3), pcrepattern(3), pcre2pattern(3), qsort(3), snprintf(3), strftime(3), vsnprintf(3), wildmat(3), environ(5), locale(5), mailcap(5), mbox(5), mmdf(5), newsoverview(5), tin(5), cron(8), RFC 1345, RFC 1524, RFC 1952, RFC 2045, RFC 2046, RFC 2047, RFC 2231, RFC 2980, RFC 3156, RFC 3977, RFC 4155, RFC 4643, RFC 5198, RFC 5322, RFC 5536, RFC 5537, RFC 6048, RFC 6838, RFC 8054, RFC 8143, RFC 8315, RFC 9580


and that's a wrap bestie, we made it to the end of the whole entire manpage ๐ŸŽ€๐Ÿซถ this is version 2.6.6, dated 2026-08-23, and it's literally iconic. go read some news, slay, and don't forget to set your serverrc properly ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from