Compare commits

...

5 commits
v0.1.0 ... main

Author SHA1 Message Date
grngxd
c95bafd34f forgot navigate 2025-06-27 15:26:32 +01:00
grngxd
a3791b599b make fn optional in app.Run 2025-06-27 15:23:51 +01:00
grngxd
34e396271d oosp 2025-06-27 15:14:59 +01:00
grngxd
c3243503a7 oops 2025-06-26 19:39:10 +01:00
grngxd
a16f898ed8 j 2025-06-18 19:45:49 +01:00
11 changed files with 70 additions and 9 deletions

View file

@ -5,7 +5,7 @@ tmp_dir = "tmp"
[build]
args_bin = []
bin = "tmp\\main.exe"
cmd = "go build -o ./tmp/main.exe ./example"
cmd = "go build -o ./tmp/main.exe ./examples/testbench"
delay = 1000
exclude_dir = ["assets", "tmp", "vendor", "testdata", "runtime/out", "node_modules", "dist"]
exclude_file = []

2
.gitignore vendored
View file

@ -1,2 +1,2 @@
tmp/
out/
*.exe

View file

@ -9,7 +9,7 @@ Build modern, cross-platform desktop apps in HTML + Go from one codebase. It use
- ⚡**Fast development**: Use *ANY* web framework for your UI. Tiramisu handles all the magic of making it work, for you.
## Installation
`go install git.iwakura.rip/grng/tiramisu`
`go get -u git.iwakura.rip/grng/tiramisu`
## Example
@ -23,7 +23,7 @@ import (
func main() {
// create the webview instance
app := tiramisu.New(tiramisu.Options{
app := tiramisu.New(tiramisu.TiramisuOptions{
Title: "Tiramisu Example",
Width: 800,
Height: 600,

View file

@ -6,4 +6,4 @@ tasks:
default:
cmds:
- bunx tsc -p ./runtime
- go build -ldflags='-H windowsgui' ./example
- go build -ldflags='-H windowsgui' ./examples/testbench

View file

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<body>
<h1>hello tiramisu!</h1>
</body>
</html>

24
examples/minimal/main.go Normal file
View file

@ -0,0 +1,24 @@
package main
import (
_ "embed"
t "git.iwakura.rip/grng/tiramisu"
webview "github.com/webview/webview_go"
)
//go:embed index.html
var html string
func main() {
app := t.New(t.TiramisuOptions{
Debug: true,
Width: 800,
Height: 600,
Title: "Tiramisu",
Hints: webview.HintFixed,
})
app.HTML(html)
app.Run()
}

11
runtime/out/preload.d.ts vendored Normal file
View file

@ -0,0 +1,11 @@
declare const tiramisu: {
invoke: (name: string, ...args: any[]) => Promise<any>;
fs: {
readFile: (path: string) => Promise<string>;
readDir: (path: string) => Promise<string[]>;
exists: (path: string) => Promise<boolean>;
};
notifications: {
notify: (message: string, ico?: string) => Promise<void>;
};
};

12
runtime/out/preload.js Normal file
View file

@ -0,0 +1,12 @@
const tiramisu = {
invoke: window.__TIRAMISU_INTERNAL_invoke,
fs: {
readFile: window.__TIRAMISU_FILESYSTEM_readFile,
readDir: window.__TIRAMISU_FILESYSTEM_readDir,
exists: window.__TIRAMISU_INTERNAL_exists,
},
notifications: {
notify: window.__TIRAMISU_NOTIFICATIONS_notify,
},
};
window.tiramisu = tiramisu;

View file

@ -40,15 +40,17 @@ func New(o TiramisuOptions) *Tiramisu {
return t
}
func (t *Tiramisu) Run(fn func()) {
func (t *Tiramisu) Run(fns ...func()) {
defer t.w.Destroy()
t.w.Dispatch(func() {
t.loadJSRuntime()
t.loadGoRuntime()
for _, fn := range fns {
if fn != nil {
fn()
}
}
})
t.w.Run()
}
@ -95,6 +97,12 @@ func (t *Tiramisu) HTML(html string) {
t.loadGoRuntime()
}
func (t *Tiramisu) Navigate(url string) {
t.w.Navigate(url)
t.loadJSRuntime()
t.loadGoRuntime()
}
//go:embed runtime/out/*
var runtimeFS embed.FS