A smart and nice Twitter client on terminal written in Python.
Python C
Switch branches/tags
Clone or download
Latest commit 7cde904 Mar 21, 2018


Rainbow Stream

http://img.shields.io/pypi/l/rainbowstream.svg?style=flat-square http://img.shields.io/pypi/v/rainbowstream.svg?style=flat-square

Terminal-based Twitter Client. Real-time tweetstream, compose, search, favorite, and much more fun directly from terminal.

This package is built on the Python Twitter Tools and the Twitter API, and runs on Python (2.7.x and 3.x).

Home page: https://github.com/orakaro/rainbowstream

Source code: https://github.com/DTVD/rainbowstream




The Quick Way

System Python (2.7.x or 3.x)

sudo pip install rainbowstream
# Python 3 users: sudo pip3 install rainbowstream

The Recommended Way


virtualenv venv
# Python 3 users : use -p to specify your Python 3 location:
# virtualenv -p /usr/bin/python3 venv
source venv/bin/activate
pip install rainbowstream


Some additional libraries may need to be installed on linux.

For Debian-based distros:

sudo apt-get install python-dev libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

For CentOS:

sudo yum install python-devel libjpeg-devel

Mac OSX Maverick with Xcode 5.1 has a well-known clang unknown argument problem with the installation of the Pillow package—a dependency of this app. Take a look at Issue #10 and let me know if the workaround doesn't work for you.

export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future

If The Quick Way doesn't work, then:

  • sudo pip uninstall rainbowstream
  • Use the The Recommended Way
  • Create an issue and provide:
    • Your OS
    • Your Python version


The Stream

Just type rainbowstream to see your stream.

You can now display tweeted images directly on the terminal! Try it with:

rainbowstream -iot # Or rainbowstream --image-on-term

Set IMAGE_ON_TERM to True in your config to to enable above feature, change IMAGE_SHIFT to set image's margin (relative to your terminal's width), and IMAGE_MAX_HEIGHT to control max height of every image (see Config Management).

You will be asked for authorization on Twitter the first time you run Rainbow Stream. Just click the "Authorize access" button, paste PIN number to the terminal, and the rainbow will start.

You might want to use Rainbow Stream with an HTTP/SOCKS proxy. Proxy settings are specified as follows:

rainbowstream --proxy-host localhost --proxy-port 1337 --proxy-type HTTP
# or the short form:
rainbowstream -ph localhost -pp 1337 -pt HTTP

Both --proxy-port and --proxy-type are optional. The default proxy port is 8080 and the default proxy type is SOCKS5.

Interactive Mode

While your personal stream is continued, you are also ready to tweet, search, reply, retweet, etc. directly from your console. Simply type h and hit the Enter key to see the help.

Input is in interactive mode. It means that you can use the arrow keys to move up and down through the history, tab-autocomplete or double-tab to view available suggestions. Input history from previous run is also available.

Read the docs for available commands.

Theme Customization

Rainbow Stream is shipped with some default themes. You can switch themes with the theme command. You can also customize themes as you please.

Theme screenshots:

  • Monokai
  • Solarized
  • Tomorrow Night
  • Larapaste

See Theme Usage and Customization for detailed information.

Bug and Feature Requests

Found a bug or a feature request? Please create an issue or contact me at @dtvd88.


If you want to build a runnable version yourself, follow these simple steps:

  • Create your own Twitter Application

  • Get your Twitter application’s API key and secret

  • Create your own Pocket Application (platform: Web)

  • Get your Pocket application’s key

  • Fork this repo and git clone it

  • Create a consumer.py file in the rainbowstream directory containing:

    # Consumer information
    CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
    CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
    PCKT_CONSUMER_KEY = 'PocketAPIKey' # Your Pocket application's API key
  • Use pip to install it locally

    # cd to directory which contains setup.py (cloned directory)
    virtualenv venv # Python3 users: use -p to specify python3
    source venv/bin/activate
    pip install -e .
    which rainbowstream # /this-directory/venv/bin/rainbowstream
    # Remove ~/.rainbow_oauth if it exists
    rainbowstream # local version of rainbowstream


I appreciate any help and support. Feel free to fork and create a pull request. You will be listed as a contributor.


Rainbow Stream is released under an MIT License. See LICENSE.txt for details.