Ubuntu で窓使いの憂鬱使う方法

(後で見るとき|同じ問題が起こる人)用

1 - uinput をロードするようにする

これは README にあるとおり。
/etc/modules に以下の行を追加

uinput

2 - rc スクリプトを書く

/etc/init.d/mayu に、以下の内容のスクリプトを書く
USER 変数に .mayu を置いているユーザを指定*1

#! /bin/sh

DAEMON=/usr/local/bin/mayu
NAME=mayu
USER=anekos
DESC="Mayu at $USER"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/mayu

do_start()
{
	echo -n "Starting $DESC: "
	if start-stop-daemon --stop --quiet --pidfile $PIDFILE \
			--signal 0
	then
		echo "already running."
		exit
	fi
	env HOME=/home/$USER \
	start-stop-daemon --user $USER --start --quiet --background \
					  --make-pidfile --pidfile $PIDFILE \
					  --exec $DAEMON
	echo "$NAME was started"
}

do_loadtest()
{
	env HOME=/home/$USER \
	start-stop-daemon --user $USER --start --quiet --exec $DAEMON
	echo "$NAME was started"
}

do_stop()
{
	echo "Stopping daemon: $NAME"
	start-stop-daemon --stop --pidfile $PIDFILE
	rm -f $PIDFILE
}


case "$1" in
	start)
		do_start
	;;
	stop)
		do_stop
	;;
	restart)
		do_stop
		do_start
	;;
	loadtest)
		do_loadtest
	;;
	*)
		echo "Usage: $0 (start|stop|restart)"
	;;
esac
# vim: set ts=4 sw=4 :

3 - 起動時に自動で走るように登録

sudo update-rc.d mayu start 10 2 . stop 10 0 1 3 4 5 6 .

デーモンとして、早めに実行してやらないと多分うまくいかない。
代わりに xinput のデバイスの自動追加(? AutoAddDevices)が死んでいそうだけど…

4 - .mayu を HOME に置く

CapsLock を Ctrl に置き換える場合はこんな感じで。

include "linux104.mayu"
keymap Global
mod control += CapsLock
key *CapsLock = *LControl

5 - 再起動

あとは、PC 再起動するだけ。

.mayu が読まれているか確認する

動いていないように思えるときは、

sudo /etc/init.d/mayu loadtest

として、非バックグラウンドで動かしてみる。
そうすると

  loading: /home/anekos/.mayu
/home/anekos/.mayu
  loading: /usr/local/share/mayu/linux104.mayu
/usr/local/share/mayu/linux104.mayu
successfully loaded.

こんな感じの出力があればOK。
既に mayu が起動していたりすると

error: EVIOCGRAB ioctl failed

とでるはずだけど、とりあえずは問題ないと思う。

.mayu をリロードする

.mayu を更新するなどして再読み込みさせたい場合は

sudo /etc/init.d/mayu restart

で、OK

xinput さんが気になる場合

.mayu が先に有効なるから使えるだけで、xinput の方で問題起きていそうな気もする。
なので、 /etc/X11/xorg.conf に以下の行を追加して置くのも良いかもしれない。

Section "ServerFlags"
    Option "AutoAddDevices" "False"
EndSection

こうすると、新機能の hotplug とやらが動かなくなるらしいが、どういう機能なのかイマイチわからない。
この場合、rc スクリプトを書かないでも問題ないが*2、デーモンとして置いたほうが便利だろう。

止めたら、キーボードが効かなくなった

"/etc/init.d/mayu stop" とかすると、キーが一切効かなくなったりするが、X 上だけなので別端末から mayu を再起動すれば大丈夫。

*1:Winと同じようにメインのユーザの HOME に .mayu を置きたかったのでこうした

*2:mayu コマンドで普通に起動して使える