# GUI Development

**URL:** <https://librepcb.discourse.group/t/gui-development/437>\
**Category:** Project\
**Created:** [April 3, 2022, 3:13am UTC](https://librepcb.discourse.group/t/gui-development/437 "2022-04-03T03:13:04Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ben01880](https://avatars.discourse-cdn.com/v4/letter/b/d6d6ee/32.png) [@Ben01880](https://librepcb.discourse.group/u/Ben01880)\
**Post date:** [April 3, 2022, 3:13am UTC](https://librepcb.discourse.group/t/gui-development/437/1 "2022-04-03T03:13:04Z")

</div>

What GUI development framework was used for LibrePCB

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [April 4, 2022, 2:00pm UTC](https://librepcb.discourse.group/t/gui-development/437/2 "2022-04-04T14:00:05Z")

</div>

Qt

---

<div class="post-metadata">

**Author:** ![re-searcher](https://avatars.discourse-cdn.com/v4/letter/r/bc8723/32.png) [@re-searcher](https://librepcb.discourse.group/u/re-searcher)\
**Post date:** [April 12, 2025, 7:51am UTC](https://librepcb.discourse.group/t/gui-development/437/3 "2025-04-12T07:51:49Z")

</div>

Hello Urban(ubruhin)

Are you planning to stay with Qt and C++ ?

Its now C++ and Qt

Erik

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [April 12, 2025, 7:11pm UTC](https://librepcb.discourse.group/t/gui-development/437/4 "2025-04-12T19:11:18Z")

</div>

Hi Erik,

I’m currently moving from Qt to [Slint UI](https://slint.dev/) and for long term also move away from C++ towards Rust. For the new UI see here:

> <https://github.com/LibrePCB/LibrePCB/issues/1494>
>
> \_(this is a tracking issue about the progress of the new UI currently in develop…ment and will be updated regularly)\_
> 
> \# Goals
> 
> The goals of the new UI, compared to the current UI:
> 
> \- Less windows, suitable for both single-monitor and multi-monitor setups
> - To be implemented with generic windows containing the different editors as tabs
> \- Less modal dialogs & message boxes to avoid distracting the user
> \- Efficient usage of screen space (e.g. not wasting lots of space with half-empty toolbars)
> \- Dynamic, context-aware content (e.g. only show relevant information depending on state)
> \- Responsive design (e.g. make content dependent on window size)
> \- Intuitive design, with tooltips, hints etc. helping and guiding the user
> \- Generally more modern look, with animations where appropriate
> \- More efficient development workflow
> \- Slowly moving away from C++ & Qt towards Rust
> 
> See also the blog post \[NGI0 Grant for LibrePCB 2.0\](https://librepcb.org/blog/2024-10-17\_roadmap\_2.0/).
> 
> \# Tasks in This Repository
> 
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1495
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1500
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1499
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1504
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1505
> \- \[x\] https://github.com/LibrePCB/LibrePCB/pull/1507
> \- \[\] Integrate SchematicEditor & BoardEditor into new Slint UI
> \- \[\] Integrate OrderPcbDialog into new Slint UI
> \- \[\] Integrate OutputJobsDialog into new Slint UI
> \- \[\] Integrate LibraryEditor into new Slint UI
> \- \[\] Integrate WorkspaceSettingsDialog into new Slint UI
> 
> \# Tasks in Other Repositories
> 
> \- \[x\] https://github.com/LibrePCB/docker-librepcb-dev/pull/57
> \- \[x\] https://github.com/LibrePCB/docker-librepcb-dev/pull/58
> \- \[x\] https://github.com/LibrePCB/docker-librepcb-dev/pull/61
> \- \[x\] https://github.com/LibrePCB/docker-librepcb-dev/pull/62
> 
> \# Issues to be Solved or Improved
> 
> Note that not all issues are expected to be fully solved in LibrePCB 2.0, some might be completed in a later release.
> 
> \- Solved By Design / Not Relevant Anymore
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/36
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/53
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1050
> \- Problems of Current UI, Not Relevant Anymore or Easy to Fix
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/903
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/942
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1232
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1371
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1372
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1417
> \- To Be Considered / Reviewed
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/359
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/726
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/815
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/915
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1053
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1231
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1258
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1362
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1367
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1424
> \- To be Implemented For Sure
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1051
> \- To be Implemented Sooner or Later
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/646
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1045
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1254
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1332
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1354
> - \[\] https://github.com/LibrePCB/LibrePCB/issues/1370
> 
> \# Related External Issues
> 
> \- \[\] https://github.com/slint-ui/slint/issues/3715
> \- \[\] https://github.com/slint-ui/slint/issues/2723

Urban

---

<div class="post-metadata">

**Author:** ![re-searcher](https://avatars.discourse-cdn.com/v4/letter/r/bc8723/32.png) [@re-searcher](https://librepcb.discourse.group/u/re-searcher)\
**Post date:** [April 14, 2025, 7:48am UTC](https://librepcb.discourse.group/t/gui-development/437/5 "2025-04-14T07:48:47Z")

</div>

Hello Urban(ubruhin),

I do understand that you moving from c++ to rust

What do you think about the tcl and tk libraries ?

> **[Tcl Developer Site](https://www.tcl-lang.org/)**

> **[Tcl/Tk Manual Pages](https://www.tcl-lang.org/man/)**

> **[Tcl/Tk Software](https://www.tcl-lang.org/software/tcltk/)**

Windows = [Magicsplat Tcl/Tk for Windows | Magicsplat](https://www.magicsplat.com/tcl-installer/index.html)  
[magicsplat - Browse /magicsplat-tcl at SourceForge.net](https://sourceforge.net/projects/magicsplat/files/magicsplat-tcl/)

Many persons using freebasic as programming language = windows ,linux, RaspberryPi (arm)

see

> **[Startseite - FreeBASIC-Portal.de](https://www.freebasic-portal.de/)**

> **[FreeBASIC Language | Home](https://www.freebasic.net/)**

> **[freebasic](https://github.com/freebasic)**
>
> freebasic has 5 repositories available. Follow their code on GitHub.

> **[GitHub - freebasic/fbc: FreeBASIC is a completely free, open-source,...](https://github.com/freebasic/fbc)**
>
> FreeBASIC is a completely free, open-source, multi-platform BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, object orientation, unsigned data types, inline assembly, and many others.

> **[GitHub - freebasic/fbc: FreeBASIC is a completely free, open-source,...](https://github.com/freebasic/fbc)**
>
> FreeBASIC is a completely free, open-source, multi-platform BASIC compiler, with syntax similar to MS-QuickBASIC, that adds new features such as pointers, object orientation, unsigned data types, inline assembly, and many others.

git clone [https://git.code.sf.net/p/fbc/code](https://git.code.sf.net/p/fbc/code) fbc-code  
[FreeBASIC Compiler - Browse Files at SourceForge.net](https://sourceforge.net/projects/fbc/files/)

FreeBASIC IDEs/Editors

> **[FreeBASIC IDEs/Editors - freebasic.net](https://www.freebasic.net/forum/viewtopic.php?t=28347)**

> **[GitHub - XusinboyBekchanov/VisualFBEditor: IDE for FreeBasic](https://github.com/XusinboyBekchanov/VisualFBEditor)**
>
> IDE for FreeBasic

> **[GitHub - XusinboyBekchanov/VisualFBEditor: IDE for FreeBasic](https://github.com/XusinboyBekchanov/VisualFBEditor)**
>
> IDE for FreeBasic

Erik

---

<div class="post-metadata">

**Author:** ![ubruhin](https://avatars.discourse-cdn.com/v4/letter/u/c89c15/32.png) [@ubruhin](https://librepcb.discourse.group/u/ubruhin)\
**Post date:** [April 14, 2025, 8:27am UTC](https://librepcb.discourse.group/t/gui-development/437/6 "2025-04-14T08:27:21Z")

</div>

Thanks for the suggestion, but to be honest, Tcl/Tk and FreeBasic are not interesting for us. LibrePCB is a giant software project with very specific needs. The chosen language and GUI toolkit is a fundamental decision which will have significant impact on the project’s future and thus have to be evaluated very seriously, based on many technical aspects but also considering the future of these toolkits. Some examples:

- LibrePCB is the result of ~12 years of development. Switching the language has to be done step by step and will probably take more than 10 years to complete. During this time, it must be possible to mix the old with the new language so we require high compatibility between them.
- Even just the _evaluation_ of a new GUI toolkit took me several weeks because it is so complex.
- I estimate _at least_ 6 months of full-time work for migrating the _major_ part of LibrePCB to a new UI. Migrating the whole UI will take several years.
- Given these time frames, we require toolkits with a bright future. Although I do like old & mature toolkits, most of them will die sooner or later because modern toolkits provide a lot of advantages and will replace them step by step.

---

<div class="post-metadata">

**Author:** ![YurikoDiaz46](https://avatars.discourse-cdn.com/v4/letter/y/9fc348/32.png) [@YurikoDiaz46](https://librepcb.discourse.group/u/YurikoDiaz46)\
**Post date:** [August 2, 2026, 11:08am UTC](https://librepcb.discourse.group/t/gui-development/437/7 "2026-08-02T11:08:13Z")

</div>

Qt, for most of its history — the whole codebase was built on it going back to the early days. That said, if you’re looking at anything post-1.x, there’s a meaningful wrinkle with what they did in 2.0 that changes the answer a bit. Did a longer breakdown of the Qt roots and the newer framework layer here: [LibrePCB GUI Framework: From Qt to Slint in Version 2.0 - Port & Patch](https://portandpatch.com/uncategorized/librepcb-gui-framework-qt-slint/)
