README ¶
Energy is a GUI framework developed by Go, based on LCL and CEF
中文 | English
Project Introduction
- Energy is a GUI framework developed in Go, based on LCL and CEF(Chromium Embedded Framework), which is used to develop cross-platform desktop applications for Windows, MacOS, and Linux.
- LCL alone can create lightweight native applications, or can be combined with CEF to create more feature-complete applications.
- Construct cross-platform desktop applications that support Windows, Linux, and MacOS using Go and web technologies (HTML + CSS + JavaScript).
Characteristic
- Rich CEF API and LCL system native widgets
- Development environment is simple and the compilation speed is fast. Only need Go and Energy.
- Cross-Platform: You can package your code as Windows, domestic UOS, Deepin, Kylin, MacOS and Linux
- Responsibilities
- Go: Go is responsible for creating Windows, configuring CEF and implementing functions, creating various UI components, calling the low level of the system and some functions that JS cannot handle, such as: file flow, security encryption, high-performance processing, etc.
- Web: HTML + CSS + JavaScript is responsible for the function of the client interface, you can make any interface you want.
- Front-end technology: Support mainstream frameworks, such as Vue, React, Angular or pure HTML+CSS+JS.
- Event driven: High performance event driven communication based on IPC allowing intercommunication between Go and Web.
- Resource loading: You can either read local resources or resources built into execution files either with or without HTTP services.
Built-in dependency&integration
Development Environment
Basic needs
- Golang >= 1.18
- Energy (CEF, liblcl)
Environmental installation
Automatic installation development environment using the energy command-line tool
Guide to Start - Link
Quick Start
Run a simple application by three steps
- Install development environment:
energy install
- Initiate an Application:
energy init
- Run the Application:
go run main.go
sample code
main.go
package main
import (
"github.com/energye/energy/v2/cef"
)
func main() {
//Global initialization
cef.GlobalInit(nil, nil)
//Create an application
app := cef.NewApplication()
//Specify a URL address or local HTML file directory
cef.BrowserWindow.Config.Url = "https://energye.github.io"
//Run Application
cef.Run(app)
}
Build
- Build:
energy build
- Package:
energy package
- Package Type:
- windows: Using
nsis
create exe installation package - linux: Using
dpkg
create deb installation package - macos: Generate
xxx.app
- windows: Using
System support
OS | 32-bit | 64-bit |
---|---|---|
Windows | ️✔️ | ️✔️ |
MacOSX (Intel) | ❌ | ️✔️ |
MacOS (Apple Silicon) | ❌ | ️✔️ |
Linux | ️✔️ | ️✔️ |
Linux ARM | ️✔️ | ️✔️ |
v3.0 Related Projects
Other Projects
ENERGY QQ Group & WeChat
Innovative functions break through difficulties. Light up the star
and strive forward together!
Thanks Jetbrains
Project screenshot
Windows-10
Windows-7 32 & 64
Windows-XP-SP3
Linux - Deepin
Linux - Kylin ARM
Linux - Ubuntu
MacOSX
Public License
Contributors
Directories ¶
Path | Synopsis |
---|---|
Package cef All CEF implementations of Energy in Go
|
Package cef All CEF implementations of Energy in Go |
exception
Package exception
|
Package exception |
i18n
Package i18n Multilingual resources
|
Package i18n Multilingual resources |
process
Package process Current process
|
Package process Current process |
winapi
Package winapi energy - lcl window api
|
Package winapi energy - lcl window api |
Package common CEF Util
|
Package common CEF Util |
imports
Package imports Dynamic Library Import Based on LCL You can also import and add custom dynamic libraries here
|
Package imports Dynamic Library Import Based on LCL You can also import and add custom dynamic libraries here |
Package consts CEF const
|
Package consts CEF const |
examples
|
|
Package logger Simple log output
|
Package logger Simple log output |
pkgs
|
|
decimal
Package decimal implements an arbitrary precision fixed-point decimal.
|
Package decimal implements an arbitrary precision fixed-point decimal. |
notice
notice is a cross-platform system notification library notice 是一个跨平台的系统通知库
|
notice is a cross-platform system notification library notice 是一个跨平台的系统通知库 |
systray
Package systray is a cross-platform Go library to place an icon and menu in the notification area.
|
Package systray is a cross-platform Go library to place an icon and menu in the notification area. |
Package types CEF & Go type mapping
|
Package types CEF & Go type mapping |
Click to show internal directories.
Click to hide internal directories.