PODBOAT(1)
π PODBOAT(1) β podboat π
okay bestie, gather round, because we're talking about podboat, aka a podcast download manager for text terminals π§β¨. Yes she's a terminal girlie. Yes she's iconic. Let's get into it.
β¨ NAME β¨
podboat β a podcast download manager for text terminals π
πΈ SYNOPSIS πΈ
podboat [-C configfile] [-q queuefile] [-a] [-h]
π¦ DESCRIPTION π¦
So podboat is a podcast manager for text terminals, no cap. She's a helper program to Newsboat β her whole job is queueing podcast downloads into a file. Then, once those downloads are sitting pretty in the queue, podboat is what actually downloads them. Teamwork, literally π
π OPTIONS π
-h,--helpβ Display help. The "wait what do I do" button π«Ά-Cconfigfile,--config-file=configfile β Use an alternative configuration file. Different config, different vibe π-qqueuefile,--queue-file=queuefile β Use an alternative queue file. Point her at a different queue π--lock-file=lockfile β Use an alternative lock file π-a,--autodownloadβ Start automatic download of all queued files on startup. She just goes. Main character energy π₯-lloglevel,--log-level=loglevel β Generate a logfile with a certain loglevel. Valid values are1to6, which are, respectively: user error, critical, error, warning, info, and debug. The filename can be specified using the--log-fileoption. If you don't specify one, a filename gets generated of the formpodboat_<date-time>.logβ-dlogfile,--log-file=logfile β Use this logfile as output when logging debug messages. Heads up though: this only works when providing a loglevel. No loglevel, no logfile, that's the rule π
π 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 β but an external media player is needed for playback, just so you know. And the way this support works differs a bit from other podcast aggregators, or "podcatchers" as the girlies say π
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. Slay π
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! π΅οΈββοΈ
π MANAGING AUDIO FILES WITH PODBOAT π
What you can do is add the podcast download URL to a download queue. Alternatively, Newsboat can be configured to automatically do that for you. This queue is stored in the queue file next to the cache.db file. Bestie behavior honestly π«Ά
Then you use the download manager podboat to download these files to a directory on the local filesystem. podboat comes with the Newsboat package, and her look and feel is very close to the one of Newsboat β same energy, same configuration file, it's giving sisters π
Podcasts that have been downloaded but haven't been played yet remain in the queue but are marked as downloaded. You can remove them by purging them from the queue with the Shift + P key. After you've played a file and close Podboat, it will be removed from the queue. The downloaded file remains on the filesystem unless "delete-played-files" is enabled. Yes, that's a whole thing, keep reading π
A common "use case" is to configure Newsboat to automatically enqueue newly found podcast download URLs. Then, the user reloads the podcast RSS feeds in Newsboat, and after that, uses Podboat to view the current queue, and either selectively download certain files or automatically download them all together by pressing A within Podboat. Pick your fighter βοΈ
πΈ CONFIGURATION COMMANDS πΈ
delete-played-files (parameters: [yes/no]; default value: no)
If set to yes, Podboat will delete files when their corresponding queue entry is removed (this includes "finished" and "deleted" entries as well). Example: delete-played-files yes
download-path (parameters: <path>; default value: ~/)
Specifies the directory where Podboat shall download the files to. Optionally, placeholders can be used to place downloads in a directory structure. See the FORMAT STRINGS section of the Newsboat manual for details on available formats. Heads up: this setting is applied at enqueueing time β changing it won't affect download paths of the podcasts that were already added to the queue. Example: download-path "~/Downloads/%h/%n"
download-filename-format (parameters: <string>; default value: "%?u?%u&%Y-%b-%d-%H%M%S.unknown?")
Specifies how Podboat would name the files it downloads (see also download-path). See the FORMAT STRINGS section of the Newsboat manual for details on available formats. Example: download-filename-format "%F-%t.%e"
max-downloads (parameters: <number>; default value: 1)
Specifies the maximum number of parallel downloads when automatic download is enabled. Example: max-downloads 3
player (parameters: <player command>; default value: "")
Specifies the player that shall be used for playback of downloaded files. Example: player "mp3blaster"
podlist-format (parameters: <format>; default value: "%4i [%6dMB/%6tMB] [%5p %%] [%12K] %-20S %u β %F")
This variable defines the format of entries in Podboat's download list. See the FORMAT STRINGS section in the documentation for more information on format strings. Example: podlist-format "%i %u %-20S %F"
β FORMAT STRINGS β
Newsboat contains a powerful format string system to make it possible for the user to configure the format of various aspects of the application, such as the format of entries in the feed list or in the article list. Powerful and pretty, we love that for her π
Format strings are similar to those that are found in the printf function in the C programming language. A format sequence begins with the % character, followed by optional alignment indication: positive numbers indicate that the text that is inserted for the sequence shall be padded on the left to a total width that is specified by the number, while negative number specify padding on the right. Followed by the padding indication comes the actual sequence identifier, which is usually a single letter. %=[width][identifier] centers the sequence, where if w=0 the whole width of the window is used. β¨
In addition, Newsboat provides other, more powerful sequences, such as %>[char], which indicates that the text right to the sequence will be aligned right on the screen, and characters between the text on the left and the text on the right will be filled by [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] will be evaluated and inserted, otherwise [format 2] will be evaluated and inserted. The & and [format 2] are optional, i.e. if the identifier's text is empty, then an empty string will be inserted. Chef's kiss, honestly π©βπ³π
The following tables show what sequence identifiers are available for which format:
Table 1. Available Identifiers for feedlist-format
dβ Feed descriptioniβ Feed indexlβ Feed linkLβ Feed RSS URLnβ "unread" flag fieldSβ download statustβ Feed titleTβ First tag of a feed in the URLs fileuβ "unread/total" fieldUβ "unread" fieldcβ "total" field
While a reload-all operation is running, the download status indicates the download status of a feed, which can be "to be downloaded" (indicated by "_"), "currently downloading" (indicated by "."), successfully downloaded (indicated by " ") and "download error" (indicated by "x"). π¦
ok bestie, these are the actual cheat-sheets for what you can slot into each format string β¨ every single identifier, every single meaning, no skips, no cap π
π Table 2. Available Identifiers for articlelist-format π
here's what you can put in your article list format, one by one:
aβ the article's author πDβ the publication date. you can tweak this even more withdatetime-format, iykykfβ two characters, together, as a lil duo: 1)"N"if the article is unread,"D"if the article is deleted, and a space otherwise; 2)"!"if the article has flags, and a space otherwise. two slots, one identifier, she contains multitudes πnβ the"unread"fielddβ the"deleted"fieldFβ the article flagsiβ the article indextβ the article titleTβ if the article list is showing articles from different feeds, then this identifier holds the title of the feed that the article belongs to π¦Lβ the article lengtheβ the article enclosure URL
πΈ Table 3. Available Identifiers for selecttag-format πΈ
the tag-picker's own lil set of identifiers, periodt:
iβ the line's index in the listTβ the tag that this line corresponds tofβ number of unread feeds under this tagnβ number of unread articles in feeds tagged with this taguβ number of feeds tagged with this tag
π¦ Table 4. Available Identifiers for notify-format π¦
and for your notifications, bestie, the whole menu:
nβ number of unread articlesfβ number of unread feedsdβ 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 building out your podlist-format, these are the little letter codes you get to play with β go feral bestie π
iβ the download index β¨dβ currently downloaded size in megabytes, and it shows one digit of precisiontβ total download size in megabytes, also one digit of precisionpβ downloaded percentage, one digit of precisionkβ download speed, two digits of precision, always in KB/s. And heads up: it does not include the"KB/s"text, so if you want that you add it yourself, iykykKβ download speed, two digits of precision, but human readable β it automatically switches betweenKB/s,MB/sandGB/sπ¦Sβ status of the download. It shows one of these:"queued","downloading","ready","canceled","deleted","missing","played","finished"or"failed"uβ the URL of the downloadFβ absolute filename of the download from the root directory (like~/downloads/podcast.mp3β/home/name/downloads/podcast.mp3)bβ basename of the download (so/home/name/downloads/podcast.mp3βpodcast.mp3)
π Table 6. Available Identifiers for download-path and download-filename-format π
these ones are for naming where your files actually land on disk, and they are so useful πΈ
uβ the filename part of the download URL. May be empty. May include a query string (https://en.wikipedia.org/wiki/Query_string)nβ name of the podcast feedNβ name of the podcast feed, except this one keeps the original feed's name, even when you selected it through a query feed πhβ name of the podcast feed's hostnametβ title of the podcast episodeeβ extension of the podcast episodeFβ publication date of the podcast episode, formatted asyyyy-mm-ddmβ month when the podcast episode was publishedbβ abbreviated month name when the podcast episode was publisheddβ day when the podcast episode was publishedHβ hour when the podcast episode was publishedMβ minute when the podcast episode was publishedSβ second when the podcast episode was publishedyβ year when the podcast episode was published, formatted asyyYβ year when the podcast episode was published, formatted asyyyy
π Examples π
fr fr, here's what it actually looks like in the wild:
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"
bestie, copy these exactly β every space and every % is doing something, no cap π
π FILES π
Okay bestie, this is the part where we talk about where your stuff lives. By default, Newsboat keeps all its files the old-school traditional Unix way β a "dotdir" chilling at ~/.newsboat. Very vintage, very demure. But it also supports the modern way, the XDG Base Directory Specification (https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html), which splits your files between these two locations:
$XDG_CONFIG_HOME/newsboat/(andXDG_CONFIG_HOMEdefaults to~/.config)$XDG_DATA_HOME/newsboat/(andXDG_DATA_HOMEdefaults to~/.local/share)
So here's the vibe check: if the newsboat directory exists under XDG_CONFIG_HOME, then Newsboat goes full XDG mode (and it'll create the data directory if it needs to). Otherwise? Newsboat just defaults back to ~/.newsboat. That's it, that's the rule. β¨
If you're currently living that ~/.newsboat/ life but you wanna glow up and 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, they're not trying to be possessive π
. These prevent you from starting two instances of the same program at once, which would corrupt your data. Rude of you, honestly. Newsboat and Podboat delete these files when you quit, so you do not need to copy them anywhere β just be aware of them in case you write scripts that mess with cache.db or queue. By default, lock files live here:
- Newsboat
- dotdir:
~/.newsboat/cache.db.lock - XDG:
$XDG_DATA_HOME/newsboat/cache.db.lock
- dotdir:
- Podboat
- dotdir:
~/.newsboat/pb-lock.pid - XDG:
$XDG_DATA_HOME/newsboat/.lock
- dotdir:
Newsboat places the lock file right next to the cache file, so if you set the cache-file setting or pass the --cache-file command-line argument, the path to the lock file changes too. Iconic, consistent, we love that for us. Podboat's lock can be placed somewhere else entirely using the --lock-file command-line argument.
dotfiles:
~/.newsboat/config~/.newsboat/queue
XDG:
$XDG_CONFIG_HOME/newsboat/config$XDG_DATA_HOME/newsboat/queue
Note: if theXDG_CONFIG_HOMEenvironment variable isn't set, Podboat behaves as if it was set to~/.config. Similarly,XDG_DATA_HOMEdefaults to~/.local/share. π«Ά
π ENVIRONMENT π
These are the environment variables, aka the vibes your shell hands over before Podboat even wakes up:
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)gets used. Old reliable, fr fr.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 one is useful if your libcurl is built without useful certificate information and you can't rebuild the library yourself. No cap, this has saved people.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)gets used.NO_PROXYβ Tells Newsboat to ignore the 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. 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. Sneaky little detail, bestie, write it down. π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/tmpgets used.- **
VISUAL``** β Tells Newsboat what editor to use when editing theurlsfile via theedit-urlsoperation. If this variable doesn't exist, theEDITOR` environment variable gets used instead. It's giving backup-bestie energy. 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!! π This was the PODBOAT(1) manual page, dated 2026-10-05. Go forth, read your queues, manage those downloads, and remember: lock files are not your enemy, they're just protecting you from yourself. πβ¨π¦
π¦ 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