Development Highlight: New Settings System

As a preview of a feature available in the nighty builds, a large change was made to how KiCad stores and loads settings that not only fixes a few headaches with the old system but lays the groundwork for more customization in KiCad such as color themes. This was thanks to the work of Jon Evans in MR#68

New Settings Save Location and Wizard

Settings are now stored on a versioned basis on all platforms.

For example, settings on Windows used to be stored only in %APPDATA%\kicad and all versions of KiCad thus far wanted to write to the exact same versions. This resulted in headaches when upgrading KiCad versions as older config files sometimes had bad settings for the newer version.

With this change, settings are now stored in %APPDATA%\kicad\<version>\

Additonally, there is now a upgrade wizard that will open if you are opening a version of KiCad for the first time.

Screenshot of configure settings wizard

Settings File Format Change

Almost all settings are now stored as JSON formatted files instead of the wxWidgets based ini file format. This aids greatly in making complex setting objects more developer friendly to implement than before and opens the path for third party tools to read the settings more easily if so desired.

Old format example

KicadFramePos_x=0
KicadFramePos_y=0
KicadFrameSize_x=759
KicadFrameSize_y=400
KicadFrameMaximized=0
KicadFramePerspective=layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=273;besth=36;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ProjectTree;caption=;state=508;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=60;besth=-1;minw=150;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Launcher;caption=;state=139644;dir=1;layer=1;row=0;pos=0;prop=100000;bestw=525;besth=70;minw=525;minh=70;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=101;besth=30;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=36|dock_size(4,3,0)=150|dock_size(1,1,0)=70|dock_size(5,0,0)=101|
KicadFrameMostRecentlyUsedPath=C:\\Users\\kicaduser\\Documents
LeftWinWidth=150
file1=
file2=
file3=
file4=
file5=
file6=
file7=
file8=
file9=

New format example

{
  "appearance": {
    "color_theme": "user",
    "left_frame_width": 200
  },
  "find_replace": {
    "find_history": [],
    "find_string": "",
    "flags": 1,
    "replace_history": [],
    "replace_string": ""
  },
  "graphics": {
    "canvas_type": 2
  },
  "lib_tree": {
    "column_width": 360
  },
  "meta": {
    "filename": "kicad",
    "version": 0
  },
  "printing": {
    "layers": [],
    "monochrome": true,
    "scale": 1.0,
    "title_block": false
  },
  "system": {
    "file_history": [],
    "first_run_shown": false,
    "max_undo_items": 0,
    "units": 1
  },
  "window": {
    "cursor": {
      "always_show_cursor": true,
      "fullscreen_cursor": false
    },
    "grid": {
      "axes_enabled": false,
      "last_size": 0,
      "line_width": 1.0,
      "min_spacing": 10.0,
      "show": true,
      "style": 0
    },
    "maximized": true,
    "mru_path": "",
    "perspective": "layout2|name=MainToolbar;caption=;state=139644;dir=1;layer=6;row=0;pos=0;prop=100000;bestw=291;besth=39;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=ProjectTree;caption=;state=508;dir=4;layer=3;row=0;pos=0;prop=100000;bestw=200;besth=-1;minw=200;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Launcher;caption=;state=139644;dir=1;layer=1;row=0;pos=0;prop=100000;bestw=496;besth=61;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=MsgPanel;caption=;state=131452;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=101;besth=30;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|dock_size(1,6,0)=39|dock_size(4,3,0)=200|dock_size(1,1,0)=61|dock_size(5,0,0)=101|",
    "pos_x": -8,
    "pos_y": -8,
    "size_x": 1936,
    "size_y": 1066
  }
}
Note Both this feature and nightly builds are in development, please only use them for testing and experimentation


See Also

Development Highlight: New schematic and symbol library file formats are now the default
2020-05-05

Since KiCad 4.0, work has been progressing to overhaul all the various project file formats that among many benefits, make them far more human friendly, easier to parse and allow easier addition of new features.

Development Highlight: Altium Pcb Importer
2020-04-26

As a preview of a feature coming in the next major release, the ability to import Altium PcbDoc files is now available in the latest nightly builds. This was thanks to the work of Thomas Pointhuber in MR#60 The board import option can be found under the File > Import > Non-Kicad Board File option and changing the file type filter After which in the import file dialog you must change the file filter