#!/usr/bin/env ruby =begin = w3mclinet: GNU Screen上で起動しているw3mにURLを開かせる == 概要 これはGNU Screen上で立ち上がっているw3mにURLやファイルを開かせるプログラムだ。 Screen上でw3mを複数立ち上げるとどのw3mか迷ってしまう。 が、w3mclient.rbを使うと迷う問題は解決する。 名前からわかるようにemacsclinetのパクリである。 == 書式 $ w3mclient.rb [-s] [-w window] url... == オプション : -s w3mのwindowへ移動しない。 実際には移動してからもとのwindowへ戻る。 : -w どのwindowのw3mに作用するかを指定。 windowの指定は番号でも名前でもよい。 : -t URLを新しいタブで開く。そのとき ~/.w3m/keymap にて   keymap M-x COMMAND と指定する必要がある。 == 原理 GNU Screenを使っていると、コンソールプログラムに任意の文字列を送り込むことができる。 そして、screen -X経由で外部からScreenのコマンドを発行できる。 そのため、Screenにw3mを操作させることができる。 =end DEFAULT_WINDOW = "w3m-base" # w3mが使うwindowの名前か番号 require 'getopts' getopts("st", "w:") string = ARGV.collect{|url| url.strip! if $OPT_t "^[xTAB_GOTO^M#{url}^M" else if url =~ /^http|^ftp/ "U#{url}^M" else "V#{File::expand_path url}^M" end end }.join if string.empty? $stderr.puts "must be one argument!" exit 1 else cmds = [ "select #{$OPT_w || DEFAULT_WINDOW}", "stuff #{string}" ] cmds << "other" if $OPT_s exec "screen", "-X", "eval", *cmds end