This is a post describing how to set up the KiCad share folders in such a way as to be able to easily transfer projects (and their custom library parts) between installs on windows and linux..

Contents:

Introduction
General description
Limitations

Linux (Ubuntu)
Windows Vista
Windows XP

Usage notes

.

Introduction

The main idea is really to ease KiCad project sharing among different people with different OS’es (it being open source and all 🙂 ). Or just ease things for one self when looking at old projects a few years (and systems) down the road or other systems you use currently.
Or, possibly, if you use some online version control system like git. I have not tested that, but I believe it will work.

I’m a pretty casual KiCad user, but I noticed some problems a while back with the 3D viewer and the paths to its 3D shapes. The solution to this turns out also to be the solution to share KiCad projects easily among OS’es, at least windows (Vista, XP most likely windows 7 also) and Linux (Ubuntu for my part).

This without the need to edit any configuration and re-add any library paths (Of course the libraries and modules for parts used will have to be copied as well, in the same relative locations). So any messages similar to this should hopefully not appear:

Unlimited Free Image and File Hosting at MediaFire

.

.

General description

I propose making a symbolic link with the name “userlibs” (It can be any name of course, but its important that it is the same name across your OS’es. Probably handy if it is the same name for several people’s OS’es as well…).

This symbolic link is preferably copied to three places within the KiCad share folder structure. The reason for this is simply to ease the navigation from within KiCad’s suite of programs (EESchema, PCBnew and the 3Dviewer settings for module shapes).

.

Although this symlink will really point to the user’s KiCad project folder, not actually a library folder. The project folder should be a parent folder of one (or more) custom library folders, as well as all projects (folders).

Also, all projects should have their own folder, to keep things organized as the file count for any project quickly builds up.

As an example of a KiCad project folder, it could simply be a folder named “kicad”, in the Documents folder in windows (or home folder in Linux).

Also, to benefit from this, it is required to use the symbolic links when browsing to the custom parts! Do not browse via an absolute path, “outside” the symbolic link. This would invalidate the hole process.

.

The easiest way is perhaps to collect all files in a project’s folder, but personally I like to have custom parts in their own library folder, as such:

  • yourhomefolder/kicad
  • yourhomefolder/kicad/libraries
  • yourhomefolder/kicad/libraries/packages3d

Note the lower-case “3d” at the end.

And then any project folders, of course:

  • yourhomefolder/kicad/project-1
  • yourhomefolder/kicad/anotherproject
  • …etc…

Where “yourhomefolder” is wherever your kicad project folder is located (“My Documents”, for example). Note I mashed “library” and “modules” folder into one “libraries” folder for custom or downloaded parts, be it a symbolic library or a footprint module.

Also note it is not absolutely necessary to have your custom parts in another library folder. You could have all parts and 3D shapes in the same folder as the project itself. This might be more tidier after all, and easier to transfer/copy projects. Well, maybe except for 3D shapes – one of the reasons I like to have all parts in their own custom library folder. This is also the reason behind having “userlibs” pointing to the kicad project folder; the option to also use a project’s own folder for parts.

One important thing with having your custom library part in a custom folder (be it a project folder or another library folder), is that you do not overwrite the libraries shipped with KiCad!

.

The following descriptions is mostly for my systems, so you should of course change the paths / username etc to what you have.

.

.

Limitations

Some limitations exists as to what can be symbolically linked (not across network drives, for example. I’m a bit unsure if it works across different partitions also). + Windows is not case sensitive, which Linux is, so there might still be some problems there if one are not careful naming things.

There is also some unresolved issues if there are more than one user on a given system that uses KiCad. In fact I think this will not work then (unless one re-define the symbolic links on a per-user base, which is cumbersome at best).

Also, if you got your document folder in another partition, or network drive, I’m unsure about how, if at all, this will work. Depending on the OS used. So there are still some unresolved issues with this method.

.

.

Linux

(Ubuntu, but probably most other flavors too)
Unlimited Free Image and File Hosting at MediaFire

.
In Terminal, write this to make a symbolic link (assuming your kicad project directory is named simply “kicad”):

ln -s $HOME/kicad userlibs

This then need to be copied to three places in the KiCad share folder hierarchy. On my Ubuntu system, those are:

  • /usr/share/kicad/library
  • /usr/share/kicad/modules
  • /usr/share/kicad/modules/packages3d

You probably have to be root to do this. One (dangerous-ish) easy trick is to write this in terminal:

gksudo nautilus

to be able to copy-paste the symbolic links where you want them.

Beware you can really mess up your system if you happen to move or delete the wrong folder in this mode!

.

.

Windows Vista

Ultimate 64-bit, but most likely works for the other versions also.
Unlimited Free Image and File Hosting at MediaFire

I installed KiCad into the default location, and since it is a 32-bit program (as far as I get, at least its for windows XP), its share folders were located here:

C:\Program Files (x86)\KiCad\share

