php Xiaobian Yuzai today introduces you to a simple and practical method, that is, how to use Gio to set the title bar icon. When developing desktop applications, a beautiful title bar icon can increase the appeal and professional feel of the application. We can achieve this easily by using Gio, a powerful graphics library. In this article, we’ll walk you through how to set up a title bar icon using Gio to make your app visually stand out. Let’s take a look!
I have a problem using Gio UI (https://gioui.org/).
As you can see, the window icon is not set and there is no option to set it.
When you create a new window, you can only set the title:
w := app.NewWindow(app.Title("My APP Title"))
But if I understand correctly, the icon should be loaded from the resource manifest:
go\pkg\mod\[email protected]\app\internal\windows\windows.go
//
func LoadImage(hInst syscall.Handle, res uint32, typ uint32, cx, cy int, fuload uint32) (syscall.Handle, error) { h, _, err := _LoadImage.Call(uintptr(hInst), uintptr(res), uintptr(typ), uintptr(cx), uintptr(cy), uintptr(fuload)) if h == 0 { return 0, fmt.Errorf("LoadImageW failed: %v", err) } return syscall.Handle(h), nil }
To build the resource manifest, I use go winres: https://github.com/tc-hib/go-winres
I have correctly set the application icon in winres.json and the icon in the taskbar as described in the guide.
I think there should be a way to set the window icon in the application title, but I can't find which key I should specify in the json:
{ "RT_GROUP_ICON": { "APP": { "0000": [ "icon_64.png", "icon_48.png", "icon_32.png", "icon_16.png" ] }, "OTHER": { "0000": "icon.png" }, "#42": { "0409": "icon_EN.ico", "040C": "icon_FR.ico" } } }
The official way is to use the gogio tool, unfortunately the documentation for this tool is poor compared to go-winres Very few, and with many restrictions.
Use go install gioui.org/cmd/gogio@latest
Install it
Then compile your application using the following command:
@GOOS=windows GOARCH=amd64 gogio -buildmode=exe -icon=appicon.png -arch=amd64 -target=windows -o myapp.exe app-path/
Change the schema and paths according to your needs.
Anyway, as far as I understand gogio only supports png, it will automatically generate all required resolutions.
Since I wanted to use go-winres, I just used Resource Hacker a> to decompile the exe resource.
I found that to set the icon you need to set winres.json like this:
{ "RT_GROUP_ICON": { "#1": { "0409": "myicon_EN.ico" } }, "RT_MANIFEST": { "#1": { "0409": // Your settings } }
Then you can use go build and go-winres to compile normally, just remember to set -ldflags=-H=windowsgui
The above is the detailed content of How to set title bar icon using Gio. For more information, please follow other related articles on the PHP Chinese website!