mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-02 11:38:30 -04:00
0cdb065739
binary to mount at runtime, -c or DMS_SHELL_DIR overrides required to explicitly override embedded configuration
83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/server"
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/shellembed"
|
|
"github.com/AvengeMedia/dankgo/shellapp"
|
|
)
|
|
|
|
var shellApp = shellapp.New(shellapp.Config{
|
|
ID: "danklinux",
|
|
EnvPrefix: "DMS",
|
|
QSAppID: "com.danklinux.dms",
|
|
Version: Version,
|
|
Embedded: embeddedShell{},
|
|
Boot: bootBackend,
|
|
PreLaunch: preLaunch,
|
|
ExtraEnv: dmsExtraEnv,
|
|
OnUIExit: logStartupFailure,
|
|
})
|
|
|
|
type embeddedShell struct{}
|
|
|
|
func (embeddedShell) Available() bool { return shellembed.Available() }
|
|
|
|
func (embeddedShell) Extract(baseDir string) (string, error) { return shellembed.Extract(baseDir) }
|
|
|
|
func (embeddedShell) Prune(baseDir, keep string) { shellembed.Prune(baseDir, keep) }
|
|
|
|
type dmsBackend struct {
|
|
srv *server.Server
|
|
done chan error
|
|
}
|
|
|
|
func (b *dmsBackend) SocketPath() string { return b.srv.SocketPath() }
|
|
|
|
func (b *dmsBackend) Close() { b.srv.Close() }
|
|
|
|
func (b *dmsBackend) Done() <-chan error { return b.done }
|
|
|
|
func bootBackend(ctx context.Context) (shellapp.Backend, error) {
|
|
config.CleanupStrayHyprlandConfFile(log.Infof)
|
|
server.CLIVersion = Version
|
|
|
|
srv := server.New()
|
|
if err := srv.Listen(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
backend := &dmsBackend{srv: srv, done: make(chan error, 1)}
|
|
go func() {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
backend.done <- fmt.Errorf("server panic: %v", r)
|
|
}
|
|
}()
|
|
backend.done <- srv.Serve(false)
|
|
}()
|
|
|
|
return backend, nil
|
|
}
|
|
|
|
func preLaunch() {
|
|
go printASCII()
|
|
ensureFontCache()
|
|
}
|
|
|
|
func dmsExtraEnv(string) []string {
|
|
var env []string
|
|
if selfPath, err := os.Executable(); err == nil {
|
|
env = append(env, "DMS_EXECUTABLE="+selfPath)
|
|
}
|
|
if os.Getenv("QSG_USE_SIMPLE_ANIMATION_DRIVER") == "" {
|
|
env = append(env, "QSG_USE_SIMPLE_ANIMATION_DRIVER=1")
|
|
}
|
|
return env
|
|
}
|