app
Package to build MacOS and Web apps using Go, HTML and CSS.
Table of Contents
Install
# MacOS 10.12 and above.
xcode-select --install
# Get package.
go get -u -v github.com/murlokswarm/app/...
Hello world
Main
func main() {
app.Run(&mac.Driver{
OnRun: func() {
newWindow()
},
OnReopen: func(hasVisibleWindow bool) {
if !hasVisibleWindow {
newWindow()
}
},
})
}
func newWindow() {
app.NewWindow(app.WindowConfig{
Title: "hello world",
TitlebarHidden: true,
Width: 1280,
Height: 768,
BackgroundColor: "#21252b",
DefaultURL: "/Hello",
})
}
app.Run starts the app. It takes an app.Driver as argument. Here we use the MacOS driver implementation. See other drivers.
When creating the window, we set the DefaultURL
to our Hello component
struct name: /Hello
.
It will make the component loaded when the window is displayed.
Component
func init() {
app.Import(&Hello{})
}
type Hello struct {
Name string
}
func (h *Hello) Render() string {
return `
<div class="Hello">
<h1>
Hello
{{if .Name}}
{{.Name}}
{{else}}
world
{{end}}!
</h1>
<input value="{{.Name}}" placeholder="Say something..." onchange="Name" autofocus>
</div>
`
}
Components are structs that implement the app.Component interface.
Render method returns a string that contains HTML5. It can be templated following Go standard template syntax:
HTML events like onchange
are mapped to the targetted component
field or method.
Here, onchange
is mapped to the field Name
.
CSS
/* [PACKAGE PATH]/resources/css/hello.css */
.Hello {
/* Your CSS */
}
Because, we want a stylish Hello world, we define the CSS that will give us some cool look.
CSS files are located in [PACKAGE PATH]/resources/css/
directory.
All .css files within that directory will be included.
See the full example.
Drivers
A driver contains specific code that allows the app package to work on multiple platforms.
Other drivers will come in the futur.
Documentation
Examples
From package:
From community:
- grocid/mistlur - use v1
- grocid/passdesktop - use v1