ターミナル上で動くtwitterクライアント作った

![](https://github.com/flum1025/flumtter/wiki/images/main.gif)

## 経緯
コードを書いている時にちょっとTLを確認したくなった時とか、TweetDeckとかを開いてしまうと集中力が切れてしまうので、ターミナル上で使えるtwitterクライアントが欲しかった
いろいろ探してみたが、どれもいい感じにstreamingを表示してくれるのがなかったので自分で作った

## Flumtter
Flumtter自体プログラミングの練習がてら昔からちょくちょく作っていたんだけれど、今回ようやくgem化して公開してみました
github: [flum1025/flumtter](https://github.com/flum1025/flumtter)
rubygems: [flumtter](https://rubygems.org/gems/flumtter)

### 何ができるの？
![スクリーンショット 2017-04-24 17.23.49.png](https://qiita-image-store.s3.amazonaws.com/0/147445/40ce1a4e-a6da-c8ee-c01b-5ab7048ed899.png)
基本的なツイッタークライアントでできることは大抵できる
tmuxをインストールしてあれば`--tmux`オプションを指定することでマルチユーザーマルチカラムで起動することもできる
またプラグインにも対応しているため、ほしい機能があったら簡単に実装可能

### インストール
gemでサクッとインストール

    $ gem install flumtter

UbuntuとMacではそれぞれ以下のものをインストールする必要がある

- On Ubuntu

        $ apt install ruby ruby-dev build-essential libncurses5-dev tmux

- On MacOSX

        $ brew install ruby tmux

### 実行

    $ flumtter

初回起動時はConsumerKey, ConsumerSecretを聞かれるので[ここ](https://apps.twitter.com/)からアプリケーション登録（write権限がないとツイートとDMができません）
二つ目以降のアカウント追加時はキーの入力をスキップすることができる

### 使い方
基本的にコマンド入力画面で`?<Enter>`を入力するとヘルプやその画面で使用可能なコマンド一覧を表示する
メインのストリーミング画面では入力中のコマンドが表示されないので注意
![スクリーンショット 2017-04-24 17.34.18.png](https://qiita-image-store.s3.amazonaws.com/0/147445/1567b8b2-9745-efae-f451-b4fcea72d196.png)

特定のツイートオブジェクトに対して何か操作したい場合はindexを指定することで操作することができる
![スクリーンショット 2017-04-24 17.39.39.png](https://qiita-image-store.s3.amazonaws.com/0/147445/d8d103ab-3426-1ed1-c552-cd43592f7f1b.png)
例: `f 60<Enter>` 60のツイートをファボる
※`f<Enter>`した場合はindex入力画面が表示される

別ウィンドウからメインウィンドウへ戻りたい場合は`ESC`か`Ctrl+c`で戻れる
※メインウィンドウで`Ctrl+c`してしまうとアプリケーションが終了してしまうので注意
![スクリーンショット 2017-04-24 17.48.29.png](https://qiita-image-store.s3.amazonaws.com/0/147445/34a1d34e-1a8d-487d-500c-f974358d44bc.png)

### コマンドの詳細
- `g Conversation`
会話を表示
![スクリーンショット 2017-04-24 17.52.13.png](https://qiita-image-store.s3.amazonaws.com/0/147445/87ec3ff2-3fcb-e72e-1ca3-b4edbf081c13.png)

- `^ Reconnection`
ネットワークの切断等によってストリームが切れてしまった場合に再接続する

- `- synchronize-panes on`
`--tmux`モード使用時、全カラムに同じ操作をする時に使用する
![column.gif](https://qiita-image-store.s3.amazonaws.com/0/147445/2ed2492e-addd-244e-b7e9-e1d942ec52ef.gif)

- `= synchronize-panes off`
上記モードの無効化

### CLIコマンド
`-h`でヘルプを表示

```bash
$ flumtter -h
Usage: flumtter [options]
    -n, --name VALUE                 account name
    -i, --index VALUE                account index
    -s, --non_stream                 without stream
    -d, --debug                      debug mode
        --args VALUE
        --tweet VALUES               new tweet
        --tweet_with_image=V,V       new tweet with image
        --tpry                       pry with twitter instance
    -l, --list                       user list
        --timeline_load VALUE        load timeline num
        --[no-]timeline_load?        load timeline on init
        --pry                        console mode
        --tmux                       enable tmux mode
        --names=V,V,...              set account names with tmux
```

- `name`
起動するアカウントのscreen_nameを指定

- `index`
起動するアカウントのindexを指定(AccountSelector画面のindex)

- `non_stream`
ストリームなしで起動

- `debug`
デバッグモードで起動

- `args`

- `tweet`
ツイートする文字列を入力
例: `flumtter -n flum_ --tweet ツイート`
例: `flumtter --tweet 複数ユーザーでツイート --names=user1,user2`

- `tweet_with_image`
画像を投稿
例: `flumtter -n flum_ --tweet_with_image=画像投稿,~/Desktop/test.png`
例: `flumtter --tweet_with_image=複数ユーザーで画像投稿,~/Desktop/test.png --names=user1,user2`

- `tpry`

- `list`
登録ユーザー一覧

- `timeline_load`
起動時にタイムラインを読み込む数を指定

- `[no-]timeline_load?`
起動時にタイムラインを読み込むかどうか

- `pry`

- `tmux`
tmuxモードで起動
例: `flumtter --tmux --names=user1,user2`

- `names`
複数ユーザーを指定

### カスタマイズしたい
`~/.flumtter/setting/setting.rb`をいじることでカスタマイズできる
色は以下の種類に対応

```
:white
:light_gray
:gray
:back
:red
:light_red
:green
:light_green
:brown
:yellow
:blue
:light_blue
:purple
:pink
:cyan
:light_cyan
```

### Pluginを作りたい
`~/.flumtter/plugins/`にファイルを配置することで起動時に自動的に読み込まれる
プラグインの書き方は[flumtter/lib/flumtter/app/plugins/](https://github.com/flum1025/flumtter/tree/v5/lib/flumtter/app/plugins)のファイルを参照

### バグあったんだけど
バグを見つけたら実行環境、エラーログを[issues](https://github.com/flum1025/flumtter/issues)までお願いします！