RSSリーダー決定版 canto の紹介


はじめに

Feedlyが不安定で遅かったり、取得できなかったりすることがあるので、コマンドラインで使えるcantoを使ってみました。なかなかいいかんじです。

今回は、cantoの使い方を紹介していきます。ついでにCLIを好むユーザーにオススメできるブラウザの使い方なども紹介します。

一応、Linuxで動作する手順を書きますが、Macでも動かせます。ただし、cantoは、バージョンによって仕様がだいぶ異なりますので注意が必要です。

canto

cantoのインストール

Linux/Arch
$ sudo yaourt -S canto

$ canto
Mac
$ sudo port install canto

$ canto

cantoの起動オプション

# アップデート
$ canto -u 

# 未読数の確認
$ canto -a

cantoの基本操作

基本的に、ノーマルモード(Normal Mode)とリードモード(Reader Mode)に分けられ、キーバインドも異なります。

Normal

キー 内容 設定
h ヘルプ help
j カーソル移動(下) next_item
k カーソル移動(上) prev_item
space 読む(リードモードに移行) "reader"
q 終了 quit
R すべて既読 all_read

参考:
http://codezen.org/canto/config/#main-view

Reader

Spaceを押すと、記事を読むことが出来ます。その時有効なキーバインドは以下の通りです。

キー 内容 設定
l リンク番号を表示する toggle_show_links
g リンク番号をブラウザで開く goto
スクロール(下) page_down
スクロール(上) page_up

参考:
http://codezen.org/canto/config/#reader-view

リンク先をブラウザで開く

リンク先をブラウザで開くには、まず、Spaceでリードモードに移行します。

これにより、上の方に記事の中身が表示されます。ここで、l(L)を押すと、リンクに番号が割り振られます。

そこでgを押すと、番号を指定し、ブラウザで開くという処理を実行できます。

なお、ブラウザの設定は以下のような感じになります。ヘッダとイメージでブラウザ(ツール)を分けられます。

~/.canto/conf.py
link_handler("w3m \"%u\"", text=True)
image_handler("dwb \"%u\"", fetch=True)

ただし、ここではまだ設定しないでください。次に、cantoの初期設定方法を紹介します。

cantoの初期設定

MacとLinuxでは、よく使用されているパッケージマネージャーによりインストールされるバージョンが異なります。したがって、設定も若干異なることになります。注意が必要です。

具体的には、Macの場合、設定ファルをダウンロード後に、URLのみの設定をconfに書かなければなりません。

では、以下は、Linuxで有効な設定方法を紹介します。

まず、設定ファイルをダウンロードします。

$ cd ~/.canto

$ curl -O http://codezen.org/static/conf.py.example

$ chmod +x conf.py.example

$ cp conf.py.example conf.py

$ vim conf.py

次に、設定ファイルの設定を見直していきましょう。

フィードを追加するには、以下のように書きます。表示数の指定やタグ付け、フィルタなどが利用できます。

~/.canto/conf.py
add("http://someurl", rate=30, keep=100)

add("http://some-blog", tags=[None, "blogs"])
add("http://some-other-blog", tags=[None, "blogs"])
filters = [ None, with_tag_in("blogs") ]

add("http://feeds.penny-arcade.com/pa-mainsite") # Implicitly creates "Penny Arcade" tag
add_tag("Penny Arcade", filters=[only_with("Comic:"), only_with("News:")])

次にキーバインドの設定です。ノーマルモードとリードモードがあります。モードによりキーバインドが異なります。

~/.canto/conf.py
keys['/'] = search_filter
keys['y'] = yank

reader_key['n'] = ["destroy", "just_read", "next_item", "reader", "toggle_show_links"]
reader_key['p'] = ["destroy", "just_read", "prev_item", "reader", "toggle_show_links"]

最後の行だけ見ていきましょう。

reader_key['p'] = ["destroy", "just_read", "prev_item", "reader", "toggle_show_links"]

この設定は、前の記事を開いた状態で移動するというものです。末尾に toggle_show_linksを追加したので、リンク番号を表示するという処理になります。

つまり、最後の行では、pを押すと、「前の記事を"リンク番号を表示したまま"開く」というキーの設定ということになります。

これによりlを押す手間が省けます。

ブラウザの設定は、以下の通りです。

~/.canto/conf.py
link_handler("w3m \"%u\"", text=True)
image_handler("dwb \"%u\"", fetch=True)

テキストブラウザかそうでないかで、記述が変わってきますので注意が必要です。

ここで、w3mdwbというブラウザを設定してみました。

つまり、g(goto)でリンクを開くと、w3mが起動し、イメージを開くと、dwbが起動することになります。

参考:
http://codezen.org/canto/config/#example-config

では、以下では、w3mdwbの基本的な使い方を紹介していきたいと思います。

