README.md
1twitter クライアント sayaka ちゃん version 3.5.1 (2021/03/18)
2======
3
4ターミナルに特化した twitter クライアントです。
5
6* フィルタストリームの垂れ流しが出来ます。
7* フィルタストリームによる疑似ホームタイムラインが表示できます。
8* mlterm などの SIXEL 対応ターミナル用です。
9* X68030/25MHz、メモリ12MB でも快適(?)動作。
10
11更新履歴
12---
13* 3.5.1 (2021/03/18) … アイコン取得を HTTPS でなく HTTP, HTTPS
14 の順で試すよう変更。
15 エラー処理をいくつか改善。
16* 3.5.0 (2021/03/03) … C++ に移行し vala 版廃止。
17 画像は現在のところ JPEG, PNG のみ対応。
18 ターミナル背景色の自動取得を実装。
19 --protect、--support-evs オプション廃止。
20 --noimg オプションを廃止 (--no-image に変更)。
21 userstream 時代の録画データの再生機能廃止。
22* 3.4.6 (2020/11/10) … --no-image 指定時のアイコン代わりのマークが
23 化ける場合があったのでマークを変更。
24* 3.4.5 (2020/05/15) … 表示判定を再実装して
25 フォローから非フォローへのリプライが表示されてしまう場合があるのを修正。
26 NG ワード判定が漏れるケースがあったのを修正。
27 `--record-all` オプションを実装。
28* 3.4.4 (2020/05/01) … Linux で SIGWINCH 受信で終了していたのを修正。
29 リツイートの連続表示を修正。SIXEL 判定のタイムアウトを延長。
30 --token オプションの動作を変更。ログ周りを色々修正。
31* 3.4.3 (2020/02/15) … 引用ツイートが表示されないケースがあったのを修正。
32 SIXEL 対応ターミナルの判別を改善。
33* 3.4.2 (2020/02/01) … 2色のターミナルに対応。--no-color オプションを実装。
34 --no-image オプションを用意 (従来の --noimg も使用可)。
35 SIXEL 非対応ターミナルならアイコンの代わりにマークを表示。
36* 3.4.1 (2020/01/12) … 疑似ホームタイムラインの調整。
37 SIXEL 非対応ターミナルを自動判別してみる。
38* 3.4.0 (2020/01/05) … フィルタストリームによる擬似ホームタイムラインに対応。
39* 3.3.3 (2020/01/04) … Linux でのビルドエラーを修正。
40* 3.3.2 (2018/01/02) … pkgsrc-2017Q4 (vala-0.38.1以上) でのビルドに対応。
41 画像は Content-Type が image/* の時のみ表示するようにしてみる。
42 mbedTLS-2.4.2 に更新。
43 --timeout-image オプションを実装。
44* 3.3.1 (2016/12/23) … リソースリークを含むバグ修正。
45* 3.3.0 (2016/11/25) … libcurl ではなく mbedTLS に移行してみる。
46 --full-url オプション、--progress オプションを実装。
47 --sixel-cmd オプション廃止、PHP 版サポート廃止。
48 EUC-JP/JIS に変換できない文字の処理を追加。
49 画像の高品質化、高速化いろいろ。
50* 3.2.2 (2016/09/25) … glib-networking ではなく libcurl に移行してみる。
51 --post オプション、--ciphers オプションを実装。
52 extended_tweet の表示に対応。
53* 3.2.1 (2016/04/24) … --filter オプション、--record オプションを実装。
54 NGワード編集機能実装。
55 「リツイートを非表示」にしたユーザに対応。
56 shindanmaker の画像サムネイルに対応。
57 Unicode 外字をコード表示。
58 連続するリツイート・ふぁぼを圧縮して表示。
59* 3.2.0 (2016/02/24) … vala 版サポート。
60 画像の横方向への展開サポート (vala 版のみ)。
61 SQLite3 データベース廃止 (PHP 版のみ)。
62* 3.1.0 (2015/07/26) …
63 --font オプションの仕様変更。
64 VT382(?)など(いわゆる)半角フォントの縦横比が 1:2 でない環境に対応。
65 --noimg の時に改行が一つ多かったのを修正。
66* 3.0.9 (2015/06/14) …
67 --eucjp、--protect オプションを追加しました。
68 またコメント付き RT の仕様変更(?)に追従しました。
69* 3.0.8 (2015/05/03) …
70 --font オプションを追加して、画像サイズを連動するようにしました。
71* 3.0.7 (2015/04/19) … コメント付き RT の表示に対応してみました。
72* 3.0.6 (2014/12/06) … libsixel 1.3 に対応。libsixel 1.3 未満は使えません。
73* 3.0.5 (2014/10/23) … 本文を折り返して表示。
74
75
76
77必要なもの
78---
79* C++17 compiler
80* jpeg (libjpeg)
81* libpng
82* mbedtls (2.9.0 or later?)
83* BSD make (not GNU make)
84
85pkgsrc をお使いなら
86graphics/jpeg, graphics/png, security/mbedtls
87をインストールします。
88
89
90インストール方法
91---
92ビルドは以下のようにします。
93
94```
95% ./configure
96% make sayaka
97```
98
99make install はないので、出来上がった src/sayaka (実行ファイル) をパスの通ったところにインストールするとかしてください。
100ちなみに `make all` すると、画像ファイルを SIXEL に変換して表示する
101sixelv というビューアも出来ます (sayaka の実行には不要です)。
102
103
104とりあえず使ってみる
105---
106sayaka を起動します。
107初回起動時に `~/.sayaka` と `~/.sayaka/cache` のディレクトリを作成します。
108また初回起動時というか `~/.sayaka/token.json` ファイルがない状態では
109まず認証を行います。URL が表示されるのでこれをブラウザで開き、
110アプリ連携を許可して、表示された PIN コードを入力してください。
111```
112% sayaka --home
113Please go to:
114https://twitter.com/...
115
116And input PIN code:
117```
118
119PIN を入力するとただちにストリームモードになります。
1202回目以降は認証なしで起動するようになります。
121
122
123使い方
124---
125sayaka ver 3.4 以降はフィルタストリームのみ対応しています。
126キーワード(ハッシュタグなど)検索の場合はキーワードを1つ指定します。
127```
128% sayaka <keyword>
129```
130フィルタストリームによる擬似ホームタイムラインを表示する場合は
131```
132% sayaka --home
133```
134です。キーワードと --home は同時には指定できません。
135
136
137主なコマンドライン引数
138---
139* `--black` … 黒背景用に、可能なら明るめの文字色セットを使用します。
140 デフォルトでは背景色を自動判別しますが、
141 ターミナルが対応していなかったりすると `--white` が選択されます。
142
143* `--ciphers <ciphers>` 通信に使用する暗号化スイートを指定します。
144 今のところ指定できるのは "RSA" (大文字) のみです。
145 2桁MHz級の遅マシンでコネクションがタイムアウトするようなら指定してみてください。
146 このオプションはフィルタストリームと REST API に適用され、
147 画像のダウンロードなどには適用されません。
148
149* `--color <n>` … 色数を指定します。デフォルトは 256色です。
150 他はたぶん 16 と 2 (と 8?) くらいを想定しています。
151
152* `--eucjp` … 文字コードを EUC-JP に変換して出力します。
153 VT382J 等の EUC-JP (DEC漢字) に対応したターミナルで使えます。
154
155* `--filter <keyword>` … キーワードを明示的に指定します。
156 ハイフンから始まるキーワードがオプションと間違われないようにする場合に
157 使います。
158
159* `--font <W>x<H>` … フォントの幅と高さを `--font 7x14` のように指定します。
160 デフォルトではターミナルに問い合わせて取得しますが、
161 ターミナルが対応してない場合などは勝手に 7x14 としますので、
162 もし違う場合はこの `--font` オプションを使って指定してください。
163 アイコンと画像はここで指定したフォントサイズに連動した大きさで表示されます。
164
165* `--full-url` … URL が省略形になる場合でも元の URL を表示します。
166
167* `--jis` … 文字コードを JIS に変換して出力します。
168 NetBSD/x68k コンソール等の JIS に対応したターミナルで使えます。
169
170* `--max-image-cols <n>` … 1行に表示する画像の最大数です。
171 デフォルトは 0 で、この場合ターミナル幅を超えない限り横に並べて表示します。
172 ターミナル幅、フォント幅が取得できないときは 1 として動作します。
173
174* `--no-color` … テキストをすべて(色を含む)属性なしで出力します。
175 `--color` オプションの結果が致命的に残念だった場合の救済用です。
176
177* `--no-image` … 明示的に SIXEL 画像出力をオフにします。
178 このオプションを指定しなくても、ターミナルが SIXEL 非対応であることが
179 検出できれば自動的に画像出力はオフになります。
180
181* `--post` … 標準入力の内容をツイート(投稿)します。
182 文字コードは UTF-8 にしてください。
183
184* `--play` … ユーザストリームの代わりに標準入力の内容を再生します。
185
186* `--progress` … 接続完了までの処理を表示します。
187 遅マシン向け。
188
189* `--record <file>` / `--record-all <file>` …
190 ストリームで受信した JSON のうち `--record-all` ならすべてを、
191 `--record` なら概ね表示するもののみを `<file>` に記録します。
192 いずれも `--play` コマンドで再生できます。
193
194* `--timeout-image <msec>` … 画像取得のサーバへの接続タイムアウトを
195 ミリ秒単位で設定します。
196 0 を指定すると connect(2) のタイムアウト時間になります。
197 デフォルトは 3000 (3秒)です。
198
199* `--token <file>` … 認証トークンファイルを指定します。
200 デフォルトは `token.json` です。
201 `<file>` は `/` を含まなければ `~/.sayaka/` 直下のファイル、
202 `/' を含むと現在のディレクトリからの相対パスか絶対パスになります。
203
204* `--white` … 白背景用に、可能なら濃いめの文字色セットを使用します。
205 デフォルトでは背景色を自動判別しますが、
206 ターミナルが対応していなかったりすると選択されます。
207
208* `--x68k` … NetBSD/x68k (SIXEL パッチ適用コンソール)
209 のためのプリセットオプションで、
210 実際には `--color x68k --font 8x16 --jis --black --progress --ormode on --palette off` と等価です。
211
212その他のコマンドライン引数
213---
214* `-4`/`-6` … IPv4/IPv6 のみを使用します。
215
216* `--eaw-a <n>` … Unicode の East Asian Width が Ambiguous な文字の
217 文字幅を 1 か 2 で指定します。デフォルトは 1 です。
218 というか通常 1 のはずです。
219 ターミナルとフォントも幅が揃ってないとたぶん悲しい目にあいます。
220
221* `--eaw-n <n>` … Unicode の East Asian Width が Neutral な文字の
222 文字幅を 1 か 2 で指定します。デフォルトは 2 です。
223 ターミナルとフォントも幅が揃ってないとたぶん悲しい目にあいます。
224
225* `--max-cont <n>` … 同一ツイートに対するリツイートが連続した場合に
226 表示を簡略化しますが、その上限数を指定します。デフォルトは 10 です。
227 0 以下を指定すると簡略化を行いません(従来どおり)。
228
229* `--ngword-add <ngword>` … NGワードを追加します。
230 正規表現が使えます、というか `/<ngword>/i` みたいな感じで比較します。
231 同時に `--ngword-user` オプションを指定すると、ユーザを限定できます。
232
233* `--ngword-del <id>` … NGワードを削除します。
234 `<id>` は `--ngword-list` で表示される1カラム目のインデックス番号を
235 指定してください。
236
237* `--ngword-list` … NGワード一覧を表示します。
238 タブ区切りで、インデックス番号、NGワード、(あれば)ユーザ指定、です。
239
240* `--ngword-user <user>` … NGワードに指定するユーザ情報です。
241 `--ngword-add` オプションとともに使用します。
242 `<user>` は `@<screen_name>` か `id:<user_id>` で指定します。
243
244* `--ormode <on|off>` … on なら SIXEL を独自実装の OR モードで出力します。
245 デフォルトは off です。
246 ターミナル側も OR モードに対応している必要があります。
247
248* `--palette <on|off>` … on なら SIXEL 画像にパレット定義情報を出力します。
249 デフォルトは on です。
250 NetBSD/x68k SIXEL 対応パッチのあててある俺様カーネルでは、
251 SIXEL 画像内のパレット定義を参照しないため、off にすると少しだけ
252 高速になります。
253 それ以外の環境では on のまま使用してください。
254
255
256.
257---
258[@isaki68k](https://twitter.com/isaki68k/)
259[差入れ](https://www.amazon.co.jp/hz/wishlist/ls/3TXVBRKSKTF31)してもらえると喜びます。
260