The Dolt Workbench is a modern, open-source SQL workbench that works with any MySQL and PostgreSQL compatible database, including version controlled databases like Dolt and DoltgreSQL. We successfully built the Dolt Workbench for Mac and Windows, but Linux users kept asking: "When will you support Linux?" This was particularly important for our users in data science and DevOps where Linux is the primary development environment. While electro-builder streamlined macOS/Windows packaging, Linux required some nuanced adjustments. Today's blog will walk you through how we built the electron app for Linux.
Getting desktop apps to work smoothly across Linux systems is complex. Unlike Windows or macOS where there's one standard way to install software, Linux has many different versions (like Ubuntu, Fedora, etc). Each has its own software installation format, required components, and setup process. This diversity makes creating one "works everywhere" solution challenging. We evaluated three packaging formats to ensure broad compatibility:
| AppImage | Single-file, distro-agnostic | Sandboxing challenges |
| Flatpak | Strong sandboxing | Complex manifest setup |
| Snap | Auto-updates | Requires Snap Store |
We chose AppImage for its simplicity and broad compatibility across distributions. Unlike Snap or Flatpak, it doesn't require a centralized store or runtime dependencies.
Building on our experience creating the Mac and Windows versions, we reused most of our electron-builder configuration. The Linux build required these key adjustments in electron-builder.yaml:
- Target Specification & Architecture Support, while macOS uses universal binaries, Linux requires explicit architecture separation.
- Linux filesystems are case-sensitive.
If you haven't seen the announcement, the Dolt Workbench now ships with a built in Dolt server. So the Workbench bundles a Dolt binary, and you are able to start a local Dolt server from inside the Workbench. We store local databases in platform-specific user data directories:
Getting this to work on Linux requires additional configuration.
Linux’s XDG Compliance
While app.getPath("userData") works seamlessly for macOS/Windows, it returns ~/.config/your-app-name on Linux systems. This aligns with XDG's configuration directory specification but isn't suitable for large database files.
The XDG standard directories include:
-
~/.config → For configuration files (small data)
-
~/.local/share → For application state (large datasets)
Our cross-platform solution handles this by implementing conditional path logic that respects platform conventions while providing a consistent developer experience:
Electron apps on Linux may crash due to shared memory limitations in /dev/shm, particularly in VM environments. If you encounter:
Adding this line tells Chromium to use /tmp instead of /dev/shm to avoid crashes:
Running desktop apps on different Linux platforms might require different steps. There can be subtle differences in how these apps are installed and run. We've tested the Workbench Linux builds on Ubuntu 22.04 and NixOS 23.11.
Ubuntu Systems
When running ./Dolt-Workbench-linux-arm64.AppImage, you might see:
This is due to Ubuntu's AppImage policies. Try one of these solutions:
- Lift restrictions temporarily (lasts until reboot):
- Run with sandbox disabled (required each launch):
NixOS Systems
- Make the AppImage executable:
- Use appimage-run to run the app:
Dolt community member Joop Kiefte created a seamless NixOS integration using this AppImage guide:
Check out our available packages here:
-
Nixpkg: PR #410265 (vote to accelerate review!)
The Dolt Workbench is now truly cross-platform! 🎉 Let us know how it works for you! Share your feedback on Discord or file an issue on GitHub.
.png)

