From f846a6fb6bf3a8490ec24c43c4a55c61fd85005e Mon Sep 17 00:00:00 2001 From: Failure Date: Fri, 12 Dec 2025 05:59:52 -0800 Subject: [PATCH] init --- .gitmodules | 3 + ApplicationLoopback.exe | Bin 0 -> 248832 bytes go.mod | 48 ++++++++++++++++ go.sum | 87 ++++++++++++++++++++++++++++ gumble | 1 + main.go | 7 +++ threenis/mumble.go | 50 ++++++++++++++++ threenis/process.go | 27 +++++++++ threenis/ui.go | 123 ++++++++++++++++++++++++++++++++++++++++ 9 files changed, 346 insertions(+) create mode 100644 .gitmodules create mode 100644 ApplicationLoopback.exe create mode 100644 go.mod create mode 100644 go.sum create mode 160000 gumble create mode 100644 main.go create mode 100644 threenis/mumble.go create mode 100644 threenis/process.go create mode 100644 threenis/ui.go diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c9a85dc --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "gumble"] + path = gumble + url = https://github.com/franciscod/gumble diff --git a/ApplicationLoopback.exe b/ApplicationLoopback.exe new file mode 100644 index 0000000000000000000000000000000000000000..b6036df5284dc33139c793a868efda6bf485081b GIT binary patch literal 248832 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 R?2ZnB4uKAV4uSszfnNyI*lYj* literal 0 HcmV?d00001 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..7ea931c --- /dev/null +++ b/go.mod @@ -0,0 +1,48 @@ +module git.cef.icu/Failure/threenis + +go 1.25.5 + +require ( + fyne.io/fyne/v2 v2.7.1 + github.com/mitchellh/go-ps v1.0.0 + layeh.com/gumble v0.0.0-20221205141517-d1df60a3cc14 +) + +replace layeh.com/gumble v0.0.0-20221205141517-d1df60a3cc14 => ./gumble + +require ( + fyne.io/systray v1.11.1-0.20250603113521-ca66a66d8b58 // indirect + github.com/BurntSushi/toml v1.5.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fredbi/uri v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/fyne-io/gl-js v0.2.0 // indirect + github.com/fyne-io/glfw-js v0.3.0 // indirect + github.com/fyne-io/image v0.1.1 // indirect + github.com/fyne-io/oksvg v0.2.0 // indirect + github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect + github.com/go-text/render v0.2.0 // indirect + github.com/go-text/typesetting v0.2.1 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/golang/protobuf v1.3.1 // indirect + github.com/hack-pad/go-indexeddb v0.3.2 // indirect + github.com/hack-pad/safejs v0.1.0 // indirect + github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade // indirect + github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect + github.com/nicksnyder/go-i18n/v2 v2.5.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rymdport/portal v0.4.2 // indirect + github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect + github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect + github.com/stretchr/testify v1.11.1 // indirect + github.com/yuin/goldmark v1.7.8 // indirect + golang.org/x/image v0.24.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + layeh.com/gopus v0.0.0-20161224163843-0ebf989153aa // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..29619b8 --- /dev/null +++ b/go.sum @@ -0,0 +1,87 @@ +fyne.io/fyne/v2 v2.7.1 h1:ja7rNHWWEooha4XBIZNnPP8tVFwmTfwMJdpZmLxm2Zc= +fyne.io/fyne/v2 v2.7.1/go.mod h1:xClVlrhxl7D+LT+BWYmcrW4Nf+dJTvkhnPgji7spAwE= +fyne.io/systray v1.11.1-0.20250603113521-ca66a66d8b58 h1:eA5/u2XRd8OUkoMqEv3IBlFYSruNlXD8bRHDiqm0VNI= +fyne.io/systray v1.11.1-0.20250603113521-ca66a66d8b58/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dchote/go-openal v0.0.0-20171116030048-f4a9a141d372/go.mod h1:74z+CYu2/mx4N+mcIS/rsvfAxBPBV9uv8zRAnwyFkdI= +github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g= +github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw= +github.com/fredbi/uri v1.1.1 h1:xZHJC08GZNIUhbP5ImTHnt5Ya0T8FI2VAwI/37kh2Ko= +github.com/fredbi/uri v1.1.1/go.mod h1:4+DZQ5zBjEwQCDmXW5JdIjz0PUA+yJbvtBv+u+adr5o= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fyne-io/gl-js v0.2.0 h1:+EXMLVEa18EfkXBVKhifYB6OGs3HwKO3lUElA0LlAjs= +github.com/fyne-io/gl-js v0.2.0/go.mod h1:ZcepK8vmOYLu96JoxbCKJy2ybr+g1pTnaBDdl7c3ajI= +github.com/fyne-io/glfw-js v0.3.0 h1:d8k2+Y7l+zy2pc7wlGRyPfTgZoqDf3AI4G+2zOWhWUk= +github.com/fyne-io/glfw-js v0.3.0/go.mod h1:Ri6te7rdZtBgBpxLW19uBpp3Dl6K9K/bRaYdJ22G8Jk= +github.com/fyne-io/image v0.1.1 h1:WH0z4H7qfvNUw5l4p3bC1q70sa5+YWVt6HCj7y4VNyA= +github.com/fyne-io/image v0.1.1/go.mod h1:xrfYBh6yspc+KjkgdZU/ifUC9sPA5Iv7WYUBzQKK7JM= +github.com/fyne-io/oksvg v0.2.0 h1:mxcGU2dx6nwjJsSA9PCYZDuoAcsZ/OuJlvg/Q9Njfo8= +github.com/fyne-io/oksvg v0.2.0/go.mod h1:dJ9oEkPiWhnTFNCmRgEze+YNprJF7YRbpjgpWS4kzoI= +github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA= +github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc= +github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU= +github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8= +github.com/go-text/typesetting v0.2.1/go.mod h1:mTOxEwasOFpAMBjEQDhdWRckoLLeI/+qrQeBCTGEt6M= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0= +github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/hack-pad/go-indexeddb v0.3.2 h1:DTqeJJYc1usa45Q5r52t01KhvlSN02+Oq+tQbSBI91A= +github.com/hack-pad/go-indexeddb v0.3.2/go.mod h1:QvfTevpDVlkfomY498LhstjwbPW6QC4VC/lxYb0Kom0= +github.com/hack-pad/safejs v0.1.0 h1:qPS6vjreAqh2amUqj4WNG1zIw7qlRQJ9K10eDKMCnE8= +github.com/hack-pad/safejs v0.1.0/go.mod h1:HdS+bKF1NrE72VoXZeWzxFOVQVUSqZJAG0xNCnb+Tio= +github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade h1:FmusiCI1wHw+XQbvL9M+1r/C3SPqKrmBaIOYwVfQoDE= +github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o= +github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M= +github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= +github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= +github.com/nicksnyder/go-i18n/v2 v2.5.1 h1:IxtPxYsR9Gp60cGXjfuR/llTqV8aYMsC472zD0D1vHk= +github.com/nicksnyder/go-i18n/v2 v2.5.1/go.mod h1:DrhgsSDZxoAfvVrBVLXoxZn/pN5TXqaDbq7ju94viiQ= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA= +github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= +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/rymdport/portal v0.4.2 h1:7jKRSemwlTyVHHrTGgQg7gmNPJs88xkbKcIL3NlcmSU= +github.com/rymdport/portal v0.4.2/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= +github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE= +github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q= +github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ= +github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= +github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= +golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ= +golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +layeh.com/gopus v0.0.0-20161224163843-0ebf989153aa h1:WNU4LYsgD2UHxgKgB36mL6iMAMOvr127alafSlgBbiA= +layeh.com/gopus v0.0.0-20161224163843-0ebf989153aa/go.mod h1:AOef7vHz0+v4sWwJnr0jSyHiX/1NgsMoaxl+rEPz/I0= diff --git a/gumble b/gumble new file mode 160000 index 0000000..8aa109b --- /dev/null +++ b/gumble @@ -0,0 +1 @@ +Subproject commit 8aa109bf5be3e76b2c9cc3afe3be670de99eef3c diff --git a/main.go b/main.go new file mode 100644 index 0000000..ab3be38 --- /dev/null +++ b/main.go @@ -0,0 +1,7 @@ +package main + +import "git.cef.icu/Failure/threenis/threenis" + +func main() { + threenis.Ui() +} diff --git a/threenis/mumble.go b/threenis/mumble.go new file mode 100644 index 0000000..3d19eb5 --- /dev/null +++ b/threenis/mumble.go @@ -0,0 +1,50 @@ +package threenis + +import ( + "crypto/tls" + "log" + "net" + "strconv" + + "layeh.com/gumble/gumble" + "layeh.com/gumble/gumbleutil" +) + +func MumbleClient(server string, username string, password string, listeners ...gumble.EventListener) { + insecure := true + + host, port, err := net.SplitHostPort(server) + if err != nil { + host = server + port = strconv.Itoa(gumble.DefaultPort) + } + + keepAlive := make(chan bool) + + config := gumble.NewConfig() + config.Username = username + config.Password = password + address := net.JoinHostPort(host, port) + + var tlsConfig tls.Config + + if insecure { + tlsConfig.InsecureSkipVerify = true + } + + config.Attach(gumbleutil.AutoBitrate) + for _, listener := range listeners { + config.Attach(listener) + } + config.Attach(gumbleutil.Listener{ + Disconnect: func(e *gumble.DisconnectEvent) { + keepAlive <- true + }, + }) + _, err = gumble.DialWithDialer(new(net.Dialer), address, config, &tlsConfig) + if err != nil { + log.Println(err) + } + + <-keepAlive +} diff --git a/threenis/process.go b/threenis/process.go new file mode 100644 index 0000000..d2be07c --- /dev/null +++ b/threenis/process.go @@ -0,0 +1,27 @@ +package threenis + +import ( + "fmt" + "slices" + + "github.com/mitchellh/go-ps" +) + +func GetProcesses() []ps.Process { + pids, err := ps.Processes() + if err != nil { + panic(err) + } + slices.SortFunc(pids, func(a, b ps.Process) int { + return a.Pid() - b.Pid() + }) + return pids +} + +func GetProcessStrings() []string { + processes := make([]string, 0) + for _, proc := range GetProcesses() { + processes = append(processes, fmt.Sprintf("%d - %s", proc.Pid(), proc.Executable())) + } + return processes +} diff --git a/threenis/ui.go b/threenis/ui.go new file mode 100644 index 0000000..589e5e7 --- /dev/null +++ b/threenis/ui.go @@ -0,0 +1,123 @@ +package threenis + +import ( + "log" + "os/exec" + "strings" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/layout" + "fyne.io/fyne/v2/widget" + "layeh.com/gumble/gumble" + "layeh.com/gumble/gumbleffmpeg" + "layeh.com/gumble/gumbleutil" + _ "layeh.com/gumble/opus" +) + +type Threenis struct { + stream *gumbleffmpeg.Stream + process *exec.Cmd +} + +type SourceStream string + +func ThreenisSource(filename string) gumbleffmpeg.Source { + return SourceStream(filename) +} + +func (s SourceStream) Arguments() []string { + return []string{"-fflags", "nobuffer", "-flags", "low_delay", "-f", "s16le", "-ac", "2", "-i", "udp://127.0.0.1:2888"} +} + +func (SourceStream) Start(*exec.Cmd) error { + return nil +} + +func (SourceStream) Done() { +} + +func (t *Threenis) Mumble(server string, username string, password string, channel string) { + MumbleClient(server, username, password, gumbleutil.AutoBitrate, gumbleutil.Listener{ + Connect: func(e *gumble.ConnectEvent) { + c := e.Client.Channels.Find(channel) + if c != nil { + e.Client.Self.Move(c) + } + t.stream = gumbleffmpeg.New(e.Client, ThreenisSource("")) + if err := t.stream.Play(); err != nil { + log.Println(err) + } + + }, + }) +} + +func Ui() { + myApp := app.New() + myWindow := myApp.NewWindow("Threenis") + myWindow.Resize(fyne.NewSize(800, 400)) + myWindow.SetFixedSize(true) + + processes := GetProcessStrings() + threenis := Threenis{} + + defer func() { + threenis.stream.Stop() + if threenis.process != nil && threenis.process.Process != nil { + threenis.process.Process.Kill() + } + }() + + list := widget.NewList( + func() int { + return len(processes) + }, + func() fyne.CanvasObject { + return widget.NewLabel("template") + }, + func(i widget.ListItemID, o fyne.CanvasObject) { + o.(*widget.Label).SetText(processes[i]) + }) + + list.OnSelected = func(id widget.ListItemID) { + if threenis.process != nil && threenis.process.Process != nil { + threenis.process.Process.Kill() + } + threenis.process = exec.Command("./ApplicationLoopback.exe", strings.Split(processes[id], " - ")[0], "includetree") + log.Println(strings.Split(processes[id], " - ")[0]) + err := threenis.process.Start() + if err != nil { + log.Println(err) + } + + } + + serverLabel := widget.NewLabel("Server") + server := widget.NewEntry() + + usernameLabel := widget.NewLabel("Username") + username := widget.NewEntry() + passwordLabel := widget.NewLabel("Password") + password := widget.NewEntry() + + channelLabel := widget.NewLabel("Channel") + channel := widget.NewEntry() + + refresh := widget.NewButton("Refresh", func() { + processes = GetProcessStrings() + list.Refresh() + }) + + connect := widget.NewButton("Connect", func() { + go threenis.Mumble(server.Text, username.Text, password.Text, channel.Text) + }) + + form := container.New(layout.NewFormLayout(), serverLabel, server, usernameLabel, username, passwordLabel, password, channelLabel, channel, refresh, connect) + + grid := container.New(layout.NewGridLayout(2), list, form) + + myWindow.SetContent(grid) + myWindow.ShowAndRun() +}