mzur / gnome-shell-wsmatrix

GNOME shell extension to arrange workspaces in a two-dimensional grid with workspace thumbnails
GNU General Public License v3.0
464 stars 59 forks source link

Gnome 40 support #146

Closed tom-james-watson closed 3 years ago

tom-james-watson commented 3 years ago

Just wondering if anyone has looked into Gnome 40 and if it will be in any way possible to keep the extension working? Looks like it includes some pretty big changes, especially around workspaces.

mzur commented 3 years ago

I definitely intend to keep this extension going. However, I'm personally still using GNOME 3.36 and my spare time is rather limited right now. We also haven't fully finished 3.38 support ( #125 ). Contributors for GNOME 40 support are very welcome! At least we can gather an initial list of error messages and what features are broken.

tom-james-watson commented 3 years ago

There's a (official?) guide to porting extensions to Gnome 40 here: https://gjs.guide/extensions/upgrading/gnome-shell-40.html.

mzur commented 3 years ago

Neat! I wasn't aware of gjs.guide, thanks for sharing that resource.

ebeem commented 3 years ago

Gnome 40 hasn't landed on Arch yet, I will make sure that the extension at least works with Gnome 40 once it's released. Thanks for providing the documentation, it will definitely be helpful.

mzur commented 3 years ago

@ebeem Good to hear from you again! I was planning to strip this extension back to its essentials and basically start from scratch to establish GNOME 40 support. I already had a peek at it in a Fedora 34 beta VM and I suspect that nothing in our codebase will be compatible. We can start small and implement just the 2D workspace switcher and then continue to add the missing features (thumbnails, overview integration, animations etc.) later.

ebeem commented 3 years ago

@mzur probably the workspaces grid in the overview will be the most difficult to implement. Now that the overview design is different, I think that we need to also consider the new design and come up with a good design so we save space while displaying a grid. I have no idea in my mind right now, it doesn't seem to be easy as the workspaces are shown along with the applications now in the second workspaces overview.

Maybe this is the feature that we need to be patient with for now and delay it.

tom-james-watson commented 3 years ago

I agree - I think with the UX for workspaces changing so much, it makes sense to just strip everything back and start with the bare minimum: being able to switch workspace on a 2D grid with a popup indicator of the grid as you switch.

I don't see how to fit a 2D grid onto the new overview design either. It's not just the workspace row at the top that would need to change: you can also now see the next/previous workspace at the edge of the screen. If that worked in 2D then that would be insanely awesome but I imagine that would be very difficult.

ebeem commented 3 years ago

@tom-james-watson Exactly, we will need to take care of the two views. Regarding the next/previous view of the workspaces. At least I can see that the design is easy, we just somehow want to zoom it out so the workspaces above/below are visible. I am not sure how easy or hard that will be, I will need to check the code first. Maybe this feature can be implemented with no delay. However, the second view where the workspaces are displayed along with the applications, I am not sure how we will design it. Maybe we need to do some sketches first and plan it right as we did back in https://github.com/mzur/gnome-shell-wsmatrix/issues/13#issuecomment-487524588 Gnome 40's overview looks more like Ubuntu Unity 8 now.

ebeem commented 3 years ago

I already checked this out. It's not easy to migrate to gnome 40, but a quick look shows that it's not going to take more than 8 hours of work (without the overview). I already have a simple working switcher but it has some issues with positioning the thumbnails.

Gnome 40 updated some of the classes that we use, like thumbnails for example. We created a new file for it with workaround to get thumbnails from other monitors, it's available now by default so we don't need our class anymore.

We will need to rewrite a lot of the code from scratch as we came to realize some features will need core changes. I will start by trying to extend SwitcherPopup instead of WorkspaceSwitcherPopup so we can get more flexibility with the keybindings and timeout vs release button to make the switcher disappear. Once this is done, I will make a PR.

mzur commented 3 years ago

Thanks a lot @ebeem! Don't hesitate to open a draft PR early so we can have a look and contribute.

mzur commented 3 years ago

@ebeem At the least, I can take care of the settings window, as I have ported one of my other extensions recently.

ebeem commented 3 years ago

@mzur Thanks! I haven't started working on it yet, so I will leave it to you. I will open the PR as soon as the basic switcher popup is functional,

mzur commented 3 years ago

I ported the settings in 222fa8ae15064c8e695584562612bab6c168c1e3. I'll merge this with your changes, @ebeem, once you created your PR. I'll disable the settings that are not yet implemented then.

@tom-james-watson Thanks a lot for your link to the guide, again! It's so refreshing to actually know how things should be done and what functions exist :smile:

mzur commented 3 years ago

Anyone who wants to contribute is welcome to take a look at #152. Even reports of bugs and yet unknown issues with the WIP code are helpful. Closing this in favor of the PR.