From 0f2a6c87bb7ea131d2d009da36496bda960fa690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20DELHAIE?= Date: Wed, 30 Jul 2025 20:25:07 +0200 Subject: [PATCH] first commit --- .gitignore | 2 + build.sh | 1 + go.mod | 17 ++++++ go.sum | 32 ++++++++++++ main.go | 127 +++++++++++++++++++++++++++++++++++++++++++++ tray.ico | Bin 0 -> 237066 bytes winres/icon.png | Bin 0 -> 8344 bytes winres/icon16.png | Bin 0 -> 645 bytes winres/winres.json | 53 +++++++++++++++++++ 9 files changed, 232 insertions(+) create mode 100644 .gitignore create mode 100644 build.sh create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 tray.ico create mode 100644 winres/icon.png create mode 100644 winres/icon16.png create mode 100644 winres/winres.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15014e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.syso +*.exe \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..a71d2fd --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +go build -ldflags -H=windowsgui \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..ade8439 --- /dev/null +++ b/go.mod @@ -0,0 +1,17 @@ +module Win2Linux + +go 1.24 + +require github.com/getlantern/systray v1.2.2 + +require ( + github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect + github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 // indirect + github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 // indirect + github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 // indirect + github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 // indirect + github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f // indirect + github.com/go-stack/stack v1.8.0 // indirect + github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect + golang.org/x/sys v0.1.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..4c056eb --- /dev/null +++ b/go.sum @@ -0,0 +1,32 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 h1:NRUJuo3v3WGC/g5YiyF790gut6oQr5f3FBI88Wv0dx4= +github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY= +github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 h1:6uJ+sZ/e03gkbqZ0kUG6mfKoqDb4XMAzMIwlajq19So= +github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7/go.mod h1:l+xpFBrCtDLpK9qNjxs+cHU6+BAdlBaxHqikB6Lku3A= +github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 h1:guBYzEaLz0Vfc/jv0czrr2z7qyzTOGC9hiQ0VC+hKjk= +github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7/go.mod h1:zx/1xUUeYPy3Pcmet8OSXLbF47l+3y6hIPpyLWoR9oc= +github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 h1:micT5vkcr9tOVk1FiH8SWKID8ultN44Z+yzd2y/Vyb0= +github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7/go.mod h1:dD3CgOrwlzca8ed61CsZouQS5h5jIzkK9ZWrTcf0s+o= +github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 h1:XYzSdCbkzOC0FDNrgJqGRo8PCMFOBFL9py72DRs7bmc= +github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55/go.mod h1:6mmzY2kW1TOOrVy+r41Za2MxXM+hhqTtY3oBKd2AgFA= +github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f h1:wrYrQttPS8FHIRSlsrcuKazukx/xqO/PpLZzZXsF+EA= +github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f/go.mod h1:D5ao98qkA6pxftxoqzibIBBrLSUli+kYnJqrgBf9cIA= +github.com/getlantern/systray v1.2.2 h1:dCEHtfmvkJG7HZ8lS/sLklTH4RKUcIsKrAD9sThoEBE= +github.com/getlantern/systray v1.2.2/go.mod h1:pXFOI1wwqwYXEhLPm9ZGjS2u/vVELeIgNMY5HvhHhcE= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/lxn/walk v0.0.0-20210112085537-c389da54e794/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ= +github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk= +github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= +github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= diff --git a/main.go b/main.go new file mode 100644 index 0000000..556541f --- /dev/null +++ b/main.go @@ -0,0 +1,127 @@ +package main + +import ( + _ "embed" + "os" + "os/exec" + "regexp" + "strings" + + "github.com/getlantern/systray" +) + +//go:generate go-winres make + +type ( + Entry struct { + Key string + Attributes map[string]string + } +) + +var ( + r *regexp.Regexp = regexp.MustCompile(`-+`) +) + +//go:embed tray.ico +var icon []byte + +type () + +func main() { + systray.Run(onReady, onExit) +} + +func onReady() { + entries := list() + systray.SetTitle("Win2Linux") + systray.SetTooltip("Switch from Windows to Linux") + systray.SetIcon(icon) + + for _, entry := range entries { + key := entry.Key + if desc, ok := entry.Attributes["description"]; ok { + key = desc + } + mCustom := systray.AddMenuItem(key, "Switch to"+key) + go func() { + <-mCustom.ClickedCh + reboot(entry.Attributes["identifier"]) + }() + + } + systray.AddSeparator() + mQuit := systray.AddMenuItem("Quit", "Quit") + + go func() { + <-mQuit.ClickedCh + os.Exit(0) + }() +} + +func onExit() { + // clean up here +} + +func list() []Entry { + cmd := exec.Command("bcdedit", "/enum", "firmware") + out, err := cmd.Output() + if err != nil { + panic(err) + } + return parse(string(out)) +} + +func parse(out string) []Entry { + lines := strings.Split(out, "\r\n") + section := false + lastLine := "" + secName := "" + a := make(map[string][]string) + for _, l := range lines { + if !section { + if r.Match([]byte(l)) { + secName = lastLine + section = true + } + } else { + if len(l) != 0 { + a[secName] = append(a[secName], l) + } else { + section = false + } + } + + lastLine = l + } + + var entries []Entry + for k, sec := range a { + entry := Entry{ + Key: k, + Attributes: make(map[string]string), + } + for _, l := range sec { + l = strings.Join(strings.Fields(l), " ") + val := strings.SplitN(l, " ", 1) + if len(val) != 2 { + continue + } + entry.Attributes[val[0]] = val[1] + } + entries = append(entries, entry) + } + return entries +} + +func reboot(uuid string) { + if err := exec.Command("bcdedit", "/Set", "{fwbootmgr}", "BootSequence", uuid, "/addFirst").Run(); err != nil { + panic(err) + } + + if err := exec.Command("shutdown", "/r", "/t", "2").Run(); err != nil { + panic(err) + } + + os.Exit(0) +} diff --git a/tray.ico b/tray.ico new file mode 100644 index 0000000000000000000000000000000000000000..873cd41f969ff4dad6bca3215ba986c6f3ce69d6 GIT binary patch literal 237066 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 C;cc$~ literal 0 HcmV?d00001 diff --git a/winres/icon.png b/winres/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f775aaa425b02a65ee43531d6a187e0192190c3f GIT binary patch literal 8344 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 literal 0 HcmV?d00001 diff --git a/winres/winres.json b/winres/winres.json new file mode 100644 index 0000000..8043b9f --- /dev/null +++ b/winres/winres.json @@ -0,0 +1,53 @@ +{ + "RT_GROUP_ICON": { + "APP": { + "0000": [ + "icon.png", + "icon16.png" + ] + } + }, + "RT_MANIFEST": { + "#1": { + "0409": { + "identity": { + "name": "", + "version": "" + }, + "description": "", + "minimum-os": "win10", + "execution-level": "requireAdministrator", + "ui-access": false, + "auto-elevate": false, + "dpi-awareness": "system", + "disable-theming": false, + "disable-window-filtering": false, + "high-resolution-scrolling-aware": false, + "ultra-high-resolution-scrolling-aware": false, + "long-path-aware": false, + "printer-driver-isolation": false, + "gdi-scaling": false, + "segment-heap": false, + "use-common-controls-v6": false + } + } + }, + "RT_VERSION": { + "#1": { + "0000": { + "fixed": { + "file_version": "0.0.1.0", + "product_version": "0.0.1.0" + }, + "info": { + "0409": { + "Comments": "Switch from Windows to Linux", + "CompanyName": "Aurelie Delhaie", + "ProductName": "Win2Linux", + "ProductVersion": "0.0.1.0" + } + } + } + } + } +} \ No newline at end of file