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
.
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:
.
.
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)

.
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.

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:

.
.
Windows XP
SP3 32-bit, again, probably works for most versions of XP.

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.comCreated: 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:
.
.
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.
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:
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.
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







Great post! I will have to look into creating a common library structure for designs. I have just started to use KiCad and I am glad that I found your post, so that I can organize things in a way that lets me share designs easily among people.
Do you have any recommendations for good library sources for kiCad?
Thanks!
Dustin
Thanks!
The files quickly builds up for a project, so at least having a (sub)folder for each project is probably the best for ones own sanity.
The symlink method can also be handy if you use more than one computer, though not perfect with computers with more than one user using KiCad, when I come to think about it.. But if you are the only KiCad user, it is much better (imho) than manually finding parts and editing library paths. But it is not essential to using KiCad.
As for KiCad libraries, there are some nice ones here (you might have found some of these already):
http://www.kicadlib.org/Fichiers/Ludek_libraries.html
http://www.kicadlib.org/
And a lot of converted (I think from Eagle, so no 3D) libraries here:
http://library.oshec.org/
(plus the rather few ones I made in this blahg blog)
I also found curiousinventor’s KiCad tutorial really helpful:
http://store.curiousinventor.com/guides/kicad
Another one here:
http://teholabs.com/knowledge/kicad.html
Hope that helps