Since I returned to Linux this year, I've been distro-hopping and laboring a lot to find the
desktop best fitting my needs. And eventually I've found it: Ubuntu MATE is incredibly flexible, and combined with Gala - Pantheon's window manager - it gets modern workspace and window management. Plus, some very elegant themes themes are readily available online, such as this one
. So I thought I'd share my findings with the community, and write an easy set-up tutorial.
Some teasing screenshots
... I started with MATE's Mutiny layout to maximize the amount of "useful" pixels on screen (global menu+no title bar for maximized windows), replaced MATE Dock with Plank, and installed Gala for its powerful window and workspace management abilities
- The Multitasking View / Workspace Overview: here and there.
- All Windows Overview.
- Desktop with open Brisk menu and Brisk closed. Theme is Qogir Dark + Qogir Ubuntu Dark icons + Ubuntu Regular font size 12 (Ubuntu Medium for windows titles).
- A comparison of my layout vs default Ubuntu with maximized RStudio on a 13' laptop. The powerful MATE panel is set on auto-hide. Look how Gnome's clutter devours about 11% of my how-so-precious screen real estate on that small screen.
First, let me expose my criteria, as well as how successful different desktop environments have been at fulfilling them... If you're only interested in my Gala-on-MATE tutorial, skip to part C)
. A) Desired outcomes 1) Global menu
Ever since I've worked on a Mac, I've come to appreciate the pixel-saving power of global menus. Really, you never need a full line to show all menu options, so why wasting one? Why not putting that menu where there's room for it? Namely, in the top panel, which is largely empty if there's no taskbar in it? Some claim that menu bars are obsolete and global menus as well, consequently; hence the move toward header bars in the Gnome world. This might be the case for "home" applications such as web browsers, media players, file managers... However, all complex, powerful applications that are designed for actual work, or serious matter at the very least, have a menu bar: IDE's and scientific software (such as Octave, TexStudio, RStudio), the Gimp, LibreOffice... they have a traditional menu bar because the amount of options is just too large to fit on a header bar. And, since those applications typically require a lot of screen real estate, what with all their sub-windows (source, terminal, environment, plots...), you really want to save as much room as possible for all the stuff you constantly need to look at and interact with.
So, I need a global menu. How do various DE's deliver in that regard?
- Gnome 3 / Pantheon: there used to be a global menu extension but it's no longer supported. With the move toward header bars, Gnome devs are very unlikely to ever implement a global menu, and from what I've read they aren't interested in them. Same for Pantheon. This means the clock will keep on gobbling up nearly a whole bar.
- KDE: a global menu widget has been implemented some versions ago. It works decently, with one caveat: some applications (among others, the productivity ones listed above) misbehave. For some reason, their menu entries aren't clickable before some time has passed, or you have switched out and back in the application. I've had this bug under Neon which normally has all the latest KDE technologies.
- MATE and Xfce: there's an expansion called Vala Panel Appmenu. Ubuntu MATE supports it natively as part of the Mutiny and Cupertino layouts, and it works nicely under 19.10 (under 18.04, there was an issue causing the global menu to stop working with Firefox after some time). On Xubuntu and other Xfce or MATE distros, setting it up requires a little bit of technical work.
As far as I know, less popular DE's don't support global menus. Vala Panel Appmenu may work for Budgie though, and there could be some OS X clones out there doing a nice job, but then we'd be forced into the realm of small distros... 2) No title bar for maximized windows, window control buttons in panel
Again, I consider the title bar to be a waste of screen real estate for maximized windows. Window control buttons (close, minimize, maximize) may as well be shoved to the panel, Unity-style. After all, if you're looking at a maximized window, there is usually no ambiguity as to the active window's title, right? So why not save some more space ? Here also, powerful applications that require a lot of room are typically always maximized. There's no ambiguity either as to what window is controlled by panel buttons if non-maximized windows retain their title bar.
3) Workspace management and windows overview
- Gnome 3: there are some extensions to achieve the desired outcome. This one works just fine. This is fortunate, for Gnome 3's default title bars are ridiculously fat.
- Pantheon: no luck here. But of course, Pantheon is designed to be as little customizable - and breakable - as possible, even more so than Gnome 3.xfce windoc
- KDE: there are two extensions, Active Window Control and Window Buttons Applet. Unless I'm mistaken they both work. One is easier to install (requires no compilation), but both require a couple of dependencies - read the description before installing.
- MATE: there's an applet (Mate Window Applets - Window Buttons) included by default in Ubuntu MATE as part of Mutiny. It works, period. I suppose it can also be installed on other MATE distros.
- Xfce: there's the Windowck applet that shows control buttons in the title bar. It works, but the maintainer has recently dropped it. Plus, it apparently relies on GTK2 technologies, considering how ugly it looks on some themes that weren't supported in 18.04 (before the migration to GTK3 was completed) but are in 19.10 (with the GTK3 migration being over). Windowck does not remove title bars, but Xfce has a setting for that.
If there has been one major progress in modern desktops, it has to do with windows and workspace overviews. Back in the days, OS X had the Expose+Space combo. Compiz offered similar features to the Linux world. Then, Gnome 3 innovated with the Activities overview, OS X fused expose and space into Mission Control, and even Windows 10 came up with a Task view. So, what do we have now?
- Gnome 3: obviously, the Activities overview is the killer feature of Gnome 3. An all-in-one-place overview to access thumbnails of open windows and workspaces, reallocate windows across workspaces, launch applications, search files...
- Pantheon: the desktop of elementary OS, powered by Gala, has the Multitasking View, which is kind of a Mission Control clone. Unlike Gnome 3's activities overview, it doesn't allow to search files or launch applications, but it does show nice thumbnails and efficient workspace management. There is also a separate "show all windows from all workspaces" action.
- KDE: here, we have three overviews: workspaces, windows from current workspace, all windows. This is a little bit less efficient than the above, in my view: I like to have it all in one place, one shortcut, one hot corner, to browse windows and workspaces. Also, I don't think you have the option to use dynamic workspaces. That said, KWin's workspace overview offers good quality thumbnails of windows within workspaces though, and does allow windows reallocation. So there's that. Plus, unlike the above, it lets the user organize workspaces on a grid, as opposed to just a line.
- MATE / Xfce: natively, Marco and Xfwm4 only support old-fashioned workspace management, through a panel applet. You get to see very small thumbnails (basically just frames with the application icon) but this is far less convenient than modern alternatives. There are some projects such as xfdashboard or skippy-xd, but they don't seem under active development. Then, your best bet is to use Compiz as window manager. Compiz' features are similar to KWin's: you can get a grid, but workspace ("desktop wall") and window management ("expose") are separate things, and dynamic workspaces are unsupported. Plus, Compiz is no longer actively maintained if I'm not mistaken, is being gradually abandoned (for example, Ubuntu MATE 19.10 removed Compiz from the default install), and has some stability issues.
So, where does that take us? In my case, I was considering KDE Neon but eventually found Ubuntu MATE 19.10 very, very clean and pleasing. Everything works as it's supposed to in my custom Mutiny/Cupertino (Plank instead of MATE dock) hybrid layout. However, I quickly missed the overview features Marco lacked, so I tinkered with Compiz. Then, I heard about the Xfce + Gala combo. B) Xfce + Gala
There's a distro named Enso OS which is based on Ubuntu 16.04 (so old software, unfortunately) and combines Xfce with Gala, the window manager from elementary OS. The selling point is to achieve modern features and compositing all the while retaining Xfce's nimbleness.
Rather than moving to a small distro with outdated software, I tried to tinker under more recent Xubuntu releases. There are actually a number of guides to install Gala under Xubuntu, such as this one
or this thread
These guides mostly still work, and to a large extent, what I detail below regarding MATE works too. A couple remarks:
- Under Xubuntu 18.04, you need to use elementary's daily ppa, not the stable one. Stable Gala packages somehow result in a black desktop and no window decorations. They may work under 19.10 though (they work on Ubuntu MATE 19.10).
- You also want to add the elementary-os/os-patches ppa, otherwise some packages will be missing.
- Once you install Gala, Plank will share a dependency from elementary OS. So you will need those ppa's to install/update Plank, and Plank will in particular lose the icon zoom effect (elementary, being a commercial project, removes into to avoid violating some Apple patent). To recover it, head there.
- Replacing Xfwm4 with Gala removes the option to disable title bars on maximized windows, as it's handled by Xfwm4. As a workaround, you can install the maximus package. Normally, it's automatically added at startup; if not, just add the maximus command to startup. It's a simple daemon that can do two things: disabling title bars, and having new windows always open maximized. To enable/disable either of these features, you need to use gconf (not dconf), so install gconf-editor. Always starting windows maximized can be annoying.
Now, maximus is apparently an old thing dedicated to netbooks (hence the pixel-saving). It's a wonder that it still works on Gala, and I don't know long this is going to last... There is, however, a MATE version that's natively included in Ubuntu MATE (so, its future looks brighter).
All in all, I don't think Xfce is a long-term viable choice for what I'm trying to achieve. You need to rely on Windowck to put window controls in title bars (and Windowck is discontinued and very veru ugly on GTK3 themes) and on maximus...
This is why I tried doing the same with MATE. Let's proceed. C) MATE + Gala 1) Installation
The setup is very similar to Xfce's. First, make sure dconf is installed: sudo apt install dconf-editor . You're going to need it a lot
Under 19.10, as elementary offers no stable ppa to non-LTS Ubuntu releases, we need to resort to a little trick
(for 18.04, see below at the end of the section). Quoting the relevant part:
First, add these two ppas ppa:elementary-os/stable and ppa:elementary-os/os-patches .
When you install the first ppa with this command sudo add-apt-repository ppa:elementary-os/stable, it will create the repository source file in etc/apt/sources.list.d. Edit that file to change the distro name from disco (19.04) to bionic. Then re-run sudo apt update
After installing both ppas, add Ubuntu 18.04's main repository source line. You can edit /etc/apt/sources.list file or edit one of the elementary's source file in /etc/apt/sources.list.d/ directory. Add this line (or any other bionic mirror of your choice)
# ubuntu bionic repo for some packages deb http://archive.ubuntu.com/ubuntu bionic main
Then run these: sudo apt update
Mind you, we don't to want to install the entirety of Pantheon! So the quote stops there. Obviously, if you're under 19.10, you're looking to replace eoan (not disco) with bionic.
Now, we simply install Gala: sudo apt install gala
Make it the window manager: gsettings set org.mate.session.required-components windowmanager gala
Remove elementary ppa's: sudo add-apt-repository --remove ppa:elementary-os/stable sudo add-apt-repository --remove ppa:elementary-os/os-patches
Refresh apt's database: sudo apt update
You can also use 'Software and Updates' to graphically disable or remove the ppa's. You should also remove the Bionic repos, we aren't going to need them any more. Do not forget to remove elementary's PPA!
The elementary team modifies an enormous amount of packages from Ubuntu. If you leave the ppa, you'd pull in tons of elementary-specific updates and likely break your system. Likewise, do not run 'sudo apt upgrade' while elementary's ppa's are active!
All you need is Gala. Once it's installed, sever all connections to elementary packages.
Now, reboot your system; simply logging off and back on may not work.
Tadaaam! You should now be running Gala and things should look somewhat different.
If you're under 18.04, you can just add the ppa, no need to edit your repositories' text configuration files... If Gala breaks to a black screen and no window decorations at startup (as it does under Xubuntu 18.04), switch back to marco (gsettings set org.mate.session.required-components windowmanager marco), reboot, remove Gala and all associated dependencies (sudo apt remove gala && sudo apt autoremove), remove the stable ppa (sudo add-apt-repository --remove ppa:elementary-os/stable) and add the daily ppa instead: sudo add-apt-repository ppa:elementary-os/daily && sudo apt update. Then reinstall Gala following the guide. 2) Fixing the keyboard layout
If you aren't using a standard US keyboard, you'll notice that your keyboard layout has been overruled by the US layout. To fix this, run dconf-editor and head to /org/gnome/desktop/input-sources/. Then, in sources, you'll see a blank key . This causes the layout to default to US. The sources entry shows information on how to specify your layout. For example, to get a standard French keyboard, I replace the default value with [('xkb', 'fr')]. Were I using a Swiss keyboard with the French variant, I'd input [('xkb', 'ch+fr')]. Just research your layout's code and fill that key.
Then, log off and back on. Your keyboard layout should be fixed. 3) Fixing conflicting features between Pantheon and Gnome
Although we didn't install Gnome, dconf comes with both Pantheon and Gnome settings, both being turned on when Gala is the window manager. This results in settings conflicts. In particular:
- Dynamic workspaces: in dconf, researching dynamic shows entries for dynamic workspaces under both Pantheon and Gnome paths, and these entries disagree with each other. For the feature to work properly (or be properly disabled), you need both keys to be toggled to the same value.
- Window tiling: likewise, researching tiling shows conflicting results for whether window tiling should be turned on or off.
And I may be forgetting some minor conflict. But, proceeding the same way with dconf, the fix is easy to implement. 4) Window control buttons layout
Head to /org/gnome/desktop/wm/preferences/button-layout and /org/pantheon/desktop/gala/appearance/button-layout to set the layout of window control buttons. Use the same layout in both keys to avoid a conflict. For example, you can enter :minimize,maximize,close for a Windows-like layout with buttons on the right. 5) Fixing conflicting keyboard shortcuts
Here again, some keyboard shortcuts (such as switching workspaces or windows) may not work properly because of conflicting settings. Using dconf, you need to make sure that they're set to the same value of your liking. Gnome keyboard shortcuts are set under /org/gnome/desktop/wm/keybindings/ and the path to Pantheon shortcuts is /org/pantheon/desktop/gala/keybindings/.
For instance, I set the same two shortcuts: ['Tab', 'Right'] to the action controlled by /org/gnome/desktop/wm/keybindings/switch-to-workspace-right and /org/pantheon/desktop/gala/keybindings/cycle-workspaces-next.
I'd like to mention the case of MATE's Brisk menu. By default, Brisk shortcut is the Super key. However, the Super is used pretty much everywhere by Gnome. This causes Brisk not to open on first key push, or conversely, your window-tiling, window-switching or workspace-switching to trigger properly. Rather than hunting down all mentions of the Super key in Gnome keys, I found it easier to edit Brisk's shortcut to Alt+F1: in /com/solus-project/brisk-menu/hot-key enter F1. Note that MATE entries follow a slighly different syntax than Gnome entries: the MATE ones have no  brackets, and you don't need to put quotation marks in the key (they'll be automatically added). Log off/on for the change to take effect.
By the way, Comfortable Swipe is fully compatible with workspace-switching shortcuts, should you want to emulate a Mac-style three-finger-swipe.
6) Setting up hot corners
Hot corners can be set up under /org/pantheon/desktop/gala/behavio along other Gala effects. Replacing the default empty key with a custom value lets you choose between various actions.
Personally, I set a hot corner in the top-right corner of my screen to open the workspace overview. Since my menu entries, window controls and pinned Firefox tabs are on the left, there's no risk of mistakenly triggering this hot corner. I find it an extremely efficient setup. Just shove your mouse to the top-right and scroll to the desired workspace, or just switch to another active window. So natural, so efficient.
7) Animation duration
Go to /org/pantheon/desktop/gala/animations/ and set it however you like. I decreased workspace-switch-duration to 150 as I found it too slow.
8) Harmonizing theme elements
At times, you may notice somewhat out-of-place graphical elements or fonts. Make sure key entries in /org/gnome/desktop/interface/ agree with your MATE settings. For example, the mouse cursor you chose in MATE's control center may be overruled with Adwaita by default. Search for cursor in dconf to find the name of your MATE cursor, and adjust the corresponding Gnome key.
9) Creating a shortcut for the workspace overview
By default, /org/pantheon/desktop/gala/keybindings/ lets you set a shortcut to the "all windows" overview, but not to the "multitasking view", aka workspace overview. You can create one manually using MATE's control center. Add a keyboard shortcut to the following command: dbus-send --session --dest=org.pantheon.gala --print-reply /org/pantheon/gala org.pantheon.gala.PerformAction int32:1. The whole list of Gala commands is here.
And... thats' it! You now combine MATE's nimbleness and flexibility with Gala's modern, sleek window management and compositing. I hope some find this tutorial useful. I needed to write down a guide for my own future use anyway, just in case.
I almost forgot the most important question: is Gala stable under MATE? To tell you the truth, I've only used this setup for about a week (of intensive use, that said). However, I haven't encountered any bug, glitch or crash in the many yours I've been running Gala. In fact, it seems more stable than Compiz.
There are however a couple minor issues.
- On my laptop, the workspace overview shows a blue screen instead of my wallpaper. I have absolutely no idea why this is so, considering that the feature works perfectly on my desktop. I can only suspect an adaptation to low-end, aging Intel integrated graphics.
- Triggering the workspace overview with the command described above does not let me switch workspace properly using a keyboard shortcut. I can however use my mouse to click on the workspace thumbnail, or scroll, or two-finger-swipe on a touchpad (since it corresponds to scrolling). However, when the workspace overview is triggered by a hot corner, I can switch workspace normally using keyboard shortcuts.