impress icon indicating copy to clipboard operation
impress copied to clipboard

Go GUI cross-platform library

impress. Go GUI cross-platform library

PkgGoDev

See project site for a technical details and a library overview.

Some usage examples are in the examples folder.

Hello World Example

Let's say hello:

package main

import (
    "image"
    "image/color"

    "github.com/codeation/impress"
    "github.com/codeation/impress/event"

    _ "github.com/codeation/impress/duo"
)

func main() {
    app := impress.NewApplication(image.Rect(0, 0, 480, 240), "Hello World Application")
    defer app.Close()

    font := impress.NewFont(15, map[string]string{"family": "Verdana"})
    defer font.Close()

    w := app.NewWindow(image.Rect(0, 0, 480, 240), color.RGBA{255, 255, 255, 255})
    defer w.Drop()

    w.Text("Hello, world!", font, image.Pt(200, 100), color.RGBA{0, 0, 0, 255})
    w.Line(image.Pt(200, 120), image.Pt(300, 120), color.RGBA{255, 0, 0, 255})
    w.Show()
    app.Sync()

    for {
        e := <-app.Chan()
        if e == event.DestroyEvent || e == event.KeyExit {
            break
        }
    }
}

See an explanation of the source code in a library overview.

To run this example on Debian/ Ubuntu:

  1. Install gcc, make, pkg-config if you don't have them installed.

  2. Install GTK+ 3 libraries if you don't have them installed:

sudo apt-get install libgtk-3-dev
  1. Build impress terminal from source:
git clone https://github.com/codeation/it.git
cd it
make
cd ..
  1. Then run example:
git clone https://github.com/codeation/impress.git
cd impress
IMPRESS_TERMINAL_PATH=../it/it go run ./examples/simple/

Steps 0-2 are needed to build a impress terminal binary. See impress terminal page for other options for downloading or building impress terminal app.

Project State

Notes

  • The project is currently in its beta stage. It is highly suitable for the development of in-house applications.
  • The project was tested on Debian 12.5 and macOS 14.5.
  • While the API remains stable, please note that the specific details may be subject to change.

A cross-platform mind-map application is being developed to showcase the core principles of the library.

Key features

See project site for a basic principles and details.

Contributing

First, welcome:

  • Any like to the project (star, post, link, etc.).
  • Any recommendations about library design principles.
  • Contribution to project, documentation, examples.
  • Bug report, open issue.
  • Or any help to fix grammatical or writing errors (PR or issue).