{"id":13529409,"url":"https://gitlab.com/ajak/tuir","last_synced_at":"2025-04-01T16:31:29.927Z","repository":{"id":50264939,"uuid":"12748921","full_name":"ajak/tuir","owner":"ajak","description":"Browse Reddit from your terminal","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":185,"open_issues_count":42,"forks_count":19,"subscribers_count":null,"default_branch":"master","last_synced_at":"2025-03-06T09:55:58.619Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":null,"metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-07T16:46:45.910Z","updated_at":"2025-02-12T09:31:10.855Z","dependencies_parsed_at":"2022-08-26T16:20:19.201Z","dependency_job_id":null,"html_url":"https://gitlab.com/ajak/tuir","commit_stats":{"total_commits":1374,"total_committers":83,"mean_commits":16.55421686746988,"dds":0.5465793304221251,"last_synced_commit":"eb7f13bc2c03f380c07382992894323d5b50276e"},"previous_names":[],"tags_count":53,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ajak%2Ftuir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ajak%2Ftuir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ajak%2Ftuir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ajak%2Ftuir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/ajak","download_url":"https://gitlab.com/ajak/tuir/-/archive/master/tuir-master.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4518473,"owners_count":6906,"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":[],"created_at":"2024-08-01T07:00:36.024Z","updated_at":"2025-04-01T16:31:24.956Z","avatar_url":null,"language":null,"funding_links":[],"categories":["Entertainment","Social media","\u003ca name=\"chat\"\u003e\u003c/a\u003eChat and instant messaging"],"sub_categories":["Social Media","Reddit"],"readme":"\u003ch1 align=\"center\"\u003eTerminal UI for Reddit (TUIR)\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\nA text-based interface (TUI) to view and interact with Reddit from your terminal.\u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eTUIR is a fork of rtv, which was maintained by Michael Lazar in \u003ca href=\"https://github.com/michael-lazar/rtv\"\u003ethis repository\u003c/a\u003e until Jun 3, 2019.\u003c/strong\u003e\u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"title image\" src=\"resources/title_image.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/tuir/\"\u003e\n    \u003cimg alt=\"pypi\" src=\"https://img.shields.io/pypi/v/tuir.svg?label=version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gitlab.com/ajak/tuir/pipelines?ref=master\"\u003e\n    \u003cimg alt=\"gitlab-ci\" src=\"https://gitlab.com/ajak/tuir/badges/master/build.svg\"/\u003e\n  \u003c/a\u003e \n  \u003cimg alt=\"coverage\" src=\"https://gitlab.com/ajak/tuir/badges/master/coverage.svg\"/\u003e\n  \u003ca href=\"https://repology.org/project/tuir/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/tiny-repos/tuir.svg\" alt=\"Packaging status\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003c!--\n  \u003ca href=\"https://saythanks.io/to/michael-lazar\"\u003e\n    \u003cimg alt=\"say-thanks\" src=\"https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e --\u003e\n\n## Table of Contents\n\n* [Demo](#demo)  \n* [Installation](#installation)  \n* [Usage](#usage)  \n* [Settings](#settings)\n* [Themes](#themes)\n* [FAQ](#faq)  \n* [Contributing](#contributing)  \n* [License](#license)  \n\n## Demo\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"title image\" src=\"resources/demo.gif\"/\u003e\n\u003c/p\u003e\n\n\u003c!-- You can use *telnet* or *ssh* to try out a lite version of RTV directly in your terminal, without needing to install it:\n\n- ``$ telnet redditbox.us``\n- ``$ ssh redditbox.us``\n\n*[redditbox.us](https://redditbox.us/) is an independent project by Alex Jarmoszuk* --\u003e\n\n## Installation\n\n### PyPI package\n\nTUIR is available on [PyPI](https://pypi.python.org/pypi/tuir/) and can be installed with pip:\n\n```bash\n$ pip install tuir\n```\n\n#### Migration from RTV\n\nIf you are migrating from RTV to TUIR, you can simply rename your old config directory/config file:\n\n```bash\n$ mv ~/.config/rtv ~/.config/tuir\n$ mv ~/.config/tuir/rtv.cfg ~/.config/tuir/tuir.cfg\n```\n\nPlease take care to use the new API keys for Imgur and Reddit. To replace with sed:\n\n```bash\n$ sed -i 's/E2oEtRQfdfAfNQ/zjyhNI7tK8ivzQ/; s/93396265f59dec9/b33d69ac8931734/' ~/.config/tuir/tuir.cfg\n```\n\n### Distro packages\n\nSee [Repology](https://repology.org/metapackage/tuir/packages) for an up-to-date list of supported distro packages.\n\n#### Arch\n\nTUIR is available from the AUR with the package name `TUIR`.\n\n\u003c!-- ```bash\n# macOS\n$ brew install rtv\n\n# Arch\n$ pacman -S rtv\n\n# Nix\n$ nix-env -i rtv\n\n# Debian\n$ apt install rtv\n\n# FreeBSD\n$ pkg install rtv\n```--\u003e\n\n### From source\n\n```bash\n$ git clone https://gitlab.com/ajak/tuir.git\n$ cd tuir\n$ python setup.py install\n```\n\n### Windows\n\nTUIR is not supported on Windows, due to a lack of resources and interest. Sorry!\n\n## Usage\n\nTo run the program, type:\n\n```bash\n$ tuir --help\n```\n\n### Controls\n\nMove the cursor using either the arrow keys or *Vim* style movement:\n\n- Press \u003ckbd\u003e▲\u003c/kbd\u003e and \u003ckbd\u003e▼\u003c/kbd\u003e to scroll through submissions\n- Press \u003ckbd\u003e▶\u003c/kbd\u003e to view the selected submission and \u003ckbd\u003e◀\u003c/kbd\u003e to return\n- Press \u003ckbd\u003espace-bar\u003c/kbd\u003e to expand/collapse comments\n- Press \u003ckbd\u003eu\u003c/kbd\u003e to login (this requires a web browser for [OAuth](https://github.com/reddit-archive/reddit/wiki/oauth2))\n- Press \u003ckbd\u003e?\u003c/kbd\u003e to open the help screen\n\nPress \u003ckbd\u003e/\u003c/kbd\u003e to open the navigation prompt, where you can type things like:\n\n- ``/front``\n- ``/r/commandprompt+linuxmasterrace``\n- ``/r/programming/controversial``\n- ``/u/me``\n- ``/u/multi-mod/m/art``\n- ``/domain/github.com``\n\nSee [CONTROLS](CONTROLS.md) for the full list of commands.\n\n## Settings\n\n### Configuration File\n\nConfiguration files are stored in the ``{HOME}/.config/tuir/`` directory.\n\nCheck out [tuir.cfg](tuir/templates/tuir.cfg) for the full list of configurable options. You can clone this file into your home directory by running:\n\n```bash\n$ tuir --copy-config\n```\n\n### Viewing Media Links\n\nYou can use [mailcap](https://en.wikipedia.org/wiki/Media_type#Mailcap) to configure how TUIR will open different types of links.\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"title image\" src=\"resources/mailcap.gif\"/\u003e\n\u003c/p\u003e\n\nA 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.\n\n```bash\n$ tuir --copy-mailcap\n```\n\nThis 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](tuir/templates/mailcap) listed inside.\n\nOnce you've setup your mailcap file, enable it by launching tuir with the ``tuir --enable-media`` flag (or set it in your **tuir.cfg**)\n\n### Environment Variables\n\nThe default programs that TUIR interacts with can be configured through environment variables:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\u003cstrong\u003e$TUIR_EDITOR\u003c/strong\u003e\u003c/td\u003e\n  \u003ctd\u003eA program used to compose text submissions and comments, e.g. \u003cstrong\u003evim\u003c/strong\u003e, \u003cstrong\u003eemacs\u003c/strong\u003e, \u003cstrong\u003egedit\u003c/strong\u003e\n  \u003cbr/\u003e \u003cem\u003eIf not specified, will fallback to $VISUAL and $EDITOR in that order.\u003c/em\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\u003cstrong\u003e$TUIR_BROWSER\u003c/strong\u003e\u003c/td\u003e\n  \u003ctd\u003eA program used to open links to external websites, e.g. \u003cstrong\u003efirefox\u003c/strong\u003e, \u003cstrong\u003egoogle-chrome\u003c/strong\u003e, \u003cstrong\u003ew3m\u003c/strong\u003e, \u003cstrong\u003elynx\u003c/strong\u003e\n  \u003cbr/\u003e \u003cem\u003eIf not specified, will fallback to $BROWSER, or your system's default browser.\u003c/em\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\u003cstrong\u003e$TUIR_URLVIEWER\u003c/strong\u003e\u003c/td\u003e\n  \u003ctd\u003eA tool used to extract hyperlinks from blocks of text, e.g. \u003ca href=https://github.com/sigpipe/urlview\u003eurlview\u003c/a\u003e, \u003ca href=https://github.com/firecat53/urlscan\u003eurlscan\u003c/a\u003e\n  \u003cbr/\u003e \u003cem\u003eIf not specified, will fallback to urlview if it is installed.\u003c/em\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Clipboard\n\nTUIR supports copying submission links to the OS clipboard.  Data being copied is piped into a command specified by the configuration option `clipboard_cmd`. If this option is not set, the command will default to `pbcopy w` on Darwin systems (OSX), and `xclip -selection clipboard` on Linux.\n\n## Themes\n\nThemes can be used to customize the look and feel of TUIR\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cp\u003e\u003cstrong\u003eSolarized Dark\u003c/strong\u003e\u003c/p\u003e\n      \u003cimg src=\"resources/theme_solarized_dark.png\"\u003e\u003c/img\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cp\u003e\u003cstrong\u003eSolarized Light\u003c/strong\u003e\u003c/p\u003e\n      \u003cimg src=\"resources/theme_solarized_light.png\"\u003e\u003c/img\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cp\u003e\u003cstrong\u003ePapercolor\u003c/strong\u003e\u003c/p\u003e\n      \u003cimg src=\"resources/theme_papercolor.png\"\u003e\u003c/img\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cp\u003e\u003cstrong\u003eMolokai\u003c/strong\u003e\u003c/p\u003e\n      \u003cimg src=\"resources/theme_molokai.png\"\u003e\u003c/img\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nYou can list all installed themes with the ``--list-themes`` command, and select one with ``--theme``. You can save your choice permanently in your [tuir.cfg](tuir/templates/tuir.cfg) file. You can also use the \u003ckbd\u003eF2\u003c/kbd\u003e \u0026 \u003ckbd\u003eF3\u003c/kbd\u003e keys inside of TUIR to cycle through all available themes.\n\nFor instructions on writing and installing your own themes, see [THEMES.md](THEMES.md).\n\n## FAQ\n\n\u003cdetails\u003e\n \u003csummary\u003eWhy am I getting an error during installation/when launching tuir?\u003c/summary\u003e\n \n  \u003e If your distro ships with an older version of python 2.7 or python-requests,\n  \u003e you may experience SSL errors or other package incompatibilities. The\n  \u003e easiest way to fix this is to install tuir using python 3. If you\n  \u003e don't already have pip3, see http://stackoverflow.com/a/6587528 for setup\n  \u003e instructions. Then do\n  \u003e\n  \u003e ```bash\n  \u003e $ sudo pip uninstall tuir\n  \u003e $ sudo pip3 install -U tuir\n  \u003e ```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eWhy do I see garbled text like \u003cem\u003eM-b~@M-\"\u003c/em\u003e or \u003cem\u003e^@\u003c/em\u003e?\u003c/summary\u003e\n \n  \u003e This type of text usually shows up when python is unable to render\n  \u003e unicode properly.\n  \u003e    \n  \u003e 1. Try starting TUIR in ascii-only mode with ``tuir --ascii``\n  \u003e 2. Make sure that the terminal/font that you're using supports unicode\n  \u003e 3. Try [setting the LOCALE to utf-8](https://perlgeek.de/en/article/set-up-a-clean-utf8-environment)\n  \u003e 4. Your python may have been built against the wrong curses library,\n  \u003e    see [here](stackoverflow.com/questions/19373027) and\n  \u003e    [here](https://bugs.python.org/issue4787) for more information\n\n\u003c/details\u003e\n\u003cdetails\u003e\n \u003csummary\u003eHow do I run the code directly from the repository?\u003c/summary\u003e\n \n  \u003e This project is structured to be run as a python *module*. This means that\n  \u003e you need to launch it using python's ``-m`` flag. See the example below, which\n  \u003e assumes that you have cloned the repository into the directory **~/tuir_project**.\n  \u003e\n  \u003e ```bash\n  \u003e $ cd ~/tuir_project\n  \u003e $ python3 -m tuir\n  \u003e ```\n\n\u003c/details\u003e\n\n## Current development status\n\nTUIR currently depends on Michael Lazar's (maintainer of RTV) fork of PRAW being packaged with the program. Michael's fork is a fork from PRAW version 3.6.1, which is [currently unsupported](https://github.com/praw-dev/praw/blob/master/SECURITY.md). Further, packaged dependencies aren't looked upon fondly by various distribution's packaging guidelines ([#11](https://gitlab.com/ajak/tuir/issues/11), [Gentoo Wiki - Why not bundle dependencies](https://wiki.gentoo.org/wiki/Why_not_bundle_dependencies)). Due to this, I'm working to update TUIR to a more recent PRAW version which isn't bundled.\n\nThere is significant API breakage from PRAW 3 to PRAW 6 (the [PRAW README](https://github.com/praw-dev/praw/) calls PRAW 4 a \"complete rewrite\"). As such, updating TUIR to use a PRAW multiple major versions newer is slow going. I am a relatively inexperienced developer and I have less time than I'd like to devote to software. This work is in branch `update_unbundle_praw` ([link](https://gitlab.com/ajak/tuir/-/commits/update_unbundle_praw)), so there may not be super recent commits in `master`, but that doesn't mean I'm neglecting TUIR. Unfortunately, this does mean I am not actively working on feature requests. They are always welcome of course, but it would be far simpler to add features after TUIR is converted to using PRAW 6 instead of adding them now and dealing with their breakage later.\n\nPython 2 is also [dead](https://devguide.python.org/devcycle/#end-of-life-branches) as of 2020. PRAW 6 doesn't even support Python 2, so Python 2 support in TUIR is also being dropped. Given that PRAW3 is packaged with TUIR as a result of RTV doing the same, there is little sense in removing Python 2 support from the packaged version when there is already an updated version of PRAW available, so I will work to remove Python 2 support alongside my efforts to update TUIR for PRAW 6.\n\n## Contributing\nAll feedback and suggestions are welcome, just post an issue!\n\nBefore writing any code, please read the [Contributor Guidelines](CONTRIBUTING.rst).\n\n## License\nThis project is distributed under the [MIT](LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fajak%2Ftuir","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2Fajak%2Ftuir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fajak%2Ftuir/lists"}