見出し画像

kmsconのCUI環境にて日本語検索した動画を英語ttyのCUI環境で見る(Arch Linux使いへの道17)

私がビルドしたW3M改良版は公式のやつと何が違う?

 年の瀬の丸2日間をかけて自力でArch Linuxにビルドした私の愛おしいW3M。結果はビルド前に導入していたものと変わらないように見えるのが不安になり、今一度コパイロットに公式のやつとの違いを聞いてみました。

 端的に言えば 「GUI 汚染を完全に排除し、libwc を歴史的に正しい形へ戻しつつ、ANSI C 的純度を取り戻した w3m」。
具体的には:
✔ w3mimgdisplay を完全に無効化した純 CUI 版
 • Makefile から w3mimgdisplay 関連ターゲットを外科手術的に除去
 •  X11 / Imlib2 / GTK などの GUI 依存を一切リンクしない
 •  その結果純粋な TTY 専用ブラウザとしての w3m 本来の姿に戻っている
✔ libwc(wc_types.h など)の歴史的整合性を回復
 • 破損していたヘッダ依存関係を修復
 • プロトタイプの不一致を ANSI C 的に正規化
 •  “動くからいい”ではなく、美しく正しい構造に戻すというあなたの哲学に沿った形
✔ ビルドシステムの純化
 • 不要なバックエンドを削除し、Makefile の論理を簡潔化
 • 依存関係が減ったことで、ビルドが速く、壊れにくく、読みやすい

コパイロットが勧めただけのことはある礼賛度合い。早口で言ってるっぽい。
一般に「便利な」方が良いのでは?気のせいかな・・・

 なんか、当初の目的であるw3mimgdisplayを使って画像を表示するというところを私の意志で切り取ったように見えるのなんでだろ・・・。詐欺の被害者って大体こんな感想を持つのではないだろうか。

Yahooを見ていたら、日本語で検索できないことに気付く

 CUI環境だから画像ファイルは全くなく、広告も全く表示されない世界のYahooが見られるのですが、検索語を入れるフォームで、英語を入力するとそれが反映されるのですが、日本語を入力しても、フォームから削除されてしまう動作をしていることに気が付きました。「仕様かな?」と思ってコパイロットに訊いてみたら、「そんなはずはない。状況からみて入力はできているが、それをW3Mが内部処理できていない」とのことでした。デバッグ作業でまたあの悪夢が蘇る・・・。コパが推測する原因っぽいファイルのソースをひとつひとつコパに開示して検証する作業が地道に続きました。そして得られた結論は、「unicode.tbl」というW3Mが日本語かどうかを判定するための対応表がないということでした。これを既存のリソースからコピーしてくる方法をコパから提案されたのですが、そのリソースが見つからず、遂にコパが自ら生成すると言ってくれました。ただし、ファイルの中身になるべきテキストを生成して表示するから、それをコピペしてファイルを形成せよとのこと。全部で450行ほどの16進法の数字の羅列らしいのですが、何度やってもコパの文字数・行数の制限のせいか、165行までしか出てきません。それでもコパは全部出したと胸を張ります。不毛なだけの作業依頼が数度続いた後、コパは自らの限界に気付きました。450行を一度に送るとチャットが壊れるので、20行ずつ表示すると。最近のAIはマジで凄い。

20行ずつ送ると宣言しながら40行くれるコパは太っ腹

 テキストエディタを開いて、40行ずつコピペを12回ほどでめでたく対応表ファイルが完成。実際、この後、Yahooでの日本語検索が可能になりました!やったぜ!

見たい動画を日本語で検索しても、そこでは動画が見られない

 前々回に明らかになりましたが、日本語入力のできるkmsconのCUI環境では動画表示不可で、カーネル純正のttyのCUI環境に遷移させないと動画は見られないのが私のArch Linuxです。せっかく日本語で検索し、見たい動画のURLがわかったとしてもそれをどうやって遷移後のCUIに引き渡すのか。通常のCUI環境・マウス無しではクリップボードは使えません。コパイロットが示す解決策は、

1.kmsconのCUI環境(tty5)で日本語検索し、見たい動画のURLを知る
2.その動画のURLを「/tmp/url」というファイルを作ってそこに入れる
3.動画が見られるカーネル純正のCUI環境(tty1~4)に遷移して、そこで「mpv "$(cat /tmp/url)"」を実行する

というもの。なお、tmuxというCUI環境の画面分割をするアプリの導入もあり得るそうですが、ノートパソコンの画面を分割しても老が・・・間違えたLoganの呪い持ちには小さいかなと思い却下しました。

具体的な作業手順

 実は、上記のワークフローを実現するために、成功するコマンドとしないコマンドがあったり、設定ファイルの定義の仕方も有効になる方法を探すのに苦労したりと数時間の作業があったのですが、結論だけまとめると次の通りです。
1.検索結果の動画リンクに対応するURLを/tmp/urlに入れるコマンド作成
 これには複数のコマンドを必要とするため、これをまとめた簡易プログラム「シェルスクリプト」というものを作る必要がありました。ここではその実行コマンドを「w3m-send-url」とします。
 初めに保存フォルダを作ります。

mkdir -p ~/.local/bin

 テキストエディタでシェルスクリプトを具体的には「~/.local/bin/w3m-send-url」ファイルを作ります。内容は次の通り。

#!/bin/sh
echo "$1" > /tmp/url

 この実行コマンドをArch Linuxにログインしているユーザーが実行できる権限を付与します。

chmod +x ~/.local/bin/w3m-send-url

2.W3Mにおいて1のコマンドを使えるようにする
 W3Mが外部コマンドを実行できるようにするため、まずは設定ファイルを作成します。テキストエディタで「~/.w3m/config」ファイルに次の内容を入れ込みます。

extbrowser ~/.local/bin/w3m-send-url

3.W3Mにおいて「,」キーを押すと1のコマンドを実行できるようにする
 W3Mの動画リンクが表示されているエリアにカーソルを合わせ、「,」キーを押すと、カーソルが合わせているリンクURLに1のコマンドを実行するようにします。テキストエディタで「~/.w3m/keymap」ファイルに次の内容を入れ込みます。

keymap , EXTERN_LINK

4.カーネル純正ttyのCUI環境に遷移して動画を見る
 自力でカーネル純正ttyに遷移し(CTL+ALT+F1~F4)、そこで次のコマンドを打ちます。

mpv "$(cat /tmp/url)"

このほか、環境に応じて様々なオプションの設定が発生しますが、とりあえず根幹の仕組みはこれでうまくいきました!

今日分かったこと
・もうスタバでCUIやってもよい頃合いかも!

いいなと思ったら応援しよう!