1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
|
<h1 align="center">Reddit Terminal Viewer (RTV)</h1>
<p align="center">
A text-based interface (TUI) to view and interact with Reddit from your terminal.<br>
</p>
<p align="center">
<strong>This project is no longer being maintained, see <a href="https://github.com/michael-lazar/rtv/issues/696">here</a>.</strong><br>
</p>
<p align="center">
<img alt="title image" src="resources/title_image.png"/>
</p>
<p align="center">
<a href="https://pypi.python.org/pypi/rtv/">
<img alt="pypi" src="https://img.shields.io/pypi/v/rtv.svg?label=version"/>
</a>
<a href="https://travis-ci.org/michael-lazar/rtv">
<img alt="travis-ci" src="https://travis-ci.org/michael-lazar/rtv.svg?branch=master"/>
</a>
<a href="https://repology.org/project/rtv/versions">
<img src="https://repology.org/badge/tiny-repos/rtv.svg" alt="Packaging status">
</a>
<a href="https://coveralls.io/github/michael-lazar/rtv?branch=master">
<img alt="coveralls" src="https://coveralls.io/repos/michael-lazar/rtv/badge.svg?branch=master&service=github"/>
</a>
<a href="https://saythanks.io/to/michael-lazar">
<img alt="say-thanks" src="https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg"/>
</a>
</p>
## Table of Contents
* [Demo](#demo)
* [Installation](#installation)
* [Usage](#usage)
* [Settings](#settings)
* [Themes](#themes)
* [FAQ](#faq)
* [Contributing](#contributing)
* [License](#license)
## Demo
<p align="center">
<img alt="title image" src="resources/demo.gif"/>
</p>
You can use *telnet* or *ssh* to try out a lite version of RTV directly in your terminal, without needing to install it:
- ``$ telnet redditbox.us``
- ``$ ssh redditbox.us``
*[redditbox.us](https://redditbox.us/) is an independent project by Alex Jarmoszuk*
## Installation
### PyPI package
RTV is available on [PyPI](https://pypi.python.org/pypi/rtv/) and can be installed with pip:
```bash
$ pip install rtv
```
### Native packages
See [Repology](https://repology.org/metapackage/rtv/packages) for an up-to-date list of supported distro packages:
```bash
# macOS
$ brew install rtv
# Arch
$ pacman -S rtv
# Nix
$ nix-env -i rtv
# Debian
$ apt install rtv
# FreeBSD
$ pkg install rtv
```
### From source
```bash
$ git clone https://github.com/michael-lazar/rtv.git
$ cd rtv
$ python setup.py install
```
### Windows
RTV is not supported on Windows, due to a lack of resources and interest. Sorry!
## Usage
To run the program, type:
```bash
$ rtv --help
```
### Controls
Move the cursor using either the arrow keys or *Vim* style movement:
- Press <kbd>▲</kbd> and <kbd>▼</kbd> to scroll through submissions
- Press <kbd>▶</kbd> to view the selected submission and <kbd>◀</kbd> to return
- Press <kbd>space-bar</kbd> to expand/collapse comments
- Press <kbd>u</kbd> to login (this requires a web browser for [OAuth](https://github.com/reddit-archive/reddit/wiki/oauth2))
- Press <kbd>?</kbd> to open the help screen
Press <kbd>/</kbd> to open the navigation prompt, where you can type things like:
- ``/front``
- ``/r/commandprompt+linuxmasterrace``
- ``/r/programming/controversial``
- ``/u/me``
- ``/u/multi-mod/m/art``
- ``/domain/github.com``
See [CONTROLS](CONTROLS.md) for the full list of commands.
## Settings
### Configuration File
Configuration files are stored in the ``{HOME}/.config/rtv/`` directory.
Check out [rtv.cfg](rtv/templates/rtv.cfg) for the full list of configurable options. You can clone this file into your home directory by running:
```bash
$ rtv --copy-config
```
### Viewing Media Links
You can use [mailcap](https://en.wikipedia.org/wiki/Media_type#Mailcap) to configure how RTV will open different types of links.
<p align="center">
<img alt="title image" src="resources/mailcap.gif"/>
</p>
A mailcap file allows you to associate different MIME media types, like ``image/jpeg`` or ``video/mp4``, with shell commands. This feature is disabled by default because it takes a few extra steps to configure. To get started, copy the default mailcap template to your home directory.
```bash
$ rtv --copy-mailcap
```
This template contains examples for common MIME types that work with popular reddit websites like *imgur*, *youtube*, and *gfycat*. Open the mailcap template and follow the [instructions](rtv/templates/mailcap) listed inside.
Once you've setup your mailcap file, enable it by launching rtv with the ``rtv --enable-media`` flag (or set it in your **rtv.cfg**)
### Environment Variables
The default programs that RTV interacts with can be configured through environment variables:
<table>
<tr>
<td><strong>$RTV_EDITOR</strong></td>
<td>A program used to compose text submissions and comments, e.g. <strong>vim</strong>, <strong>emacs</strong>, <strong>gedit</strong>
<br/> <em>If not specified, will fallback to $VISUAL and $EDITOR in that order.</em></td>
</tr>
<tr>
<td><strong>$RTV_BROWSER</strong></td>
<td>A program used to open links to external websites, e.g. <strong>firefox</strong>, <strong>google-chrome</strong>, <strong>w3m</strong>, <strong>lynx</strong>
<br/> <em>If not specified, will fallback to $BROWSER, or your system's default browser.</em></td>
</tr>
<tr>
<td><strong>$RTV_URLVIEWER</strong></td>
<td>A tool used to extract hyperlinks from blocks of text, e.g. <a href=https://github.com/sigpipe/urlview>urlview</a>, <a href=https://github.com/firecat53/urlscan>urlscan</a>
<br/> <em>If not specified, will fallback to urlview if it is installed.</em></td>
</tr>
</table>
### Clipboard
RTV supports copying submission links to the OS clipboard. On macOS this is supported out of the box.
On Linux systems you will need to install either [xsel](http://www.vergenet.net/~conrad/software/xsel/) or [xclip](https://sourceforge.net/projects/xclip/).
## Themes
Themes can be used to customize the look and feel of RTV
<table>
<tr>
<td align="center">
<p><strong>Solarized Dark</strong></p>
<img src="resources/theme_solarized_dark.png"></img>
</td>
<td align="center">
<p><strong>Solarized Light</strong></p>
<img src="resources/theme_solarized_light.png"></img>
</td>
</tr>
<tr>
<td align="center">
<p><strong>Papercolor</strong></p>
<img src="resources/theme_papercolor.png"></img>
</td>
<td align="center">
<p><strong>Molokai</strong></p>
<img src="resources/theme_molokai.png"></img>
</td>
</tr>
</table>
You can list all installed themes with the ``--list-themes`` command, and select one with ``--theme``. You can save your choice permanently in your [rtv.cfg](rtv/templates/rtv.cfg) file. You can also use the <kbd>F2</kbd> & <kbd>F3</kbd> keys inside of RTV to cycle through all available themes.
For instructions on writing and installing your own themes, see [THEMES.md](THEMES.md).
## FAQ
<details>
<summary>Why am I getting an error during installation/when launching rtv?</summary>
> If your distro ships with an older version of python 2.7 or python-requests,
> you may experience SSL errors or other package incompatibilities. The
> easiest way to fix this is to install rtv using python 3. If you
> don't already have pip3, see http://stackoverflow.com/a/6587528 for setup
> instructions. Then do
>
> ```bash
> $ sudo pip uninstall rtv
> $ sudo pip3 install -U rtv
> ```
</details>
<details>
<summary>Why do I see garbled text like <em>M-b~@M-"</em> or <em>^@</em>?</summary>
> This type of text usually shows up when python is unable to render
> unicode properly.
>
> 1. Try starting RTV in ascii-only mode with ``rtv --ascii``
> 2. Make sure that the terminal/font that you're using supports unicode
> 3. Try [setting the LOCALE to utf-8](https://perlgeek.de/en/article/set-up-a-clean-utf8-environment)
> 4. Your python may have been built against the wrong curses library,
> see [here](stackoverflow.com/questions/19373027) and
> [here](https://bugs.python.org/issue4787) for more information
</details>
<details>
<summary>How do I run the code directly from the repository?</summary>
> This project is structured to be run as a python *module*. This means that
> you need to launch it using python's ``-m`` flag. See the example below, which
> assumes that you have cloned the repository into the directory **~/rtv_project**.
>
> ```bash
> $ cd ~/rtv_project
> $ python3 -m rtv
> ```
</details>
## Contributing
All feedback and suggestions are welcome, just post an issue!
Before writing any code, please read the [Contributor Guidelines](CONTRIBUTING.rst).
## License
This project is distributed under the [MIT](LICENSE) license.
|