タイトルはちょっと言いすぎですね。(^^;
「GUI対CUI」どちらが人にとって敵したインターフェースなのだろう。
そんなことを語りだすと長くなりそうですが、DOT的には
「GUIとCUIをどこで切り分けるか」ってのが重要なことで、
どちらが勝るかという問題はどうでも良いと思ってます。
Unixの世界では長年の間「X Window System」がGUIを提供する システムとして定着していました。しかし、全てのイベントを Xサーバとの通信でやり取りする方法は、ネットワーク透過性など 優れていますが、その圧倒的な重さは世界中のみんなにとって ストレスでした。(本当か!?)
その遅さに耐えきれない、又は、CUIの快適さから抜けられない 人々はXから逃げて、console,kon,screenなどを使い、 そして、GUIが必要なときには嫌いなXに切替えるという生活を 送っていました。
そんな中、突如として(そんなことはない)現れた救世主が、 Linux Frame Bufferだったわけです。
前置きが長くなりましたが、ここではLinux Frame Bufferを 活用し、快適なコンソール生活を送るための情報を 載せます。そして、コンピュータ上からXを消し去る ことを最終目標とします。 と言いながらこの原稿は、MacOSX上のXから書いてたりします。 悲しきかな人生。 しかも、ほとんどリンク集でしかありません。(^^;
通常ビデオカードにはVRAMと呼ばれるメモリが存在します。GeForce4 Ti 128Mなんかの 128Mってのがそれですね。最近だとDDR SDRAMが使われてるようですね。 XやAquaなどはなんらかの処理を行った後VRAMに描画データを置きます。ビデオカードはVRAMに従ってRGB値とかにエンコードし、ディスプレイに送ることでユーザに文字や写真などを見せます。(といったところでしょうか?)
これら描画のための機能を汎用的に扱えるようにしたものが、Linux Frame Bufferです。 説明はめんどくさい(知らない)ので省きますが、コンソール画面で画像を見たい場合に 有用なものですとだけ言っておきます。
Frame Bufferが有効になっているかどうかは、色々方法はありますが
%> cat /dev/fb0
で確認することができます。fbを有効にする方法等は、下記のページ等で調べて下さい。(手抜き)
jfbtermはfbを利用してコンソール上で多言語を表示可能にします。
fb環境の必需品です。uniconでもことたりますが。
インストールは下記のJFBTERM Projectからソースを取ってきて、
%> ./configure;make;sudo make install
%> sudo mv /usr/local/etc/jfbterm.conf.sample /usr/local/etc/jfbterm.conf
でいけると思います。存在しないフォントをjfbterm.confで指定していると
起動してくれないので、そのときはjfbterm.confの該当するフォントを
コメントアウトしてください。
ちなみに私は最近もっぱらuniconですので、jfbterm使ってません。(^^;
テキストベースのブラウザです。 fbやX上に画像を表示することも出来ます。(インライン画像表示)
私が知る限り世界最速のWEBブラウザでしょう。使い慣れたら最強です。
w3mにも採用されているfb上に画像を表示するプログラムです。 fb使うなら必需品。写真集を眺めたり。 反転や拡大縮小など基本的な画像ビューワの機能を備えています。
fbgの作者が作っているfbを画像として保存するためのプログラムです。 fb使いに必須と言うわけでは無いですが、スクリーンショットを取るときに使えます。
なんとfb上でTVを見ることができます。私は試したことありませんが。 xawtvというパッケージに含まれています。
ちょっと脱線気味ですが、日本語をローマ字のままインクリメンタルサーチするためのツール。 富豪的プログラミングに則って、内部的に日本語をローマ字に置き換えてサーチする(のだと思う)。
ちょっと乱暴ですが「ターミナルエミュレータにタブ機能を付加したもの」がscreenです。 コンソール画面を複数持って、それを切替えながら使うことができます。画面間のコピー&ペーストも可能です。
CUI信者ならこれを使わないとダメです。「screenを使わなければ、UNIXの本当の恩恵は受けられない」と いう人もいるぐらいです。操作になれてしまえば、めっちゃ便利なものとなるでしょう。
tag2htmlは私が作ってるMP3のタグをhtmlに出力するためのツールです。 これをmpg123のフロントエンドとして使えるようにしようと思ったのですが、 cmp3もあるしやめました。(^^;
mpg123はテキストベースのmp3プレイヤーです。ランダム演奏や繰り返し演奏などの 標準的な機能を持っています。xmmsなんて使ってられません。
mp3エンコーダが有料になるという話があったせいか、少し肩身の狭い開発のような気がします。 まったくもって、あってはいけないことです。
ogg123は Ogg Vorbisのプレイヤーで、mpg123と同等の機能を備えています。 こちらはフリーのCODECなので、活発に開発されているのかな?。
テキストベース(ncurses)のmpg123フロントエンドです。xmmsやwinampのような機能を備えています。 また、自分の状態を書き出すことで、現在のセッションの中断&再開を行うというユニークな機能があります。 まぁ一言で言うとサスペンドというやつですが。
コンソールユーザのためのcannaクライアントです。 いわゆるIM(Input Method)と呼ばれる物です。 これがないと日本語入力できまへん。skkユーザはskkfep使ってね。 ちなみに、私は何故かcanfepユーザです。
テキストベース(ncurses)のゲーム集です。tetrisやrogueなどが入ってます。 遊び過ぎには注意です。
テキストベースのメーラーです。newsも読むことが出来ます。 学校で強制的に使わされていたのでマイデフォルトになってしまいました。 その他にもemacsで動くメーラーや、超軽量なメーラーがあるようです。
英和辞書ツールです。インクリメンタルサーチ可能で、操作はEmacs風です。 実はMyDの最大の特徴はXセレクションを入力に使えるところなのですが…。 MyD自身は辞書を持たないので、別途辞書を用意する必要があります。 私はgene95を使ってます。 和英できるようパッチを持ってる人や、そういうツールを持ってる人は教えて下さい。
「時は満ちた、忌まわしき過去の産物は消してしまえ。」
さぁ勇気を持って
%> rm -rf /usr/X11R6
を実行するのだ………………………まだ無理ですね。
コンソール画面上では実現できないものがまだまだあります。 例えば、swfやpdfやdvi(dvi2ttyで見れるが、フォントの大きさや図などは扱えない)を表示するためのツールはまだありません。(たぶん) もちろん、Xオンリーをターゲットにして作られたプログラムはどうしようもありません。
しかし!SDLに代表されるように、 これからは「マルチプラットフォーム」が主流になるでしょう。 画像の描画,音楽の演奏,単純な文字列の表示といった上位層に位置する機能も、中間的なライブラリやAPIに よって吸収され、ハードウェアや細かなメソッドを問わなくなります。きっとそうなります。
そのときを夢見てさようなら。