{"id":13740625,"url":"https://gitlab.com/microo8/photon","last_synced_at":"2025-05-08T20:32:10.382Z","repository":{"id":57572522,"uuid":"24937263","full_name":"microo8/photon","owner":"microo8","description":"Fast RSS reader as light as a photon","archived":true,"fork":false,"pushed_at":null,"size":null,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":null,"default_branch":"master","last_synced_at":"2024-05-22T12:32:32.070Z","etag":null,"topics":["rss"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0+","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://gitlab.com/uploads/-/system/project/avatar/24937263/ic_launcher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-07T10:21:49.152Z","updated_at":"2021-06-09T06:37:08.382Z","dependencies_parsed_at":"2022-08-24T08:41:06.379Z","dependency_job_id":null,"html_url":"https://gitlab.com/microo8/photon","commit_stats":null,"previous_names":[],"tags_count":3,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/microo8%2Fphoton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/microo8%2Fphoton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/microo8%2Fphoton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/microo8%2Fphoton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/microo8","download_url":"https://gitlab.com/microo8/photon/-/archive/master/photon-master.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4518947,"owners_count":6979,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":["rss"],"created_at":"2024-08-03T04:00:50.666Z","updated_at":"2025-05-08T20:32:09.067Z","avatar_url":"https://gitlab.com/uploads/-/system/project/avatar/24937263/ic_launcher.png","language":null,"funding_links":[],"categories":["Gio Core"],"sub_categories":["Software built with Gio"],"readme":"# photon\n\n## project moved to [sourcehut](https://git.sr.ht/~ghost08/photon)\n\n![photon logo](icons/res/mipmap-xxxhdpi/ic_launcher.png)\n\nphoton is a RSS/Atom reader with the focus on speed, usability and a bit of unix philosophy.\n\n![photon screenshot](screenshot.png)\n\nWith the current state of rss readers, which are archaic, or use electron for rendering, photon wants to bring a \"fresh look\" withing a lightweight package.\n\n## Installation\n\n### linux\n\n    $ go install gitlab.com/microo8/photon@latest\n\nand for the wayland master race:\n\n    $ go install -tags nox11 gitlab.com/microo8/photon@latest\n\nAUR: [photon-rss-git](https://aur.archlinux.org/packages/photon-rss-git/)\n\n    $ yay -S photon-rss-git\n\nAUR for x11 peasants: [photon-rss-x11-git](https://aur.archlinux.org/packages/photon-rss-x11-git/)\n\n    $ yay -S photon-rss-x11-git\n\n### windows\n\nThe easiest would be to install needed things trough [chocolatey](https://chocolatey.org/):\n\n    choco install golang git youtube-dl mpv\n\nand then install photon:\n\n    go install gitlab.com/microo8/photon@latest\n\n## Usage\n\nphoton's philosophy is to be a some kind of rss viewer. So it doesn't have features like adding or managing feeds. photon can be started with a list of urls:\n\n    $ photon https://static.fsf.org/fsforg/rss/news.xml https://itsfoss.com/feed/ https://blog.golang.org/feed.atom\\?format\\=xml\n\nOr it can be directly fed with the feed data:\n\n    $ wget -O - https://www.reddit.com/r/pics.rss | photon -\n\nOr using [ratt](https://gitlab.com/microo8/ratt) and playing magnet links directly with mpv:\n\n    $ ratt auto https://1337x.to/top-100 | photon -\n\nOr searching youtube using [ratt](https://gitlab.com/microo8/ratt):\n\n    $ ratt auto https://www.youtube.com/results --data-urlencode=\"search_query=MyQuery\" | photon -\n\nOr it can parse a file with feed urls separated by new line (and comments too):\n\n    $ echo \"#youtube - LunusTechTips\" \u003e mychannels.txt\n    $ echo \"https://www.youtube.com/feeds/videos.xml?user=LinusTechTips\" \u003e mychannels.txt\n    $ echo \"#youtube - Rob Braxman Tech\" \u003e mychannels.txt\n    $ echo \"https://www.youtube.com/feeds/videos.xml?channel_id=UCYVU6rModlGxvJbszCclGGw\" \u003e mychannels.txt\n    $ echo \"#odysee - Lunduke on Tech\" \u003e mychannels.txt\n    $ echo \"https://lbryfeed.melroy.org/channel/odysee/@Lunduke:e\" \u003e\u003e mychannels.txt\n    $ photon mychannels.txt\n\nOr it can call a external command, must be specified with the `cmd://` prefix:\n\n    $ echo \"cmd://ratt auto https://videoportal.joj.sk/slovania\" \u003e\u003e mychannels.txt\n    $ photon mychannels.txt\n\nBy default running photon with no arguments will try to read `~/.config/photon/config` (on windows it is `C:\\Users\\\u003cUsername\u003e\\.config\\photon\\config`).\n\nSo the feed management is up to the user with arguments, text files and creating scripts like:\n\n    $ cat photon-reddit.sh\n    photon mysubreddits.conf\n    $ cat mysubreddits.conf\n    https://www.reddit.com/r/popular.rss\n    https://www.reddit.com/r/news.rss\n    https://www.reddit.com/r/funny.rss\n    https://www.reddit.com/r/memes.rss\n\nBecause photon is a \"viewer\" (like an image viewer, video player, ...) it doesn't have a refresh feature. photon just shows the contents of the feed(s).\n\n## Features\n\n### navigation\n\nAlways one card is highlighted, we call it 'selectedCard'. To navigate to other card you can use `h`,`j`,`k`,`l` (which means: left, down, up, right).\n\n`CTRL+d` - scroll half screen down\n\n`CTRL+u` - scroll half screen up\n\n`CTRL+f` - scroll full screen down\n\n`CTRL+b` - scroll full screen up\n\n`gg` - go to the first line\n\n`G` - go to the last line\n\n`yy` - copy card link to clipboard\n\n`yi` - copy the card image\n\n`dm` - download media\n\n`dl` - download link content\n\n`di` - download image\n\nAll downloads are saved automatically to the default downloads folder `$HOME/Downloads`. This can be changed with the `--download-dir` argument.\n\nAny keybinding can be prepended with a numeric value, like in vim. So you can type `10j` and the selectedCard will move 10 rows down.\n\n### view\n\nBy clicking on a card, or pressing `ENTER`, photon will show the article view, where it scraps the card's link and extracts the title, top image and main text content.\n\n![article view](article.png)\n\n`ALT+click` or `ALT+ENTER` will open the card's link in the default web browser.\n\n### cards\n\n`CTRL+-` will decrease the number of columns of cards.\n`CTRL+=` will increase the number of columns of cards.\n\n### search\n\nSearching is done with pressing `/` and then typing the query. photon will filter the visible cards by finding the query in either the card's title, description, feed's title.\n\n### media extraction\n\nphoton is designed strongly for media viewing/playing. `CTRL+click` or `CTRL+ENTER` will try to extract the direct media link of the card. By following the unix philosophy, [Do One Thing and Do It Well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well), photon want's to be just a feed viewer, so media extraction is done by external tools. By default [youtube-dl](https://github.com/ytdl-org/youtube-dl) is used. This can be changed with the `--extractor` argument or `PHOTON_EXTRACTOR` environment variable.\n\nBy the content type of the media, photon will run it in either a video player (default [mpv](https://mpv.io/)) or a image viewer (default [imv](https://github.com/eXeC64/imv)).\n\nIf the link is a magnet link, or a torrent file, photon will run it in a torrent downloader/player (default [mpv](https://mpv.io/) with the [mpv-webtorrent-hook](https://github.com/noctuid/mpv-webtorrent-hook) script).\n\nSo you can play torrent videos directly from photon. Try: `photon https://nyaa.si/?page=rss` (and install the [mpv-webtorrent-hook](https://github.com/noctuid/mpv-webtorrent-hook) it's awesome!).\n\n`--image-cmd`, `--video-cmd` and `--torrent-cmd` arguments, or `PHOTON_IMAGECMD`, `PHOTON_VIDEOCMD` and `PHOTON_TORRENTCMD` environment variables, are used to change the default behavior.\n\n### Lua plugins\n\nphoton will automatically load lua scripts from `~/.config/photon/plugins/*.lua` (on windows it is `C:\\Users\\\u003cUsername\u003e\\.config\\photon\\plugins\\*.lua`).\n\nThese plugins help to extend the functionality and make photon do whatever the user needs (for now it's just 'beta'). Lua plugins can subscribe for events or register new keybindings and modify the state. Take a look at some [user scripts](https://gitlab.com/microo8/photon/-/tree/master/plugins).\n\nexample plugin:\n\n```lua\n--import the photon events module for subscribing on events\nevents = require(\"photon.events\")\n\n--subscribe to the Init event\nevents.subscribe(events.Init, function()\n\tprint(\"Hello photon!\")\nend)\n```\n\n### HTTP Settings\n\nSometimes you need a little cookie to get the data that you want :P\n\nFor this photon has some http setting for every request that will be send:\n\n`--cookie=\"KEY=VALUE;KEY=VALUE;...\"` for setting cookies for all outgoing http requests\n\n`--header=\"KEY=VALUE;KEY=VALUE;...\"` for setting headers for all outgoing http requests\n\n`--user-agent=\"myphoton\"` for setting the User-Agent header for all outgoing http requests\n\n`--insecure` ignore the ssl cert\n\n## TODO\n\n-   article scrolling with hjkl and ctrl+d,ctrl+u,...\n-   lua plugins - cards maniputation (del, sort, add, create card)\n-   lua plugins - http request with HTTP Settings\n-   lua plugins - Docs\n-   automatic column count by the screen width\n\nContribution of all kind is welcome :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fmicroo8%2Fphoton","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2Fmicroo8%2Fphoton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fmicroo8%2Fphoton/lists"}