Skip to content
This repository has been archived by the owner on Dec 29, 2017. It is now read-only.

vmchale/tw-rs

Repository files navigation

Command Line Interface Tweeter (rust version)

Build Status

Screenshot in alacritty:

Displaying a user's timeline in a terminal.

The rust version of this tool is somewhat faster than its haskell counterpart, but the haskell one has a couple more features.

Reasons to use tw-rs:

  • Faster than other tools (t, tweet-hs, oysttyer)
  • Lightweight (5MB executable)
  • Unobtrusive
  • You know rust and like being able to extend your tools
  • You want something that can be called from vim
  • Support for colored output
  • You want a twitter library for rust.
  • Can be used in scripts
  • BSD3 licensed

Reasons not to use tw-rs:

  • Several features are still in development
  • Fewer features than rainbowstream, t, or oysttyer
  • You want to extend your tools in haskell
  • You want "twitter in a terminal" that rainbowtools or oysttyer provides.
  • You want to be able to easily tweet emoji

Config

Generate a token to authorize access to your twitter account by following the guide here

Then place your API keys and OAuth tokens in a file (default is $HOME/.cred), separated by a line break:

api-key: API_KEY_HERE
api-sec: API_SECRET_HERE
tok: OAUTH_TOKEN_HERE
tok-sec: TOKEN_SECRET_HERE

Note that the labels must in the correct order, and separated from the keys with whitespace.

Installation

If you're on Linux/Windows the best way is probably to download the binaries from the releases page here.

Otherwise, you'll have to build from source. To build from source, install cargo with rustup; on unix systems this is as simple as

curl https://sh.rustup.rs -sSf | sh

Then type cargo install tw-rs.

Use

View Profiles

To get your profile, simply type:

$ tw user

To view a user's profile, type e.g.

$ tw user lemondefr

If you have any problems along the way:

$ tw help

Sending tweets

$ tw send "YOUR_TWEET_TEXT"

Viewing your timeline

You can also use

$ tw view

to view your own timeline.

Features

  • tweet
  • view timeline
  • view user profiles
  • output with id of tweet
  • delete tweet
  • retweet
  • reply to tweet
  • fav/unfav tweets
  • follow/unfollow users
  • display quoted tweets alongside
  • fetch mentions
  • block accounts

Speed

In the bash directory you will find a script that times tw-rs, tweet-hs, oysttyer, and t fetching tweets. On linux, it consistently places tw as the fastest.

Comparison to other command-line clients

Tool Language Color output Interactive Vim plugin support Scriptable Send emoji
tw Rust x x x
rainbowstream Python x x x
oysttyer Perl x ½
tweet-hs Haskell x x x
t Ruby ½ x

Screenshots (alacritty + solarized dark)

tw

Displaying a user's timeline in a terminal.

t

Displaying a user's timeline in a terminal.

rainbowstream

Displaying a user's timeline in a terminal.

tweet

Displaying a user's timeline in a terminal.

oysttyer

Displaying a user's timeline in a terminal.

Some results

These aren't 100% great benchmarks since twitter's load varies, but tw does come in first consistently. This is done with haskell's bench tool.

Timed results.

Coloring

tw-rs respects the CLICOLOR behavior defined here. If you wish to disable colorization,

 $ export CLICOLOR=0

Emoji

To make tw use standard unicode in place of symbol fonts, simply set

 $ export DISABLE_EMOJI

Library

A library is included. It's fairly easy to use once you have the credentials set up, though it requires a fixed oAuth token.

Haskell

There is a haskell version of this, with a binary and a library, available here. The haskell library is more complete.