energye / energy

Energy is a framework developed by Go language based on CEF (Chromium Embedded Framework) for developing cross-platform desktop applications for Windows, Mac OS X, and Linux

Home Page:https://energy.yanghy.cn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Open source is not easy, strive to persist! Order a Star, it's very important to me!

sxmxta opened this issue · comments

commented

Speak up


I started occasionally searching for Go's desktop GUI framework a few years ago, when I was purely interested.

I have found and tried some, but I personally feel that each has its own advantages and disadvantages, which is only at the level of trial. Not very well understood.


From 2021 to 2022, a friend introduced an outsourcing project, the APP+PC Paperless office intelligent conference software, which needs to be cross platform and support windows, domestic systems (linux, linux arm), Android, IOS, and PC customers need to use java as the client, and a layer of shell is packaged based on CEF


It's really uncomfortable to write a Java client and never want to write again after this experience. In short, there are various issues.


Ever since this project, I've been thinking of using Go to write one myself, give it a try?

I don't know how to start. I accidentally found the govcl open source project, the system native UI encapsulated by the lcl component library based on Lazarus, and then learned how to do it. At first, I saw that the Free Pascal language was unused, and then I began to experience the installation environment. Later, I became more and more fond of govcl, which is compact and a Dynamic-link library.


Later on, while researching and learning free pascal, I looked at whether this thing could be used as a browser based cross platform desktop framework

The client interface of the Govcl component library is not very attractive. Not as flexible and ever-changing as HTML+CSS, but there are really many components. If you have the ability, you can also extend liblcl yourself

The advantage of the Govcl component library is that the compiled volume is very small and the compilation speed is also fast You only need liblcl Dynamic-link library (lcl component library)+go environment

The most important aspect of Lazarus is cross platform Windows, Linux (ARM), Mac (ARM), and many other architectures that I have never heard of, and the APP also supports Android that I have never used before


Furthermore, I discovered CEF4Delphi during a study of Lazarus extension components. Upon seeing that it is open-source and entirely written based on CEF, I was wondering if it could be integrated into the liblcl dynamic library and started researching


After a period of testing, it is feasible. Then start writing the Energy Journey.

At the beginning, I didn't know how to use free pascal very well. While learning and writing, I changed the clone govcl to golcl (retaining the original author's authorization and information) and added extensions to enrgy while retaining the native components of the lcl system


Time: October 2022~June 2023, from the initial v1.0 to v2.0, lasting for over 8 months


V1.0 has not fully implemented the CEF interface yet, and there are many logical functions written in liblcl, and not many CEF functions are implemented

V2.0 transfers all logical functions from the liblcl library to go for implementation, while adding 90% of CEF's export APIs to Energy


The framework code may not be perfect or there may be many issues, welcome to raise them.


Welcome to Sanlian: watch、star、fork