Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GTK3 and CSD - ElementryOS and more #424

Open
ccoupe opened this issue Dec 18, 2018 · 2 comments
Open

GTK3 and CSD - ElementryOS and more #424

ccoupe opened this issue Dec 18, 2018 · 2 comments
Assignees
Milestone

Comments

@ccoupe
Copy link

ccoupe commented Dec 18, 2018

In #420 we identified a problem with newer Linux desktops. If the OS uses the wayland backend instead of the X11 backend then it is assumed that the app uses CSD (Client Side Decoration). Shoes doesn't have that ability and Shoes and apps are just wrong and mostly unusable. The quick fix in Shoes 3.3.7 beta is to force the use of the 'x11' backend. ElementeryOS also has this 'feature' as does as Fedora 29 with Gnome Shell desktop.

What happens is the min/max decorators in the title bar go away (they can be found with right click on the Close button). Annoying, IMO. There is also an entry for 'shoes' in a global menu bar with one generated item, 'Quit'

CSD appears to be a religious war and it's been brewing for several years. We can't stop the war and there's little point in taking sides. Shoes3 is a GTK3 app so we are affected and the problem will only grow. Forcing the x11 background is not a long term solution. What can Shoes do? What should be done?

Now that Shoes 3.3.7 has menus, those could be moved to the global menubar (possibly, I hope). Similar to how Shoes works in OSX. We would have to draw the min/max button ourself. What most Gnome apps, and some OSX apps do is use that title bar space for icons, buttons, text and things. It's like a toolbar. (Gnome calls it a header bar). We have to assume that there are programmatic ways to get those widgets in there. Could they be shoes widgets? I suspect so. What about situations that don't have CSD? Like Windows or Linux with old time setups? Maybe a new class, toolbar for example that's kind of like a flow with preset height and some built in widgets (min, max, close buttons). This won't happen soon so their is plenty of time to think about it.

Here's a reference

@tuttza
Copy link
Contributor

tuttza commented Dec 18, 2018

For the moment I think Shoes shouldn't worry about CSD and we should actually have some warning trigger to alert the user that CSD will cause issues with Shoes, at least until we can figure what to do with it.

Some other info on CSD
https://wiki.gnome.org/Initiatives/CSD

It seems to me in few years CSD will take over, at least that is the impression I get from the Gnome team.

What a mess 😞

@ccoupe ccoupe self-assigned this Jan 7, 2019
@ccoupe ccoupe modified the milestone: 3.3.7 Jan 7, 2019
@ccoupe ccoupe removed their assignment Jan 7, 2019
@ccoupe
Copy link
Author

ccoupe commented Mar 9, 2019

It turns out that gtk3 does have functions to discover and/or use a global menu or the default. It's a bit confusing and wrapped up with gtk_application_window_new() -- which we don't use. Also involved is gtk_application_new() which we short circuit for gtk_init() reasons. I found this by looking at what's needed to get the Multi-Document-Interface (MDI) style app working. It's going to get really complicated.

ccoupe pushed a commit that referenced this issue May 15, 2019
@ccoupe ccoupe self-assigned this Jul 19, 2019
@ccoupe ccoupe added this to the 3.3.8 milestone Jul 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants