NEWSBOAT(1)
๐ NEWSBOAT(1) ๐
okay bestie, sit down, hydrate, and let me tell you about newsboat โ it's an RSS/Atom feed reader for text terminals, and honestly? it's giving main character energy. this is the manual page, the newsboat(1) one, and we're gonna go through every single bit of it together. no cap. ๐ฆ
โจ NAME โจ
newsboat โ an RSS/Atom feed reader for text terminals ๐ธ
โจ SYNOPSIS โจ
newsboat [-r] [-e] [-i opmlfile] [-u urlfile] [-c cachefile] [-C
configfile] [-X] [-o] [-x command...] [-h]
like, that's the whole vibe in one line. look at her go. ๐
โจ DESCRIPTION โจ
Newsboat is an RSS/Atom feed reader for text terminals. and what even are RSS and Atom? they're a bunch of widely-used XML formats that transmit, publish, and syndicate articles โ like news articles or blog articles. iconic behaviour honestly. ๐ฐ
and Newsboat is literally designed to be used on text terminals on Unix or Unix-like systems such as GNU/Linux, BSD, or macOS. no GUI, no nonsense, just you and the terminal, together forever. ๐ซถ
โจ OPTIONS โจ
here's the full roster, bestie. every single one. i'm not skipping a single flag, that would be so not slay of me.
-h,--helpโ displays the help. the "hello, what do i do" button. ๐-r,--refresh-on-startโ refreshes your feeds right when you start. no waiting, no clicking, just fresh feeds immediately. โก-e,--export-to-opmlโ exports your feeds as OPML to stdout. heads up though: rn this outputs OPML 1.0, which means it loses all your tag information ๐ญ โ but that's subject to change to 2.0 in the future, so watch this space.--export-to-opml2โ exports your feeds as OPML 2.0, including tags, to stdout. yes the tags survive this time. ๐-X,--vacuumโ compacts the cache in two steps: 1) it reclaims the space that was left empty when data was deleted; and 2) it defragments the entries in the cache. and listen โ this does not delete the entries. for actual deleting you want thecleanup-on-quit,delete-read-articles-on-quit,keep-articles-days, andmax-itemssettings. ๐งน--cleanupโ removes unreferenced entries from the cache and then quits Newsboat. feeds and their articles get removed if the feedurl is no longer in the urls file. Also, if thedelete-read-articles-on-quitconfiguration is set, all read articles will be deleted โ including articles of feeds that are still in the urls file. so like, be aware. ๐-v,-V,--versionโ gets you version information about Newsboat and the libraries it uses. the receipts. ๐-iopmlfile,--import-from-opml=opmlfile โ imports an OPML file. ๐-uurlfile,--url-file=urlfile โ uses an alternative URL file. ๐ฆ-ccachefile,--cache-file=cachefile โ uses an alternative cache file. ๐ธ-Cconfigfile,--config-file=configfile โ uses an alternative configuration file. โจ--queue-file=queuefile โ uses an alternative queue file. ๐--search-history-file=searchhistoryfile โ uses an alternative search history file. ๐--cmdline-history-file=cmdlinehistoryfile โ uses an alternative command line history file. โจ๏ธ-xcommand ...,--execute=command... โ executes one or more commands to run Newsboat unattended. the commands currently available arereloadandprint-unread. ๐ค-lloglevel,--log-level=loglevel โ generates a logfile with a certain loglevel. valid values: 1 to 6, which are, in order, user error, critical, error, warning, info, and debug respectively. the filename can be specified with the--log-fileoption. if you don't specify one, a filename gets generated in the formnewsboat_<date-time>.log. ๐-dlogfile,--log-file=logfile โ uses this logfile as output when logging debug messages. โ ๏ธ please note that this only works when providing a loglevel. so don't come for me when it does nothing on its own.-Efile,--export-to-file=file โ exports a list of read articles (resp. their GUIDs). you can use this to transfer information about read articles between different computers. ๐พ-Ifile,--import-from-file=file โ imports a list of read articles and marks them as read if they're held in the cache. this one is meant to be used in conjunction with the-Ecommandline parameter โ they're a duo, a package deal. ๐ซ
๐ FIRST STEPS ๐
so you've installed Newsboat. congrats, you ate. ๐
now you run it for the first time by typing newsboat at your command prompt. and bestie, the first thing it's gonna hit you with is this:
Error: no URLs configured. Please fill the file /home/ak/.newsboat/urls with RSS feed URLs or import an OPML file.
Newsboat 2.22
usage: ./newsboat [-i <file>|-e] [-u <urlfile>] [-c <cachefile>] [-x <command> ...] [-h]
-e, --export-to-opml export OPML feed to stdout
-r, --refresh-on-start refresh feeds on start
-i, --import-from-opml=<file> import OPML file
-u, --url-file=<urlfile> read RSS feed URLs from <urlfile>
-c, --cache-file=<cachefile> use <cachefile> as cache file
-C, --config-file=<configfile> read configuration from <configfile>
-X, --vacuum compact the cache
-x, --execute=<command>... execute list of commands
-q, --quiet quiet startup
-v, --version get version information
-l, --log-level=<loglevel> write a log with a certain loglevel (valid values: 1 to 6)
-d, --log-file=<logfile> use <logfile> as output log file
-E, --export-to-file=<file> export list of read articles to <file>
-I, --import-from-file=<file> import list of read articles from <file>
-h, --help this help
--cleanup remove unreferenced items from cache
and what that means, bestie, is that Newsboat can't start without any configured feeds. it's not being rude, it just has nothing to read. ๐ญ
๐ Adding Feeds ๐
to add feeds to Newsboat you literally just add one feed URL per line to the ~/.newsboat/urls configuration file:
http://rss.cnn.com/rss/cnn_topstories.rss
http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml
you can also import an OPML file by running newsboat -i blogroll.opml ๐ฆ
Adding comments โ Lines that start with#can contain anything you want. Comments are ignored by Newsboat, but can serve as documentation for you. Please note, that commenting out URLs for debugging purposes might lead to unexpected data loss, seecleanup-on-quitfor more details. โ ๏ธ
Feeds with restricted access ๐
if you need to add URLs that have restricted access, simply provide username/password:
https://username:password@hostname.domain.tld/feed.rss
in case there is a @ in the username, you need to write it as %40. yes, %40. not optional. ๐
and to protect usernames and passwords, make sure to restrict read access for ~/.newsboat/urls to you and optionally your group:
$ chmod u=rw,g=r,o= ~/.newsboat/urls
Newsboat makes sure to not display usernames and passwords in its user interface. respectful queen. ๐
Local files as feeds ๐
you can also configure local files as feeds โ just prefix the local path with file:// and add it to the urls file:
file:///var/log/rss_eventlog.xml
๐ธ First UI Interaction ๐ธ
the main UI of Newsboat consists of three views:
Feed List View โ Article List View โ Article View
you drill down through those views by pressing Enter, and you move back to the previous one by pressing Q. and pressing Q on the Feed List View โ or pressing Shift + Q from anywhere โ closes Newsboat. that's the exit, bestie, that's how you get out. ๐ช
you can also search articles' title or content by pressing / on the Feed List View or the Article List View. on the Feed List View, all articles of all feeds are taken into account. on the Article List View, the articles of the current feed are taken into account. and when you open an article from a search result dialog, the search phrase is highlighted. โจ
Search history โ The history of all your searches is saved to the filesystem, to thehistory.searchfile (stored next to thecache.dbfile). By default, the last 100 search phrases are stored. You can influence how many search phrases are stored by configuringhistory-limit. ๐
Feed List View ๐
when you start Newsboat, it presents you with a list of feeds that you added previously. and then you can:
- press Shift + R to download articles for all feeds.
- press R to download articles for the selected feed.
- press / to search all articles in all feeds.
- press Enter to go to the article list of a selected feed.
- press Q to close Newsboat.
Local articles โ Newsboat keeps the articles that it downloads. When you start Newsboat again and reload a feed, old articles can still be read even if they aren't in the current RSS feeds anymore. The maximum number of articles is controlled by max-items. ๐๏ธ
Caching โ Newsboat uses a number of measures to preserve the users' and feed providers' bandwidth through the use of conditional HTTP downloading. It saves every feed's "Last-Modified" and "ETag" response header values (if present) and advises the feed's HTTP server to only send data if the feed has been updated. This doesn't only make feed downloads for RSS feeds with no new updates faster, it also reduces the amount of transferred data per request. โก You can disable conditional HTTP downloading per feed by configuring always-download.
Article List View ๐ฐ
after you entered a feed, you can see the list of available articles by their title. a N on the left indicates that an article wasn't read yet. (rude of it to call you out like that, but okay.)
and then you can:
- press Q to go back to the Feed List View.
- press / to search all articles of this feed.
- press Enter to read a selected article.
Article View ๐
on an article you can scroll through the text and read it. each link in the article has a number next to it.
and then you can:
- press any number to open an article link in the browser. for numbers larger than 9, type #, then the number, and press Enter.
- press O to open the article in the browser.
- press Q to go back to the Article List View.
Browser view โ Sometimes the content of an article is empty or just an abstract or short description. You can always press O to view the complete article in a browser. The default browser islynx. ๐ฆ You can use your browser of choice by configuringbrowser.
๐ CONFIGURATION ๐
several aspects of Newsboat can be configured via a config file, which is stored next to the urls file. a configuration line looks like this in general:
<config-command> <arg1> ...
the configuration file can contain comments, which start with the # character and go as far as the end of line. ๐
User contrib โ Newsboat also comes with user contributed content like scripts and color themes. The user contributed content can be found in /usr/share/doc/newsboat/contrib/. End users are encouraged to take a look as they may find something useful. ๐จ
๐ Example ๐
an example configuration looks like this:
# a comment
max-items 100 # such comments are possible, too
browser links
show-read-feeds no
unbind-key R
bind ^R feedlist reload-all
look at that. comments within lines. we love a flexible queen. ๐
โ๏ธ Splitting long lines into multiple ones โ๏ธ
settings such as macros and ignore-article can be quite lengthy. a long line can be broken into multiple ones using backslashes. a backslash must be the last character on the line and will immediately concatenate it with the following line. and it's important that nothing follows the \ on the same line โ otherwise the \ character is treated "as is". โ ๏ธ for example:
macro p open; \
reload; quit; \
quit; \
quit -- "Opens, reloads then makes sure to quit newsboat"
okay so bestie, the thing about that backslash \ is that it does exactly one job: it makes Newsboat ignore the newline that comes right after it. That's it. That's the whole gig. It does not do anything else at all, no cap. ๐
So like, look at this super pretty formatted option:
ignore-article \
"*" \
"author =~ \"(\
John Doe| \
Mary Sue \
)\""
bestie it does not become this:
ignore-article "*" "author =~ \"(John Doe|Mary Sue)\""
nope! Because literally only the newlines get yeeted, it actually turns into this monstrosity:
ignore-article "*" "author =~ \"( John Doe| Mary Sue )\""
so for this reason ๐ซถ be so conscious of where you're splitting your lines, because it might genuinely matter. it's giving "the whitespace is load-bearing". ๐ญ
โจ Using Double Quotes โจ
TL;DR โ use double quotes for strings that contain spaces or double quotes. Escape double quotes (use \") and backslashes (use \\). Don't escape stuff outside of double quotes, and don't use single quotes for quoting โ Newsboat does not support that. periodt.
A lot of Newsboat's options want strings as arguments โ commands, passwords, dialog titles, URLs, the whole squad. Some options even take multiple strings at once. And those strings can have spaces in them, which lowkey confuses Newsboat since it already uses spaces to tell option names apart from option arguments. ๐
So to help Newsboat understand your intent, wrap such strings in double quotes:
browser "firefox --new-tab %u"
But what if you need a double quote inside a string? Escape it with a backslash:
ocnews-password "UnbalancedQuotes\"AreSoFun!"
And the backslash itself? Escape it too, bestie! Let's say you have a program called my favourite pager and you wanna view articles with it. Newsboat ultimately passes commands to the shell, and the shell expects spaces to be escaped if you want them preserved. But since Newsboat interprets backslashes, you gotta add another layer of escaping. So you end up with a command like this:
pager "/usr/bin/my\\ favourite\\ pager"
the layers of escaping?? it's giving onion. ๐ง โจ
โจ Shell Evaluation โจ
It is also possible to integrate the output of external commands into the configuration. The text between two ` backticks is evaluated as a shell command, and its output is used. This works like backtick evaluation in Bourne-compatible shells and allows users to use external information from the system within the configuration. ๐ฅ
โจ Escaping โจ
Backticks and # characters can be escaped with a backslash (e.g. \` and \#). In this case, they are replaced with literal ` or # in the configuration.
โจ Key Bindings โจ
New style key bindings described here are supported since Newsboat 2.39. ๐
You can bind a key (or sequence of keys) to an operation (or a list of operations) with the bind configuration command.
The syntax for a binding looks like this:
bind <key-sequence> <dialog>[,<dialog>] <operation-list> [-- "<description>"]
Warning: Limitations โ ๏ธ Bindings that share a prefix must all have the same length; otherwise, only the last binding is created. For example:text bind ab everywhere โฆ bind abc everywhere โฆwill only create a binding forabc. Re-ordering the commands will create a binding forab. This avoids ambiguity whenabis typed and Newsboat doesn't know if it should run the binding forabalready or the user is going to presscnext, triggering the other binding. To have both bindings, either: - rename them to have different prefixes (e.g.abandbcd), or - make them the same length (e.g. renameabtoabdto match the length ofabc).
๐ Key Sequence
Lowercase keys, uppercase keys and special characters are written literally.
Key combinations with Ctrl are written using the caret ^. For instance Ctrl + R equals to ^R. Please be aware that all Ctrl-related key combinations need to be written in uppercase.
Alternatively, key combinations using Shift or Ctrl can be written like <S-a> and <C-a>, for Shift + A and Ctrl + A respectively. Note that this alternative syntax only works with the bind command. It is not supported with the older bind-key command. ๐
The following identifiers for special keys are supported:
<ENTER>(Enter key)<BACKSPACE>(backspace key)<LEFT>(left cursor)<RIGHT>(right cursor)<UP>(up cursor)<DOWN>(down cursor)<PPAGE>(page up cursor)<NPAGE>(page down cursor)<HOME>(cursor to beginning of list/article)<END>(cursor to end of list/article)<ESC>(Esc key)<TAB>(Tab key)<LT>(<key)<GT>(>key)<^>(^key, can also be specified as just^if it is not followed by a letter)<F1>to<F12>(F1 key to F12 key)
Multiple keys can be placed in sequence. For example gg means pressing g twice and ^O<ENTER> means pressing Ctrl + O followed by Enter. Pressing Esc will cancel a multi-key input. ๐ฆ
๐ Dialog
A dialog is a context in which the key binding is active. Available dialogs are:
everywherefeedlistfilebrowserhelparticlelistarticletagselectionfilterselectionurlviewpodboatdirbrowsersearchresultslist
Multiple dialogs can be specified with a comma in between. For example:
bind k feedlist,articlelist,urlview up
bind j feedlist,articlelist,urlview down
or using everywhere to apply the binding in all dialogs:
bind k everywhere up
bind j everywhere down
๐ Operation List
Operations get executed when pressing the corresponding sequence of keys. For a complete list of available operations see [_newsboat_operations] and [_podboat_operations].
Multiple operations can be specified by writing them down separated by a semicolon. Some operations allow specifying an argument, e.g. set <config option> <config value> can be used to change a configuration option.
A sequence with two dashes followed by text between double quotes can be used to add a description to a binding (e.g. -- "some description"). If present, the description is shown in the help dialog. โจ
In combination, this might look like:
bind of everywhere set browser "firefox" ; open-in-browser -- "Open in Firefox"
The above example means that pressing o followed by f will change the configured browser to firefox and then run the open-in-browser command to open the feed/article in the configured browser.
bind is similar to macros but is more flexible. Macros are configured globally, whereas bind can be applied to specific dialogs. Additionally, macros always require pressing 2 keys (macro-prefix followed by a key specific to the macro) while bind can specify a key-sequence of any length. ๐
โจ Old Style Key Bindings โจ
You can bind a single key to a single operation with the bind-key configuration command. This is an older, more limited form of keybinding syntax. You can specify an optional dialog. This is the context in which the key binding is active.
The syntax for an old style key binding looks like this:
bind-key <key> <operation> [<dialog>]
๐ Key
Lowercase keys, uppercase keys and special characters are written literally.
Key combinations with Ctrl are written using the caret ^. For instance Ctrl + R equals to ^R. Please be aware that all Ctrl-related key combinations need to be written in uppercase.
The following identifiers for special keys are supported:
ENTER(Enter key)BACKSPACE(backspace key)LEFT(left cursor)RIGHT(right cursor)UP(up cursor)DOWN(down cursor)PPAGE(page up cursor)NPAGE(page down cursor)HOME(cursor to beginning of list/article)END(cursor to end of list/article)ESC(Esc key)TAB(Tab key)F1toF12(F1 key to F12 key)
๐ Operation
An operation gets executed when pressing the corresponding key. For a complete list of available operations see [_newsboat_operations] and [_podboat_operations].
๐ Dialog
A dialog is a context in which the key binding is active. Available dialogs are:
all(default if not specified)feedlistfilebrowserhelparticlelistarticletagselectionfilterselectionurlviewpodboatdirbrowsersearchresultslist
โจ Colors โจ
It is possible to configure custom color settings in Newsboat. The basic configuration syntax is:
color <element> <foreground color> <background color> [<attribute> ...]
This means that if you configure colors for a certain element, you need to provide a foreground color and a background color as a minimum. The following colors are supported:
blackredgreenyellowbluemagentacyanwhitedefaultcolor<n>, e.g.color123
The default color means that the terminal's default color will be used. The color<n> color name (where <n> is a decimal number not starting with zero) can be used if your terminal supports 256 colors (e.g. gnome-terminal, or xterm with TERM set to xterm-256color). Newsboat contains support for 256 color terminals since version 2.1. For a complete chart of colors and their corresponding numbers, please see https://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html. ๐
Optionally, you can also add one or more attributes. The following attributes are supported:
standoutunderlinereverseblinkdimboldprotectinvis
Currently, the following elements are supported:
background: the application backgroundlistnormal: a normal list itemlistfocus: the currently selected list itemlistnormal_unread: an unread list itemlistfocus_unread: the currently selected unread list itemlistnormal_deleted: a deleted article-list itemlistfocus_deleted: the currently selected deleted article-list itemtitle(added in 2.25): current dialog's title, which is usually at the top of the screen (but seeshow-title-barandswap-title-and-hints). If you don't specify a style for this element, then theinfostyle is usedinfo: the hints bar, which is usually at the bottom of the screen (but seeshow-keymap-hintandswap-title-and-hints)hint-key(added in 2.25) โ a key in the hints bar ๐ If you don't set a style for this element, then theinfostyle gets used instead. no caphint-keys-delimiter(added in 2.25) โ the comma that separates keys in the hints bar โจ If you don't set a style for this element, then theinfostyle gets used instead.hint-separator(added in 2.25) โ the colon separating keys from their descriptions in the hints bar ๐ If you don't set a style for this element, then theinfostyle gets used instead.hint-description(added in 2.25) โ a description of a key in the hints bar ๐ธ If you don't set a style for this element, then theinfostyle gets used instead.articleโ the article text ๐end-of-text-markerโ filler lines (~) below blocks of text ๐
And the default color configuration of Newsboat? It's giving this, bestie:
color background white black
color listnormal white black
color listfocus yellow blue bold
color listnormal_unread white black bold
color listfocus_unread yellow blue bold
color listnormal_deleted white black
color listfocus_deleted yellow blue bold
color title yellow blue bold
color info yellow blue bold
color hint-key yellow blue bold
color hint-keys-delimiter white blue
color hint-separator white blue bold
color hint-description white blue
color article white black
โจ CONFIGURATION COMMANDS โจ
okay this is the big one. every single knob you can turn in your config file, listed out. buckle up ๐ซถ
always-display-description(parameters:[yes/no]; default value:no) โ set it toyesand the description will always be displayed, even if, like, a<content:encoded>tag has been found. periodt. (example:always-display-description yes)always-download(parameters:<url> [<url>...]; default value:n/a) โ names one or more feed URLs that should always be downloaded, no matter what theirLast-Modifiedtimestamp andETagheader are saying ๐ you can specify this option multiple times, she's flexible like that. (example:always-download "https://www.n-tv.de/23.rss")article-sort-order(parameters:<sortfield>[-<direction>]; default value:date-asc) โ the<sortfield>picks which article property is used for sorting. currently available:date,title,flags,author,link,guid, andrandomโจ the optional<direction>is eitherascfor ascending ordescfor descending. heads up: direction does not affect therandomsorting. fordate,descorder is the default, i.e.dateis the same asdate-desc; for all the others,ascis the default. ALSO โ the directions fordateare reversed:descmeans the newest items are first, whereasascmeans the oldest items are first ๐ญ these inconsistencies will be fixed in a future major version of Newsboat, so don't @ me. (example:article-sort-order author-desc)articlelist-format(parameters:<format>; default value:"%4i %f %D %6L %?T?|%-17T| ?%t") โ this variable defines the format of entries in the article list ๐ see the FORMAT STRINGS section in the documentation for more info. (example:articlelist-format "%4i %f %D %?T?|%-17T| ?%t")articlelist-title-format(parameters:<format>; default value:"%N %V - Articles in feed '%T' (%u unread, %t total)%?F? matching filter '%F'&? - %U"(localized)) โ the format of the title in the article list ๐ see the FORMAT STRINGS section of the Newsboat manual for the deets on available formats. (example:articlelist-title-format "Articles in feed '%T' (%u unread)")auto-reload(parameters:[yes/no]; default value:no) โ set it toyesand all feeds get automatically reloaded at start up, and then continuously after a certain time has passed (peepreload-timefor that) ๐ฅ also seerefresh-on-startupif you only wanna reload the feeds at start up and not continuously. and enablingsuppress-first-reloadomits the reload on start up. iykyk. (example:auto-reload yes)bind(parameters:<key-sequence> <dialog>[,<dialog>] <command-list> [-- "<binding description>"]; default value:n/a) โ binds a sequence of keys<key-sequence>to<command-list>๐ meaning: whenever the keys in<key-sequence>get pressed in order, then the list of commands in<command-list>is executed (if applicable in the current dialog). for more info see Key Bindings. optionally, a description can be added โ if present, it's shown in the help form ๐ธ also seeunbind-keyto remove a key binding. (example:bind of everywhere set browser "firefox" ; open-in-browser)bind-key(parameters:<key> <operation> [<dialog>]; default value:n/a) โ binds key<key>to<operation>. so whenever<key>is pressed, then<operation>is executed (if applicable in the current dialog) โจ for more info see Old Style Key Bindings. also seeunbind-keyto remove a key binding. (example:bind-key ^R reload-all)bookmark-autopilot(parameters:[yes/no]; default value:no) โ set toyesand the configured bookmark command gets executed without any further input asked from the user โ unless the url or the title can't be found/guessed ๐ซถ (example:bookmark-autopilot yes)bookmark-cmd(parameters:<command>; default value:"") โ if set, then<command>is used as the bookmarking plugin ๐ see the documentation on bookmarking for further info. (example:bookmark-cmd "~/bin/delicious-bookmark.sh")bookmark-interactive(parameters:[yes/no]; default value:no) โ set toyesand the configured bookmark command is an interactive program. iconic. (example:bookmark-interactive yes)browser(parameters:<command>; default value:%BROWSER, otherwiselynx) โ sets the browser command to use when opening an article in the browser ๐ if theBROWSERenvironment variable is set, it'll be used as the default browser, otherwiselynxgets used. for more info, see Using Browser. (example:browser "w3m %u")cache-file(parameters:<path>; default value:"~/.newsboat/cache.db"or"~/.local/share/cache.db"(see the FILES section)) โ this config option sets the cache file ๐ super useful if the filesystem of your home directory doesn't support proper locking (e.g. NFS, we've all been there). (example:cache-file "/tmp/testcache.db")cleanup-on-quit(parameters:[yes/no/nudge]; default value:nudge) โ set toyesand the cache gets locked and superfluous feeds and items get removed, like feeds that can't be found in the urls configuration file anymore ๐ runnewsboat --cleanupto do this manually. if you encounter a warning about unreachable feeds having been found, you may see the feed urls listed by creating a log file via theerror-logoption. withnudge, newsboat will wait for user input if the warning is printed. (example:cleanup-on-quit yes)color(parameters:<element> <fgcolor> <bgcolor> [<attribute> ...]; default value:n/a) โ sets the foreground color, background color and optional attributes for a certain element ๐ for available colors and attributes, see the Colors section. (example:color background white black)confirm-delete-all-articles(parameters:[yes/no]; default value:yes) โ set toyesand Newsboat asks for confirmation on whether the user wants to delete all articles. (example:confirm-delete-all-articles no)confirm-exit(parameters:[yes/no]; default value:no) โ set toyesand Newsboat asks for confirmation on whether the user really wants to quit Newsboat ๐ญ (example:confirm-exit yes)confirm-mark-all-feeds-read(parameters:[yes/no]; default value:yes) โ set toyesand Newsboat asks for confirmation on whether the user wants to mark all feeds as read. (example:confirm-mark-all-feeds-read no)confirm-mark-feed-read(parameters:[yes/no]; default value:yes) โ set toyesand Newsboat asks for confirmation on whether the user wants to mark a feed as read. (example:confirm-mark-feed-read no)cookie-cache(parameters:<path>; default value:"") โ sets a cookie cache ๐ if set, cookies will be cached in (i.e. read from and written to) this file, using Netscape format <http://www.cookiecentral.com/faq/#3.5>. (example:cookie-cache "~/.newsboat/cookies.txt")datetime-format(parameters:<date/time format>; default value:%b %d) โ this format specifies the date/time format in the article list ๐ธ for a detailed documentation on most of the allowed formats, consult the manpage ofstrftime(3).%Lis a custom format not available instrftimewhich lists the days since the article was published (e.g. "2 days ago") ๐ฆ (example:datetime-format "%D, %R")define-filter(parameters:<name> <filterexpr>; default value:n/a) โ with this command you can predefine filters, which you can later select from a list, and which are then applied after selection โจ especially useful for filters you need often and you don't wanna type them out every single time. (example:define-filter "all feeds with 'fun' tag" "tags # \"fun\"")delete-read-articles-on-quit(parameters:[yes/no]; default value:no) โ set toyesand all read articles get deleted when quitting Newsboat ๐ this option only applies ifcleanup-on-quitis set toyesor if the--cleanupargument is passed. (example:delete-read-articles-on-quit yes)dialogs-title-format(parameters:<format>; default value:"%N %V - Dialogs"(localized)) โ format of the title in the dialog list ๐ see the FORMAT STRINGS section of the Newsboat manual for the deets on available formats. (example:dialogs-title-format "%N %V - Dialogs")dirbrowser-title-format(parameters:<format>; default value:"%N %V - %?O?Open Directory&Save File? - %f"(localized)) โ format of the title in the directory browser ๐ see the FORMAT STRINGS section of the Newsboat manual for the deets on available formats. (example:dirbrowser-file-format "%?O?Open Directory&Save File? - %f")display-article-progress(parameters:[yes/no]; default value:yes) โ set toyesand a read progress (in percent) gets displayed in the article view ๐ otherwise, no read progress is displayed. (example:display-article-progress no)download-full-page(parameters:[yes/no]; default value:no) โ set toyesand for all feed items with no content but with a link, the link gets downloaded and the result used as content instead ๐ณ this may significantly increase the download times of "empty" feeds, so like, be aware. (example:download-full-page yes)download-retries(parameters:<number>; default value:1) โ how many times Newsboat is gonna try to download a feed before it's like "okay bestie I'm out" ๐ซ . it's literally here to help your downloads survive slow and shaky connections, like when you're routing through a TOR proxy. (example:download-retries 4)download-timeout(parameters:<number>; default value:30) โ the number of seconds Newsboat waits on a feed download before giving up. same energy as above: it's for those slow, shaky connections (hello TOR proxy bestie ๐ง). (example:download-timeout 60)error-log(parameters:<path>; default value:"") โ set this and all your user errors (like, say, defunct RSS feeds doing the absolute most) get logged to this file. (example:error-log "~/.newsboat/error.log")external-url-viewer(parameters:<command>; default value:"") โ set this andshow-urlspipes the current article to a specific external tool instead of using the internal URL viewer. perfect for integrating tools likeurlview, iykyk. (example:external-url-viewer "urlview")feed-sort-order(parameters:<sortfield>[-<direction>]; default value:none) โ<sortfield>picks which feed property gets used for sorting; rn the options are:firsttag,title,articlecount,unreadarticlecount,lastupdated,latestunreadandnone. the optional<direction>sets the sort direction:asc= ascending,desc= descending.descis the default ๐ . (example:feed-sort-order firsttag)feedbin-flag-star(parameters:<flag>; default value:"") โ if set and Feedbin support is on, then every article flagged with the specified flag gets "starred" in Feedbin and shows up in the list of "Starred items" โญ. (example:feedbin-flag-star "b")feedbin-login(parameters:<login>; default value:"") โ sets your Feedbin login for Feedbin support. (example:feedbin-login "your-login")feedbin-password(parameters:<password>; default value:"") โ sets your Feedbin password for Feedbin support. double quotes and backslashes inside it need to be escaped, no cap. (example:feedbin-password "here_goesAquote:\"")feedbin-passwordeval(parameters:<command>; default value:"") โ a more secure alternative to the above: you provide your password from an external command that gets evaluated during login. great for reading your password from a gpg encrypted file or your system keyring ๐. (example:feedbin-passwordeval "gpg --decrypt ~/.newsboat/feedbin-password.gpg")feedbin-passwordfile(parameters:<path>; default value:"") โ another alternative: stash your plaintext password elsewhere in your system. (example:feedbin-passwordfile "~/.newsboat/feedbin-pw.txt")feedbin-url(parameters:<url>; default value:"https://api.feedbin.com") โ configures the URL where the Feedbin installation you wanna use actually lives. (example:feedbin-url "https://example.com/feedbin/")feedhq-flag-share(parameters:<flag>; default value:"") โ if set and FeedHQ support is on, every article flagged with the specified flag gets "shared" in FeedHQ so the people who follow you can see it ๐. (example:feedhq-flag-share "a")feedhq-flag-star(parameters:<flag>; default value:"") โ if set and FeedHQ support is on, every article flagged with the specified flag gets "starred" in FeedHQ and appears in the list of "Starred items" โญ. (example:feedhq-flag-star "b")feedhq-login(parameters:<login>; default value:"") โ sets your FeedHQ login for FeedHQ support. (example:feedhq-login "your-login")feedhq-min-items(parameters:<number>; default value:20) โ sets how many articles get loaded from FeedHQ per feed. (example:feedhq-min-items 100)feedhq-password(parameters:<password>; default value:"") โ sets your FeedHQ password for FeedHQ support. double quotes and backslashes within it should be escaped. (example:feedhq-password "here_goesAquote:\"")feedhq-passwordeval(parameters:<command>; default value:"") โ the more secure alternative to the above: your password comes from an external command evaluated during login. read it from a gpg encrypted file or your system keyring ๐. (example:feedhq-passwordeval "gpg --decrypt ~/.newsboat/feedhq-password.gpg")feedhq-passwordfile(parameters:<path>; default value:"") โ another alternative: keep your plaintext password elsewhere in your system. (example:feedhq-passwordfile "~/.newsboat/feedhq-pw.txt")feedhq-show-special-feeds(parameters:[yes/no]; default value:yes) โ if set and FeedHQ support is used, then "special feeds" like "People you follow" (articles shared by people you follow), "Starred items" (your starred articles) and "Shared items" (your shared articles) show up in your subscription list ๐. (example:feedhq-show-special-feeds "no")feedhq-url(parameters:<url>; default value:"https://feedhq.org/") โ configures the URL where your FeedHQ instance lives. (example:feedhq-url "https://feedhq.example.com/")feedlist-format(parameters:<format>; default value:"%4i %n %11u %t") โ defines the format of entries in the feed list. peep the FORMAT STRINGS section in the documentation for more info. (example:feedlist-format " %n %4i - %11u -%> %t")feedlist-title-format(parameters:<format>; default value:"%N %V - %?F?Feeds&Your feeds? (%u unread, %t total)%?F? matching filter '%F'&?%?T? - tag '%T'&?"(localized)) โ the format of the title in the feed list. see the FORMAT STRINGS section of the Newsboat manual for the deets on available formats. (example:feedlist-title-format "Feeds (%u unread, %t total)")filebrowser-title-format(parameters:<format>; default value:"%N %V - %?O?Open File&Save File? - %f"(localized)) โ the format of the title in the file browser. see the FORMAT STRINGS section of the Newsboat manual for all the available formats. (example:filebrowser-title-format "%?O?Open File&Save File? - %f")freshrss-flag-star(parameters:<flag>; default value:"") โ if set and FreshRSS support is used, every article flagged with the specified flag gets "starred" in FreshRSS and appears in the list of "Starred items" โญ. (example:freshrss-flag-star "b")freshrss-login(parameters:<login>; default value:"") โ sets your FreshRSS login for FreshRSS support. (example:freshrss-login "your-login")freshrss-min-items(parameters:<number>; default value:20) โ sets how many articles get loaded from FreshRSS per feed. (example:freshrss-min-items 100)freshrss-password(parameters:<password>; default value:"") โ sets your FreshRSS password for FreshRSS support. double quotes and backslashes within it should be escaped. (example:freshrss-password "here_goesAquote:\"")freshrss-passwordeval(parameters:<command>; default value:"") โ a more secure alternative to the above: your password comes from an external command that gets evaluated during login. perfect for reading it from a gpg encrypted file or your system keyring ๐. (example:freshrss-passwordeval "gpg --decrypt ~/.newsboat/freshrss-password.gpg")freshrss-passwordfile(parameters:<path>; default value:"") โ another alternative: store your plaintext password elsewhere in your system. (example:freshrss-passwordfile "~/.newsboat/freshrss-pw.txt")freshrss-show-special-feeds(parameters:[yes/no]; default value:yes) โ if set and FreshRSS support is used, then a "Starred items" feed (containing your starred/favourited articles) shows up in your subscription list ๐. (example:freshrss-show-special-feeds "no")freshrss-url(parameters:<url>; default value:"") โ configures the URL for the Google Reader API endpoint of your FreshRSS instance. (example:freshrss-url "https://freshrss.example.com/api/greader.php")goto-first-unread(parameters:[yes/no]; default value:yes) โ if it'syes, then the first unread article gets selected whenever you enter a feed ๐. (example:goto-first-unread no)goto-next-feed(parameters:[yes/no]; default value:yes) โ if it'syes, then thenext-unread,prev-unreadandrandom-unreadkeys will go searching in other feeds for unread articles if everything in the current feed is read. if it'sno, those keys stop in the current feed, periodt. (example:goto-next-feed no)help-title-format(parameters:<format>; default value:"%N %V - Help"(localized)) โ the format of the title in the help window. see the FORMAT STRINGS section of the Newsboat manual for details on available formats. (example:help-title-format "%N %V - Help")highlight(parameters:<target> <regex> <fgcolor> [<bgcolor> [<attribute> ...]]; default value:n/a) โ with this command you can highlight text parts in the feed list, the article list and the article view โจ. for available colors and attributes, peep the Colors section. (example:highlight all "newsboat" red)highlight-article(parameters:<filterexpr> <fgcolor> <bgcolor> [<attribute> ...]; default value:n/a) โ with this command you can highlight articles in the article list if they match a filter expression. for available colors and attributes, see the Colors section. (example:highlight-article "author =~ \"Andreas Krennmair\"" white red bold)highlight-feed(parameters:<filterexpr> <fgcolor> <bgcolor> [<attribute> ...]; default value:n/a) โ with this command you can highlight feeds in the feed list if they match a filter expression. for available colors and attributes, see the Colors section. (example:highlight-feed unread โบ 100 white red bold)history-limit(parameters:<number>; default value:100) โ defines the max number of entries of commandline resp. search history that get saved. wanna disable history saving entirely? set it to0. (example:history-limit 0)html-renderer(parameters: <command>; default value:internal) โ set this tointernaland Newsboat uses its own built-in HTML renderer, periodt. Set it to literally anything else and that command gets run instead: the HTML that needs rendering gets piped into the command's stdin, and whatever the program spits out is what you see. Which is the whole point โ it means you can drag in external renderers likew3m,linksorlynxand let them do the glow-up. (example:html-renderer "w3m -dump -T text/html")http-auth-method(parameters: <method>; default value:any) โ picks the HTTP authentication method. The allowed values areany,basic,digest,digest_ie(heads up: only available with libcurl 7.19.3 and newer),gssnegotiate,ntlmandanysafe. (example:http-auth-method digest)ignore-article(parameters: <feed> <filterexpr>; default value: n/a) โ if an article downloaded from <feed> matches <filterexpr>, it gets ignored and never shown to you. Not even a little peek. This one gets explained way more in the KILLFILES section below, so stay tuned. (example:ignore-article "*" "title =~ \"Windows\"")ignore-mode(parameters:[download/display]; default value:download) โ this is the vibe check for how an article gets ignored (seeignore-articleabove ๐). Set it todownloadand the ignoring happens in the download/parsing phase, so the article is never written to the cache at all. Set it todisplayand it gets ignored when it's time to show articles โ but it's still chilling in the cache. (example:ignore-mode "display")include(parameters: <path>; default value: n/a) โ lets you pull other files in and have them read as config files too. Lowkey the best way to split your setup into several files โ key config over here, color config over there... (example:include "~/.newsboat/colors")inoreader-app-id(parameters: <string>; default value:"") โ the unique application ID that Inoreader issues you. Peep the "Inoreader" section for the tea. (example:inoreader-app-id "123456789")inoreader-app-key(parameters: <string>; default value:"") โ the application key that Inoreader issues you. Again, "Inoreader" section, go look. (example:inoreader-app-key "TmV3c2JvYXQgcm9ja3MgOikK")inoreader-flag-share(parameters: <flag>; default value:"") โ if you set this and you're using Inoreader support, then every article flagged with the flag you picked gets "shared" on Inoreader, so the people who follow you can see it. Main character move fr. (example:inoreader-flag-share "a")inoreader-flag-star(parameters: <flag>; default value:"") โ if set and Inoreader support is on, every article flagged with your chosen flag gets "starred" in Inoreader and shows up in the "Starred items" list. (example:inoreader-flag-star "b")inoreader-login(parameters: <login>; default value:"") โ sets your Inoreader login so Inoreader support works. (example:inoreader-login "your-login")inoreader-min-items(parameters: <number>; default value:20) โ how many articles get loaded from Inoreader per feed. (example:inoreader-min-items 100)inoreader-password(parameters: <password>; default value:"") โ your Inoreader password for Inoreader support. Double quotes and backslashes inside it need escaping. (example:inoreader-password "here_goesAquote:\"")inoreader-passwordeval(parameters: <command>; default value:"") โ the safer alternative to the option above ๐ you give it an external command, it gets evaluated during login, and that's how your password arrives. Chef's kiss for reading a password out of a gpg-encrypted file or your system keyring. (example:inoreader-passwordeval "gpg --decrypt ~/.newsboat/inoreader-password.gpg")inoreader-passwordfile(parameters: <path>; default value:"") โ yet another way: just stash your plaintext password somewhere else on your system. (example:inoreader-passwordfile "~/.newsboat/inoreader-pw.txt")inoreader-show-special-feeds(parameters:[yes/no]; default value:yes) โ if set and Inoreader support is in play, those "special feeds" like "Starred items" (your starred articles) and "Shared items" (your shared articles) show up in your subscription list. (example:inoreader-show-special-feeds "no")itemview-title-format(parameters: <format>; default value:"%N %V - Article '%T' (%u unread, %t total)"(localized)) โ the format of the title over in article view. Wanna know what all the format codes mean? The FORMAT STRINGS section of the Newsboat manual has you covered. (example:itemview-title-format "Article '%T'")keep-articles-days(parameters: <number>; default value:0) โ set it to anything above0and only articles published within the last <number> days stick around โ everything older gets deleted. Set it to0and this option just isn't active at all. โ ๏ธ real talk: flipping this setting will not resurrect articles that already got deleted. As of right now there's genuinely no non-hacky way to bring back deleted articles. Gone is gone bestie. (example:keep-articles-days 30)keep-forever-if-flagged-with(parameters: <string>; default value:"") โ if an item is older than whatkeep-articles-daysallows, it still won't be deleted as long as it's carrying one of the flags you list here. Protection detail. ๐ก๏ธ (example:keep-forever-if-flagged-with f)macro(parameters: <macro key> <command list>[-- "<macro description>"]; default value: n/a) โ defines a macro key plus the list of commands that fire off when you hit the macro prefix and then that key. You can optionally tack on a description too โ and if you do, it shows up in the help form. (example:macro k open; reload; quit -- "enter feed to reload it")mark-as-read-on-hover(parameters:[yes/no]; default value:no) โ set it toyesand literally every article you land on in the article list gets marked as read. Aggressive but valid. (example:mark-as-read-on-hover yes)max-browser-tabs(parameters: <number>; default value:10) โ caps how many articles can get opened in a browser when you use theopen-all-unread-in-browseroropen-all-unread-in-browser-and-mark-readcommands. No more 47-tab chaos. (example:max-browser-tabs 4)max-download-speed(parameters: <number>; default value:0) โ set it above0and every download gets throttled to that limit, in KB/s. (example:max-download-speed 50)max-items(parameters: <number>; default value:0) โ the max number of articles a feed is allowed to hold. Cross the threshold and the old ones get dropped. Set it to0and everything stays, forever. (example:max-items 100)miniflux-flag-save(parameters: <flag>; default value:"") โ if set and Miniflux support is on, every article flagged with your chosen flag gets saved to the external service you configured on your Miniflux instance. (example:miniflux-flag-save "b")miniflux-flag-star(parameters: <flag>; default value:"") โ if set and Miniflux support is on, every article flagged with your chosen flag gets "starred" in Miniflux and lands in the "Starred items" list. (example:miniflux-flag-star "b")miniflux-login(parameters: <username>; default value:"") โ sets the username Miniflux uses. (example:miniflux-login "admin")miniflux-min-items(parameters: <number>; default value:100) โ how many articles get loaded from Miniflux per feed. (example:miniflux-min-items 20)miniflux-password(parameters: <password>; default value:"") โ configures the password for Miniflux. Double quotes and backslashes inside it need escaping. (example:miniflux-password "here_goesAquote:\"")miniflux-passwordeval(parameters: <command>; default value:"") โ the more secure route: hand over an external command, it gets evaluated during login, and your password comes from there. Perfect for reading it out of a gpg-encrypted file or your system keyring. โจ (example:miniflux-passwordeval "gpg --decrypt ~/.newsboat/miniflux-password.gpg")miniflux-passwordfile(parameters: <path>; default value:"") โ the other option: keep your plaintext password somewhere else on your system. (example:miniflux-passwordfile "~/.newsboat/miniflux-pw.txt")miniflux-show-special-feeds(parameters:[yes/no]; default value:yes) โ if set and Miniflux support is on, a "Starred items" feed (packed with your starred/favourited articles) appears in your subscription list. (example:miniflux-show-special-feeds "no")miniflux-token(parameters: <API Token>; default value:"") โ sets the API Token Miniflux uses. (example:miniflux-token "E-uTqU8r55KucuHz26tJbXfrZVRndwY_mZAsEfcC8Bg=")miniflux-tokeneval(parameters: <command>; default value:"") โ the more secure alternative to the option above: give it an external command that's evaluated during login, and that's where your token comes from. Great for reading a token out of a gpg-encrypted file or your system keyring. (example:miniflux-tokeneval "gpg --decrypt ~/.newsboat/miniflux-token.gpg")miniflux-tokenfile(parameters: <API Token>; default value:"") โ another alternative: just store your plaintext token somewhere else on your system. (example:miniflux-tokenfile "~/.newsboat/miniflux-token.txt")miniflux-url(parameters: <url>; default value:"") โ configures the URL where the Miniflux installation you wanna use actually lives. (example:miniflux-url "https://example.com/miniflux/")newsblur-login(parameters: <login>; default value:"") โ sets your NewsBlur login for NewsBlur support. (example:newsblur-login "your-login")newsblur-min-items(parameters: <number>; default value:20) โ how many articles get loaded from NewsBlur per feed. (example:newsblur-min-items 100)newsblur-password(parameters: <password>; default value:"") โ your NewsBlur password for NewsBlur support. Double quotes and backslashes inside it need escaping. (example:newsblur-password "here_goesAquote:\"")newsblur-passwordeval(parameters: <command>; default value:"") โ more secure version of the above: an external command gets evaluated during login, and that's how your password shows up. Ideal for pulling it from a gpg-encrypted file or your system keyring. ๐ซถ (example:newsblur-passwordeval "gpg --decrypt ~/.newsboat/newsblur-password.gpg")newsblur-passwordfile(parameters: <path>; default value:"") โ the other other alternative: store your plaintext password somewhere else on your system. (example:newsblur-passwordfile "~/.newsboat/newsblur-pw.txt")newsblur-url(params:<url>; default:"https://newsblur.com") โ this is where you tell Newsboat where your NewsBlur instance lives. (example:newsblur-url "https://localhost") ๐ฆnotify-always(params:[yes/no]; default:no) โ set it tonoand notifications only pop off when there's actually new feeds or articles, bestie. set it toyesand you get notified no matter what. (example:notify-always yes) ๐notify-beep(params:[yes/no]; default:no) โyesmeans the speaker goes beep on new articles. iconic honestly. (example:notify-beep yes) ๐notify-format(params:<string>; default:"Newsboat: finished reload, %f unread feeds (%n unread articles total)"(localized)) โ the format string used for formatting your notifications. (example:notify-format "%d new articles (%n unread articles, %f unread feeds)") โจnotify-program(params:<command>; default:"") โ set this and the program you name gets run when new articles arrive (via a reload), or whennotify-alwaysisyes. the first parameter handed to the called program is the notification message. wanna pass other hard-coded args? write a lil wrapper shell script and use that as your<command>instead. (example:notify-program "~/bin/my-notifier") ๐ซถnotify-screen(params:[yes/no]; default:no) โ set it toyesand a "privacy message" gets sent to the terminal, containing a notification about new articles. this is highkey useful if you use terminal emulations like GNU screen that implement privacy messages. (example:notify-screen yes) ๐ธnotify-xterm(params:[yes/no]; default:no) โyesmeans the xterm window title gets set to a notification message about new articles. (example:notify-xterm yes) ๐ocnews-flag-star(params:<character>; default:"") โ if set and you're using ownCloud News support, then every article flagged with the flag you specify gets "starred" in ownCloud News. (example:ocnews-flag-star "s") โญocnews-login(params:<username>; default:"") โ sets the username to use with your ownCloud instance. (example:ocnews-login "user") ๐ocnews-password(params:<password>; default:"") โ configures the password to use with your ownCloud instance. double quotes and backslashes inside it should be escaped, fr. (example:ocnews-password "here_goesAquote:\"") ๐ocnews-passwordeval(params:<command>; default:"") โ a more secure alternative to the above: hand over your password from an external command that gets evaluated during login. this can read your password from a gpg encrypted file or your system keyring. (example:ocnews-passwordeval "gpg --decrypt ~/.newsboat/ocnews-password.gpg") ๐งocnews-passwordfile(params:<path>; default:"") โ another alternative: store your plaintext password elsewhere on your system. (example:ocnews-passwordfile "~/.newsboat/ocnews-pw.txt") ๐ocnews-url(params:<url>; default:"") โ configures the URL where the ownCloud instance resides. (example:ocnews-url "https://localhost/owncloud") ๐oldreader-flag-share(params:<flag>; default:"") โ if set and The Old Reader support is used, then all articles flagged with the specified flag get "shared" in The Old Reader, so the people who follow you can see them. (example:oldreader-flag-share "a") ๐oldreader-flag-star(params:<flag>; default:"") โ if set and The Old Reader support is used, then all articles flagged with the specified flag get "starred" in The Old Reader and show up in the list of "Starred items". (example:oldreader-flag-star "b") โญoldreader-login(params:<login>; default:"") โ this variable sets your The Old Reader login for The Older Reader support. (example:oldreader-login "your-login") ๐ฆoldreader-min-items(params:<number>; default:20) โ this variable sets how many articles get loaded from The Old Reader per feed. (example:oldreader-min-items 100) ๐ขoldreader-password(params:<password>; default:"") โ this variable sets your The Old Reader password for The Old Reader support. double quotes and backslashes inside it should be escaped. (example:oldreader-password "here_goesAquote:\"") ๐oldreader-passwordeval(params:<command>; default:"") โ a more secure alternative to the above: supply your password from an external command that gets evaluated during login. can read your password from a gpg encrypted file or your system keyring. (example:oldreader-passwordeval "gpg --decrypt ~/.newsboat/oldreader-password.gpg") ๐งoldreader-passwordfile(params:<path>; default:"") โ another alternative: store your plaintext password elsewhere on your system. (example:oldreader-passwordfile "~/.newsboat/oldreader-pw.txt") ๐oldreader-show-special-feeds(params:[yes/no]; default:yes) โ if set and The Old reader support is used, then "special feeds" like "People you follow" (articles shared by people you follow), "Starred items" (your starred articles) and "Shared items" (your shared articles) appear in your subscription list. (example:oldreader-show-special-feeds "no") โจopenbrowser-and-mark-jumps-to-next-unread(params:[yes/no]; default:no) โ if set toyes, jump to the next unread item whenever an item is opened in the browser and marked as read. (example:openbrowser-and-mark-jumps-to-next-unread yes) ๐ฅopml-url(params:<url> ...; default:"") โ if the OPML online subscription mode is enabled, then your feed list gets taken from the OPML file found at this location. optionally you can specify more than one URL โ all the listed OPML URLs get taken into account when loading the feed list. (example:opml-url "https://host.domain.tld/blogroll.opml" "https://example.com/anotheropmlfile.opml") ๐pager(params:[<command>/internal]; default:internal) โ set it tointernaland the internal pager gets used. otherwise, the article to be displayed gets rendered into a temporary file and then shown with the pager you configured. if the command is an empty string, the content of thePAGERenvironment variable gets used. if the command contains a placeholder%f, it gets replaced with the temporary filename. (example:pager "less %f") ๐podcast-auto-enqueue(params:[yes/no]; default:no) โ set it toyesand every podcast URL found in articles gets added to the podcast download queue. peep the PODCAST SUPPORT section in the documentation for more. (example:podcast-auto-enqueue yes) ๐งprepopulate-query-feeds(params:[yes/no]; default:no) โ set it toyesand all query feeds get prepopulated with articles on startup. (example:prepopulate-query-feeds yes) ๐proxy(params:<server:port>; default:n/a) โ sets the proxy to use for downloading RSS feeds. (don't forget to actually enable the proxy withuse-proxy yes.) heads up that theNO_PROXYenvironment variable can disable the proxy for certain sites. (example:proxy localhost:3128) ๐ฐ๏ธproxy-auth(params:<auth>; default:n/a) โ sets the proxy authentication string. (example:proxy-auth user:password) ๐proxy-auth-method(params:<method>; default:any) โ sets the proxy authentication method. allowed values:any,basic,digest,digest_ie(only available with libcurl 7.19.3 and newer),gssnegotiate,ntlmandanysafe. (example:proxy-auth-method ntlm) ๐ก๏ธproxy-type(params:<type>; default:http) โ sets the proxy type. allowed values:http,socks4,socks4a,socks5andsocks5h. (example:proxy-type socks5) ๐refresh-on-startup(params:[yes/no]; default:no) โ set it toyesand all feeds get reloaded when Newsboat starts up. this is equivalent to the-rcommandline option. see alsoauto-reloadto additionally reload the feeds continuously. (example:refresh-on-startup yes) ๐reload-only-visible-feeds(params:[yes/no]; default:no) โ set it toyesand manually reloading all feeds will only reload the currently visible feeds, like if a filter or a tag is set. (example:reload-only-visible-feeds yes) ๐reload-threads(params:<number>; default:1) โ how many parallel reload threads get started when all feeds are reloaded. (example:reload-threads 3) ๐งตreload-time(params:<number>; default:60) โ how many minutes between automatic reloads. (example:reload-time 120) โฐreset-unread-on-update(params:<url> [<url>...]; default:n/a) โ names one or more feed URLs whose articles will have their unread flag reset if an article has been updated, i.e. its content changed. this is especially useful for RSS feeds where single articles get updated after publication and you wanna be notified of the updates. this option can be specified multiple times. (example:reset-unread-on-update "https://blog.fefe.de/rss.xml?html") ๐restrict-filename(params:[yes/no]; default:yes) โ set it tonoand Newsboat won't limit saved article filenames to ASCII characters. (example:restrict-filename no) ๐run-on-startup(params:<list of operations>; default:n/a) โ names one or more Newsboat operations, separated by semicolons, that get executed on Newsboat startup. (example:run-on-startup next-unread; open; random-unread; open) ๐save-path(params:<path-to-directory>; default:~/) โ the default path where articles get saved to. if you specify an invalid path, the current directory gets used. (example:save-path "~/Saved Articles") ๐พscrolloff(params:<number>; default:0) โ keeps the configured number of lines above and below the selected item in lists. configure a high number to keep the selected item in the center of the screen. (example:scrolloff 5) ๐search-highlight-colors(params:<fgcolor> <bgcolor> [<attribute> ...]; default:black yellow bold) โ this configuration command sets the highlighting colors when searching for text from the article view. for available colors and attributes, see the Colors section. (example:search-highlight-colors white black bold) ๐จsearchresult-title-format(parameters:<format>; default value:"%N %V - Search results for '%s' (%u unread, %t total)%?F? matching filter '%F'&?"(localized)) โ this is the glow-up for the title in the search result screen. Peep the FORMAT STRINGS section of the Newsboat manual for all the format magic you can use. (example:searchresult-title-format "Search result")selectfilter-title-format(parameters:<format>; default value:"%N %V - Select Filter"(localized)) โ the title format for the filter selection dialog, bestie. FORMAT STRINGS section of the Newsboat manual has the deets on available formats. (example:selectfilter-title-format "Select Filter")selecttag-format(parameters:<format>; default value:"%4i %T (%u)") โ formats each line in the "Select tag" dialog, fr fr. Check the FORMAT STRINGS section in the docs for more. (example:selecttag-format "[%2i] %T (%n unread articles in %f feeds, %u feeds total)")selecttag-title-format(parameters:<format>; default value:"%N %V - Select Tag"(localized)) โ title format for the tag selection dialog, periodt. FORMAT STRINGS section of the Newsboat manual has the format details. (example:selecttag-title-format "Select Tag")show-keymap-hint(parameters:[yes/no]; default value:yes) โ set it tonoand the keymap hints just don't show up anymore. (Those hints are usually chilling at the bottom of the screen, but lowkey check theswap-title-and-hintssetting.) (example:show-keymap-hint no)show-read-articles(parameters:[yes/no]; default value:yes) โyesmeans every article in a feed shows up in the article list.nomeans only the unread ones get listed. (example:show-read-articles no)show-read-feeds(parameters:[yes/no]; default value:yes) โyesshows all feeds, even the ones with zero unread articles.nomeans only feeds with one or more unread articles are listed. (example:show-read-feeds no)show-title-bar(parameters:[yes/no]; default value:yes) โ set it tonoand the title bar vanishes. (The title bar is usually up top, but see theswap-title-and-hintssetting.) (example:show-title-bar no)ssl-verifyhost(parameters:[yes/no]; default value:yes) โ if you set it tono, it skips verifying the certificate's name against the host. (example:ssl-verifyhost no)ssl-verifypeer(parameters:[yes/no]; default value:yes) โ set tonoand it skips verifying the peer's SSL certificate. (example:ssl-verifypeer no)suppress-first-reload(parameters:[yes/no]; default value:no) โ if set toyes, then that very first automatic reload gets suppressed whenauto-reloadis set toyes. (example:suppress-first-reload yes)swap-title-and-hints(parameters:[yes/no]; default value:no) โ set toyesand the title (usually up top) and the keymap hints (usually at the bottom) swap places, iconic behavior. You can hide both bars entirely with theshow-keymap-hintandshow-title-barsettings. (example:swap-title-and-hints yes)text-width(parameters:<number>; default value:0) โ if you set it to a number greater than0, all HTML gets rendered to this max line length, or the terminal width โ whichever is smaller. If it's0, the terminal width is always used in the article view, whilepipe-to,save, andsave-allwrap at80columns instead. Does not apply when you're using an external renderer or viewing the source. Also heads up: the "Link" header and "Links" section won't be affected by it โ they hold URLs which are better left unwrapped. (example:text-width 72)toggleitemread-jumps-to-next(parameters:[yes/no]; default value:yes) โ set toyes, and you jump to the next item when you toggle an item's read status in the article list. Set tono, and the cursor just stays put on the toggled item. (example:toggleitemread-jumps-to-next no)toggleitemread-jumps-to-next-unread(parameters:[yes/no]; default value:no) โ if set toyes, you jump to the next unread item when toggling an item's read status in the article list. Ifno, then the behavior is dictated bytoggleitemread-jumps-to-next. (example:toggleitemread-jumps-to-next-unread yes)ttrss-flag-publish(parameters:<character>; default value:"") โ if you set this and you're using Tiny Tiny RSS support, then all articles flagged with the flag you specify get marked as "published" in Tiny Tiny RSS. (example:ttrss-flag-publish "b")ttrss-flag-star(parameters:<character>; default value:"") โ if set and Tiny Tiny RSS support is in play, then all articles flagged with the flag you specify get "starred" in Tiny Tiny RSS. (example:ttrss-flag-star "a")ttrss-login(parameters:<username>; default value:"") โ sets the username for use with Tiny Tiny RSS. (example:ttrss-login "admin")ttrss-mode(parameters:[multi/single]; default value:multi) โ configures the mode you use Tiny Tiny RSS in. In single-user mode, login and password are used for HTTP authentication, while in multi-user mode they're used for authenticating with Tiny Tiny RSS. (example:ttrss-mode "single")ttrss-password(parameters:<password>; default value:"") โ configures the password for use with Tiny Tiny RSS. Double quotes and backslashes inside it should be escaped, no cap. (example:ttrss-password "here_goesAquote:\"")ttrss-passwordeval(parameters:<command>; default value:"") โ a more secure alternative to the one above, bestie: hand over your password from an external command that gets evaluated during login. Great for reading your password from a gpg encrypted file or your system keyring. (example:ttrss-passwordeval "gpg --decrypt ~/.newsboat/ttrss-password.gpg")ttrss-passwordfile(parameters:<path>; default value:"") โ another option, storing your plaintext password elsewhere on your system. (example:ttrss-passwordfile "~/.newsboat/ttrss-pw.txt")ttrss-url(parameters:<url>; default value:"") โ configures the URL where the Tiny Tiny RSS installation you want to use actually lives. (example:ttrss-url "https://example.com/ttrss/")unbind-key(parameters:<key> [<dialog>]; default value: n/a) โ unbinds key<key>, meaning nothing happens when<key>is pressed.unbind-keyuses the syntax for special keys as specified in the Key section of Old Style Key Bindings. If you pass"-a"as<key>, all currently bound keys become unbound. Optionally you can specify a dialog (for the list of available dialogs, seebind-keyabove) โ if you specify one, the key binding is only unbound for that specific dialog. (example:unbind-key R)urls-source(parameters:<source>; default value:"local") โ this configuration command sets the source where URLs get retrieved from. By default it's the urls file. Alternatively you can set it toopml, which enables Newsboat's OPML online subscription mode; tottrsswhich enables Newsboat's Tiny Tiny RSS support; tooldreader, which enables Newsboat's The Old Reader support; tonewsblur, which enables NewsBlur support; tofeedbinfor Feedbin support; tofeedhqfor FeedHQ support; tofreshrssfor FreshRSS support; toocnewsfor ownCloud News support; toinoreaderfor Inoreader support; or tominifluxfor Miniflux support. Query feed specifications will be read from the local urls file regardless of this setting. (example:urls-source "oldreader")urlview-title-format(parameters:<format>; default value:"%N %V - URLs"(localized)) โ the title format in the URL view. See the FORMAT STRINGS section of the Newsboat manual for details on available formats. (example:urlview-title-format "URLs")use-proxy(parameters:[yes/no]; default value:no) โ set toyesand the configured proxy gets used for downloading the RSS feeds. (example:use-proxy yes)user-agent(parameters:<string>; default value:"") โ if you set it to a non-zero-length string, that value becomes the HTTP User-Agent header for all HTTP requests. (example:user-agent "Lynx/2.8.5rel.1 libwww-FM/2.14")wrap-scroll(parameters:[yes/no]; default value:no) โ set toyesand moving down while on the last item in a list wraps around to the top, and vice versa. Obsessed. (example:wrap-scroll yes)
โจ AVAILABLE OPERATIONS โจ
okay bestie, this is the big one โ every single thing you can do in Newsboat, with the key it's bound to out of the box ๐. You can rebind literally all of these (iykyk, go check the CONFIGURATION COMMANDS part), but here's the stock vibe:
open(default key: ENTER) โ open whatever feed or article you've currently got selected. the moment of truth โจquit(default key: Q) โ bail on the program, or just pop back to the previous dialog, depending on where you are. context is everything ๐hard-quit(default key: Shift + Q) โ quit with zero confirmation. no "are you sure", no nothing. bye ๐reload(default key: R) โ reload the feed you're currently on.reload-all(default key: Shift + R) โ reload every feed. all of them. go get a snack while it runs ๐mark-feed-read(default key: Shift + A) โ mark every article in the currently selected feed as read.mark-all-feeds-read(default key: Shift + C) โ mark articles in all feeds read. inbox zero energy, but for feeds ๐mark-all-above-as-read(default key:n/a) โ mark everything above the current spot as read.save(default key: S) โ export the currently selected article to a plain text file, word-wrapped according to thetext-widthsetting.save-all(default key:n/a) โ export all articles from the currently selected feed to plain text files, word-wrapped according to thetext-widthsetting.next-unread(default key: N) โ jump to the next unread article.prev-unread(default key: P) โ jump to the previous unread article.next(default key: Shift + J) โ jump to the next list entry.prev(default key: Shift + K) โ jump to the previous list entry.random-unread(default key: Ctrl + K) โ jump to a random unread article. chaos mode, lowkey iconic ๐ฒopen-in-browser(default key: O) โ use the browser to open the URL tied to the current article, feed, or entry in the URL view.open-in-browser-noninteractively(default key:n/a) โ same idea asopen-in-browser: use the browser to open the URL tied to the current article, feed, or entry in the URL view. BUT โ and this is the whole point โ the output of the browser (stdoutandstderr) is not shown, and the browser doesn't receive keyboard input. you'd probably wanna add&at the end of the browser command to shove it into the background, too. ghost mode ๐ซฅopen-in-browser-and-mark-read(default key: Shift + O) โ use the browser to open the URL tied to the current article, or entry in the URL view. when you use it in the article list, it also marks the article as read. multitasking queen ๐open-all-unread-in-browser(default key:n/a) โ open every unread URL in the current feed. browser tabs go brrr ๐open-all-unread-in-browser-and-mark-read(default key:n/a) โ open all the unread URLs in the current feed and mark them as read.help(default key: ?) โ run the help screen.toggle-source-view(default key: Ctrl + U) โ flip between the HTML view and the source view in the article view.toggle-article-read(default key: Shift + N) โ toggle the read flag on the currently selected article, and clear the delete flag if it's set.toggle-show-read-feeds(default key: L) โ toggle whether read feeds show up in the feed list at all.show-urls(default key: U) โ show every URL in the article in a list (basically theurlviewvibe).clear-tag(default key: Ctrl + T) โ clear the current tag.set-tag(default key: T) โ pick a tag.open-search(default key: /) โ open the search dialog. when you search from the article list, the search only applies to the articles of the current feed; otherwise it applies to all articles.goto-url(default key: #) โ open the URL dialog, then open whatever URL you typed in the browser.one(default key: 1) โ open URL 1 in the browser.two(default key: 2) โ open URL 2 in the browser.three(default key: 3) โ open URL 3 in the browser.four(default key: 4) โ open URL 4 in the browser.five(default key: 5) โ open URL 5 in the browser.six(default key: 6) โ open URL 6 in the browser.seven(default key: 7) โ open URL 7 in the browser.eight(default key: 8) โ open URL 8 in the browser.nine(default key: 9) โ open URL 9 in the browser.zero(default key: 0) โ open URL 10 in the browser. yes, zero is the tenth one, don't ask ๐cmd-one(default key: 1) โ start cmdline with1.cmd-two(default key: 2) โ start cmdline with2.cmd-three(default key: 3) โ start cmdline with3.cmd-four(default key: 4) โ start cmdline with4.cmd-five(default key: 5) โ start cmdline with5.cmd-six(default key: 6) โ start cmdline with6.cmd-seven(default key: 7) โ start cmdline with7.cmd-eight(default key: 8) โ start cmdline with8.cmd-nine(default key: 9) โ start cmdline with9.enqueue(default key: E) โ add the podcast download URL of the current article (if one's found) to the podcast download queue. peep the PODCAST SUPPORT section for the deets ๐งedit-urls(default key: Shift + E) โ edit the list of subscribed URLs. if a command is specified, Newsboat replaces the placeholders and then runs the command. Newsboat supports these placeholders in the command:%f(path to urls file),%L(line number of the current feed โ or the feed of the currently selected article โ in the urls file, or0if the feed URL originates outside of the urls file). if no command is specified, Newsboat starts the editor configured through theVISUALenvironment variable (if that's unset,EDITORis used; fallback:vi). when editing finishes, Newsboat reloads the URLs file. example config:
bind E feedlist,articlelist,searchresultslist edit-urls "vim +%L %f"
reload-urls(default key: Ctrl + R) โ reload the URLs configuration file.redraw(default key: Ctrl + L) โ redraw the screen. when it's looking glitchy, hit it โจcmdline(default key: :) โ open the command line with an optional string already filled in. example configuration:
bind c everywhere cmdline "source ~/.newsboat/config"
set-filter(default key: Shift + F) โ set a filter.select-filter(default key: F) โ select a predefined filter.clear-filter(default key: Ctrl + F) โ clear the filter that's currently set.bookmark(default key: Ctrl + B) โ bookmark the currently selected article or URL.edit-flags(default key: Ctrl + E) โ edit the flags on the currently selected article.next-unread-feed(default key: Ctrl + N) โ go to the next feed that has unread articles. this one only works from the article list.prev-unread-feed(default key: Ctrl + P) โ go to the previous feed that has unread articles. also only works from the article list.next-feed(default key: J) โ go to the next feed. only works from the article list.prev-feed(default key: K) โ go to the previous feed. only works from the article list.delete-article(default key: Shift + D) โ delete the currently selected article.delete-all-articles(default key: Ctrl + D) โ delete all articles in the articlelist. โ ๏ธ careful bestie, and read this next bit properly: the articlelist might contain only a subset of a feed's articles (because of filters, or becauseshow-read-articlesisno), or it might contain a mix of articles from different feeds (if you're looking at a query feed) โ either way,delete-all-articlesaffects just those articles, not all articles of the respective feed(s). it does what it says, not what you assumed ๐ญpurge-deleted(default key: $) โ purge all articles marked as deleted from the article list. gone gone, no takebacks ๐view-dialogs(default key: V) โ view the list of open dialogs.close-dialog(default key: Ctrl + X) โ close the currently selected dialog.next-dialog(default key: Ctrl + V) โ go to the next dialog.prev-dialog(default key: Ctrl + G) โ go to the previous dialog.pipe-to(default key: |) โ pipe the article to a command. the text gets word-wrapped according to thetext-widthsetting.sort(default key: G) โ sort feeds/articles by interactively choosing the sort method.rev-sort(default key: Shift + G) โ sort feeds/articles by interactively choosing the sort method, but reversed. the remix ๐up(default key: UP) โ go up one item in the list.down(default key: DOWN) โ go down one item in the list.pageup(default key: PPAGE) โ go up one page in the list.pagedown(default key: NPAGE) โ go down one page in the list.halfpageup(default key:n/a) โ go up half a page.halfpagedown(default key:n/a) โ go down half a page.home(default key: HOME) โ go to the first item in the list.end(default key: END) โ go to the last item in the list.macro-prefix(default key: ,) โ start macro execution. the next key you press picks the actual macro and runs it. โจswitch-focus(default key: TAB) โ switch focus between widgets. right now this only applies to thefilebrowseranddirbrowsercontexts.goto-title(default key:n/a) โ go to the item whose title contains the string you specify (case-insensitive).prevsearchresults(default key: Z) โ go back to the previous search results, if there were any. this one only works fromsearchresultslist.article-feed(default key:n/a) โ go to the feed of the currently selected article.
๐ธ FORMAT STRINGS ๐ธ
so Newsboat has this genuinely powerful format string system, and it exists so you can configure how all sorts of stuff looks โ like how entries show up in the feed list, or in the article list. customisation queen behaviour ๐
format strings are similar to the ones you'd find in the printf function in the C programming language. a format sequence starts with the % character, then comes the optional alignment indication: positive numbers mean the text inserted for that sequence gets padded on the left to a total width given by that number, while negative numbers mean padding on the right. after the padding indication comes the actual sequence identifier, which is usually a single letter. %=[width][identifier] centers the sequence โ and if w=0, the whole width of the window gets used. ๐
on top of that, Newsboat gives you other, more powerful sequences, like %>[char], which says the text to the right of the sequence gets aligned right on the screen, and the characters between the text on the left and the text on the right get filled in with [char]. another powerful format is the conditional sequence, %?[char]?[format 1]&[format 2]?: โ if the text of the sequence identifier [char] contains any non-whitespace characters, then [format 1] gets evaluated and inserted; otherwise [format 2] gets evaluated and inserted. the & and [format 2] are optional, i.e. if the identifier's text is empty, then an empty string gets inserted. ๐
the following tables show what sequence identifiers are available for which format:
๐ Table 1 โ Available Identifiers for feedlist-format ๐
bestie these are the little letters you drop into your feedlist format string, and each one pulls a different lil fact about your feed. pick your faves:
dโ Feed description ๐iโ Feed index ๐ขlโ Feed link ๐Lโ Feed RSS URL ๐nโ "unread" flag field ๐Sโ download status ๐ถtโ Feed title ๐ท๏ธTโ First tag of a feed in the URLs file ๐uโ "unread/total" field ๐งฎUโ "unread" field ๐ฌcโ "total" field ๐๏ธ
okay so while a reload-all operation is running, that download status is literally narrating what's happening to each feed, and it can be:
- "to be downloaded" โ shown as
_โณ - "currently downloading" โ shown as
.๐ - successfully downloaded โ shown as
(a space, yes really, she's quiet) โ - "download error" โ shown as
x๐
๐ฆ Table 2 โ Available Identifiers for articlelist-format ๐ฆ
now for the article list, your format string options go feral (affectionate):
aโ Article author โ๏ธDโ Publication date. and bestie, this can be tweaked further withdatetime-format๐fโ Two characters, okay listen: 1)"N"if article is unread,"D"if article is deleted, a space otherwise; 2)"!"if article has flags, a space otherwise. two whole moods in two chars ๐nโ "unread" field ๐dโ "deleted" field ๐๏ธFโ Article flags ๐ฉiโ Article index ๐ขtโ Article title ๐ท๏ธTโ If the article list displays articles from different feeds, then this identifier contains the title of the feed to which the article belongs. ๐Lโ Article length ๐eโ Article enclosure URL ๐
๐ธ Table 3 โ Available Identifiers for selecttag-format ๐ธ
tag picker screen? she's got her own identifiers, and she's serving:
iโ Line's index in the list ๐ขTโ The tag this line corresponds to ๐ท๏ธfโ Number of unread feeds under this tag ๐ฌnโ Number of unread articles in feeds tagged with this tag ๐ฐuโ Number of feeds tagged with this tag ๐๏ธ
โจ Table 4 โ Available Identifiers for notify-format โจ
and for your notifications, the little pop-up moment, here's what you can reference:
nโ Number of unread articles ๐ฐfโ Number of unread feeds ๐ฌdโ Number of new unread articles (i.e. that were added through the last reload) ๐Dโ Number of new unread feeds (i.e. that were added through the last reload) ๐
๐ Table 5 โ Available Identifiers for podlist-format ๐ง
okay so when you're formatting your podcast list, these are the lil letters you can drop in. each one is a whole vibe:
iโ the download index ๐ซถdโ how much you've currently downloaded, in megabytes, and it shows one digit of precision โจtโ the total download size, in megabytes, also with one digit of precision ๐pโ the percentage you've downloaded, one digit of precision ๐kโ the download speed, two digits of precision, always in KB/s. note bestie: it does not include the"KB/s"text, so don't go looking for it ๐Kโ the download speed, two digits of precision, but human readable this time โ it automatically switches between KB/s, MB/s and GB/s ๐Sโ the status of the download. it'll be one of these:"queued","downloading","ready","canceled","deleted","missing","played","finished"or"failed"๐uโ the url of the download ๐Fโ the absolute filename of the download, from the root directory. like,~/downloads/podcast.mp3โ/home/name/downloads/podcast.mp3๐ฆbโ the basename of the download. like,/home/name/downloads/podcast.mp3โpodcast.mp3๐ธ
๐ Table 6 โ Available Identifiers for download-path and download-filename-format ๐พ
these ones are for naming your files and folders. lowkey the most useful set fr fr:
uโ the filename part of the download URL. it may be empty. it may also include a query string (https://en.wikipedia.org/wiki/Query_string) ๐nโ the name of the podcast feed ๐Nโ the name of the podcast feed, but it keeps the original feed's name, even when you selected it through a query feed. iconic ๐hโ the name of the podcast feed's hostname ๐ฅ๏ธtโ the title of the podcast episode ๐eโ the extension of the podcast episode ๐Fโ the publication date of the podcast episode, formatted asyyyy-mm-dd๐๏ธmโ the month when the podcast episode was published ๐bโ the abbreviated month name when the podcast episode was published ๐ธdโ the day when the podcast episode was published โ๏ธHโ the hour when the podcast episode was published ๐Mโ the minute when the podcast episode was published ๐Sโ the second when the podcast episode was published ๐ฐ๏ธyโ the year when the podcast episode was published, formatted asyyโญYโ the year when the podcast episode was published, formatted asyyyyโจ
๐ Examples ๐
steal these, they're literally right here:
feedlist-format "%4i %n %11u %t"
articlelist-format "%4i %f %D %?T?|%-17T| ?%t"
notify-format "%d new articles (%n unread articles, %f unread feeds)"
podlist-format "%4i [%-5p %%] %-12S %F"
ok wait, that %% in the podlist one? that's the literal percent sign, not a format code. don't let it jumpscare you bestie ๐
๐ DIALOG TITLES ๐
okay so bestie, you can customize the title format of literally every dialog in Newsboat ๐ Here's the full rundown: each dialog, the config variable that controls its title, and what it defaults to. And a lil list of the format identifiers so you actually know what those % things mean.
heads up tho ๐ซถ the title formats are localized โ so if you're running a different locale that Newsboat supports, the actual title text you see might be different unless you customize it yourself. iykyk.
Table 7. Dialog Title Formats โจ
- Feed List โ config variable:
feedlist-title-formatโ default:%N %V - %?F?Feeds&Your feeds? (%u unread, %t total)%?F? matching filter '%F'&?%?T? - tag '%T'&? - Article List โ config variable:
articlelist-title-formatโ default:%N %V - Articles in feed '%T' (%u unread, %t total)%?F? matching filter '%F'&? - %U - Search Result โ config variable:
searchresult-title-formatโ default:%N %V - Search results for '%s' (%u unread, %t total)%?F? matching filter '%F'&? - File Browser โ config variable:
filebrowser-title-formatโ default:%N %V - %?O?Open File&Save File? - %f - Directory Browser โ config variable:
dirbrowser-title-formatโ default:%N %V - %?O?Open Directory&Save File? - %f - Help โ config variable:
help-title-formatโ default:%N %V - Help - Select Tag Dialog โ config variable:
selecttag-title-formatโ default:%N %V - Select Tag - Select Filter Dialog โ config variable:
selectfilter-title-formatโ default:%N %V - Select Filter - Article View โ config variable:
itemview-title-formatโ default:%N %V - Article '%T' (%u unread, %t total) - URL View โ config variable:
urlview-title-formatโ default:%N %V - URLs - Dialog List โ config variable:
dialogs-title-formatโ default:%N %V - Dialogs
Table 8. Common Title Format Identifiers ๐
these two show up in like every title format, so memorize them fr fr:
Nโ Name of the program, i.e."Newsboat"๐Vโ Program version โญ
๐ธ Table 9. Feed List Title Format Identifiers ๐ธ
Tโ the tag you've currently got selected (and it's just empty if you haven't picked one, no biggie)tโ how many feeds there are in totaluโ how many of those feeds are unreadUโ how many articles are unreadFโ the filter expression that's active right now (empty when no filter is active)
๐ Table 10. Article List Title Format Identifiers ๐
Tโ the feed's titleUโ the feed's URLuโ number of unread articlestโ number of total articlesFโ the filter expression currently in play (empty if no filter is active)
๐ Table 11. Search Result Title Format Identifiers ๐
sโ the search phraseโฆโ plus literally all the identifiers supported byarticlelist-title-format(peep the table right above this one, bestie)
๐ Table 12. File Browser Title Format Identifiers ๐
fโ the current pathOโ non-empty when the file browser is in open mode, empty when it's in save mode
๐๏ธ Table 13. Directory Browser Title Format Identifiers ๐๏ธ
fโ the current pathOโ non-empty when the directory browser is in open mode, empty when it's in save mode
๐ฐ Table 14. Article View Title Format Identifiers ๐ฐ
Tโ the article's titleFโ the feed's titleuโ number of unread articlestโ number of total articles
โจ TAGGING โจ
okay so this is one of my fave features fr. Newsboat lets you categorize your RSS feeds โ or "tag" them, as we say around here ๐ . Every single RSS feed can have 0 or more tags attached to it. Then, inside Newsboat, you can choose to only show the feeds that match a certain tag. It's giving flexible. It's giving powerful. It's giving your feeds finally organized the way they deserve ๐
Usually your urls file has one RSS feed URL per line. To give a feed a tag, you just stick it on as a single word, separated by blanks like a space or a tab. If your tag needs to have spaces in it, you must wrap it in quotes (") โ peep the example below. A urls file could lowkey look like this:
https://blog.fefe.de/rss.xml?html interesting conspiracy news "cool stuff"
https://rss.orf.at/news.xml news orf
https://www.heise.de/newsticker/heise.rdf news interesting
So now when you launch Newsboat with this config, you can hit T to pick a tag. Pick the news tag and boom โ all three RSS feeds show up. Hit T again and select the conspiracy tag and you'll only see the https://blog.fefe.de/rss.xml?html RSS feed. And when you press Ctrl + T, that clears the current tag and shows you all the RSS feeds again, no matter what tags they've got. periodt.
A special type of tag is the ones that start with the tilde character (~) ๐. When Newsboat finds one of those, the feed title gets set to the tag name (minus the ~ character itself). These tags get ignored whenever any kind of "first tag" property is used. So with this feature you can give your feeds literally any title you want in your feed list:
https://rss.orf.at/news.xml "~ORF News"
Another special type is tags that start with the exclamation mark (!) ๐ฑ. When Newsboat finds one of those, the feed gets hidden from the regular list of feeds, and its content can only be found through a query feed.
https://rss.orf.at/news.xml ! news
http://feeds.bbci.co.uk/news/world/rss.xml ! news
"query:News from around the globe:tags # \"news\""
In this example, the first two feeds won't show up in the feedlist at all โ but their articles are still fully reachable through the query feed titled News from around the globe. And the "hidden" tags in this example don't even have names, because their only job is hiding the feed they're tagging. sneaky iconic behavior tbh ๐ซถ
๐ธ SCRIPTS AND FILTERS ๐ธ
okay so bestie, Newsboat has support for Snownews extensions โจ The RSS feed readers Snownews and Liferea share a common way of extending the readers with custom scripts. Two mechanisms, namely execurl and filter type scripts, are available and supported by Newsboat.
An execurl script can be any program that gets executed and whose output is interpreted as RSS feed, while filter scripts are fed with the content of a configured URL and whose output is interpreted as RSS feed. ๐
The configuration is simple and straight-forward. Just add to your urls file configuration lines like the following ones:
exec:~/bin/execurl-script
filter:~/bin/filter-script:https://some.test/url
The first line shows how to add an execurl script to your configuration: start the line with exec: and then immediately append the path of the script that shall be executed. If this script requires additional parameters, simply use quotes (see Using Double Quotes for details):
"exec:~/bin/execurl-script param1 param2"
The second line shows how to add a filter script to your configuration: start the line with filter:, then immediately append the path of the script, then append a colon (:), and then append the URL of the file that shall be fed to the script. Again, if the script requires any parameters, simply quote the whole thing:
"filter:~/bin/filter-script param1 param2:https://url/foobar"
In both cases, the tagging feature as described above is still available:
exec:~/bin/execurl-script tag1 tag2 "quoted tag"
filter:~/bin/filter-script:https://some.test/url tag3 tag4 tag5
If you need to write your own extension, see this short guide <https://web.archive.org/web/20090724045314/http://kiza.kcore.de/software/snownews/snowscripts/writing> for an introduction. A collection of existing scripts <https://sourceforge.net/p/snownews/code/ci/de3bd8b28191c4d4bc1be18275786613bcbc0c94/tree/docs/untested/> and filters <https://sourceforge.net/p/snownews/code/ci/9fb45e4cdf1cf9dea55b9af66c13a4c238809851/tree/docs/filters/> might help, too. ๐ซถ
Newsboat comes with an example exec script which shows one way to generate an RSS channel. It also includes a way to see which exact arguments are passed to the script by Newsboat. This example can be found in the doc/examples subdirectory.
๐ KILLFILES ๐
Sometimes, a user is confronted with certain content they don't want to read, e.g. on topics the user is not interested in or articles written by certain people. In Usenet, such functionality within software is traditionally called a "killfile", i.e. based on the content of this "killfile", articles that match certain conditions do not get displayed and are not presented to the user at all. ๐
In Newsboat, such a "killfile" can be implemented on a per-article basis via the configuration file. The most important configuration command for this is ignore-article:
ignore-article "https://synflood.at/blog/index.php?/feeds/index.rss2" "title =~ \"newsboat\""
ignore-article "regex:https?://nitter.net/.*" "title =~ \"^RT by\""
ignore-article "*" "title =~ \"Gentoo\""
It takes two parameters. The first one is either:
- The URL of a feed.
- A pattern prefixed with
regex:. The pattern must be a POSIX extended regular expression<https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/basedefs/V1_chap09.html>, which will be matched case-insensitive. "*"to match any feed (asterisk is not a pattern, glob or regexโwe simply reserve it to mean "all feeds").
The second argument is a filter expression for an article, probably in double quotes to preserve spaces inside. If Newsboat hits an article in the specified RSS feed that matches the specified filter expression, then this article is ignored and never presented to the user. The configuration itself can contain as many ignore-article commands as desired. โจ
You can also specify the way an article is ignored. There are two ways available:
- During download: articles are ignored when a feed is downloaded and parsed, and thus won't be written to the local cache.
- During display: articles are downloaded and written to the local cache, but are ignored when a feed is displayed.
Both modes have their advantages and disadvantages: while the download ignore mode saves some storage, you cannot simply "undo" the ignore by removing it from the configuration file: if an ignored article has already vanished from a feed, it won't reappear. On the other hand, the display ignore mode requires some more space, but has the advantage that an ignore can be "undone" by removing the ignore-article configuration command from the configuration. ๐ญ
The default ignore mode is "download". You can set the ignore-mode in the configuration file:
ignore-mode "display"
๐ง PODCAST SUPPORT ๐ง
A podcast is a media file distributed over the internet using syndication feeds such as RSS, for later playback on portable players or computers. Newsboat supports downloading, saving and streaming podcasts, though an external media player is needed for playback. This support differs a bit from other podcast aggregators or "podcatchers" in how it is done. ๐
Podcast content is transported in RSS feeds via special tags called "enclosures". Newsboat recognizes these enclosures and stores the relevant information for every podcast item it finds in an RSS feed. Since version 2.0, it also recognizes and handles the Yahoo Media RSS extensions. ๐
Remote APIs don't always list those "enclosures", so podcasts might be missing from Newsboat. Such APIs are marked in the relevant section of our docs. If a note is missing but you still don't see enclosures in Newsboat, please file an issue and we'll get to the bottom of it! ๐ซถ
๐ป COMMAND LINE ๐ป
Like other text-oriented software, Newsboat contains an internal commandline to modify configuration variables ad hoc and to run own commands. It provides a flexible access to the functionality of Newsboat which is especially useful for advanced users. โจ
To start the commandline, type :. You will see a ":" prompt at the bottom of the screen, similar to tools like vi(m) or mutt. You can now enter commands. Pressing the Enter key executes the command (possibly giving feedback to the user) and closes the commandline. You can cancel entering commands by pressing the Esc key. The history of all the commands that you enter will be saved to the history.cmdline file, stored next to the cache.db file. The backlog is limited to 100 entries by default, but can be influenced by setting the history-limit configuration variable. To disable history saving, set the history-limit to 0.
The commandline provides you with some help if you can't remember the full names of commandline commands. By pressing the Tab key, Newsboat will try to automatically complete your command. If there is more than one possible completion, you can subsequently press the Tab key to cycle through all results. If no match is found, no suggestion will be inserted into the commandline. For the set command, the completion also works for configuration variable names. ๐
In addition, some common key combination such as Ctrl+G (to cancel input), Ctrl+K (to delete text from the cursor position to the end of line), Ctrl+U (to clear the whole line) and Ctrl+W (to delete the word before the current cursor position) were added.
bestie please be aware that the input history of both the command line and the search functions are saved to the filesystems, to the fileshistory.cmdlineresp.history.search(stored next to thecache.dbfile). By default, the last 100 entries are saved, but this can be configured (configuration variablehistory-limit) and also totally disabled (by setting said variable to 0). ๐ซถ
Currently, the following command line commands are available:
quitโ Quit Newsboatqโ Alias forquitsave <filename>โ Save current article to<filename>set <variable>[=<value>|&|!]โ Set (or get) configuration variable value. Specifying a!after the name of a boolean configuration variable toggles their values, a&directly after the name of a configuration variable of any type resets its value to the documented default value.tag <tagname>โ Select a certain taggoto <case-insensitive substring>โ Go to the next feed whose name contains the case-insensitive substring.source <filename> [...]โ Load the specified configuration files. This allows it to load alternative configuration files or reload already loaded configuration files on-the-fly from the filesystem.dumpconfig <filename>โ Save current internal state of configuration to file, so that it can be instantly reused as configuration file.<number>โ Jump to the *<number>*th entry in the current dialog
๐ FILES ๐
okay so by default Newsboat is a classic Unix girly and keeps everything in a "dotdir" at ~/.newsboat. very traditional, very demure. but she ALSO supports the modern way โ the XDG Base Directory Specification โ which splits your files between these two spots:
$XDG_CONFIG_HOME/newsboat/(andXDG_CONFIG_HOMEdefaults to~/.config)$XDG_DATA_HOME/newsboat/(andXDG_DATA_HOMEdefaults to~/.local/share)
here's the vibe check: if the newsboat directory exists under XDG_CONFIG_HOME, then Newsboat will use the XDG directories (and it'll create the data directory if it needs to). otherwise? Newsboat just defaults to ~/.newsboat. simple as that โจ
if you're currently living in ~/.newsboat/ but you wanna migrate to XDG directories, move your files like this:
config,urlsโ move these to$XDG_CONFIG_HOME/newsboat/cache.db,history.search,history.cmdline,queueโ move these to$XDG_DATA_HOME/newsboat/
Newsboat and Podboat also create "lock files" ๐ and no bestie, they're not being possessive, they're protecting you. these stop you from starting two instances of the same program, which would absolutely corrupt your data (not the cute kind of chaos). Newsboat and Podboat remove these files when you quit the program, so there's genuinely no need to copy them anywhere โ just be aware of them in case you write scripts that work with cache.db or queue. by default, the lock files live here:
- Newsboat in dotdir:
~/.newsboat/cache.db.lock - Newsboat in XDG:
$XDG_DATA_HOME/newsboat/cache.db.lock - Podboat in dotdir:
~/.newsboat/pb-lock.pid - Podboat in XDG:
$XDG_DATA_HOME/newsboat/.lock
Newsboat places the lock file right next to the cache file, so if you use the cache-file setting or pass the --cache-file command-line argument, the path to the lock file changes too. Podboat's lock can be placed somewhere else entirely using the --lock-file command-line argument. iconic, honestly ๐
dotfiles ๐
~/.newsboat/config
~/.newsboat/urls
XDG ๐
$XDG_CONFIG_HOME/newsboat/config
$XDG_CONFIG_HOME/newsboat/urls
Note: if theXDG_CONFIG_HOMEenvironment variable is not set, Newsboat behaves as if it was set to~/.config. she's got a fallback plan, always ๐
๐ธ ENVIRONMENT ๐ธ
these are the little environment variables that whisper sweet nothings to Newsboat and tell her how to behave:
BROWSERโ tells Newsboat what browser to use if there's nobrowsersetting in the config file. if this variable doesn't exist, a default oflynx(1)will be used. yes, lynx. retro queen ๐CURL_CA_BUNDLEโ tells Newsboat to use the specified certificate file to verify the peer. the file may contain multiple certificates, and the certificate(s) must be in PEM format.
this option is useful if your libcurl is built without useful certificate information, and you can't rebuild the library yourself. we've all been there ๐ญ
EDITORโ tells Newsboat what fallback editor to use when editing theurlsfile via theedit-urlsoperation and noVISUALenvironment variable is set. if this variable doesn't exist either, a default ofvi(1)will be used.NO_PROXYโ tells Newsboat to ignore proxy setting for certain sites. this variable contains a comma-separated list of hostnames, domain names, and IP addresses.
domain names match subdomains, i.e. example.com also matches foo.example.com. domain names that start with a dot only match subdomains, e.g. .example.com matches bar.example.com but not example.com itself. sneaky little dot, we love her.
IPv6 addresses are written without square brackets, and are matched as strings. thus ::1 doesn't match ::0:1 even though this is the same address. fr fr, she said string matching and she MEANT it ๐
PAGERโ tells Newsboat what pager to use if thepagersetting in the config file is explicitly set to an empty string.TMPDIRโ tells Newsboat to use the specified directory for storing temporary files. if this variable doesn't exist, a default of/tmpwill be used.VISUALโ tells Newsboat what editor to use when editing theurlsfile via theedit-urlsoperation. if this variable doesn't exist, theEDITORenvironment variable will be used.XDG_CONFIG_HOMEโ tells Newsboat which base directory to use for the configuration files. see also the section on files for more information.XDG_DATA_HOMEโ tells Newsboat which base directory to use for the data files. see also the section on files for more information.
๐ SEE ALSO
๐ AUTHOR
Alexander Batischev
and that's the whole page, bestie!! we did it ๐ซถ this is from the NEWSBOAT(1) manual page, dated 2026-10-05, and you can find it in the source/version info at the bottom of the page. go forth and subscribe to way too many feeds, that's your main character era โจ๐ฆ๐
๐ฆ where this page comes from
- fedora 43: newsboat 2.45-1.fc43 ยท MIT
- fedora 44: newsboat 2.45-1.fc44 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms