gui: add Wails v3 desktop app skeleton
- Go upgraded to 1.25.10 (required by Wails v3) - Wails v3 installed (alpha.96) - Frontend: Svelte+Vite scaffold in frontend/ - guimain.go: Wails GUI entry point (compiled with -tags gui) - wails_service.go: stub service for Wails bindings - Verstak desktop binary builds: go build -tags gui -o verstak-gui . - CLI (./cmd/verstak/) unaffected - Legacy HTTP GUI (internal/gui/) preserved as prototype - Build: 24MB ELF binary with GTK4/WebKit2GTK-6 Build commands: CLI: go build -o verstak ./cmd/verstak/ GUI: cd frontend && npm run build && go build -tags gui -o verstak-gui .
This commit is contained in:
@@ -1,71 +0,0 @@
|
||||
//go:build gui
|
||||
// +build gui
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"syscall"
|
||||
|
||||
gui "verstak/internal/gui"
|
||||
"verstak/internal/core/storage"
|
||||
)
|
||||
|
||||
func main() {
|
||||
vaultPath := "."
|
||||
if len(os.Args) > 1 {
|
||||
vaultPath = os.Args[1]
|
||||
}
|
||||
|
||||
abs, err := filepath.Abs(vaultPath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
dbPath := filepath.Join(abs, ".verstak", "index.db")
|
||||
db, err := storage.Open(dbPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Open vault: %v", err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
srv := gui.NewServer(db, abs)
|
||||
addr, err := srv.Start()
|
||||
if err != nil {
|
||||
log.Fatalf("Start GUI: %v", err)
|
||||
}
|
||||
|
||||
fmt.Println("Верстак GUI:", addr)
|
||||
openBrowser(addr)
|
||||
|
||||
// Wait for interrupt.
|
||||
sig := make(chan os.Signal, 1)
|
||||
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-sig
|
||||
|
||||
srv.Stop()
|
||||
deferFunc()
|
||||
}
|
||||
|
||||
func openBrowser(url string) {
|
||||
var cmd *exec.Cmd
|
||||
switch runtime.GOOS {
|
||||
case "linux":
|
||||
cmd = exec.Command("xdg-open", url)
|
||||
case "darwin":
|
||||
cmd = exec.Command("open", url)
|
||||
case "windows":
|
||||
cmd = exec.Command("cmd", "/c", "start", "", url)
|
||||
}
|
||||
if cmd != nil {
|
||||
go cmd.Start()
|
||||
}
|
||||
}
|
||||
|
||||
func deferFunc() {}
|
||||
Reference in New Issue
Block a user