swapwm

gdb hacks - ターゲットプロセス内の関数を呼び出す (http://www.keshi.org/blog/2006/02/gdb_hacks.html)」の exec 呼ぶ(どうでもいいけど execlp は (3) な気が)例は、面白いものの利用方法皆無だと思っていたのですが、既に動いてるウィンドウマネージャの切り替えに使えることに気付きました。

というわけでなんか作ってみた。要 Linux & x86

http://shinh.skr.jp/binary/swapwm.c

えーと gdb でもぐり込んで exec する方法だと、たぶん gdb は exec の戻りを待っちゃうので新しいウィンドウマネージャが Detach されないなー、ということで C で書いた、という。原理は livepatch とかと似たようなっていうか適当にコード参照しつつ適当に dirty hack したとかそんな。

使い方は、

$ gcc swapwm.c
$ ./a.out 13056 /usr/bin/twm

とかそんな感じ。 13056 ってのは今動いてるウィンドウマネージャのプロセスID 。最後の引数は交換した後の WM のフルパス。

さっきまで sleep だったプロセスが急に ls に変わるとかもなかなか良いのですが、やはりウィンドウマネージャがパチパチ変わるのは結構びびって楽しかったです。

いや、普通はウィンドウマネージャ色々試したい時とかは、

$ X :1&
$ DISPLAY=:1 xterm

などとして X と xterm だけを動かして、それから xterm の中で色々 wm 動かしてみるんでしょうけどね…

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h