Project Zebra: We twa hae paidl'd in the burn, frae morning sun till dine; ►

◄ Project Zebra: Where I've always been going. Home, the long way 'round.

2020-01-22 📌 Apparent hate for Linux Mint populism, Plan Bs, CSDs and life after Xfce?

Tags All Linux Tech Personal

This is a long tangent rather than a set of Project Zebra notes, if you were wondering, even though it contains GTK stylesheets.

I was rummaging through podcasts on YouTube listening to and didn't realise there was much Mint hate… certainly there are arguments against the way it approaches package versions, etc, but some people also get a bit snobby at its targeting of new users and preeminence in journalism. The example cited was but it's by no means alone;

The article is basically an argument that Mint developers should focus on Cinnamon development, i.e. the desktop environment rather than distros, although I don't think it was intended by the author in quite the sense SwitchedToLinux has taken it, more as an expression of concern that maintainers might be burning themselves out a bit.

Stock Ubuntu doesn't suit a lot of people and what's a pro to some may be a con to others. Personally I don't understand why both Ubuntu and Fedora choose the default desktop environment they do… it might have something to do with the focus of Canonical and Red Hat being servers, and server administrators tend to be far more command line / terminal oriented users than GUI users, not needing a desktop environment with much functionality, which is only partly me being snide about Gnome's fondness for removing features. The intended audience arguably doesn't tend to run complex productivity apps on it.

Besides maintainers wanting personal control, a sound reason for derivatives (spins/flavours/remixes/blends) is that adding, say, Xfce to Ubuntu leaves a lot of existing components for its existing desktop environment, software bundled with the desktop environment (eg, its file manager Nautilus) and other software that Ubuntu opts to install as standard. Cleaning that up isn't necessarily simple. The reason for multi-tier derivatives (Ubuntu being based on Debian, in the same way Mint is based on Ubuntu) is that each derivative chops and changes as much as it wants and needs to achieve its goals. Mint is a Mac/Windows alternative aimed at all levels of ability, which isn't where Ubuntu's focus lies.

The central argument – that maintaining a distro is a lot of work to take on if kept sufficiently distinct from its parent to be worthwhile – is understandable. If you don't have a particular practical or ideological reason, they can be vanity projects. For instance, Debian prioritises stability and free software ideals. They also occasionally make big decisions that ripple down, like choosing systemd as an init system. To Debian, Ubuntu brings commercialism, infrastructure, a focus on hardware support, etc. They occasionally make big decisions that ripple down, like moving to end 32-bit support, although are receptive enough to the wider community (eg, the Steam and Wine projects) to play nicely with others. Ubuntu derivatives fine tune things for their audiences.

The same plays out with the Fedora and CentOS derivatives of Red Hat Enterprise Linux, and derivatives of those. I've previously compared the whole thing to Warhammer 40K space marine chapters, and art of Tux (the Linux mascot) in power armour isn't unheard of. Here's a Black Templar too.

Mint takes things seriously enough to concurrently maintain a Debian-based version of Mint in case Ubuntu in its current form disappears, and Canonical will have backup plans for if Debian ceases to exist. There are plan Bs. On the flip side, the upstream developers in the chain I use most often ask philosophical questions like But even though there've been some serious missteps Canonical is a large company and that may actually be the biggest risk; acquisition by eg Microsoft in the same way IBM have acquired Red Hat. Even if Microsoft was hands-off, it'd still probably screw up Canonical.

Plan Bs are important, as is keeping an eye on how much friction in a situation or experience is acceptable before a tipping point is reached. For me with Windows it was a combination of forced restarts by updates, poor non-optional UI changes oriented toward tablets, telemetry with privacy and security implications, and Microsoft's continued push towards unwanted cloud and subscription services.

Having found Xubuntu, an Ubuntu spin with Xfce as a traditional desktop environment, and the latter project having started in 1996 about eight years before Ubuntu itself, I wasn't expecting the development to go far enough in another direction to be thinking about moving on already. This changed when just after the release of 4.14 (after about four years focused on refactoring) the announcement was made that 4.16 is planned to follow rapidly, and will use Client Side Decoration for Xfce applications;

CSD means that applications draw window furniture rather than the window manager doing it (which is the traditional way and referred to SSD; Server Side Decoration). To put it another way the application doesn't have to respect settings users have made in the window manager. You know how software with scanners and printers tended/tend to make up their own interfaces? Yeah. Each developer gets to be an amateur UI designer and of the way users interact with windows on their desktop, not just the way they interact with a particular piece of software through the controls inside its windows, since those now include the window furniture. They don't have to change things, but the balance has shifted away from the window manager and the user. With Xfce this initially includes using header bars rather than title bars and adding subtitles to window titles, making the bar larger vertically. We'll come back to that.

