13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

w3m(w3m-img)をfbterm対応にして,インライン画像表示.ついでにrangerのサムネイルも

Last updated at Posted at 2017-11-21

w3m(w3m-img)をfbterm対応にして,インライン画像表示.ついでにrangerのサムネイルも

  • ubuntu16.04LTS
  • w3m-0.5.3
  • fbterm1.7-2

w3mとは

  • CUIで動くブラウザ.
  • なのにインライン画像表示ができる.
  • 軽い.
  • なんかかっこいい.

しかし,w3mはfbtermに対応していない.

仮想コンソール(tty)の日本語の文字化けは耐え難いので,
fbtermを導入しないのはきつい.
日本語入力もしたい...

\(^o^)/ < オワタ

で終われるわけがない.

考えた.

(。´・ω・) < なんで?

w3mは古いソフトjfbtermに対応しているのだ.

後継であるfbtermに対応できないわけがない.(?)

時間がない人向け

事前準備

  • apt sourceの有効化
    • /etc/apt/source.listを編集
  • debuildを使えるようにする
    • sudo apt install devscripts

w3mの導入手順

  1. $sudo apt source w3m
  2. $sudo apt build-dep w3m
  3. $cd w3m-0.5.3
  4. w3mimg/fb/fb_w3mimg.cを編集
    - __jfbterm__を__fbterm__に置換
    - read_onlyなのでsudoかchmodで適当にする
  5. $sudo debuild -us -uc -b
  6. $cd ../
  7. $sudo dpkg -i w3m_0.5.3-26ubuntu0.1_amd64.deb
  8. $sudo dpkg -i w3m-img_0.5.3-26ubuntu0.1_amd64.deb

終わり.

次からはもう少し詳しく解説していく.

apt sourceを有効にする

Ubuntu16.04の場合,通常は

sudo apt source

ができない仕様になっている.
これはaptで探索するべき場所がコメントアウトされているからだ.

less /etc/apt/sources.list

これで見てみると,

/etc/apt/sources.list
#deb-src

という感じでコメントアウトされていることがわかるだろう.
このコメントアウトされているところを外して,有効にすればよい.

sedを使って華麗にやりたいところだが,怖いので

sudo vim /etc/apt/source.list
:%s/^#dev-src/deb-src/gc

これでポチポチやった.

後は,

sudo apt update

でもしておこう.

w3mのインストール

ubuntuやdebianなどの場合,
w3mといった古いソフトでもパッチが当てられ更新されていることがある.

だから,通常のインストールで大丈夫と思うとそうではない.

sudp apt install w3m

を使ってインストールしていたのでは,fbterm上ではインライン画像表示が使えない.

そもそもw3mが対応しているのは以下のものだ.(これはconfigureのhelpの--enable-images=DEVSのところに書いてある.)

  • x11
  • fb
  • fb+s
  • win

なんでfb対応なのにfbtermでうまくいかないのかというと,
環境変数TERMがjfbtermのときだけ有効になるよう設定されているからだ.
(ソースコードの中で)

かといって,

export TERM=jfbterm
export TERM=xterm-256colors

とやったって,まともに動いてくれない.

仕方がないからソースをちょちょっと書き換えてからコンパイルする必要がある.

patchを読んでみると,環境変数TERMを読み込み判断するif文が,丁寧に書き換えられている.

__jfbterm__かどうかを判断するようにしたまま...

(・д・) < パッチ当ててんのに何でjfbtermやね〜ん

w3mをfbterm対応にする.

aptで導入されるパッケージのソースをダウンロードすればいいやんと思い,

sudo apt source w3m

これに辿り着いた時,

(´・ω・) < 今までの苦労は何だったんだ...

(´・ω・`) < ねぇ...

それはさておき,

色々ファイルがダウンロードされるけど,すでにパッチを当てて解凍されているディレクトリがある.
これをいじればいい.

cd w3m-0.5.3
fgrep -r jfbterm *

でちゃちゃっと検索.

それっぽいファイルの__jfbterm__を__fbterm__に変更する.

パッチも検索に引っかかるけど,c言語のソースだけ書き変えればいい.
目当てのものは,

  • w3mimg/fb/fb_w3mimg.c

ここにあるようだ.環境変数TERMを読み込んでるところを書き換える.
これらのファイルはread onlyなのでchmod u+wするとか,sudo権限で開く必要がある.

sudo vim w3mimg/fb/fb_w3mimg.c
:%s/jfbterm/fbterm/gc

依存関係の解決

ここあたりで,依存関係を解決しておこう.
これでw3mが動作するのに必要なライブラリがインストールされる.

sudo apt build-dep w3m

別に他のライブラリはfbtermに依存していないので問題ない.

コンパイルとインストール

apt source で持ってきたコードはdebuildで簡単にコンパイルできちゃう.

まず,debuildを使えるようにするために

sudo apt install devscripts

そして肝心のコマンド

sudo debuild -uc -us -b

オプションは,署名の省略とバイナリパッケージのみの作成を指定しているらしい.

これで一つ上のディレクトリに__deb__ファイルができているはずだ.(w3mとw3m-imgの二つ)

後は

cd ../
sudo dpkg -i w3m_0.5.3-26ubuntu0.1_amd64.deb
sudo dpkg -i w3m-img_0.5.3-26ubuntu0.1_amd64.deb

で成功するはず.

これで君もw3mユーザーだ.

( ´∀`)人(´∀` )ナカーマ

ついでにrangerのサムネイルで画像がみれるよ

rangerというファイラーではサムネイルに画像が表示できる.

w3m-imgを使って...

ということはfbterm上でも使えるようになる.

W3MIMGDISPLAYとかいう環境変数にw3mimgdisplayの場所を指定する必要があるけれど,
debuildだとデフォルトの位置に入れてくれる.

checkinstallだとインストールされる場所が違うから自分で指定しないといけなかった.

便利だよねえ__debuild__

w3mのkeymapをvim仕様に

最後にw3mのkeymapを変えておこう.
ちょっと使いにくいので,馴染みのvim仕様に!

設定ファイルを置く場所は

  • ~/.w3m/keymap

なかったら作成しよう.

設定方法は,ソースファイルの

doc
doc-jp/README.func
doc-jp/README.keymap
doc-jp/keymap.default
doc-jp/keymap.lynx

辺りを参考にしつつカスタマイズしていこう.

ついでに,

menu.default
menu.submenu

も余力があれば.

(´・ω・) < 後はまあ...

(´・ω・) < インライン表示も乱れたりして見難いことが多いけど.

(´・ω・) < CUIで画像が見れるだけで感動もんっしょ.

(´・ω・`) < ネッ!

参考文献

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?