Increase LibrePCB Usability

IMHO the library management in LibrePCB is what it pretends to be: totally usable as a backbone of a EDA system… very nice.
This is something not all EDA packages can claim.

Last week I’ve spent a lot of time with LibrePCB and here my current gripes:

  1. Library: Both UI categories (component and package) should be treeviews not listviews. It should be made visible that a category is not a root category, but a child category. As it is now it is too confusing (am I the only one?). I solved this (for me) by only creating root categories in my library: “Integrated Circuits - Analog”, “Integrated Circuits - Digital”, etc. but a treeview would probably make more sense in the long run.

  2. Schematic: Placing a component with 2 symbols (like a dual op-amp) is ok, but if the B-part is known to not be used at the beginning and deleted, there is no way to add it later. (at least I could not find a possibility with the current UI). The editor already knows if a B part is missing as the ERC says: “Unplaced gate ‘U1:B’”. A double click on the message will open a message dialog that says: “The optional gate ‘B’ of ‘U1’ is not added to the schematic.” Why not add another button next to the OK button to allow adding the missing gate?

  3. Schematic: apperantly, changing a symbol with another is only possible with deleting the one already placed, which deletes all wired segments connected to the symbol. This means that the replacement symbol needs to be manually reconnected again, which is really annoying. Imagine replacing a microcontroller with 144 pins…

  4. Board: trace segments stay single trace segments, even if they could be automatically replaced with a single straight line. In other words, they are not automatically converted into one segment. Found a work around for this: select a trace segment and use the keyboard arrow keys to let a segment grow and “consume” the other segments. Very cumbersome.
    But it shows, that the functionality is already there, it just needs to be automated.

Also, some food for thought:

Board: having the 3D view next (on the right side) to the 2D view is unusual, but not in the way, and actually pretty neat. So I started thinking if it would increase productivity if the same could be done with the schematic appearing on the left side of the 2D view of the board. Reason, I’m constantly switching back and forth between schematic and board, because the PCB Layout depends closely on the circuitry (no matter what type of circuit it is, high speed digital or analog audio). On the flip-side, not sure how my suggestion will pan-out when the schematic editor gets a simulator… there is so much to show…

Another thing would be general usability: please consider to mimic LTSpice’s mouse/touchpad menu driven concept, IMHO it’s one of the easiest to use and makes a lot of fun using it. Reminds me of the old DOS/UNIX EDA programs that had everything at “your fingertips”. As it is now, LibrePCB’s usability is okay, but not great. Granted, KiCAD is worse (and most professional EDA programs are even worse than KiCAD) but LTSpice’s approach is even better.

Something that could be very nice is real-time ERC/DRC:
Board: As it is now, I can draw a trace too close to another one or even on top of it, the program will allow it.