And the three locations that will contain the symbolic links are:

  • C:\Program Files (x86)\KiCad\share\library
  • C:\Program Files (x86)\KiCad\share\modules
  • C:\Program Files (x86)\KiCad\share\modules\packages3d

I put my KiCad project folder simply in the Documents folder. It is simply a copy of my kicad projects folder from linux. The absolute path for my kicad project folder then became:

C:\Users\Ragnar\Documents\kicad

This will be important to know later on.

Windows Vista have a utility for making symbolic links called “mklink”. Unlike linux the links created cannot be simply copied and moved, so you have to use the command line (cmd.exe) and “cd” to the correct folders before using it to make the links. I assume using absolute paths for the symbolic link creation also works, but I think this is the simplest. A pleasant surprise was that pressing TAB also works in windows, for command completion 🙂

Open up a command shell and start typing:

cd \
cd “Program Files (x86)\KiCad\share\library”
mklink /J userlibs C:\Users\Ragnar\Documents\kicad

If all goes well it should say:

Junction created for userlibs <> C:\Users\Ragnar\Documents\kicad

Now you need to do the same for the other two folders:

cd ..
cd modules

to go into the modules folder, and just press the up-arrow a couple of times to repeat making the link:

mklink /J userlibs C:\Users\Ragnar\Documents\kicad

Then go into the packages3d folder and do the same:

cd packages3d
mklink /J userlibs C:\Users\Ragnar\Documents\kicad

And you should be good to go!

A little overview of the KiCad share folders and placement of the symbolic links on my system:
Unlimited Free Image and File Hosting at MediaFire

.

.

Windows XP

SP3 32-bit, again, probably works for most versions of XP.
Unlimited Free Image and File Hosting at MediaFire

Windows XP does not have a mklink command, but sysinternals have made a utility named Junction, which I used. There is also another from the resource kit named linkd.exe, but I haven’t tried that.

First step is to download Junction and extract it somewhere. Preferably somewhere that the PATH environment variable points to, I recommend extracting it to the system32 folder in windows.

Other than that pretty similar to the Vista method, except for syntax on making a symbolic link.

.

I once again installed KiCad to its default location, and the share folders are located in:

C:\Program Files\KiCad\share

And the three locations that will contain the symbolic links are:

  • C:\Program Files\KiCad\share\library
  • C:\Program Files\KiCad\share\modules
  • C:\Program Files\KiCad\share\modules\packages3d

Once again I just copied my KiCad project folder into the “My Documents” folder of windows XP. It’s important to find the absolute path of this for later, which I found by simply going into the folder in windows and look at the address bar. It was:

C:\Documents and Settings\raron\My Documents\kicad

Open up a command prompt, and cd to the KiCad share folder:

cd \
cd “Program Files\KiCad\share”

Then cd to the first location, the “library” folder, and make a link:

cd library
junction userlibs “C:\Documents and Settings\raron\My Documents\kicad”

If all goes well i should say something like:

Junction v1.06 – Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals – http://www.sysinternals.com

Created: C:\Program Files\KiCad\share\library\userlibs
Targetted at: C:\Documents and Settings\raron\My Documents\kicad

Then you need to “cd ..” to go up one level, and cd down to the “modules” folder:

cd ..
cd modules

And repeat the process (again, pressing up-arrow to just duplicate the junction command easily):

cd ..
cd modules
junction userlibs “C:\Documents and Setting
s\raron\My Documents\kicad”

Lastly the same for the “packages3d” folder:

cd packages3d
junction userlibs “C:\Documents and Setting
s\raron\My Documents\kicad”

And you are done! 🙂

Again, a little overview of the folder structure in the XP system I tested:

Unlimited Free Image and File Hosting at MediaFire

.

.

Usage notes

Of course, as stated, it is neccessary that the symbolic link in all OS’es have the same name, and that you actually use this link when browsing for parts or 3D shapes when designing something in KiCad.

Unlimited Free Image and File Hosting at MediaFire

Do NOT browse to your custom parts via another path outside of the symbolic links. Do not use the “My Documents” shortcut, for example, as this will invalidate the paths between systems.

Use the “userlibs” (or whatever you named it) symbolic link.

The below image is a step further, inside the “My Documents/kicad/libraries” in my example, browsed via the symbolic link as shown in the drop-down list for the path:

Unlimited Free Image and File Hosting at MediaFire

And here is the same for Ubuntu. Notice the path gets a bit long, but don’t worry about it. KiCad, luckily, use the path relative to its share folders.

Unlimited Free Image and File Hosting at MediaFire

Now you can share KiCad projects between windows and linux systems without having to re-add library paths and such in the configuration, at all!

.

IMPORTANT NOTE

Do NOT delete any symbolic links from windows using windows explorer! (It will also delete the real contents of the links..). Instead, use the delete-method included in “mklink” or “junction”, to remove symbolic links you no longer want.

.

.

Happy KiCad’ing 🙂

.

PS!! If you got a better way, or something else to add dont hesitate to comment below.

.

Until next time,
raron