といっても、cantoとの連携に役立つ限りで紹介していきます。

w3m

w3mのインストール

$ sudo pacman -S w3m xclip

w3mの便利設定

w3mをブラウザに設定した場合は、以下の様なキーバインドを設定しておくと便利です。

~/.w3m/keymap
keymap m EXTERN_LINK "echo %s | xclip -i -selection clipboard"
keymap M EXTERN "echo %s | xclip -i -selection clipboard"

参考:
http://mba-hack.blogspot.jp/2012/10/w3m.html

x11 Clipboard

Linuxのx11クリップボードは、以下の様な形態になっています。 -selectionで指定します。

-selection 内容
primary マウスでテキストを反転させてコピーした場合
clipboard マウスでテキストを反転させ、右クリックしてコピーを選択した場合
secondary -

Linuxのx11クリップボードを使う場合は、必須の知識です。シェルや端末で独自に設定したい場合は、このようなコマンドになります。

x11 クリップボードへ放り込む

$ xclip -i -selection clipboard

x11 クリップボードから読み込む

$ xclip -o -selection clipboard

参考:
http://l-w-i.net/t/x/clipboard_001.txt

なお、Linuxのクリップボードには、xselもよく使われます。Arch Wikiなどでは、xclipが推されていますが…。

しかし、Arch Wikiの充実度は、素晴らしいですね。私が、Archを使っているのは、この影響も大きいです。

話が逸れましたね。話を戻します。

w3mの話は、これで終わります。次は、debというブラウザの使い方を紹介していきます。

dwb

dwbとは

軽量のGUIブラウザです。

私は、Linuxでは、普段使いとしてdwbというブラウザを使用しています。簡易なブラウジングには、オススメできます。

また、デフォルトのキーバインドがとても優れています。dwbがデフォルトで持っている拡張は、不要ですし、容易です。

不要というのは、基本機能とキーバインドがデフォルトで素晴らしいので、dwbは、あまり拡張する必要がないと個人的には考えています。

dwbのキーバインド

キー 内容 エイリアス,コマンド
i インサートモードに移行 i
: コマンドモードに移行 -
Esc,C-n ノーマルモードに移行 -
/ 検索 ffind
f リンクを開く hi
F リンクをタブで開く thi
j, k, h, l スクロール、戻る、進む down …etc
C+Tab タブ移動 ttab
d タブを閉じる close_tab
;y リンクをクリップボードに保存します chi
yy URLをクリップボードに保存します yank
yt タイトルをクリップボードに保存します tyank
Sk キーバインドの設定を開く skeys
Ss 設定を開く ssettings
C-q 終了 q

dwbの設定

カスタムキーを設定するには、 ~/.config/dwb/default/custom_keysに書きます。

書き方は、以下の様な感じです。

~/.config/dwb/default/custom_keys
Control ;g :t http://google.com;; 150zoom
Control w :close_tab

例えば、上記は、;gを押すと、Googleをタブでズーム+150の状態で開くというものです。

その他の設定についても、同様のフォルダ内にあります。

参考:
http://portix.bitbucket.org/dwb/resources/manpage.html
https://wiki.archlinux.org/index.php/Dwb

dwbでのテキストコピー

例えば、テキストの選択は以下のようにします。

  1. /https + n

  2. i + Shift + → + C+c

簡単には、検索した後、インサートモードでテキストを選択、コピーします。

リンクをコピーしたければ、;yなどのキーが便利です。

tmux

tmuxとの連携


テキストブラウザを使用する場合は、tmuxを使って、画面をコピーできるようにしておくと便利です。1キーでコピーできるように工夫しています。

~/.tmux.conf
# 設定リロード
bind r source-file ~/.tmux.conf \; display-message "Reload Config!!"

# "C-b, [" コピーモードの設定 vi
#set-window-option -g mode-keys vi
setw -g mode-keys vi

# [?]キーバインドの確認

# [p]貼り付け
bind p paste-buffer

# c[Enter]コピー
#bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
bind -t vi-copy Enter copy-pipe "xclip -i -selection clipboard"

# c[Space]選択

# [y]1行コピー(クリップボードとの連携がない場合)
bind -t vi-copy Enter copy-pipe "xclip -i -selection clipboard"
bind -t vi-copy Y select-line
bind y run 'tmux copy-mode\; send-keys Y Enter'

## [y]1行コピー(クリップボードとの連携がある場合)
#bind -t vi-copy Y select-line
#bind y run 'tmux copy-mode\; send-keys Y'

# [v]全行コピー
bind -t vi-copy V begin-selection
bind v run 'tmux copy-mode\; send-keys ggVG Enter'

参考:
http://mba-hack.blogspot.jp/2013/05/tmux.html

追記

だれか、dwbで連続hintsを行うマクロかTipsがあれば教えて下さい。