Skip to main content

Crate kicad_ipc_rs

Crate kicad_ipc_rs 

Source
Expand description

§KiCad IPC RS

Async-first, pure-Rust IPC bindings for KiCad’s official API. Production-focused Rust API surface, typed models, and a blocking wrapper for sync callers.

§Why this crate?

Capabilitykicad-ipc-rsOfficial Python bindings (kicad-python)Official Rust bindings (kicad-rs)
Rust-native client API✅ Yes❌ Python package⚠️ Development preview
Async-first API designKiCadClient⚠️ App-managed event-loop model⚠️ Development preview
Blocking support for sync appsfeature = "blocking"✅ Native Python sync usage⚠️ Development preview
Wrapped KiCad command coverage (current proto snapshot)✅ 56/56 command wrappersUnknownUnknown
Maintainer focus✅ This crate is actively maintained for Rust users✅ Official KiCad Python package⚠️ Preview status

Evidence and references:

§Quickstart (async)

use kicad_ipc_rs::KiCadClient;

#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), kicad_ipc_rs::KiCadError> {
    let client = KiCadClient::connect().await?;
    client.ping().await?;
    let version = client.get_version().await?;
    println!("KiCad: {}", version.full_version);
    Ok(())
}

§Quickstart (blocking)

use kicad_ipc_rs::KiCadClientBlocking;
let client = KiCadClientBlocking::connect()?;
let version = client.get_version()?;
println!("KiCad: {}", version.full_version);

Architecture layers:

  • transport
  • envelope
  • command builders
  • high-level client

Re-exports§

pub use crate::client::ClientBuilder;
pub use crate::client::KiCadClient;
pub use crate::error::KiCadError;
pub use crate::model::board::ArcStartMidEndNm;
pub use crate::model::board::BoardEditorAppearanceSettings;
pub use crate::model::board::BoardEnabledLayers;
pub use crate::model::board::BoardFlipMode;
pub use crate::model::board::BoardLayerClass;
pub use crate::model::board::BoardLayerGraphicsDefault;
pub use crate::model::board::BoardLayerInfo;
pub use crate::model::board::BoardNet;
pub use crate::model::board::BoardOriginKind;
pub use crate::model::board::BoardStackup;
pub use crate::model::board::BoardStackupDielectricProperties;
pub use crate::model::board::BoardStackupLayer;
pub use crate::model::board::BoardStackupLayerType;
pub use crate::model::board::ColorRgba;
pub use crate::model::board::DrcSeverity;
pub use crate::model::board::GraphicsDefaults;
pub use crate::model::board::InactiveLayerDisplayMode;
pub use crate::model::board::NetClassBoardSettings;
pub use crate::model::board::NetClassForNetEntry;
pub use crate::model::board::NetClassInfo;
pub use crate::model::board::NetClassType;
pub use crate::model::board::NetColorDisplayMode;
pub use crate::model::board::PadNetEntry;
pub use crate::model::board::PadShapeAsPolygonEntry;
pub use crate::model::board::PadstackPresenceEntry;
pub use crate::model::board::PadstackPresenceState;
pub use crate::model::board::PcbArc;
pub use crate::model::board::PcbBoardGraphicShape;
pub use crate::model::board::PcbBoardText;
pub use crate::model::board::PcbBoardTextBox;
pub use crate::model::board::PcbDimension;
pub use crate::model::board::PcbField;
pub use crate::model::board::PcbFootprint;
pub use crate::model::board::PcbGroup;
pub use crate::model::board::PcbItem;
pub use crate::model::board::PcbPad;
pub use crate::model::board::PcbPadType;
pub use crate::model::board::PcbTrack;
pub use crate::model::board::PcbUnknownItem;
pub use crate::model::board::PcbVia;
pub use crate::model::board::PcbViaLayers;
pub use crate::model::board::PcbViaType;
pub use crate::model::board::PcbZone;
pub use crate::model::board::PcbZoneType;
pub use crate::model::board::PolyLineNm;
pub use crate::model::board::PolyLineNodeGeometryNm;
pub use crate::model::board::PolygonWithHolesNm;
pub use crate::model::board::RatsnestDisplayMode;
pub use crate::model::board::Vector2Nm;
pub use crate::model::common::CommitAction;
pub use crate::model::common::CommitSession;
pub use crate::model::common::DocumentSpecifier;
pub use crate::model::common::DocumentType;
pub use crate::model::common::EditorFrameType;
pub use crate::model::common::ItemBoundingBox;
pub use crate::model::common::ItemHitTestResult;
pub use crate::model::common::MapMergeMode;
pub use crate::model::common::PcbObjectTypeCode;
pub use crate::model::common::RunActionStatus;
pub use crate::model::common::SelectionItemDetail;
pub use crate::model::common::SelectionSummary;
pub use crate::model::common::SelectionTypeCount;
pub use crate::model::common::TextAsShapesEntry;
pub use crate::model::common::TextAttributesSpec;
pub use crate::model::common::TextBoxSpec;
pub use crate::model::common::TextExtents;
pub use crate::model::common::TextHorizontalAlignment;
pub use crate::model::common::TextObjectSpec;
pub use crate::model::common::TextShape;
pub use crate::model::common::TextShapeGeometry;
pub use crate::model::common::TextSpec;
pub use crate::model::common::TextVerticalAlignment;
pub use crate::model::common::TitleBlockInfo;
pub use crate::model::common::VersionInfo;

Modules§

client
High-level async client and request/response convenience methods.
commands
Low-level command payload builders.
envelope
Envelope helpers for command/response packing and unpacking.
error
Error types returned by this crate.
model
Stable data models used by typed client APIs.
transport
IPC transport implementation details.

Constants§

KICAD_API_VERSION