KiCad の公式プラグインリポジトリに、自作カラーテーマを追加してもらった

tl;dr

既存の KiCad カラーテーマに不満をもつ

エディタは黒背景に、コントラストの高いカラースキーマを当てるのが好きです。 VS Code では、カラースキーマを自作して愛用しています。

marketplace.visualstudio.com

KiCad 6.0 からプラグインとコンテンツマネージャという機能が強化され、プラグインが簡単にインストールできるようになりました。 この機能を使って、いろいろカラーテーマを探してインストールしてみましたが、どうもしっくりくるものはありませんでした。

自分が気になった点は以下のことです。

  • 回路図エディターの背景が黒ではない。
  • 回路図エディター、PCBエディターの背景が真っ黒ではなく、灰色で、コントラストが低い。
  • どの色が表面レイヤー(F.Cu/Silk)、裏面レイヤー(B.Cu/Silk)なのかぱっと見わからない。
  • ランドや配線、Via の白/灰色文字が、F.Cu、B.Cu、Via の色によっては見えにくくなる。
  • わりと沈んでいて欲しい情報(Edge.Cutsや、User.Drawings、NPTH(機構穴))の区別が余りされていない。

ということで、VS Code で使っている Monokai Charcoral の色の選択を参考に、カラーテーマを作ってみました。

github.com

ポイントは以下です。

  • 背景は #000000 にする。
  • 表面レイヤーの F.Cu をオレンジ、F.Silk を黄色と暖色気味にし、裏面レイヤーの B.Cuを薄紫、F.Silk を水色にして寒色気味にして、表面、裏面レイヤーを認識しやすくする。
  • F.Cu、B.Cu、Via の色を調整し、重なる白文字、灰色文字のどちらも視認できるレベルにする。
  • 配線時は気にするレベルが下がる、Edge.Cuts、User.Drawings、NPTH(機構穴)の色を、彩度がゼロの、白から灰色に割り当てる。

個人的にはめちゃめちゃ見やすくなって、設計作業が更に捗るようになりました。

KiCad プラグインを作るには

これを公開して、KiCadプラグインとしてインストールできるようにするには、いくつかの手間が必要です。以下が公式ドキュメントになります。

dev-docs.kicad.org

まず、個別のプラグインの情報は metadata.json に記述します。以下が実際に使っているmetadata.jsonです。

{
  "$schema": "https://go.kicad.org/pcm/schemas/v1",
  "name": "Monokai High Contrast",
  "description": "high contrast monokai theme designed by @74th",
  "description_full": "high contrast monokai theme designed by @74th",
  "identifier": "com.github.74th.kicad-highcontrast-monokai-theme.monokai-high-contrast",
  "type": "colortheme",
  "author": {
    "name": "Atsushi Morimoto (@74th)",
    "contact": {
      "web": "https://github.com/74th"
    }
  },
  "maintainer": {
    "name": "Atsushi Morimoto (@74th)",
    "contact": {
      "web": "https://github.com/74th/kicad-highcontrast-monokai-theme"
    }
  },
  "license": "MIT",
  "resources": {
    "Github": "https://github.com/74th/kicad-highcontrast-monokai-theme"
  },
  "versions": [
    {
      "version": "1.0.1",
      "status": "stable",
      "kicad_version": "6.00"
    }
  ]
}

これや、色が書かれた json ファイルなどを zip で固めたものがプラグインのファイルになります。

つぎに、コンテンツマネージャで表示する情報は package.json に記述します。さきのプラグインのzipファイルのダウンロード先が書かれています。ここには、zipファイルのサイズとハッシュを書くようになっていて、ファイルの偽装ができないようになっています。

