黒いIDAが恋しい ～IDA7.3でカラーテーマをインポートするためのWorkaround

##はじめに
先日からIDA7.3のデモ版をありがたく使わせていただけることになりましたが、カラーテーマ設定の方法が変わっていたので、設定方法をまとめました。手順はページ内の「IDA7.3 DEMO版でのWorkaround」の項目にまとめていますので、1秒も惜しい方はそちらまでどうぞ。

##Importが見当たらない
初期設定は汚れなきあの配色ですね。でもやっぱり黒いIDAが恋しくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/91c2543f-4759-406c-b8ef-af1cdb8e0b09.png)

ところが、カラーテーマをインポートしようと思いましたが、「Import」ボタンが見当たりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/c218c547-b4fc-7d05-d1d2-b89354785b10.png)

どうやらIDA7.3から設定方法が変わったようです。

##公式の情報
公式様からカラーテーマに関するチュートリアルが出ております。

>IDA Tutorials: CSS-based styling
>https://www.hex-rays.com/products/ida/support/tutorials/themes.shtml

短くまとめると、

- これからはcssを使って配色を定義するよ。
- themesフォルダにtheme.cssを含んだフォルダを作ればテーマを読み込めるよ。
- _baseフォルダは各テーマから読み込むようにしてね。

といった感じでしょうか。ちなみに、テーマのインポートという観点では、Windows版では以下のフォルダを参照するようです。

- `$IDA_INSTALL/themes/`
- `%APPDATA%\Hex-Rays\IDA Pro\themes`


ということで、これに従って設定してみることにしました。

##こんどは_baseが見つからない

上記ページの内容に従って、`%programfiles%\IDA Demo 7.3\themes`フォルダを見てみましたが、DEMO版では、このフォルダは空のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/755aa34c-3113-6a1c-c3b5-380e86b481f3.png)

また`%appdata%\Hex-Rays\IDA Pro\themes`フォルダも確認しましたが、こちらは`.\default\user.css`というファイルがあったものの、_baseフォルダはありませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/49f30d7d-21ed-288a-b66e-ea5b87112854.png)

そのため、_baseフォルダをインポートする設定のcssを読み込もうとすると当然エラーになってしまいます。

##IDA7.3 DEMO版でのWorkaround
先に手順をまとめておくと、次のとおりです。

1. _baseフォルダを読み込まないようにコメントアウトする。
2. themesフォルダ配下にテーマ名のフォルダを作り、theme.cssを配置する。
4. IDAを起動し「Colors」からテーマを変更して適用する。

###1.  _baseフォルダを読み込まないようにコメントアウトする
結局の所は、**theme.cssで_baseフォルダの読み込みをしない**ようにすればtheme設定ができるようになりました。問い合わせしたわけではないのでサポートされるのかは不明ですが、とりあえずカラーテーマを変えたい人は自己責任で試してみてください。ちなみに、チュートリアルには以下のように書いてあることをお忘れなく。
>The _base theme holds all the CSS directives that are required for IDA to work correctly, and therefore it must be "imported" by other themes

以下は0xItxさんが公開している、[nightfall](https://github.com/0xItx/ida_nightfall)の例です。theme.cssの1行目をコメントアウトしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/c2d74d42-a57c-3b17-85b5-02846c3ba040.png)

###2. themesフォルダ配下にテーマ名のフォルダを作り、theme.cssを配置する
(.cssファイルの編集が必要ない場合は、このステップからスタートします。)
`%appdata%\Hex-Rays\IDA Pro\themes`フォルダ配下に`.\nightfall\theme.css`として配置します。
公式のチュートリアルを読む限り、このフォルダであればバージョンアップしても継続して読み込まれるようになるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/f80197f0-9d84-a880-27f4-59cda8a91be8.png)

###3. IDAを起動し「Colors」からテーマを変更して適用する
IDAを起動して、「Options」→「Colors...」を開きます。「Current theme」のリストボックスを見ると、先程配置したテーマが選べるようになっています。(ディレクトリ名で表示されています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/be04439c-e2ef-7388-0c0d-4b051b335bc8.png)

設定したいカラーテーマを選択して、最後に「Apply」を押せば適用完了です。黒くなりました！あとは他の設定も煮るなり焼くなりすればいいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254738/da6c4aec-9672-dd50-0155-2cf8e6a3a332.png)



##従来使用していた.clsテーマを使用したいとき

公式のチュートリアル内で、.clsファイルを.cssに変換するためのスクリプトまで公開してくださっています。優しいですね！

>port_clr72_to_css.py
>https://www.hex-rays.com/products/ida/support/tutorials/port_clr72_to_css.py

##おわりに
これにて無事、黒いIDAを使うことができるようになりました。本文中にも記載しましたが、サポートに聞いたわけではないので、自己責任でお願いします。
え、じゃあPro版のdarkテーマってどんな感じ？とか色々と気になってしまいましたが、お金持ちのお兄さんに教えてもらいましょうw
もしDEMO版で_baseフォルダのありかや、正しいカラーテーマ設定方法をご存知の方がいれば、ぜひコメントでお知らせください。