Juno Progress for March

You get more features, and you get more features, and you get more features!

As we steadily march towards Juno’s release (Ha! See what I did there?) new features are landing in our unstable daily builds on a regular basis. Juno is shaping up to be a great release for developers and other heavy keyboard users with the introduction of a few new tricks:

Shortcut Overlay

Similar to the popular feature from Ubuntu’s Unity desktop, you’ll now see a keyboard shortcuts cheat sheet when you tap the ⌘ key in Juno.

Tap ⌘ to see a list of system keyboard shortcuts

The shortcut overlay will automatically close when you use one of these shortcuts or switch to another window, and you can easily get to shortcut settings by clicking the gear icon in the top right of the window.

System Settings

If you’d prefer to use your ⌘ key for something else, you’ll be able to choose between showing the Shortcut Overlay, the Applications Menu, or doing nothing in the Keyboard Layout settings:

Choose your ⌘ key behavior in Layout settings

You might also notice a new setting for Compose key in the screenshot above: Menu! This is the little context menu key on some keyboards. In Juno, you’ll be able to choose between it and Caps Lock, Right Alt, Right Ctrl, or Right ⌘ for typing special characters.

New mouse pointer acceleration settings, including “None”

In the Mouse & Touchpad settings, we’ve added a new pointer acceleration setting with hardware default, none, and adaptive options.

Over in Bluetooth settings, we’ve reworked quite a bit. Discovering new devices now happens directly in this view, without the aid of the old GNOME Bluetooth wizard.

Discover nearby Bluetooth devices directly in System Settings

The layout of this page uses the new Granite SimpleSettingsPage to match with other settings pages, with an obvious switch in the header to quickly toggle Bluetooth and description text reminding you the name that other devices list this device as.

Location Services & Privacy Improvements

The GeoClue API has been available to developers in elementary OS for quite some time now, but there’ve been a few problems. Developers had to ship a custom VAPI file to use it. There was no documentation on Valadoc. There was no real incentive for developers to use this API over other location APIs. There was no way for elementary OS users to interact with the API to manage their privacy. All that is changing in Juno.

Apps now ask for permission before using location services

In Juno, when an app tries to request location info through GeoClue, you’ll see a dialog asking for permission and showing the accuracy level that an app is requesting. There’s also a handy link that will take you directly to location settings.

Location settings can be found in System Settings → Security & Privacy

At any time, you’ll be able to change which apps have permission to access location services or completely disable location services in System Settings.

Developers who want to use the Location Services API in their apps can find documentation on Valadoc.org and the GeoClue VAPI will ship with Vala 0.40. As a heads up to developers, we’ll be getting more strict about location services in AppCenter submissions: we’ll expect apps to use this location API so our users can feel confident that they have control over when their location is shared with apps.


According to a recent poll in the Vala Google+ community, more people are using elementary Code to write Vala apps than Gedit and GNOME Builder combined. We’ve definitely noticed, as the number and quality of contributions has picked up quite a bit.

The most obvious visual update is a new “quick style switcher” like in Terminal: quicker access to options for text scale, and three built-in color schemes: High Contrast, Solarized Light, and Solarized Dark. Like in Terminal, the color schemes change both the code view and the app UI, meaning you can now switch to a completely dark Code style with just a couple of clicks.

New quick style options including a new dark mode

We’ve also added a super handy Toggle Comment shortcut: tap Ctrl+M to toggle commenting out the currently selected line or lines.

Under the hood, we’ve moved the folder manager plugin into the core of the app to allow for deeper project-focused integration. As a part of this change, the sidebar selection now updates more reliably when you change between different tabs and files. There’s also now a handy “Open In” menu you can use to open files in another app.

Easily open files in external apps from the folder manager

We’ve also rounded up some fixes for the Pastebin and Strip Trailing Whitespace plugins. You can now cut an entire line by pressing ctrl + x when your cursor is on a line and there is no selection. And one more thing, Code now ships with a plugin to read EditorConfig files.


We’ve been working on more updates to AppCenter in Juno. The big visual change here is that the “Updates” tab has been renamed to “Installed,” and now shows a little red badge when updates are available. This makes it more clear you can access your currently-installed apps there even when there are no pending updates, and more clearly shows you there’s something to act on when there are updates.

On each app’s listing, we also now show the total download size of the app — including any dependencies — right below the install button. This is great for bandwidth- and storage-conscious users.

An updated payment dialog (with dummy information)

When paying for an app in Juno, you’ll also notice some small but meaningful quality of life improvements. We now auto-format card numbers (including whitespace and a card type symbol), which should help cut down on typos when entering payment details. We also hide the card number and card verification code (CVC) when the respective entries aren’t focused to help protect from shoulder-surfing.

And More

Screenshot Tool now appends “@2x” to screenshots taken on a HiDPI display so that other apps and websites (like Medium!) properly scale them automatically.

In Gala, our window manager, dragging a window to the side or top of a display now shows a quick feedback animation to let you know that the window can be tiled or maximized.

In the volume indicator, clicking the large speaker or microphone icons in the popover now toggles mute and unmute. Speaking of sound, we have some new sound effects: a cheery little bell sound for new notifications and a somewhat wooden “thunk” sound for feedback about actions that can’t be carried out (such as attempting to alt+ tab window switch with only one window).

In additional to all of the above, you can always count on a healthy dose of code cleaning and general bug fixing. We’re now up to over 450 closed issues associated with the Juno Beta milestone. Some notable improvements include porting several old C classes in Files to shiny new Vala classes, significant simplifications to the code in Network settings, and further progress migrating all of our build systems to Meson.

Juno is still under active development and we’re expecting to land even more features, fixes, optimizations, etc. before its big debut. Stay tuned to this blog for more highlights and announcements as we move toward the next major version of elementary OS. If you missed them, be sure to check out our previous posts about Juno:

Thank you to everyone who’s bought an app on AppCenter, our supporters on Bountysource and Patreon, and those who’ve purchased a copy of elementary OS or merch from our store. Every contribution helps make all of this possible, and we wouldn’t be here without you! If you’d like to help improve elementary OS, don’t hesitate to Get Involved!