[ANN] Pluto Desktop beta release – native Windows app

The Pluto team has been hard at work on Pluto Desktop, an all-in-one Windows application for working with Pluto notebooks. It’s easy to install (download the installer and run), and it comes with everything included: Julia, Pluto, sysimage.

Today is the beta release, built with Pluto 1.0.3. We invite Windows users to install Pluto Desktop beta and tell us what you think! Next, we will make this generally available, and it will be the recommended way to use Pluto on Windows.

:sparkles: Features

PlutoDesktop is the easiest way to use Pluto on Windows. The advantages compared to installing Pluto as a Julia package are:

All in one

Julia and Pluto are included in the app. This means that you don’t need to install and update Pluto. In fact, you don’t even need a terminal! This also means that there is less that can go wrong.

File picker

When you open or save a notebook, you can use the native Explorer window instead of typing a C:\... path. This was previously not possible, because Pluto is a web application that does not have the right permissions.

You can also associate Pluto with the .jl or .plutojl file types, so you can double click to open notebooks.

Auto updating

The Pluto Desktop app checks for updates in the background. So you get the latest Julia and Pluto versions automatically.

Easier sessions management

Each window is one notebook. If you close a notebook, it shuts down. This makes it easier to understand which notebooks are running. (Tip: You can still open the same notebook in a mirror view.)

:face_with_monocle: Who is this for?

Although everybody is welcome to use this, it is generally focussed on people who are not comfortable using the terminal. Students and teachers who are just interested in using Pluto.jl and want an easy installation, this is what you are looking for!

Can I still install Pluto myself?

Yes! On all platforms (Windows, MacOS, Linux), you can still install Pluto as a package from the Julia package manager. Pluto Desktop is an extra option for Windows users.

:gear: How does it work?

Pluto Desktop is a NodeJS Electron wrapper around Pluto. The Pluto app is mostly the same (installed from the Pluto.jl package), but there is some special functionality built into Pluto that is shown when Pluto detects that it is in desktop mode – mostly related to file management.

During package build, we include Julia, and we use PackageCompiler.jl to generate a separate sysimage that includes Pluto. This makes the Pluto installation relocatable (without needing a separate Julia depot), stable (can’t mess up the files), cleanly updatable, and it improves launch time. All other package management works the same as regular Pluto, using your global ~/.julia depot.

The version number of PlutoDesktop looks like 1.0.2-build006, where 1.0.2 is the Pluto version, and 006 is the iteration of PlutoDesktop releases based on that Pluto version.

:game_die: Try it yourself!

You can install PlutoDesktop on Windows using the download link in our README on GitHub. Please let us know what you think! Since this is a beta release, we need your feedback to get PlutoDesktop ready.

:robot: AI disclaimer

This post is handwritten. Pluto is handwritten. Pluto Desktop is a mix of handwritten code, AI assisted code and vibe coding, with human review.

:blossom: Credits

PlutoDesktop was started by Dhruv as a Google Summer of Code project, led by Connor Burns. Later, Boshra Ariguib continued development with a NumFOCUS Small Development Grant. I finished the beta release using AI coding tools.

Amazing job as usual! :clap: :tada: Thank you for the hard work!

Will certainly try it out in future training sessions.

Thanks @fonsp; really excited for this!

  1. Is there any reason not to use the .plutojl file extension for all Pluto notebooks?
    This is the first I’ve heard of it, but they seem to include fine in packages, and double click to open support is huge!
  2. Are there any conflicts I should watch out for when running Pluto Desktop on a machine that already has juliaup, julia, and Pluto?

Hi! We initially used the .jl extension for two reasons: a) advertising that Pluto notebooks are also valid Julia files, and b) to get syntax highlighting by default in editors, github, etc. By now we have just used it for so long that it became the default!

In Pluto Desktop I think saving as .plutojl might actually be a good idea. (Even better would be .pluto.jl, but Windows does not recognize double extensions.) Then we can register the double click handler without interfering with what people want to do with Julia source code. And in the end, a Pluto notebook file is quite different from a Julia source file, it makes sense to differentiate.

And for your question about conflicts:

The app is deliberately designed to have everything isolated – Julia, sysimage, Pluto, Julia depot files – except user code. So you can play with juliaup, path, Pluto installs, etc, without interfering with the Pluto Desktop app itself, it will still work.

Code in notebooks runs using the bundled Julia binary, and bundled stdlibs, but it uses the user’s ~/.julia folder. So you still share package installs, registry, logs etc with other julia processes. If you break something in this depot, it will give problems running the notebook. But I think this is the right approach: then you can debug and solve it like any other Julia program without touching Pluto Desktop internals.