Skip to content

TypicalAM/goread

Repository files navigation

👋 Hello! goread is an RSS/Atom feed reader for the terminal. It allows you to categorize and follow feeds and read articles right in the commandline! It's accompanied by a beautiful TUI made with bubble tea. Features include:

  • Categorizing feeds
  • Downloading articles for later use
  • Offline mode
  • Customizable colorschemes
  • OPML file support
  • A nice and simple TUI

❤️ Getting started

Installing with go install

You can install goread using the go internal package manager

$ go install github.com/TypicalAM/goread@latest

Installing with homebrew

If you use Homebrew, you can install goread via:

$ brew install goread

Installing from AUR

If you use the AUR, you can install goread via:

$ yay -S goread
$ yay -S goread-bin # Release binary

📸 What does it look like?

Here is a gif of some basic usage:

You can use a colorscheme from pywal to create a goread colorscheme!

⚙️ Configuration

📝 The urls file

The urls file contains the categories and feeds that you are subscribed to! This file is generated by the program in the config directory (usually ~/.config/goread/urls.yml) and looks similar to this:

categories:
  - name: News
    desc: News from around the world
    subscriptions:
      - name: BBC
        desc: News from the BBC
        url: http://feeds.bbci.co.uk/news/rss.xml
  - name: Tech
    desc: Tech news
    subscriptions:
      - name: Wired
        desc: News from the wired team
        url: https://www.wired.com/feed/rss
      - name: Chris Titus Tech (virtualization)
        desc: Chris Titus Tech on virtualization
        url: https://christitus.com/categories/virtualization/index.xml

You can edit this file to change the app's contents in an automated manner (remember that you can also edit entries in the TUI!).

🌃 The colorscheme file

The colorscheme file contains the colorscheme of your application! It can be generated by hand or using the --dump_colors flag. The colorscheme file is usually at ~/.config/goread/colorscheme.json - here is how it looks like!

{
  "bg_dark": "#161622",
  "bg_darker": "#11111a",
  "text": "#FFFFFF",
  "text_dark": "#47485b",
  "color1": "#c29fec",
  "color2": "#ddbec0",
  "color3": "#89b4fa",
  "color4": "#e06c75",
  "color5": "#98c379",
  "color6": "#fab387",
  "color7": "#f1c1e4"
}

You can use the --get_colors flag to generate a colorscheme from pywal. For that you have to supply it with the pywal colors.json file which is usually located at ~/.cache/wal/colors.json. To generate the colors.json file you can run wal -stni ~/wallpapers/example.png.

✨ Contributing

If you have an idea or something doesn't work feel free to create an issue. If it is a bug remember to:

  • Update using go install github.com/TypicalAM/goread@latest or homebrew upgrade
  • Include output of goread --version
  • Include logs which are usually located at /tmp/goread.log on linux and %TMP%\goread.log on Windows

When running tests (for example when packaging) you can disable online tests by setting the env var TEST_OFFLINE_ONLY to a truthy value (for example "YES").

💁 Credit where credit is due

Libraries

The demo was made using vhs, which is an amazing tool, and you should definitely check it out. Other libraries included are:

Fonts & logo

The font in use for the logo is sen-regular designed by "Philatype" and licensed under Open Font License. The icon was designed by throwaway icons.

=======

License

Copyright (C) 2023 Adam Piaseczny

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.