{
    "packages": [
        {
            "$schema": "https://go.kicad.org/pcm/schemas/v1",
            "name": "Monokai High Contrast",
            "description": "high contrast monokai theme designed by @74th",
            "description_full": "high contrast monokai theme designed by @74th",
            "identifier": "com.github.74th.kicad-highcontrast-monokai-theme.monokai-high-contrast",
            "type": "colortheme",
            "author": {
                "name": "Atsushi Morimoto (@74th)",
                "contact": {
                    "web": "https://github.com/74th"
                }
            },
            "maintainer": {
                "name": "Atsushi Morimoto (@74th)",
                "contact": {
                    "web": "https://github.com/74th/kicad-highcontrast-monokai-theme"
                }
            },
            "license": "MIT",
            "resources": {
                "Github": "https://github.com/74th/kicad-highcontrast-monokai-theme"
            },
            "versions": [
                {
                    "version": "1.0.1",
                    "status": "stable",
                    "kicad_version": "6.00",
                    "download_sha256": "a631d510e3ec69d5076c8d105695ae88099b3d16e1f5bf88b00002d1311b7f86",
                    "download_size": 12585,
                    "download_url": "https://github.com/74th/kicad-highcontrast-monokai-theme/releases/download/v1.0.1/com.github.74th.kicad-highcontrast-monokai-theme.monokai-high-contrast_v1.0.1_pcm.zip",
                    "install_size": 20923
                }
            ]
        }
    ]
}

最後に、コンテンツマネージャにドロップダウンで選択できるリポジトリの情報を、repository.jsonに記述します。先の package.json とコンテンツマネージャで表示するアイコンリソースなどの情報が一つにまとまっています。

{
    "$schema": "https://go.kicad.org/pcm/schemas/v1#/definitions/Repository",
    "maintainer": {
        "contact": {
            "web": "https://github.com/74th/kicad-highcontrast-monokai-theme/"
        },
        "name": "Atsushi Morimoto (@74th)"
    },
    "name": "kicad high contrast monokai schema by @74th",
    "packages": {
        "sha256": "6979417c14bd5a9a554902ab066e6775b10a9640eee0feff6b421972f273aa41",
        "update_time_utc": "2023-06-04 05:53:03",
        "update_timestamp": 1685857983,
        "url": "https://github.com/74th/kicad-highcontrast-monokai-theme/releases/download/v1.0.1/packages.json"
    },
    "resources": {
        "sha256": "24e802ed9a9d631e254220c7962f92886242eb20b04f02fb4c3f7ab78e14fce7",
        "update_time_utc": "2023-06-04 05:53:03",
        "update_timestamp": 1685857983,
        "url": "https://github.com/74th/kicad-highcontrast-monokai-theme/releases/download/v1.0.1/resources.zip"
    }
}

若干、repository.json と package.json が助長な気がします。 この repository.json を公開しておくと、プラグイン&コンテンツマネージャから、リポジトリ管理のダイアログでこの公開URLを指定すると利用することができるようになります。

結構、ハッシュ値をつけたり、ファイルサイズをつけたりと、やることが多く、煩雑です。

これらをやってくれるスクリプトOSSにふくまれていたよ

多くのカラーテーマを提供している OSS リポジトリがあります。

github.com

ライセンスは Creative Commons Zero v1.0 Universal で公開してくれています。

多くのカラーテーマを提供する中に、パッケージを作るためのスクリプトが含まれていました。

github.com

CC0 なこともあり、こちらを取り込みさせていただいて、自分が使いやすいように変更して、自分のカラーテーマの package.json、zipファイル、repository.json の生成に利用させてもらうことにしました。

github.com

これを使って、repository.json を作成し、github で公開することで、KiCad に一手間でインストールできるようにしました。

ここまでは KiCad 6 が公開された当初、2021年12月31日に作って、公開していました。

公式のプラグインリポジトリはPRを受け付けていた

公式のプラグインリポジトリでは、パネライズする KiKit や、オートルータの freerouting、JLCPCB 用のパッケージなど、サードパーティーアイテムがKiCad7が公開されるころには増えていました。 ということは、公式でも自分のカラーテーマを追加してもらうことはできるのではないかと考えました。 公式のプラグインリポジトリではカラーテーマが豊富でないのも気になっていました。

KiCadのコードは GitLab で管理されていて、公式のプラグインリポジトリは以下のリポジトリで管理されていることがわかりました。そして、PRを受け付けているようだとわかりました。

gitlab.com

PR 前のチェックドキュメントや、PR をチェックする CI もあり、丁寧に環境が用意されていて、PR を作るのは難しくありませんでした。 こちらに PR を出して、3日ほどでマージしていただきました。

公式プラグインからクリックでインストールできるようになった!!

PRマージ後、実際に公開リポジトリに反映される CI が翌日に動き、公式プラグインリポジトリからインストールできるようになりました!!

これで、既存のカラーテーマで自分と同じところが気になる方にも目に留まるようになったら嬉しいです。