photon(1)
πΈ photon(1) β General Commands Manual πΈ
okay bestie, so this is the man page for photon, and yes it's filed under General Commands Manual, and yes we're gonna get into it π
β¨ NAME β¨
photon β an RSS reader as light as a photon, with terminal + sixel support π¦ (yes, that light. literally the lightest.)
β¨ SYNOPSIS β¨
photon [OPTION] [<paths> ...]
β¨ DESCRIPTION β¨
so photon is an RSS/Atom reader and its whole vibe is speed, usability, and a lil sprinkle of unix philosophy β¨ It shows you your items in a card grid with exactly one card selected (main character energy π), and then you scroll around, read the article, play media, or open stuff in your default app.
and when you wanna extend it? lua plugins, babe. π§ photon can also dynamically load opencl for image scaling β no cap, it do be like that π₯
β¨ OPTIONS β¨
[<paths> ...]β RSS/Atom urls, a config path, or-for stdin. (yes,-means "feed me from the pipe" π)-h,--helpβ shows the context-sensitive help. π«Ά--extractorβ the command for media link extraction; the item link gets substituted for%. env:PHOTON_EXTRACTORDefault:yt-dlp --get-url %--video-cmdβ set the default command for opening the item's media link in a video player. The media link gets substituted for%, and a direct item link gets substituted for$. If you provide neither%nor$,photonwill download the data and pipe it to the command's stdin π env:PHOTON_VIDEOCMDDefault:mpv $--image-cmdβ set the default command for opening the item's media link in an image viewer. The media link gets substituted for%, and a direct item link gets substituted for$. If you provide neither%nor$,photonwill download the data and pipe it to the command's stdin πΈ env:PHOTON_IMAGECMDDefault:imv ---torrent-cmdβ set the default command for opening the item's media link in a torrent downloader. The media link gets substituted for%. If the link is a torrent file,photonwill download it, and substitute the torrent file path for%π₯ env:PHOTON_TORRENTCMDDefault:mpv %--article-modeβ the default article view mode. env:PHOTON_ARTICLE_MODEDefault:ARTICLE--article-rendererβ the command to renderitem.Content/item.Description. env:PHOTON_ARTICLE_RENDERERDefault:w3m -T text/html -dump -cols 72-b,--cookie=KEY=VALUE;...β sets the cookie for all outgoing http requests πͺ-H,--header=KEY=VALUE;...β sets the headers for all outgoing http requests-A,--user-agentβ sets theUser-Agentheader for all outgoing http requests-k,--insecureβ (TLS) by default, every SSL connectionphotonmakes is verified to be secure. This option letsphotonproceed and operate even for server connections that would otherwise be considered insecure β οΈ like, careful babe.--download-pathβ the default download path. Default:$HOME/Downloads-t,--terminal-titleβ set the terminal title β¨-r,--refresh=SECONDSβ refresh interval in seconds. env:PHOTON_REFRESHDefault:0(which means it doesn't automatically refresh)
β¨ USAGE β¨
π GENERAL
so photon's whole philosophy is to be some kind of rss viewer. Which means β plot twist β it does not have features like adding or managing feeds. π Feed management is a you problem, bestie. But! You can start photon with a list of urls:
$ photon https://static.fsf.org/fsforg/rss/news.xml
https://itsfoss.com/feed/
https://blog.golang.org/feed.atom?format=xml
or you can feed it the feed data directly:
$ curl -s https://www.reddit.com/r/pics.rss | photon -
or use ratt and play magnet links directly with mpv:
$ ratt auto https://1337x.to/top-100 | photon -
or search youtube using ratt(1):
$ ratt auto https://www.youtube.com/results --data-
urlencode="search_query=MyQuery" | photon -
or it can parse a config file (peep photon(5)):
$ cat mychannels.txt
#youtube - LunusTechTips
https://www.youtube.com/feeds/videos.xml?user=LinusTechTips
#youtube - Rob Braxman Tech
https://www.youtube.com/feeds/videos.xml?channel_id=UCYVU6rModlGxvJbszCclGGw
#odysee - Lunduke on Tech" > mychannels.txt
https://lbryfeed.melroy.org/channel/odysee/@Lunduke:e
$ photon mychannels.txt
or it can call an external command β you gotta specify it with the cmd:// prefix:
$ echo "cmd://ratt auto https://videoportal.joj.sk/slovania" >> mychannels.txt
$ photon mychannels.txt
and by default, running photon with no arguments will try to read ~/.config/photon/config π
so yeah β feed management is entirely up to you, with arguments, text files, and scripts like:
$ cat photon-reddit.sh
photon mysubreddits.conf
$ cat mysubreddits.conf
https://www.reddit.com/r/popular.rss
https://www.reddit.com/r/news.rss
https://www.reddit.com/r/funny.rss
https://www.reddit.com/r/memes.rss
π ARTICLE VIEW
press ENTER and photon hits you with the article view, where it scraps the card's link and extracts the title, top image, and main text content β¨ The article view also has three modes:
- ARTICLE β shows the scrapped article content
- DESCRIPTION β shows the
item.Description - CONTENT β shows the
item.Content
article view in DESCRIPTION or CONTENT mode can use an external tool to render the text. By default w3m is used, but you can change that with the --article-renderer argument, or the PHOTON_ARTICLE_RENDERER environment variable π
OSC8 links are supported, so every link in an article can be opened with the terminal without needing to select the url β and article view can show just the text of the link and not the url. iconic π
π MEDIA EXTRACTION
photon can extract the direct media link of the rss item π₯ Media extraction is done by yt-dlp by default. Based on the content type of the media, photon will run it in either a video player (default mpv) or an image viewer (default imv). And if the link is a magnet link, or a torrent file, photon will run it in a torrent downloader/player (default mpv with the webtorrent-mpv-hook script) β yes, the whole setup, slay π
β¨ KEYBINDINGS β¨
π CARD VIEW
hβ move selected card to the leftjβ move selected card downkβ move selected card uplβ move selected card to the right- CTRL+
-β will decrease the number of columns of cards. - CTRL+
=β will increase the number of columns of cards. - ENTER β will show the article view
pβ will play the media linkrβ refresh feedsoβ will open the card's link in the default web browser (or default application).yyβ copy card link to clipboarddmβ download mediadlβ download link contentdiβ download image- CTRL+
dβ scroll half screen down - CTRL+
uβ scroll half screen up - CTRL+
fβ scroll full screen down - CTRL+
bβ scroll full screen up ggβ go to the first lineGβ go to the last lineqβ exit the application
π ARTICLE VIEW
mβ circle trough article view modeyyβ copy article linkoβ open article in the browserjβ scroll the article downkβ scroll the article up- CTRL+
dβ scroll half screen down - CTRL+
uβ scroll half screen up - CTRL+
fβ scroll full screen down - CTRL+
bβ scroll full screen up ggβ scroll the article to the topGβ scroll the article to the bottom.qorEscβ close the article.- The standard view of urls of your terminal can be also used (CTRL+SHIFT+U) π«Ά
π SEARCH
searching is done by pressing / and then typing the query. photon will filter the visible cards by finding the query in either the card's title, description, or feed's title πβ¨
β¨ LUA PLUGINS β¨
photon will automatically load lua scripts from ~/.config/photon/plugins/*.lua π§
these plugins help extend the functionality and make photon do whatever the user needs. Lua plugins can subscribe for events or register new keybindings and modify the state π To see the entire photon lua plugins tutorial please see photon-lua(7)
β¨ SEE ALSO β¨
β¨ AUTHORS β¨
maintained by VladimΓr Magyar <vladimir@mgyar.me> π«Ά Up-to-date sources can be found at https://sr.ht/~ghost08/photon and bugs/patches can be submitted by email to ~ghost08/photon@todo.sr.ht
okay that's the whole thing!! π this page is from 2026-10-14 and it's the photon(1) page from the General Commands Manual β go forth and read your feeds, bestie, you're literally gonna slay π
β¨π
π¦ where this page comes from
- alpine 3.24: photon-doc 1.0.1-r27 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms