O Fyne é um toolkit gráfico moderno criado para simplificar o desenvolvimento de interfaces gráficas com a linguagem de programação Go.
Com ele, é possível transformar aplicações de linha de comando em softwares completos com janelas, botões e formulários, tudo de forma prática e com código limpo.
Além disso, o Fyne se destaca por ser multiplataforma, permitindo que o mesmo projeto funcione em sistemas como Windows, macOS, Linux e até dispositivos móveis.
Isso faz dele uma excelente escolha para quem busca produtividade sem abrir mão de uma interface moderna e consistente.
Dependências
Linux
Debian/Ubuntu
sudo apt install \
gcc \
libgl1-mesa-dev \
xorg-dev \
libxkbcommon-dev
Fedora
sudo dnf install \
gcc \
libXcursor-devel \
libXrandr-devel \
mesa-libGL-devel \
libXi-devel \
libXinerama-devel \
libXxf86vm-devel \
libxkbcommon-devel \
wayland-devel
Arch Linux
sudo pacman -S \
xorg-server-devel \
libxcursor \
libxrandr \
libxinerama \
libxi \
libxkbcommon
Solus
sudo eopkg it -c \
system.devel \
mesalib-devel \
libxrandr-devel \
libxcursor-devel \
libxi-devel \
libxinerama-devel \
libxkbcommon-devel
openSUSE
sudo zypper install \
gcc \
libXcursor-devel \
libXrandr-devel \
Mesa-libGL-devel \
libXi-devel \
libXinerama-devel \
libXxf86vm-devel \
libxkbcommon-devel
Void Linux
sudo xbps-install -S \
base-devel \
xorg-server-devel \
libXrandr-devel \
libXcursor-devel \
libXinerama-devel \
libXxf86vm-devel \
libxkbcommon-devel \
wayland-devel
Alpine Linux
sudo apk add \
gcc \
libxcursor-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
linux-headers \
mesa-dev \
libxkbcommon-dev \
wayland-dev
macOS
xcode-select --install
Microsoft Windows
Instale o MSYS2.
Após a instalação, não utilize o terminal MSYS que se abre.
Abra MSYS2 MinGW 64-bit no menu Iniciar.
Execute os seguintes comandos (se solicitado a escolher opções de instalação, certifique-se de selecionar all):
pacman -Syu
pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-go
Você precisará adicionar ~/Go/bin ao seu $PATH.
Para o MSYS2, você pode colar o seguinte comando no seu terminal:
echo "export PATH=\$PATH:~/Go/bin" >> ~/.bashrc
Para que o compilador funcione em outros terminais, você precisará configurar a variável %PATH% do Windows para encontrar essas ferramentas.
Acesse o Painel de Controle, clique em Editar variáveis de ambiente do sistema, clique em Avançado e adicione C:\msys64\mingw64\bin à lista Path.
Criando um projeto
Vamos criar uma pasta e iniciar a linguagem de programação Go dentro dela:
mkdir nome-do-app && \
cd nome-do-app && \
go mod init nome-do-app
Substitua
nome-do-apppelo nome do seu projeto!
Agora vamos instalar as ferramentas de linha de comando (CLI) do Fyne (go install) e adicionar o toolkit gráfico Fyne como dependência do projeto (go get):
go install fyne.io/tools/cmd/fyne@latest && \
go get fyne.io/fyne/v2@latest
Crie um arquivo chamado main.go com o seguinte código:
package main
import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello")
w.SetContent(widget.NewButton(
"Click me",
func() { println("Hello!") },
))
w.ShowAndRun()
}
Para Sincronizar o arquivo go.mod e as dependências do código que acabamos de escrever:
go mod tidy
Por fim executamos a interface gráfica com o comando:
go run main.go
Erros
Comando Fyne (Linux/macOS)
Se o comando fyne não estiver funcionando.
- Verifique se o binário existe.
Por padrão, o Go instala as ferramentas na pasta ~/go/bin, para verificar se o fyne está instalado lá:
ls ~/go/bin/fyne
Se aparecer o caminho, o Fyne está instalado, contudo a pasta bin não está no PATH do sistema operacional.
- Adicione o diretório
~/go/binao seu PATH.
Abra o arquivo de configuração do seu shell:
nano ~/.zshrc
Ou:
nano ~/.bashrc
Adicione esta linha ao final do arquivo:
export PATH=$PATH:$(go env GOPATH)/bin
Salve (Ctrl+o, depois Enter) e saia (Ctrl+x).
Atualize a sessão atual do terminal:
source ~/.zshrc
Ou:
source ~/.bashrc
Para testar a configuração execute:
fyne version
Se ele retornar a versão, você está pronto para usar o comando fyne build e outros.
Top comments (0)