I was about to recommend LVGL too, but then I realized exactly this -
@BlueEagle is obviously after the designing part of the whole thing. Sure, the library itself solves a ton of headaches, that's why I'm using it, too; but the pixel-counting, searching-manual-for-the-right-function-or-symbol etc. processes are too familiar to me, too, to understand what pain it can be.
There's probably no good solution. The whole bundle is too expensive to be free, you'll pay it somewhere that's 1. And should the bundle be attractive to masses in order to split the cost somehow, it inevitably imposes a "modern feel and look" upon you together with whatever convenience choices there are for the authors, which you have to accomodate to. TouchGFX is paid through the cost of the chips, which may sound "free" enough; but it suffers from 2 (C++, imposing a certain workflow and general bloat is that developer-convenience you have to suffer).
Back in the days of simpler dot-matrix displays, I concocted myself a tool, which on PC looked like the late PaintBrush, and through UART connection to target it drew on the target display. Lot of effort, but spared me even more effort with the pixel-shifting on target etc. I even simulated the font generator for targets with T6963. And I supported copy/paste through standard windows clipboard (which was a PITA of its own kind, due to microsoftoisms). Kinda similar to the "can simulate on PC" approach, except that pictures on those displays looked very differently than on PC monitor.
A couple of years ago, in ages of STM32 and LVGL and TFT, I tried to write a tool which run on the same target and allowed to visualize and manipulate the internal LVGL structures through a menu system written in the same LVGL... much like a visual designer, but on the target. I failed miserably, the thing was complex, rigid and cumbersome... So, maybe something like that could be split off to PC, a tool which would connect to target, read out the LVGL structures, visualizing them in a tree or other suitable form, and allowing to manipulate its values... it won't need to be fancy, all it takes is a way to click through a tree and enter numberic values. It does not need to visualize the result - it's visualized automagically on the target upon sending the changes and redraw. However, that's still a huge task which would require modification of LVGL itself (read: irreversibly forking from the official sources with all the consequences) and in no way would pay off as an internal project.
But, if your display system is simple enough (I presume, tile-based), this may be the way to go.
JW