GNOME Classis vs. Ubuntu GNOME sessions - Customization

I switched to Linux/Ubuntu since not a long time ago.
I recently started to get interested in understanding Linux Desktop Environments, etc.
So, I started to customize it by installing few GNOME extensions, which seemed to work.
Yesterday, by doing some deeper research, I discovered the concept of GNOME sessions, and realized I have 4 files under /usr/share/xsessions :slight_smile:

├── gnome-classic.desktop
├── gnome-classic-xorg.desktop
├── ubuntu.desktop
└── ubuntu-xorg.desktop

which show as two sessions in the login page (why tho?).

I think I always used the Ubuntu one, so out of curiosity I switched to GNOME classic.

Now, some issues I cannot seem to understand.
Let me start by saying, I kind of like the GNOME classic more, as it also seems smoother.
Also, with the GNOME classic, I noticed that the “Ubuntu Dock” extension places the dock at the bottom (as it should normally be), while with the Ubuntu DE it goes on the left margin.

  1. What is it likely causing the Ubuntu Dock mismatching behaviour between the two sessions? Anyone had the same issue?
  2. The biggest issue however, is that in GNOME Classic session, the “Win” (Super) key simply does not work regardless of all the attemps I did (gnome tweaks, etc.) to make it work as in Ubuntu sessions, where it opens the Activities, and allows you to search applications (to make it clearer, even Super-A does not work in GNOME Classis session).

Any insight would be highly appreciated. Thanks!

Hey and welcome to the forum!

So let’s start with something — Ubuntu heavily modifies GNOME. Ubuntu session is basically GNOME + several extensions (such as Ubuntu dock) + code patches directly in components.

Normally (as seen in e.g. Fedora) default session would be just GNOME (that is vanilla experience designed and crafted by upstream) + GNOME Classic, which is normal GNOME, except it has several extensions to make it look and function similarly to GNOME 2 desktop (hence “Classic” in the name).

I don’t know what is going on in Ubuntu, but I assume in Classic session they disable extensions included by default in Ubuntu session (hence why you dont have Ubuntu dock in Classic session) and instead enable GNOME Classic ones.

That’s probably disabled by Classic session, since overview wasn’t available in GNOME 2

Welcome to the Forum @mEm

What you’re seeing is actually expected to some extent.

GNOME Classic is not just “GNOME with a different layout”. It is a GNOME Shell session that loads a specific set of extensions intended to emulate a more traditional desktop workflow. Because of that, some shell behavior, keybindings and extension defaults can differ from the standard Ubuntu session.

Regarding Ubuntu Dock, I would first check whether both sessions are loading exactly the same extension set and dconf settings. GNOME Classic has historically behaved differently with shell extensions, and it is not unusual to see the dock fall back to a different position when a session-specific extension modifies the layout.

As for the Super key, that is the part that stands out. In a normal GNOME Shell session, the Super key is handled by the shell itself and triggers the overview. If Super+A also does nothing, I would suspect either a shell keybinding issue or an extension conflict rather than a keyboard problem.

A few things I would verify:

  • Run gsettings get org.gnome.mutter overlay-key

  • Check whether any custom keybinding or menu extension is intercepting Super

  • Temporarily disable all user-installed extensions and test again

  • Compare the output of gnome-extensions list --enabled between Ubuntu and GNOME Classic sessions

Personally, I would not use GNOME Classic as a baseline for troubleshooting because it intentionally alters GNOME Shell behavior. If everything works correctly in the Ubuntu session, then the issue is very likely session-specific rather than a system-wide GNOME problem.

The fact that GNOME Classic feels smoother is not surprising. It usually runs a simpler workflow with fewer shell components exposed to the user, so responsiveness can feel slightly better on some hardware.

Hi @tragivictoria @MarcelStevano , thanks a lot for your warm welcoming.

So, to answer few question, have a look at this settings comparison:

    gnome-extensions list --enabled

GNOME classic

Ubuntu

  • gnome-fuzzy-app-search@gnome-shell-extensions.Czarlie.gitlab.com
  • ubuntu-appindicators@ubuntu.com
  • ubuntu-dock@ubuntu.com
  • apps-menu@gnome-shell-extensions.gcampax.github.com
  • places-menu@gnome-shell-extensions.gcampax.github.com
  • user-theme@gnome-shell-extensions.gcampax.github.com

    gsettings get org.gnome.mutter overlay-key

GNOME classic

‘Super_L’

Ubuntu

‘Super_L’

So, nothing seems to change between the two sessions in terms of GNOME settings.
I’ll attach screenshots of the two different docks to give you idea of what I mean by that.

GNOME Classic

Ubuntu

Can you please elaborate a bit on this. Specifically, I still cannot fully understand the concept of “GNOME Shell”.

Shell is basically the desktop

I see. I guess that’s kind of a black-box, is it?
If I manange to fix the Super key issue, I guess I can gradually switch to a GNOME classic desktop environment, but I’ve tried everything but nothing seems to be making it work.

Thanks for posting the screenshots. They actually make the situation much clearer.

At this point, I do not think this is an extension problem anymore.

You have shown that:

  • The enabled extension list is identical.
  • overlay-key is identical (Super_L).
  • ubuntu-dock is loaded in both sessions.

Yet the dock changes orientation between sessions, and the Super key behaves differently.

That strongly suggests the difference is coming from the session definition itself rather than from your personal GNOME configuration.

One important thing to keep in mind is that GNOME Classic is not a separate desktop environment. It is still GNOME Shell, but launched with a predefined set of session components and shell modes intended to provide a more traditional desktop experience. Because of that, two sessions can report the same extensions and the same settings while still initializing the shell differently.

In fact, your dock screenshots are probably the strongest evidence. The same Ubuntu Dock extension is clearly adapting its layout depending on which session started it. If the shell is already exposing different layout constraints to the extension, it would not surprise me if the Overview-related Super key handling is also being altered somewhere during session initialization.

The next thing I would compare is not extensions or dconf values, but the sessions themselves:

echo $XDG_CURRENT_DESKTOP

echo $DESKTOP_SESSION

and

loginctl session-status

from both GNOME Classic and Ubuntu sessions.

I am starting to suspect that what you are seeing is simply how GNOME Classic is designed to behave on your distribution, rather than a broken configuration. The dock screenshots point much more toward a session-level difference than a user-level settings issue.

(Additionally) also run this command from 2 sessions:

gsettings get org.gnome.shell.extensions.dash-to-dock dock-position

@MarcelStevano thanks for your detailed troubleshooting!
So, here is the verdict. There are some differences, specially in your last cmd suggestion:

    echo $XDG_CURRENT_DESKTOP

# GNOME Classic

Desktop file:

[Desktop Entry]
Name=GNOME Classic
Comment=This session logs you into GNOME Classic
Exec=env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session-classic
TryExec=gnome-session
Type=Application
DesktopNames=GNOME-Classic;GNOME;
X-GDM-SessionRegisters=true
X-Ubuntu-Gettext-Domain=gnome-shell-extensions

Output: `GNOME-Classic:GNOME`

# Ubuntu

Desktop file:

[Desktop Entry]
Name=Ubuntu
Comment=This session logs you into Ubuntu
Exec=env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --session=ubuntu
TryExec=/usr/bin/gnome-shell
Type=Application
DesktopNames=ubuntu:GNOME
X-GDM-SessionRegisters=true
X-Ubuntu-Gettext-Domain=gnome-session-42

Output: `GNOME-Classic:GNOME`

---

    echo $DESKTOP_SESSION

# GNOME Classic

Output: `gnome-classic`

# Ubuntu

Output: `gnome-classic`

---

    gsettings get org.gnome.shell.extensions.dash-to-dock dock-position

# GNOME Classic

Output: `'BOTTOM'`

# Ubuntu

Output: `'LEFT'`  # <-!

A diff of loginctl session-status:

EDIT: Top is UBUNTU, Bottom is GNOME Classic.

Regarding the dash-to-dock different behaviour, as there are no “settings” to play with, how could I debug the different setting BOTTOM/LEFT between the two sessions?

The main issue remains the fully disabled ‘Super_L’ key in the GNOME classic session.