Python
Linux
cli
browser

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

More than 3 years have passed since last update.


はじめに

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があれば教えて下さい。