[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.

So far so good! Question: it won’t look at your julia installation or packages. it’ll have what it needs inside Pluto?

Congrats @fonsp. It works like a charm!! I tested it on a notebook used during assessment moments, one that is full of tricks to minimize student fraud, and everything worked perfectly.

We use Pluto in a course that involves more than 400 students each academic year. Around 25% of them have Macs. Is there any possibility that the PlutoDesktop app will be available to Mac users as well in the future? In my opinion, PlutoDesktop will be tremendously useful for teaching and assessment processes.

.pjl ?

Exactly! It’s completely self sufficient. That means that you can’t accidentally break it by changing your Julia setup.

@VivMendes Thank your the nice reaction! Indeed it could make a lot of sense for assignments with fraud prevention, I didn’t think about that!


About MacOS (or Linux): our technology is cross-platform (Pluto and Electron) but MacOS is still different from Windows in enough ways that this takes quite some work to get right. For a smooth beta release, I decided to only start with Windows. Windows has the most to gain from a desktop app (terminal and absolute paths are less familiar to Windows users), and we see that the majority of Pluto users are on Windows.

So MacOS (or Linux) is possible, but it would take some additional work and testing. Feel free to contribute – Pluto Desktop is open source (repo).

On my work laptop:

Thank you Windows!

Thanks Fons, this looks like a really good step for even better accessibility of Notebooks!

@nilshg That Dialog is missing a button “That’s Fons, I know him, so that is a known Publisher to me!” – Joke aside, that there is no button “I know the risk” is really ridiculous.

In my case, using the scroll bar revealed the hidden ‘Run Anyway’ button.
Alternatively, you could try right-clicking and selecting ‘Run as administrator’.

Both of these don’t work. The way to do it is to run it from the command prompt as an admin, but my point was more that this is probably exactly the sort of complication in getting up-and-running that this project is looking to avoid!

Ok, each machine is different.
There is also this Windows Security setting that could help:

Well, Microsoft is actually protecting its monumental market power at the planetary level more than the good health of our computers. But that is OK, as long as we can decide what we want to install on our machines.

I install almost everything on my computers manually. For example, when I install Julia, Python, or whatever, I always get the following two-step alert:

Be careful:

Do it if you trust the software:

A large number of students install Julia manually every year, and they face this two-step approach. Their knowledge of computers is very rudimentary, but fortunately, we have had no problems with this intrusion during the installation process. They are accustomed to it.

I use Pluto notebooks as source code in some of my packages, so here are a couple tips I’ve found so far to make the .plutojl extension work smoothly within VSCode.

Syntax Highlighting

To enable Julia syntax highlighting on .plutojl files, add the following to your VSCode settings.json file:

"files.associations": {
    "*.plutojl": "julia"
},

This can be achieved via the GUI with the following procedure.

  1. View a .plutojl file in the VSCode editor
  2. Cilick Plain Text in the bottom right corner of the VSCode window
  3. Click Configure File Association for '.plutojl'...
  4. Search for and select Julia

Open Notebook from VSCode

To enable opening .plutojl files in Pluto Desktop from within VSCode’s file browser, there is a VSCode extension called Open in External App. Just install it to get a new right click menu item of that same name. Then you can edit your notebook files in Pluto Desktop seamlessly alongside your other source code.

I wrote about the antivirus warning in the installation instructions:

Maybe it’s not visible enough?

I also applied to https://signpath.org/ to get a free open source certificate. We could use that to officially sign the app, which would get rid of the warning.

This is me being picky (and literally just woke up from a nap an had the idea), but it would be awesome if we had the ability to zoom in on the cells or visuals we create. If that’s possible, no rush obviously. This is more of a thought.

And presumably the converse is also true. Installing and configuring Pluto Desktop will not accidently break standard Julia installation?