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

V1.0 #98

Merged
merged 54 commits into from
Feb 29, 2024
Merged

V1.0 #98

merged 54 commits into from
Feb 29, 2024

Conversation

zeroxoneafour
Copy link
Owner

@zeroxoneafour zeroxoneafour commented Dec 16, 2023

Opening PR because v1.0 is in a good place right now.

Todo -

  • Shortcuts
  • Snapping with borders to tile windows
  • Fix auto size fitting
  • Minor visual bugs with kwin engine
  • Fix major Plasma 6 regressions

If anyone doesn't use the features above, I highly recommend trying v1.0 as it fixes a large amount of bugs and makes the application much smoother in my opinion. The builds are on github actions.

@aleskandro
Copy link

Hi, is this going to support kf6?

@zeroxoneafour
Copy link
Owner Author

It will be updated when plasma 6 releases but will also probably break backwards compatibility, so it will not be changed until then.

@tsandrini
Copy link

tsandrini commented Jan 29, 2024

Hi, just wanted to report that I tested the v1.0 version on plasma5 with wayland and it works really well! a lot of the visual glitches from v0.6 are gone, the experience is way smoother and the tiling engine seems to be improved as well (at least it feels like it). The only thing is that most of the shortcuts seem to be broken? Aside from that thanks and hoping for the full release! :)

@a-plastic-bag
Copy link

1.0's been great for me on 5.27 so far. Significantly improved over the previous version, which for me had major problems with making more splits than there are windows on the screen e.g. only having a few windows open but pressing Meta + T shows many splits as if I have many windows open, which I don't. It's overall just much more stable and reliable than 0.60.

@zeroxoneafour
Copy link
Owner Author

I want to work on and release v1.0, because I know it will be a massive stability improvement over the original, but I also know that Plasma 6 is breaking a lot of the API and I want this script to stay up to date. It should be out sometime in March though.

@Hippo0o
Copy link

Hippo0o commented Feb 12, 2024

@zeroxoneafour From what i've heard, (k)ubuntu 24.04 lts won't ship plasma 6. So it will be worth while to work on v1.0 now.

@zeroxoneafour
Copy link
Owner Author

Ok so I actually just updated to the kde-unstable Plasma 6 RC 2. It seems to have broken almost everything about the script, from the metadata handling to the QML API to the building process. I will work this weekend on updating the script for v6.0 and finishing out v1.0 of the script itself.

Of course, this would be too easy if KDE provided any documentation at all in any way, shape or form to help migration, so unless anyone knows about the internal workings of the Kwin QML scripting API for Plasma 6 I will be working in the dark for the next few days.

@Granitosaurus
Copy link

@zeroxoneafour maybe it's worth reaching out KDE kwin devs for some assistance? Polonium is a very good look for Kwin so getting it to work with plasma 6 would be in everyone's interests:

@lo-ca
Copy link

lo-ca commented Feb 17, 2024

It's great to see there's a successor to bismuth in the works.

You wrote the Makefile to require npm and esbuild for an ordinary install though. For a source distribution, this is not the most welcome build time dependency to be forced on the ordinary user. Regarding simplictiy of packaging this is something I as a packager felt the need to work around - which is rather annoying. Given the state of the Javascript ecosystem I'd even call it a security smell to call npm directly in a Makefile.

@zeroxoneafour
Copy link
Owner Author

@lo-ca The script is not intended to be built from source by anyone other than developers. The only official package management is done through the official KDE plugin store. Because the script does not rely on deeper integration, there is no need to package it separately. For deeper integration, you can package zeroxoneafour/dbus-saver.

Any packaging other than the official packaging (including the AUR package) I do not maintain.

See also #55.

@lo-ca
Copy link

lo-ca commented Feb 17, 2024

What a quick reply! I almost expected it to be as as it is. I do understand what you mean, but I really prefer regular distributed packages to any plugin store, snaps or whatever out there exists.

Whatever - thank you - also for pointing me to dbus-saver.

@zeroxoneafour
Copy link
Owner Author

I can confirm that v1.0 will never be developed for KWin 5.27. The API is far too different and there is much more going on underneath the surface.

No promises, but aiming for a public beta with slightly reduced features one week after the release of Plasma 6.

@zeroxoneafour
Copy link
Owner Author

