/Blink.jl

Web-based GUIs for Julia

Primary LanguageJuliaOtherNOASSERTION

Blink.jl

Build Status

Blink.jl is the Julia wrapper around Electron. It can serve HTML content in a local window, and allows for communication between Julia and the web page. In this way, therefore, Blink can be used as a GUI toolkit for building HTML-based applications for the desktop.

To install, do:

julia> Pkg.add("Blink")
# ... Blink builds and downloads Electron ...
julia> using Blink
julia> Blink.AtomShell.install()

Dependencies

  • 7z on Windows and unzip on Linux.
    • You'll need to install the appropriate one for your system to be able to install Electron (for Linux, apt get install -y unzip or similar should work).
    • 7z is also packaged with Julia, so if you have your Julia installation in your PATH, we can use that version of 7z as well.

Basic usage:

julia> using Blink

julia> w = Window() # Open a new window
Blink.AtomShell.Window(...)

julia> body!(w, "Hello World") # Set the body content

julia> loadurl(w, "http://julialang.org") # Load a web page
Blink Window showing the JuliaLang website

For options see the functions defined in window.jl, which closely follow electron's API.

You can also use the JS API to interact with the window. For example:

julia> @js w Math.log(10)
2.302585092994046

If that's not convincing enough, open the console (Cmd-Alt-I on OS X) and evaluate:

@js w console.log("hello, web-scale world")

Issues & Caveats

  • On Windows, the spawned process dumps its output into Julia's STDOUT, which is kind of annoying.

  • When running on a headless linux instance (such as for CI tests), you must start julia via xvfb-run julia. More information can be found in the electron docs here. See the Blink.jl .travis.yml file for an example.

    Otherwise you will see the following error:

    │    LoadError: IOError: connect: connection refused (ECONNREFUSED)