🐈

デスクトップにお猫様をお迎えする

2022/08/29に公開

ねこ…かわいいな…
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
そうだ!ねこ様をお迎えしよう!

Neko (ソフトウェア)

先日、ネットの海を漂っていたところNekoなるソフトウェアを偶然にも知りました。
https://ja.wikipedia.org/wiki/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…のところです。
http://www.daidouji.com/oneko/

落としたら解凍しておきます。

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)。

トラ猫
犬
BSDデーモン
木之本桜
大道寺知世

リンク集

http://www.3bit.co.jp/~sasaki/oneko/
https://torazuka.hatenablog.com/entry/20110508/imake






脚注
  1. https://qiita.com/DaikiSuyama/items/09f5aa399aad37783146 ↩︎

  2. https://twitter.com/nikkei_linux/status/1164133140694106114 ↩︎

  3. https://www.mistys-internet.website/blog/blog/2013/10/19/no-cpp-precomp-the-compiler-flag-that-time-forgot/ ↩︎

  4. https://trac.macports.org/ticket/62895 ↩︎

Discussion