Go to file
jess 378b018d82 gagaddji 2026-04-23 07:37:34 -07:00
include Windows - dot net for shell 2026-04-22 17:58:58 -07:00
resources Init 2026-04-22 15:40:20 -07:00
scripts Init 2026-04-22 15:40:20 -07:00
shell/windows/LayersShell gagaddji 2026-04-23 07:37:34 -07:00
src dingwl 2026-04-23 07:01:07 -07:00
.gitignore wings 2026-04-23 06:47:35 -07:00
Cargo.toml Windows - dot net for shell 2026-04-22 17:58:58 -07:00
Info.plist Init 2026-04-22 15:40:20 -07:00
LICENCE Init 2026-04-22 15:40:20 -07:00
README.md dingwl 2026-04-23 07:01:07 -07:00
build-linux.sh Windows - dot net for shell 2026-04-22 17:58:58 -07:00
build.bat gdadag 2026-04-23 07:20:00 -07:00
install.bat Fixed windows plugin dir 2026-04-22 17:27:56 -07:00
plugin.json.in Windows - dot net for shell 2026-04-22 17:58:58 -07:00

README.md

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.