Ballisticsの体験版

ハイテクな未来が舞台のレースゲーム Ballistics
スピーダーとかいうホバーバイクで、障害物を避けながら突っ走る。
元々 Windows 用として 2001 年に発売されたゲームで、最低動作環境かなり低め。
体験版はチュートリアルとシングルレースがプレイできる。


ダウンロードしたインストーラを走らせる。

$ sudo chmod +x ballistics-demo.run
$ ./ballistics-demo.run

以下のツールのインストールは飛ばした。

$ ballistics_demo/./ballistics_demo

思った以上にスピードが出て、障害物を避けきれない・・・。
キャプ動画。
http://video.google.com/videoplay?docid=-7161009050152983875

pythonからatコマンドで予約

$ echo "mplayer hoge.mp3" | at now + 1min
$ echo "killall mplayer" | at now + 2min

上のコマンドを python でやる。

import subprocess
p = subprocess.Popen(['at', 'now + 1min'], stdin=subprocess.PIPE)
p.communicate('mplayer hoge.mp3')
p = subprocess.Popen(['at', 'now + 2min'], stdin=subprocess.PIPE)
p.communicate('killall mplayer')

Mumbles

MumblesGNOME用のプラグインベースの通知システム。
dbus でメッセージをやりとりして、cairo 描画でクールな通知をするんだとか・・・。
自分にはよく分からないけど、Ubuntu パッケージあるし、せっかくだから試してみた。

まず本体を起動。

$ mumbles
Successfully loaded RhythmboxMumbles plugin
Successfully loaded GaimMumbles plugin
Successfully loaded GenericMumbler plugin
Successfully loaded PidginMumbles plugin
Successfully loaded GrowlMumbler plugin
Successfully loaded FirefoxMumbles plugin
Successfully loaded ThunderbirdMumbles plugin
Mumbles is Listening...

なんか読み込んでる。これがプラグインベースってことだろうか。
試しに rhythmbox で再生すると曲情報が出現!けっこう綺麗。
メッセージ送信用コマンドの mumbles-send もばっちり機能した。

最後にソースを覗いて送信命令?を探してみた。
dbus はさっぱり分からないが、この方法でも届いた(実際のプラグインは別の方法を取っている)。

#!/usr/bin/evn python
# -*- coding:utf-8 -*-
import sys
sys.path.append("/usr/share/python-support/mumbles/src/")

import Mumbles
import MumblesGlobals
import MumblesDBus
import dbus

dbus_loop = dbus.mainloop.glib.DBusGMainLoop()
bus = dbus.SessionBus(mainloop=dbus_loop)
name = dbus.service.BusName(MumblesGlobals.MUMBLES_DBUS_INTERFACE, bus)

sender = MumblesDBus.MumblesDBus(name)
title = "Mumbles について"
body = ' '.join(["Mumbles is a plugin-driven,", 
		"DBus based notification system", 
		"written for the Gnome desktop."])
sender.Notify(title, body)

綺麗だけど常用はしないだろうなぁ。

gtk.StatusIconとpynotifyをくっつける


トレイアイコン上から吹き出しで通知するように。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import gtk
import pynotify

def tray_activate(event):
	n.show()

def popup_menu(status, button, time):
	menu.popup(None, None, None, button, time)

def menu_pref_blink(event):
	if tray.get_blinking():
		tray.set_blinking(False)
		event.set_active(False)
	else:
		tray.set_blinking(True)	# トレイを点滅させる
		event.set_active(True)	# サブメニューにチェック

def menu_quit(event):
	gtk.main_quit()

# statusicon
tray = gtk.StatusIcon()
tray.set_from_stock(gtk.STOCK_DIALOG_INFO)
tray.set_tooltip('トレイアイコンのテスト')
tray.connect('activate',  tray_activate)
tray.connect('popup-menu', popup_menu)

# pynotify
pynotify.init("test")
n = pynotify.Notification("テスト", "トレイアイコンからニョキッと", gtk.STOCK_DIALOG_INFO)
n.attach_to_status_icon(tray)	# n を tray へくっつける

# menu
menu = gtk.Menu()
item = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES)
submenu = gtk.Menu()
subitem = gtk.CheckMenuItem("点滅")
submenu.append(subitem)
subitem.connect("activate", menu_pref_blink)
item.set_submenu(submenu)
menu.append(item)
item = gtk.SeparatorMenuItem()
menu.append(item)
item = gtk.ImageMenuItem(gtk.STOCK_QUIT)
menu.append(item)
item.connect("activate", menu_quit)
menu.show_all()

gtk.main()

GNOMEパネル上のメニュー・バーが使うアイコン

ls $HOME/.icons/*/22x22/places/start-here.png /usr/share/icons/*/22x22/places/start-here.png

パネルやフォントの大きさに関わらず22x22のアイコンで固定されているっぽい。
メイン・メニューの場合はパネルの大きさによって変わった。

Tango Generator 3

既存のアイコンテーマを組み合わせ、お好みのテーマを生成するアプリケーション。Gnome向け。
Tangoのアプリケーションアイコンを補完したり、小さなModを被せる等が簡単になる。
各テーマの最新版をダウンロードし優先度に従って合成、できたテーマを~/.iconsに置いてくれやがります。
ただ今はまだ不安定?なのか、自分の環境ではたまにエラーが出ています。


3からは、テーマ構成をファイルに読み書きできるようになっていました。

[Tango Generator Configuration]
Collected Application Icons
Custom Application Icons
Upstream GPL
Custom Mime Types
Tango
Gnome

Tango Generator Configuration Filesに参考になるテーマファイルがありました。

Aldrinの最新版

オープンソースの音楽作成ソフトAldrin Modular SequencerLinux用のJeskola Buzzクローン。
本家Buzzのmachineは使えない別物だけれど、InfectorやMatildeTrackerなどの一部が移植されていたり、DSSIやLADSPAプラグインもmachineとして使える。
変わった機能としてfreesoundの音ネタブラウザを内蔵、サンプルリストへ直接登録できる。

最新版をソースコードからビルドする際にはlibzzubも新しくしておくこと。
自分でビルドせずにAldrin Unofficial Repositoryのバイナリを利用するのもいいのかも。

#!/bin/bash
cd ~/
svn co http://svn.zeitherrschaft.org/zzub/trunk zzub &&
cd zzub &&
scons configure &&
scons &&
sudo scons install &&
cd src/pyzzub &&
python setup.py build &&
sudo python setup.py install

cd ~/
svn co http://svn.zeitherrschaft.org/aldrin/trunk aldrin &&
cd aldrin &&
scons &&
sudo scons install

ホイホイっと更新してしまう適当なスクリプト