6.0 KiB
Layers
A Photoshop-style logical-layer panel for KiCad 10. Group items into named logical layers,
hide them as a unit, rename/colour/lock/annotate, run set ops (merge/subtract/intersect),
snap to grid, snapshot and restore — all live against an open pcbnew session over KiCad's
IPC API.
Rendering of in-panel board previews is powered by Siphon,
a pure-Rust KiCad-board-to-vectors crate. No shell-outs, no kicad-cli.
Install
Every platform installs into KiCad 10's 3rd-party plugin directory. After install, open
KiCad's Plugin and Content Manager and rescan, or relaunch KiCad; the Layers toolbar
button appears in pcbnew.
macOS
Requires Xcode Command-Line Tools, Rust (rustup), and rsvg-convert (optional; only used
to regenerate icons from resources/Layers.svg).
git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install.sh
Installs to ~/Documents/KiCad/10.0/plugins/com.jesshunter.layers/.
Windows (10 / 11, ARM64 or x86_64)
The Windows shell is a WinUI 3 (.NET 8) app that hosts the Rust renderer through
a SwapChainPanel. The Rust side builds as a cdylib via MSYS2 + MinGW — no full
Visual Studio Build Tools required. Both ARM64 and x86_64 hosts work the same way.
1. Install MSYS2
Download and run the installer from https://www.msys2.org. Accept the defaults
(C:\msys64). When it finishes, launch the MSYS2 shell it drops on your Start menu.
2. Install the toolchain for your CPU
In the MSYS2 shell:
# ARM64 (Snapdragon X, Surface Pro 11, etc.)
pacman -Syu
pacman -S --needed \
mingw-w64-clang-aarch64-toolchain \
mingw-w64-clang-aarch64-cmake \
mingw-w64-clang-aarch64-ninja \
mingw-w64-clang-aarch64-librsvg \
git
# x86_64 (Intel / AMD)
pacman -Syu
pacman -S --needed \
mingw-w64-ucrt-x86_64-toolchain \
mingw-w64-ucrt-x86_64-cmake \
mingw-w64-ucrt-x86_64-ninja \
mingw-w64-ucrt-x86_64-librsvg \
git
(You can close + reopen the shell after the first pacman -Syu if it asks you to.)
3. Install Rust + the GNU target
In PowerShell (not MSYS2):
# Install rustup
winget install --id Rustlang.Rustup
# or: irm https://win.rustup.rs/x86_64 | iex
# After rustup finishes, add the matching GNU target:
# ARM64:
rustup target add aarch64-pc-windows-gnullvm
# x86_64:
rustup target add x86_64-pc-windows-gnu
4. Add MinGW to your user PATH
Rust's GNU target calls out to the MinGW linker, so that directory needs to be on PATH. Run this once in PowerShell (elevated shell not required):
# ARM64
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", "User") + ";C:\msys64\clangarm64\bin",
"User"
)
# x86_64
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", "User") + ";C:\msys64\ucrt64\bin",
"User"
)
Close and reopen every PowerShell / cmd window after this so they pick up the change.
5. Install .NET 8 SDK + Windows App SDK workload
In PowerShell:
winget install Microsoft.DotNet.SDK.8
dotnet workload install maui-windows
The Windows App SDK itself is pulled in via NuGet when the shell builds. The
maui-windows workload supplies the MSBuild tasks that WinUI 3's PRI/MRT targets
reach for, which would otherwise only be available with a full Visual Studio install.
6. Build + install
git clone https://git.else-if.org/jess/Layers
cd Layers
install.bat
Installs to %USERPROFILE%\Documents\KiCad\10.0\plugins\com.jesshunter.layers\
(or the OneDrive-redirected equivalent).
Runtime requirement on the target machine: .NET 8 Desktop Runtime. winget install Microsoft.DotNet.DesktopRuntime.8 — the installer's ~100 MB and common on modern
Windows boxes.
For a polished build you'll also want ImageMagick — it composes the Windows .ico
from the SVG, called from an MSBuild <Target> inside LayersShell.csproj so it runs
as part of dotnet publish. rsvg-convert was already pulled in via the MSYS2
…-librsvg package.
winget install ImageMagick.ImageMagick
Neither tool is strictly required — the Target's ContinueOnError="true" and the
ApplicationIcon Condition="Exists(...)" let the build skip icon baking and fall
through to the default .NET exe icon if either is missing. If you don't want MSYS2
and need a standalone rsvg-convert (x86_64 only), grab a release from
https://github.com/charls-data/static-rsvg-convert/releases and drop it on PATH.
Linux — Debian / Ubuntu / Pop!_OS (apt)
sudo apt update
sudo apt install -y \
build-essential pkg-config curl git \
libgtk-3-dev libxkbcommon-dev libwayland-dev \
libvulkan-dev mesa-vulkan-drivers \
librsvg2-bin
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install-linux.sh
Installs to ~/.local/share/kicad/10.0/3rdparty/plugins/com.jesshunter.layers/.
Linux — Arch / Manjaro (pacman)
sudo pacman -Syu --needed \
base-devel pkgconf curl git \
gtk3 libxkbcommon wayland \
vulkan-icd-loader vulkan-headers \
librsvg
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
git clone https://git.else-if.org/jess/Layers
cd Layers
./scripts/install-linux.sh
Installs to ~/.local/share/kicad/10.0/3rdparty/plugins/com.jesshunter.layers/.
Configuration
resources/colors.toml in the installed plugin directory controls every UI colour and the
window-fade alphas. Edit to taste and restart the plugin to pick up the change.
The plugin writes settings and state to:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/com.jesshunter.layers/ |
| Linux | $XDG_DATA_HOME/com.jesshunter.layers/ (typically ~/.local/share/com.jesshunter.layers/) |
| Windows | %APPDATA%\com.jesshunter.layers\ |
Licence
Unlicensed — see LICENCE.
Written by pszsh.