Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What exactly is a Linux "desktop environment"?

Does it contain a window manager or is that fully separate? Is it the "explorer", shell, menu, dock, what not? (But didn't that at least in part reside in a window manager)?

Is it libraries that applications that are to be executed under the DE?

If it is using the GNOME libraries (GTK???) ? Will GNOME applications be native?



> Does [a desktop environment] contain a window manager or is that fully separate?

yes, it does. You can sometimes swap out the default WM for a DE, if you want

> Is it the "explorer", shell, menu, dock, what not?

yes

> (But didn't that at least in part reside in a window manager)?

not really. That's an implementation detail that just varies between different DEs and WMs more than across time. Most DEs don't use the window manager to draw the desktop background, but some do

> Is it libraries [and] applications that are to be executed under the DE?

yeah, at least if they're integrated with the DE or come with it on a given distro

> If it is using the GNOME libraries (GTK???) ? Will GNOME applications be native?

that's up to System76, basically. I think they do want most GNOME apps to be more or less native under their DE


As part of the WM, are a set of applications that are made to take full advantage of it?

And the same set of applicatins are in general included in each one?


Not sure how to parse what you wrote here, but it's late and I've had a drink.

But it's the other way around— the WM is part of the desktop environment. For some desktop environments, you can choose to swap out the default WM of that DE for another. (That's what I meant to say before.)

Desktop environments have applications that are designed to be part of the DE. Typically some core applications, like the file manager, fall into this category. Linux desktop environments are ecosystems, and anyone can write an application that aims to fit into them and be a part of them in as first-class a way as possible. That means leveraging the desktop environment's libraries and adhering to its interface guidelines. Linux distros typically base themselves around such an ecosystem and choose most but not all of the applications in them based on their membership within that ecosystem, as well as their maturity and quality. Sometimes those ecosystems include competing apps in the same category, or apps which could be alternatives with partially overlapping use cases. Linux distros then make a choice.

There are sometimes issues between desktop environments, or inter-compatibility issues that require patching to make everything work. They tend to be very niche, and very universal (expecting all applications to use a common interface or behave the same way). The only desktop environment that reliably achieves comparable features without such an issue is that of macOS (and even then, only if you exclude apps that don't aim to feel ‘native’). The best example I can think of is the menu search functionality of the Unity desktop, which IIRC required custom patching of GTK libraries. That's the worst case: novel features rely on would-be standards that simply aren't in place across desktop environments or display servers or window managers or whatever.

In the best case, for example desktop shortcuts (XDG .desktop files), there are open standards that meet the needs of a wide range of desktop environments, and which all desktop environments and applications understand and meet.

In terms of basic integration though, of the kind you might see on Windows, where VLC looks more or less like Windows Explorer and Firefox looks more or less like Notepad, ‘integration’ is generally a matter of configuration that distros take care of themselves. Apps based on Qt libraries can be made to look right in ecosystems built on GTK and vice-versa. (Most apps can be made to look like GTK apps.)

If your point is to highlight the nuance and complexity of the situation: fine, I get it. What a ‘desktop environment’ is is nuanced and complex, and trying to nail down a philosophically satisfactory definition is technical and complicated.

If, on the other hand, you'd like to develop an intuition for what desktop environments are like:

1. Any given release of Windows has just one desktop environment. macOS has another.

2. Like most things humans have created, the details are tricky but the intuition is simple, and the best way to understand the thing is to play around with it in real life. Find a bookstore that carries Linux magazines, and buy one. (It may be imported and expensive.) It'll come with a DVD that lets you try several different desktop environments. Spend some time with a few, and you will very, very quickly get a clear sense of what a desktop environment is and why the concept is meaningful.


It's all of those things.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: