はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

w3mについてのメモ

(2023-10-06 更新)

画像も表示できるビューア/テキストブラウザw3mの使い方などのメモ。

目次:

GNU Screenとの組み合わせ

関連ページ: GNU Screenについてのメモ

GNU screen上で表示が崩れる場合の設定

GNU screen 側の cjkwidth オプションと w3m 側の Use double width for some Unicode characters (ある種のUnicode文字を全角にする) オプションの兼ね合いによる。

w3m のオプションの Fix character width when conversion (文字幅の変わる変換をしない) は NO にしておくのが良さそう。

環境に合わせて以下の設定を揃える。 基本的にはオン(全角扱い)にするのが良いらしい。

  1. ターミナルエミュレータで曖昧な幅の文字を全角として扱うように設定する
  2. .screenrcに cjkwidth on と記入
  3. w3m のオプションの Use double width for some Unicode characters (ある種のUnicode文字を全角にする) を YES にする

ターミナルエミュレータで全角として扱うオプションが無い場合や、上記設定でダメだった場合には、それぞれのオン/オフ・YES/NOを逆にして半角に統一する。

参考ページ: Unicode の曖昧な文字幅問題 その2

mlterm + GNU screen + w3mの設定例

曖昧な文字の幅を変更できるmlterm (Multilingual Terminal)での設定。 基本的にはすべて全角にする。

mltermの設定:

  • Unicodeの曖昧な幅の文字を全角文字として扱う: オン
  • 全角文字の論理幅を(1ではなく)2にする: オン

.screenrcの設定:

  • defutf8 on
  • cjkwidth on

w3mの設定:

  • Use double width for some Unicode characters (ある種のUnicode文字を全角にする): YES
  • Fix character width when conversion (文字幅の変わる変換をしない): NO

GNU screen上でマウスが使えない場合の設定

環境変数 TERM の中身が screen になっているのが原因。

.screenrc に term xterm-256color と記入する。

外部ブラウザの使い方

設定する

w3m上でoキーを押して表示されるオプション設定画面から設定する。

使う

  • M … 現在表示しているページを外部ブラウザで表示する
  • ESC-M … 現在のリンクを外部ブラウザで表示する

なお、2M、3Mとすることで外部ブラウザ2、外部ブラウザ3で表示することができる。

Linux Mintの場合、外部ブラウザとしてデフォルトでsensible-browserというコマンドが登録されている。手元の環境ではこれを実行するとFirefoxが実行される。

sensible-browserで起動されるブラウザを変更するには環境変数BROWSERにコマンドを設定する。chromiumを外部ブラウザにするために.bashrcに次のように記入した。

export BROWSER="env chromium-browser"

画像表示をオン/オフする

オプションの「インライン画像を表示 (Display inline images)」をオン/オフにする。

~/.w3m/keymap に以下の行を追加するとキーボードの X でオン、Ctrl+c でオフ、t でオンとオフをトグル切り替えできるようになる。

keymap  X    DISPLAY_IMAGE
keymap  C-c  STOP_IMAGE
keymap  t    SET_OPTION  display_image=toggle

オプションを切り替えたり t キーを押した場合は R で画面を再読込する必要がある。

ブックマーク

ブックマークの使い方

  • 現在のページをブックマークする: ESC-a
  • ブックマークを呼び出す: ESC-b

ブックマークに検索ボックスをつける

検索エンジンへのリンクをブックマークに入れていたのですが、直接検索できると便利だと思い、ブックマークに検索ボックスを入れてみました。

ブックマークは次のようになっています (Googleを追加した状態)。

<html><head><title>Bookmarks</title></head>
<body>
<h1>Bookmarks</h1>
<h2>Miscellaneous</h2>
<ul>
<li><a href="http://www.google.co.jp/">Google</a>
<!--End of section (do not delete this comment)-->
</ul>
</body>
</html>

この <body><h1> の間に次のHTML文字列を入れると検索ボックスが表示されます。

Googleの場合:

<form action="http://www.google.co.jp/search" method="get">
Google: <input type="text" name="q" />
<input type="submit" value="Search" />
</form>

DuckDuckGoの場合:

<form action="https://lite.duckduckgo.com/lite/" method="post">
DuckDuckGo: <input type="text" name="q" />
<input type="submit" value="Search" />
</form>

なお、<input type="submit" value="Search" /> の行を削除するとテキストボックスへの入力後すぐに検索が開始されるようになります。

コマンドラインから検索するスクリプト

Googleで検索するシェルスクリプト

  1. 以下のコードをw3gという名前で保存する
  2. 必要に応じて実行属性を付けたりパスの通ったディレクトリに入れる
  3. w3g キーワード とするとw3mが起動し、画面にGoogleでキーワードを検索した結果が表示される
#!/bin/sh
URL="http://www.google.co.jp/search"

if [ "$1" = "" ]
then
  echo "w3g: search Google with keywords"
  echo "usage: w3g keyword [keyword ...]"
  exit 0
fi

w3m "${URL}?q=$*"

DuckDuckGoで検索するシェルスクリプト

  1. 以下のコードをw3dという名前で保存する
  2. 必要に応じて実行属性を付けたりパスの通ったディレクトリに入れる
  3. w3d キーワード とするとw3mが起動し、画面にDuckDuckGoでキーワードを検索した結果が表示される
#!/bin/sh
TEMPFILE=$(mktemp)
URL="https://lite.duckduckgo.com/lite/"

if [ "$1" = "" ]
then
  echo "w3d: search keyword with DuckDuckGo"
  echo "usage: w3d keyword"
  exit 0
fi

echo "q=$*" >$TEMPFILE
w3m -post $TEMPFILE $URL
rm -f $TEMPFILE

マウスで文字列をコピーする方法

マウスが有効になっているとターミナル上ではクリックした場所にカーソルが移動してしまい文字列を選択することができない。 m キーを押してマウスを無効にすると文字列を選択、コピーできるようになる。 もう一度 m キーを押すとマウスが有効に戻る。