walk

by lxn

lxn / walk

A Windows GUI toolkit for the Go Programming Language

4.9K Stars 700 Forks Last release: Not found Other 1.7K Commits 1 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

About Walk

Walk is a "Windows Application Library Kit" for the Go Programming Language.

Its primarily useful for Desktop GUI development, but there is some more stuff.

Setup

Make sure you have a working Go installation. See Getting Started

Note

Walk currently requires Go 1.11.x or later.

To Install

Now run

go get github.com/lxn/walk

Using Walk

The preferred way to create GUIs with Walk is to use its declarative sub package, as illustrated in this small example:

test.go
package main

import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "strings" )

func main() { var inTE, outTE *walk.TextEdit

MainWindow{
    Title:   "SCREAMO",
    MinSize: Size{600, 400},
    Layout:  VBox{},
    Children: []Widget{
        HSplitter{
            Children: []Widget{
                TextEdit{AssignTo: &inTE},
                TextEdit{AssignTo: &outTE, ReadOnly: true},
            },
        },
        PushButton{
            Text: "SCREAM",
            OnClicked: func() {
                outTE.SetText(strings.ToUpper(inTE.Text()))
            },
        },
    },
}.Run()

}

Create Manifest
test.manifest
    
    
        
            
        
    
    
        
            PerMonitorV2, PerMonitor
            True
        
    

Then either compile the manifest using the rsrc tool, like this:

go get github.com/akavel/rsrc
rsrc -manifest test.manifest -o rsrc.syso

or rename the

test.manifest
file to
test.exe.manifest
and distribute it with the application instead.
Build app

In the directory containing

test.go
run
go build

To get rid of the cmd window, instead run

go build -ldflags="-H windowsgui"
Run app
test.exe
Sample Output (Windows 7)

alt tag

More Examples

There are some examples that should get you started.

Application Manifest Files

Walk requires Common Controls 6. This means that you must put an appropriate application manifest file either next to your executable or embedded as a resource.

You can copy one of the application manifest files that come with the examples.

To embed a manifest file as a resource, you can use the rsrc tool.

IMPORTANT: If you don't embed a manifest as a resource, then you should not launch your executable before the manifest file is in place. If you do anyway, the program will not run properly. And worse, Windows will not recognize a manifest file, you later drop next to the executable. To fix this, rebuild your executable and only launch it with a manifest file in place.

CGo Optimizations

The usual default message loop includes calls to win32 API functions, which incurs a decent amount of runtime overhead coming from Go. As an alternative to this, you may compile Walk using an optional C implementation of the main message loop, by passing the

walk_use_cgo
build tag:

go build -tags walkusecgo

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.