Use of CSD ties in very closely with another big upheaval in Linux development, the gradual deprecation of the X11 windowing system and its very slow replacement with Wayland. Older interface widget toolkits such as GTK2 don't support Wayland. GTK3 does, and the GNOME project developing it has adopted CSD across its own desktop environment. Although to be fair, somewhat late in the day support for implementation of environments that implement Wayland using SSD got added to GTK:

GNOME's CSD are synonymous with "header bars" – in a developer's own words, "putting window controls and other UI elements in the same bar". For a flavour of the holy wars this generates, you could try reading:

Without being too disparaging, as I'm definitely not neutral, this fits with the way GNOME has been maintained – developers know best, and commonly used features will be removed to suit an ideology of simplifying things (often irrespective of user feedback) and with a goal of using the same OS on tablets and desktop PCs, etc. As I'm sure I've said on other occasions, Wikipedia has enough background on the reaction GNOME 3 provoked when it was released in 2011:

All of this creates issues for software developed using GTK, in a similar way to how Debian's decision to adopt systemd affected Ubuntu and derivatives. It becomes harder to do things differently from what GNOME is trying to establish as a default – aims that don't just include CSD but also are at odds with other conventions of traditional desktop environments, such as scrollbars moving in user-defined steps, and 'tray' notification icons.

Unsurprisingly the world outside of the GNOME project has largely ignored CSD and header bars. Tobias Bernard's blog entry, linked above, includes a disingenous statement about there only being "a few holdouts" when notes that most big name projects (such as LibreOffice, GIMP, Inkscape, Blender, VLC, Krita, Evolution, Thunderbird, VirtualBox, Ardour, etc) aren't biting. It's reasonable to conclude that most developers don't share the hubris of wanting to interfere with the user expectation and experience that the bar at the top of windows contains what the user intends it to, and aren't rushing to mix window controls and other UI elements in the same bar.

For an example of what this can lead to, see the gedit redesign, which I've mentioned before;

There are a fair number of other arguments against CSD and header bars;

The ones that concern me most, regarding Xfce, relate to loss of Xfwm4 window manager functionality;

- no double-clicking window edges to vertically or horizontally maximise, no roll ups, etc
- no Xfmw4 theming of CSD windows
- with CSD hung applications becoming unresponsive to input

Middle-clicking for a vertical maximise is a convention in some other window managers, and would be fine too. This seems to be broken across Wayland and on CSD apps across Gnome in general now:

Whilst the stated intention of keeping things relatively visually consistent (if a matching GTK theme is chosen) is noble enough, making it so that some windows no longer react consistently to interactions is a big thing to gloss over. Not letting users interact directly with windows belonging to hung processes would be as annoying as it is with Windows. And if you're using the environment's own theming functionality, windows also won't look the same. This is where it starts to feel like certain developers trampling the work of others as rather than issues with Xfmw4 being ironed out to mitigate users' snagging issues, it's being bypassed.

This is where having a Plan B unfortunately comes into things.

For the moment I'm considering sticking with the forthcoming Xubuntu 20.04, which is a Long Term Support release (3 years) but does have the downside of locking software at repository versions unless snaps or other workarounds are used. The issue with sticking with the six-monthly release cycle is that if the breakages in Xfce are released in, say, 21.04 then there's a risk of being stuck at 20.10 with only nine months of support. Then it's a question of planning next steps.

- keep Xfce, put up with CSD on settings windows but remove other CSD apps
- keep Xfce and try to hold libxfce4ui at 4.14 or even patch old code back in to use title bars
- look at other more traditional desktop environments (MATE, Cinnamon, KDE, LXQt etc)

I don't use much non-"settings" core app software bundled with Xfce… such as Thunar, Catfish, Ristretto, Xfburn, Parole, Gigolo, Dictionary, Mousepad, etc. But replacing core apps like the terminal emulator, although equally straightforward, just to make window manager functions work would be a fairly horrible thing to have to do. It'd essentially be clinging to a window manager and panel. Plus it's difficult to have confidence that Xfwm4 themes and functionality will remain unaltered when Xfce itself is having its core apps developed to no longer support those aspects of Xfwm4.

A wildcard is the possible reaction from distros using Xfce as default desktop environment, including some more well-known ones such as Manjaro (Arch-based), MX Linux (Debian-based), Kali (Debian-based), Linux Lite (Ubuntu-based) and Ubuntu Studio. I wouldn't rule out a fork or patch from the more technically-oriented communities, or even another DE dev. And things like gtk3-nocsd already exist to capture (most) CSD windows in an SSD wrapper, although the results tend to be a bit ugly.

I've not investigated Manjaro yet, that's on a slightly longer-term "to do" list, but the post linked below suggests that part of the approach to date has been similar to gtk3-nocsd; deal with the problem at source by patching GTK3 into a gtk3-classic version and disabling CSD completely;

KDE is also on the revisiting list, especially with news that GTK applications are handled better. I'm not much for bling or dark elements in themes, but Kubuntu 19.10 out-of-the-box is gorgeous;

