We’ve been undertaking a lot of work since Jupiter in order to release another excellent version, and one huge element of that work has been Pantheon. Today we’d like to introduce a newer project that’s been shaping up extraordinarily well as an integral part of Pantheon: Gala, the new window manager.
Pantheon consists of the apps, technologies, and user-facing bits of elementary that make the OS work. It includes things like the login screen, the default set of apps, and the "shell" components such as the panel and dock.
One major component of the shell is the window manager. A window manager manages the various windows a user has open. It takes care of behaviors such as moving windows around, window switching, window overview, animating windows, maximization, multiple workspaces, providing accessibility features like zoom, and more.
Geeky sidenote: These days window managers are also typically compositing managers. Instead of letting all windows paint directly to screen, a compositing manager makes every window paint to its own independent buffer with which it can do whatever it wants: desaturate, blur, scale, warp, etc. This allows us to have fancy effects and animations. For our purposes, we'll refer to the compositing manager and window manager as one and the same.
Gala is a young project currently lead by Tom Beckmann (our very own Clutter wizard) and Rico Tzschichholz (of Plank fame). For the past three months we've had designers and developers crunching pixels and code to make it truly come to life.
Every person who uses elementary OS Luna will be using Gala. Check out some of the awesome features we've been developing and see how Gala is helping to make the elementary user experience even better.
Nearly everything is animated in Gala, making for a more responsive user experience. While we have many rich animations, we are also careful to keep them modest and in most cases subtle. This allows us to benefit from the added responsiveness and polish while not slowing down the experience or distracting the user. Windows and popovers come in quickly, windows smoothly close, maximizing is slick, etc.
Gala enables us to take advantage of some nice visual enhancements both now and in the future. First of all, we get smoother (antialiased) window corners thanks to LibMutter, on which Gala is built. Gala also gives us the ability to have beautiful big shadows beneath our windows. Lastly, resizing is now smoothly done in real-time (instead of having a preview rectangle and then resizing the window). While each of these may not seem like a big deal on its own, they add up to make a much more polished user experience.
Workspaces are like separate “desktops” a person can use to organize their workflow; they can open different windows on each workspace for different tasks, then switch between them as needed.
Gala organizes workspaces in a horizontal list. You start out with one workspace and can always switch to a new workspace to the right. If all the windows on a workspace are closed, the workspace simply closes as well. You may also close an entire workspace (including all of the windows on it) from the workspace switcher.
The workspace switcher has some slick animations and eye candy: switching between workspaces is fluid, pulling up the workspace preview bumps up the rest of the desktop, open windows show up on the switcher along with larger icons, and everything is subtly animated.
Many people—particularly power users or ones who’ve been using computers for years—know and love the handy “alt tab” window switching behavior. For those who aren’t as familiar, hitting a keyboard combination (in this case, Alt + Tab) quickly switches between the open windows on a user’s workspace.
For Gala, we thought it was important to not introduce an entirely new and invasive UI element that would only be seen during window switching. Instead, we decided that the best way of seeing which window you’re switching to is to simply show you the window. Switching between windows shows you the window you’re switching to and hides all the others. However, we also realize that some people want a bit of a heads up as to which window will come next. For these people, we simply utilize the dock to display the apps’ icons in the order they’ll be seen while switching.
More and more users are adopting large displays, and we often see people working with two windows open at a time. Being built on LibMutter, Gala automatically inherits grid-based window tiling. This allows users to drag a window to the left or right edge of their display (or use a key combination) to snap it to the left or right half of their workspace. Similarly, dragging a window to the top of their display (or using a key combination) maximizes it. As with everything else in Gala, this is all smoothly animated.
We’re currently developing and testing a window overview. In the window overview, a user can see all of the windows open on their workspace and easily close them if they wish.
We’re currently testing some enhanced accessibility options such as a built-in zoom. This would allow users with low vision, tired eyes, or an ongoing presentation to zoom into their work in order to see it better. We look forward to including more accessibility options down the road as well.
Gala is undergoing rapid development and will not necessarily be stable until its official release. However, if you’re an adventurous tester out there, feel free to check out Gala on Launchpad. Or, if you’re using the elementary Daily PPA, it’s already available to you through the regular channels.
If you’re a developer interested in working on Gala, swing by #elementary-dev on irc.freenode.net and be sure to check out the open bugs on Launchpad.
For anyone using Gala, be sure you report any bugs you may encounter; our developers will take a look and address them as soon as possible.
Daniel Foré, Sam Tate, Tom Beckmann, and Sergey Davidoff contributed to this entry.