The last thing would be to add info to the shortcut sheet what some icons mean as they are not familiar to me (a diagonal arrow would be one (:arrow_upper_left:) and this one (⇥). I have a MacBook Pro MAX with no additional keyboard.

Thanks for reading.

BTW: Thank you for releasing version 1.1.0 today.


1 Like

Thanks a lot for sharing your thoughts @sparky, it’s highly appreciated! Btw, if you didn’t fill out our Feedback Survey yet, this would also be nice.

Regarding your comments:

This is not trivial at all to implement because parent categories might be missing if their library is not installed. But I agree we should try to find a way how this can be improved so I opened an issue to keep this in mind: Library editor: Show categories as a tree view · Issue #1362 · LibrePCB/LibrePCB · GitHub

Yeah there’s already an issue open for that: Placing symbols of incomplete multi-symbol component · Issue #448 · LibrePCB/LibrePCB · GitHub

Also a known issue: Replacing component in schematic · Issue #517 · LibrePCB/LibrePCB · GitHub

Same here: Board Editor : Remove unnecessary nodes of wires when extending them · Issue #710 · LibrePCB/LibrePCB · GitHub

My overall goal is to move to a tabbed GUI anyway, which would allow to organize windows and views as you like. For example, it would be possible then in a window to split the view, and in one view you can open the board and in the other the schematic. But that basically means a complete redesign of the GUI so it will take a lot of time to implement…

Hm I used LTSpice some time ago, but I don’t remember what was so different (or great) regarding usability. Could you elaborate a bit what you mean exactly, maybe with screenshots?

Actually the shortcuts reference is OS-aware, on Windows/Linux the keys are called Shift/Ctrl/Alt but on macOS we use a Qt function to translate them into the terms used on macOS (which seem to be symbols, not words). So actually I’m no confused, I expected a macOS user knows these symbols better than Shift/Ctrl/Alt :thinking:

Hello ubruhin,
thank you for the quick reply.

Didn’t know most of the things I mentioned are already listed as issues, sorry for that. But on the flip side it shows the importance.

Your ideas with the UI sound like the right approach, looking forward to their implementation.

Regarding keyboard shortcuts: no worries, as long as everything is also available though the menus it’s okay. Maybe it’s a good idea to let the user select the keys for each shortcut.

No matter how difficult it is to learn a new EDA tool, once the learning process is completed the only thing that remains is usability. That’s why I’m very much interested in excellent usability, it’s the only thing that makes working with an EDA tool enjoyable or not.

Functionality is good to have, but I prefer usability paired with real-time ERC/DRC and an excellent manual router over an autorouter (as example).

Regarding LTSpice:
Normally, designers use big screens with high resolution. This means that the cursor has to travel a lot to get from the far corner of the drawing area to a UI button.
Granted, keyboard shortcuts can help, but if there are too many they get convoluted, because their usage requires 2 hands, and as soon as the mouse/trackpad/trackball hand needs to be used for this, usability suffers.

LTSpice makes its functionality available through a right-click mouse/trackpad/trackball menu. There is not really a need to move the cursor to a UI button. (granted, LTSpice has only 3 of them, plus the search bar…)
It reminds me of EDA software during the old DOS days (before Windows), ULTIboard and OrCAD come to mind, their usability was excellent.

The right-click menu of LTSpice has a main menu with Run/Halt, View, Edit, Draft and Draw. From there every function of the program can be approached. No need to move a hand. Of course, in order to be effective the depth of the menu structure should only go 1 or 2 hierarchies down, otherwise it becomes convoluted as well.

In LibrePCB’s case the main menu could have Select, Draw Wire, Add Net Label, Draw Polygon, Add Text, Add Component, Measure Distance, and maybe also adding the 5 main symbols.
BTW: how can I change the main symbols (resistor, inductor, the 2 capacitors and the 2 power symbols) to my preferred symbols? I always get European symbols, which I do not use and therefore these UI buttons are useless to me.

Currently on my Mac, the right trackpad click has the pan function, which in LTSpice is a normal left click, which IMHO is the right approach, because this is one of the most used functions: draw a wire/trace and pan the drawing area.

This being said, what is used the most should be the easiest to use…

BTW: Did the Feedback survey…


Okay I have opened an issue for the context menu feature request: Add most important tools to context menu in drawing area · Issue #1370 · LibrePCB/LibrePCB · GitHub

Real-time DRC is something with low priority but I think sooner or later it should be implemented. ERC is already real-time.

Please just don’t expect these features to be available soon - it is a huge effort and there are tons of other feature requests, so it will take a lot of time :wink: LibrePCB is getting better step by step…

Thank you for adding a future request regarding the menu.

One thing remains unanswered:
how can I change the main symbols (resistor, inductor, the 2 capacitors and the 2 power symbols) to my preferred symbols?
I always get European symbols, which I do not use and therefore these UI buttons are useless to me.


Ah sorry, I forgot. Customizing this toolbar is not supported yet, but in your workspace settings you can add “IEEE 315” to the “preferred norms” list and you’ll get American symbols.

EDIT: This workspace setting only applies to new projects. For existing projects, configure this norm in the Project Setup dialog.

I thought I did… will double check.

Thank you very much.

I agree with the need for tree views but I’d suggest that it go further so that the user can select the root nodes/tree format from a set of choices, all of which are enumerations:


For any of these, parts that lack a category/vendor/etc can be parked in a catch-all ‘unspecified’ one at the bottom. As a way to group related parts I found this approach really helpful.

Very nice idea.