WayfireWM / wayfire

A modular and extensible wayland compositor
https://wayfire.org/
MIT License
2.35k stars 174 forks source link

Improve default decorations #1066

Closed ammen99 closed 3 years ago

ammen99 commented 3 years ago

Many users have complained that the default SSDs are ugly, and that may very well be true :)

Unfortunately, I'm not so much into GUI design so I don't think I have that many ideas how to make them better. Thus, help wanted to fix this issue.

evilrobot-01 commented 3 years ago

I assume this applies to native Wayland app decorations, so perhaps the same properties that are available via the XWayland decorations plugin as a start, so the settings apply to both for uniformity?

diamondburned commented 3 years ago

Can we alternatively optionally include GTK as a dependency for drawing decorations? As far as I know, draws can be passed-through to Cairo directly, though I'm not sure how events would be handled.

ammen99 commented 3 years ago

Can we alternatively optionally include GTK as a dependency for drawing decorations? As far as I know, draws can be passed-through to Cairo directly, though I'm not sure how events would be handled.

Something like this will probably land in the extra plugins, but I'd first like to see a working implementation ;)

diamondburned commented 3 years ago

Can we alternatively optionally include GTK as a dependency for drawing decorations? As far as I know, draws can be passed-through to Cairo directly, though I'm not sure how events would be handled.

Something like this will probably land in the extra plugins, but I'd first like to see a working implementation ;)

Isn't decor already a plugin?


I think to implement something like this, there has to be a way to add in the GLib main loop. A feasible way I'm seeing is to use wl_event_loop_get_fd to hook wl_event_loop into a Glib::MainContext, but this will bleed GLib code into Wayfire itself instead of being just a plugin.

I'm not sure how to integrate GLib's main loop into wl_event_loop; it does have a function that iterates the loop once, but that's not very ideal.

Glib::MainContext::query exposes a list of fds, which I could probably use in an unordered_map to wl_event_sources.

ammen99 commented 3 years ago

Glib::MainContext::query exposes a list of fds, which I could probably use in an unordered_map to wl_event_sources.

Wow, I can't believe I missed this. It would probably be much better and less hacky than https://github.com/WayfireWM/wayfire-plugins-extra/blob/master/src/glib-main-loop.cpp :)

Isn't decor already a plugin?

Decor is a plugin yes, but it is meant to have basic functionality. We can make it a bit better (maybe rounded corners, better colors, etc). but I don't want to pull in GTK/Glib as a dependency in the main repo.

EDIT: That being said, if you manage to get GTK decorations working, I'll probably start using them :P

AdrianVovk commented 3 years ago

Here's Mutter's code for GTK decors

evilrobot-01 commented 3 years ago

I'd love to be able to achieve something like the window decorations in https://i.redd.it/glzrkk83f4621.png (along with active window border colour) via config. I assume the window buttons just use independently coloured font glyphs.

ammen99 commented 3 years ago

@frank-bell That screenshot has shadows (which would be cool to have in our plugin, yes). And once we get proper font rendering with cairo, we might be able to replace the icons with utf8 characters with configurable colors, that's a great idea ...

evilrobot-01 commented 3 years ago

Kinda like a simplified waybar.


From: Ilia Bozhinov notifications@github.com Sent: Monday, February 8, 2021 9:44:05 AM To: WayfireWM/wayfire wayfire@noreply.github.com Cc: frank-bell fb@evilrobot.net; Mention mention@noreply.github.com Subject: Re: [WayfireWM/wayfire] Improve default decorations (#1066)

@frank-bellhttps://github.com/frank-bell That screenshot has shadows (which would be cool to have in our plugin, yes). And once we get proper font rendering with cairo, we might be able to replace the icons with utf8 characters with configurable colors, that's a great idea ...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/WayfireWM/wayfire/issues/1066#issuecomment-775013733, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AORABCREIT2H4YKMK6O64PTS56W6LANCNFSM4WS6L4VQ.

diamondburned commented 3 years ago

I'd love to be able to achieve something like the window decorations in https://i.redd.it/glzrkk83f4621.png (along with active window border colour) via config. I assume the window buttons just use independently coloured font glyphs.

Having GtkHeaderBar support would trivially achieve something like this (without the shadows, though).


That said, I don't think I know enough about C++ and the project to work on something this non-trivial, unfortunately. I, too, would love to have something like that, but I don't have enough free time to work on it for now.

evilrobot-01 commented 3 years ago

I'm really keen to contribute but haven't looked at C++ in many, many years. Will see if I can tackle some of the smaller "good first issues" first...

AdrianVovk commented 3 years ago

I was planning on working on GTK decorations at some point but that's not going to happen soon

solarkraft commented 3 years ago

As an alternative to adding GTK it might make sense to also have a look at compatibility with Aurorae themes, which are made up of SVGs and a (relatively) simple config and available in tons. As far as I know Cairo can render SVGs, so no extra dependency would be needed and theming support would be pretty good. Unfortunately it's very unlikely that I'll have the time to implement this any time soon.

0reoKing commented 3 years ago

What about rendering the decorations as images like sway borders. This will allow the decorations to be customizable because the buttons and the bar on the decorations can easily be changed.