Script is finished but will not compile due to the kwin-api package not exporting properly. I hate npm too much to waste several more hours of my life figuring out the issue, so development is indefinitely halted until someone who knows more about js can fix the exports.

Package in question - https://github.com/zeroxoneafour/kwin-api

PRs are more than welcome, and are in fact at this point required for the continued development of the wrapper package and in turn the script

If you didn't know, I am a C# developer who only knows TypeScript for the purposes of writing this script. This is a call for help

@FPtje
Copy link

FPtje commented Feb 24, 2024

Hi! I'm not a typescript expert myself, but I think I might have found the cause for the issue.

Just for my own confirmation, are these the errors you're talking about?

Errors
npx esbuild --bundle src/index.ts --outfile=polonium.mjs --format=esm --platform=neutral
✘ [ERROR] Could not resolve "./qmlWorkspace"

    node_modules/kwin-api/src/index.ts:1:25:
      1 │ import QmlWorkspace from "./qmlWorkspace";
        ╵                          ~~~~~~~~~~~~~~~~

✘ [ERROR] Could not resolve "./jsWorkspace"

    node_modules/kwin-api/src/index.ts:2:24:
      2 │ import JsWorkspace from "./jsWorkspace";
        ╵                         ~~~~~~~~~~~~~~~

✘ [ERROR] Could not resolve "./qmlKWin"

    node_modules/kwin-api/src/index.ts:4:20:
      4 │ import QmlKWin from "./qmlKWin";
        ╵                     ~~~~~~~~~~~

✘ [ERROR] Could not resolve "./jsKWin"

    node_modules/kwin-api/src/index.ts:5:19:
      5 │ import JsKWin from "./jsKWin";
        ╵                    ~~~~~~~~~~

✘ [ERROR] Could not resolve "./virtualdesktop"

    node_modules/kwin-api/src/index.ts:7:27:
      7 │ import VirtualDesktop from "./virtualdesktop";
        ╵                            ~~~~~~~~~~~~~~~~~~

✘ [ERROR] Could not resolve "./output"

    node_modules/kwin-api/src/index.ts:8:19:
      8 │ import Output from "./output";

After staring for a bit, I've noticed that it's precisely the .d.ts files that it seems to have trouble finding. It seems that esbuild doesn't like .d.ts files, and as a result, pretends that they do not exist: See evanw/esbuild#1663, and the linked docs here.
This seems to be a major difference between esbuild and tsc.

To confirm, I tried renaming all .d.ts files to .ts files in kwin-api. After that, it all seems to build, at least until make not finding kpackagetool6, because I don't have that installed just yet.

The linked issue seems to offer several solutions. I suppose renaming all files to .ts would be a rather radical solution. It also seems to be possible to use e.g. import type {} from "./jsWorkspace" instead of importing names explicitly.


On another note, keep up the good work. I'm super excited to get tiling window management on Plasma Wayland. I need something to beat my old Plasma X11 + i3 setup. This script so far looks like the most promising way to get that. I'm rooting for you 👍

@zeroxoneafour
Copy link
Owner Author

Script has been updated to Plasma 6 with a few large regressions. Basic tiling functionality is fully intact, but some interactions involving shortcuts and the mouse are still a work in progress. It's a whole lot better than nothing

@zeroxoneafour
Copy link
Owner Author

Polonium v1.0 will be merged and v1.0 beta 1 will be released on or before March 3rd regardless of bugs or missing features. The latest Plasma 5 compatible commit will also be packaged and shipped with this release. This will be the only official release of v1.0 for Plasma 5 in the foreseeable future. I think that having a beta out around the same time that Plasma 6 hits the Arch/Tumbleweed repos is critically important to preserve some tiling functionality for most people.

I'm aiming for a tentative release of v1.0 around the end of March, with a few more betas and an RC leading into it. A complete v1.0 shouldn't have any crashes or tile-breaking bugs and should be feature complete on par with v0.6.

I would also like to apologize for the confusion around the release of v1.0 and thank you guys for continually supporting this project. I never thought that I would be maintaining the primary tiling add-on for my favorite desktop environment. I really cannot overstate how much this means to me.

Of course, also a thank you and congratulations for KDE and the successful release of Plasma 6. If you haven't tried it or v1.0, the stability improvements on Wayland will blow your mind.

@zeroxoneafour zeroxoneafour merged commit 6ee66d7 into master Feb 29, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants