試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

仮想花火を見る

今年の夏は一度も花火を見ていないため、夏が終わる前に、せめてLinux上で花火を見てみよう、ということで、2つの仮想花火を取り上げることにする。なお、両方とも音は出ないので、好みにより、別途用意しておく必要があるかもしれない。
仮想花火を見る以外には、動画投稿サイトで「花火」や「fireworks」「スターマイン」などを検索して、見るのもよい。音も出る*1

  1. XScreenSaverのFireworkx
  2. XFireworks
  3. その他

XScreenSaverのFireworkx

XScreenSaverの中には、「Fireworkx」という、花火のスクリーンセーバがある。
スクリーンセーバとして使用する以外にも、

$ /usr/lib/misc/xscreensaver/fireworkx

のように実行することでも見ることができるが、ウィンドウ内をクリックしたりすると落ちるようだ。
色々とオプションで挙動を制御でき、

$ man fireworkx

で詳細が見られる。
(デフォルト設定では)見た目はかなり綺麗で、広がった後にシュルシュルと動いたりすることがあったりもして凝っている。

欠点は、CPUへの負荷が非常に高いこと。

XFireworks

かなり古い(最終更新が2000年)。Xのルートウィンドウに花火を表示するというもの。オプションしだいで派手にもできるが、重くなる。
http://www.vector.co.jp/soft/unix/amuse/se154752.html
からソースをダウンロードして、展開後、

$ tar zxf xfireworks-1.3.tar.gz
$ cd xfireworks-1.3/

Makefileの中の

  • PREFIX(例: /usr/local)
  • X11BASE(例: /usr)
  • CFLAGS(例: -O2 -march=[使用しているCPUに合わせた文字列] -pipe)

などの値を必要に応じて書き換え、ビルドする。

$ make
(略)
$ strip xfireworks
$ sudo paco -lD make install
mkdir -p /usr/local/bin
cp xfireworks /usr/local/bin
chmod 0755 /usr/local/bin/xfireworks
mkdir -p /usr/local/etc
cp xfireworks.conf /usr/local/etc
chmod 0644 /usr/local/etc/xfireworks.conf
mkdir -p /usr/local/man/man1
cp xfireworks.1.gz /usr/local/man/man1
chmod 0444 /usr/local/man/man1/xfireworks.1.gz

この後でxfireworksを実行すると、花火が動き出すのだが、デスクトップ環境上では、ルートウィンドウが既に使用されているため、「デスクトップ」を管理しているプログラムを止める必要がある。Xfce 4.4では、設定マネージャから「デスクトップ」を開き、「Xfceにデスクトップを管理させる」のチェックを外すのだが、後でまた入れる必要もあり、面倒な上、デスクトップの右クリックなどもできなくなる。
そこで、Xnestを使用して、ウィンドウの中で実行させてみる。Xnestは、新しいXのディスプレイを既存のディスプレイの中のウィンドウとして作成できる。
「:1」の部分は、使用されていないディスプレイ番号を指定し、-geometryオプションの引数は、ウィンドウのサイズ指定。好みに応じて変えるとよい。

$ Xnest :1 -geometry 1024x768 &
$ DISPLAY=:1 xfireworks -fine 200 -after-image 150 -gradation 64 -wait 10000
AUDIT: [日時]: [XnestのプロセスID] Xnest: client 1 rejected from local host (uid [ユーザID])
No protocol specified
Error in Disp_Create:Cannot open display.

しかし、実際に実行させると、上のようにエラーとなり、そのままでは使えない。新しいディスプレイに対する認証が必要。既存のディスプレイの「MIT-MAGIC-COOKIE-1」の後ろの文字列を使用して

$ xauth list
[マシン名]/unix:0  MIT-MAGIC-COOKIE-1  [文字列]

下のように認証する。

$ xauth add :1 MIT-MAGIC-COOKIE-1 [上の文字列部分をコピペ]

これでXnestのウィンドウに花火が出るようになる。

$ DISPLAY=:1 xfireworks -fine 200 -after-image 150 -gradation 64 -wait 10000

コマンドラインオプションについては、READMEを参照。上の実行例も、このファイルに書かれている例の1つをそのまま使用している。

その他

http://www.kde-look.org/content/show.php?content=2631
に、KDE用の「Fireworks」スクリーンセーバのソースがあるのだが、試してはいない。ビルドにはKDEライブラリとその開発用ファイルが必要。

*1:音が出ても、あの「振動」は伝わってこないし、見た目も、実物には劣ってしまうのだが、こればかりはどうしようもない