デスクトップにお猫様をお迎えする
ねこ…かわいいな…
そうだ!ねこ様をお迎えしよう!
Neko (ソフトウェア)
先日、ネットの海を漂っていたところNekoなるソフトウェアを偶然にも知りました。webneko.netで動いているのを見て、是非是非デスクトップにお招きしたいと…
かわいい…
環境
M1 MacBook Air (macOS 12.5.1)
GCC-11 (Homebrew GCC 11.3.0_2)
GNU make (4.3, arm-apple-darwin21.1.0)
Imake (1.0.8)
XQuartz (2.8.2, xorg-server 1.20.14)
GCC、GNU make、Imake、XQuautzは全てHomebrewで入ります。
$ brew install gcc make imake xquautz
Ubuntuだとsudo apt install oneko
一発でNeko入るらしい[2]
コードを入手
NekoはHomebrewにはないので、自力でビルドすることにします。
まずはソースコードをこのサイトから入手します。Current version for…のところです。
落としたら解凍しておきます。
for CLI:
$ wget http://www.daidouji.com/oneko/distfiles/oneko-1.2.sakura.5.tar.gz
$ tar xf oneko-1.2.sakura.5.tar.gz
ビルド
ビルドする方法は以下の通りなんですが、このままだとエラー吐いて死にます。
$ cd oneko-1.2.sakura.5
$ xmkmf
$ make
………
clang: error: no such file or directory: 'DarwinMachineDefines'
または
oneko.c:745:5: error: implicit declaration of function 'pause' is invalid in C99
………
GCCを使う
まずClang使ってるのが変です。READMEではccを使うように書かれていて、実際ccを呼んでるんですが、どうも中身がClangになっているらしい。READMEではgccでも今は動くとのことなので、GCCを使うように変更します。
Imakefileの初めにこの行を追記して、もう一度xmkmfを実行します。
CC = gcc-11
しかし、これだけではまだエラーが出ます。
$ make
………
gcc-11: error: unrecognized command-line option '-no-cpp-precomp'
………
どうも、AppleのC++コンパイラが悪さをしないようにするためのオプションらしい[3]。第一C++じゃないので、Makefileを書き換えてこのオプションを指定している行を書き換えます。
CCOPTIONS = -Wall -Wpointer-arith #-no-cpp-precomp
M1(ARM64)の場合
DarwinMachineDefines
に関して次のようなエラーが出た場合、それはARM64の上でコンパイルしようとしている(のにそれに対応する設定が見当たらない)からのようです[4]。で、どうもこのエラーはMakefileからそれに関する文を削除すればとりあえず動くらしい。リンク先に書かれていたようにImake.cfとdarwin.cfへの追記もしてみましたが、特に解決しませんでした。
$ make
………
gcc-11: warning: DarwinMachineDefines: linker input file unused because linking not done
gcc-11: error: DarwinMachineDefines: linker input file not found: No such file or directory
………
DarwinMachineDefines
をMakefile内で検索すると三ヶ所ありましたが、そのうち二つはC++をコンパイルする時のオプションだったので無視して、STD_DEFINESの行だけ書き換えます。
STD_DEFINES = -D__DARWIN__ -DNO_ALLOCA -DCSRG_BASED $(PROJECT_DEFINES)
DarwinMachineDefinesをオプションに追加しているdarwin.cfを見るとその後の-D三つも追加しているようなんですが、これは特に削除しなくても動きました。
これでコンパイルに成功するはずです。
お猫様をお迎え
コンパイルに成功したら、起動しなきゃですね!
$ ./oneko &
で起動します(バックグラウンドで実行している点に注意)。
このコマンドを実行すると、XQuautzが起動するはずです。画面をよく探してください、もう猫はどこかにいます…!
あっ…!
かわいい…!
killがつらい
おまけ
なんとonekoはたくさんオプションがあります!
-tora トラ猫が走ります。
-dog 犬が走ります。
-bsd_daemon BSD デーモンが走ります。
-sakura 木之本桜が走ります。
-tomoyo 大道寺知世が走ります。
種類ごとにマウスカーソルの形も変わります。
これ以外にも色を変える、特定のウインドウを追いかけるなど、いくつかオプションがあります。
さらに、Nekoは様々なバージョンがあり、oneko-sakuraの他にもメール通知機能があるものもあります(oneko 2.0)。
リンク集
Discussion