I have started to explore MATE in a VM. It's maintained by people who loved Gnome 2 and hated what Gnome 3 emerged as, and its development came about through Mint but it's available as an official Ubuntu flavour using a more stock setup than Mint itself.

With some simple theming with BlueMenta, Elementary icons, Noto Sans 8px, border-radius: 0 in gtk.css and a #3A6EA5 backdrop it feels pleasantly dated and familiar. The Brisk menu launcher (apparently a collaboration with Solus) is more to taste than the one that comes as default with Mint's MATE spin, being laid out almost exactly as I have Whisker Menu in Xfce. The DE has large resize areas on window borders. Vertical maximise is a case of middle-click on the maximise icon, but it snaps the window to the top and bottom of the screen rather like Windows, which is a plus. It isn't entirely CSD free – Deja Dup, Magnus, Gnome Disks and Document Scanner are bundled – but use is as sparing as Xubuntu is at the moment.

A less pleasant dated aspect is that basic config – things that you'd expect to be user configurable even under Windows – appears often to have no GUI. These are likely to be one-time changes, an as points out a lot can be done, but for details you're probably going to want/need to install dconf-editor to add software and to poke around in the equivalent of a registry.

eg, changing the clock panel time format;

eg, disabling an animation;

And the same is apparently true of tweaking Brisk Menu – there doesn't seem to be any obvious way to alphabetically sort Favourites, and I can't work out how to click and drag items to manually sort them either. It's definitely possible to edit the saved string that contains them, though.

A nice point is that the default file manager Caja has an option to ask before moving items to the recycle bin (although it seems to lack much UI configurability and I've been spoilt by Nemo).

As a midweight desktop it rather wears its primitivism on its sleeve, which was also my impression of LXDE. By contrast Xfce is for the most part highly configurable, without being as heavy or complex as KDE. But if it handles window management and otherwise stays out of the way, that's likely to be fine. I could see MATE being the solution if needed, but it's certainly not the only option. Linux being what it is and the LEGO of operating systems, it's practical to install more than one desktop environment, or components from different desktop environments, or to migrate your home folder to another install, so there are a number of ways to progress.

Incidentally, MATE is named after the caffeinated tea made from yerba mate and pronounced mah-teh rather than 'mate'. Being anglocentric and not listening to podcasts much, I still haven't gotten used to the official pronunciation of Xubuntu being 'Zoo-buntu'.

I also tried a little basic GTK3 theming of CSD windows under Xfce in the colours of my current theme;

Which looks pretty awful, and it's preferable to leave things in Adwaita-with-square-corners.

But as of right now, I think the only CSD applications I have installed are Gnome's Disks, Archive Manager (for the Nemo integration), Fonts, Document Scanner and Xfce's Catfish (where CSD is currently optional, and unused because Nemo has a search function). None are frequently used, and none are more complex software such as document viewers and editors where window manager controls such as maximising vertically are called for.

It's a little bizarre that despite the fact Xubuntu goes out of its way to ship items of MATE software such as its calculator and Engrampa archive manager (rather than GNOME equivalents) and the way Catfish recently added a toggle to use Xfwm4 title bars rather than a header bar, that CSD has flipped to being a preferred approach in Xfce, since the distro and desktop environment share key developers.

Most users won't have any idea about the changes in the pipeline, only seeing them when they drop into a distro release (and maybe only an LTS release; newcomers to Linux tend to be recommended these) and I have no idea how many people may actually use Xfwm4-only themes – I suspect mostly longstanding users. More might expect to be able to click on the top border of a window to maximise it vertically since this is a behaviour in Windows and in popular desktop environments such as Cinnamon.

It's hard not to have sympathy for devs, who are between a rock and a hard place to an extent. There's limited resource, long-standing issues with resize areas in Xfwm4 haven't been addressed (whereas other window managers don't seem to find this a problem?) and in the words of one it's a hobby project. Faced with a ton of technical debt* CSD offers a way forward on some things. I know about keeping projects that are a quarter of a century old on life support.

*The resize issue has persisted for a long time; in someone offers a suggestion of replacing Xfwm4 with an alternative window manager such as Compiz.

But it'd be preferable to give the unvarnished situation, acknowledging cons as well as pros rather than to spin it, and it's nice to see some other people (and developers) in blog comments, forums, etc have twigged on the current implications. /

The bug report, "Make CSD optional" does provide a pointer "If users only want to use CSD for Xfce's settings dialogs but not the rest you can use the corresponding xsetting to disable CSD in the toolkit's native dialogs: xfconf-query -c xsettings -p /Gtk/DialogsUseHeader -s false" which might help with making reaching another Ubuntu LTS bearable and push the decision about choice of DE into the second half of the decade.

Or I might be settled on another distro family or (K)DE sooner than that. There are options and Plan Bs.