-
Notifications
You must be signed in to change notification settings - Fork 135
Wayfire backend #2280
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
base: master
Are you sure you want to change the base?
Wayfire backend #2280
Conversation
Very nice to have a dedicated backend for wayfire :) Thank you very much for the hard work! After releasing 2.2.1, I'll try it with git Wayfire and check those of parts of the code that I can check. @marcusbritanicus |
Can confirm most, nice work :) "Show only apps from the panel's screen" works too, maybe it did before too? |
Probably the desktop switcher needs a fix as it was never used to show per-screen-workspaces. It should only consider the workspaces of the screen, similar to the setting available in the taskmanager. Atm it works changing workspaces only of the screen but it displays everywhere the same desktop. This is when switching workspaces on another desktop: swipe.mp4 |
Thank you.
I'll have a look at this sometime next week.
It's the
This should work, but perhaps some plugin from wayfire is not enabled. Currently, I'm not printing the IPC error messages. Once I add the debug messages, it will be easier to track what's working and what does not. |
This was before afaik, it works fine now. What can be seen (if this option is unchecked) moving it by right click to another desktop works, but when I go to another workspace and then try to move it there by right click menu it doesn't. Basically same as "move to current". What's worse is when the view is on 1, I go to 3 and move it to 2 by right click: the view is minimized and can't be activated nowhere by clicking the button, only "maximize" will open it on the current workspace. |
I am missing a few signals from wayfire. For example, I am trying to track the tiled (maximize) signal, but I do not think it is emitted. There are a few other similar issues, I believe. We'll fix it one by one. |
Turns out, as usually it does, this was a mistake from my end. The maximize signal is emitted, upon which |
Again, this was my mistake. Fixed maximize and restore. |
This PR is now ready for review, with one outstanding issue: @tsujan @gfgit I kindly request you both to have a look at my code and suggest if something is amiss. I also request you to help me figure out how we can get the screen names in the desktop switcher plugin. @stefonarch Feel free to test various scenarios. Please let me know if there is some feature that does not work. |
Yesterday I had time to test it (and, of course, I'll test it again later) and saw some problems:
Sorry, I was extremely busy with coding (now too) and so, my tests were short. Also, I don't know if they're fixed by a recent commit of yours or not. I had the latest git wayfire, without an additional patch, so I don't know whether a patch was needed. |
As for the code, I might find and fix problems after merging whenever I encounter them. I did so with both kwin_wayland and wlroots backends. But honestly, due to problems like WayfireWM/wayfire#2600, I'm not sure that I could spend enough time on wayfire. |
You cannot "minimize" a dialog. Ideally, minimizing a dialog should minimize the whole application. Am I right in assuming that this is where "Transient Windows" concept comes?
This is by design (Wayfire design) and not a bug.
Again by design, and not a bug.
I do not know where the code for this resides, but I have a feeling that we'll need to get the screen name for this as well.
Since I hardly use a menu for cut/copy/paste, I would have never noticed it at all. But let's get it resolved soon. |
Modal dialogs are minimized with their parent windows under labwc. Recently, I corrected some problems about it in our kwin_wayland backend. All in all, this is the expected behavior, IMO.
Then it's a very bad design, as it's usual with wayfire. Sorry, I prefer to be honest about wayfire's flaws, because I've seen lots of them through years.
Worse ;)
That's OK. It could be done after merging, whenever it's doable. |
Glad to retest, recently moving views to workspaces was broken afaik. |
Dialogs are minimized and restored here with the widget (there is also a shortcut afaik). Qterminal with preferences and font dialog as well, only the font dialog gets under the preferences dialog when restored. Edit: oh, you meant directly minimizing dialogs. |
My findings:
Sometimes 2 windows are marked as active, not sure how I triggered it. |
Yes, this is a wayfire bug. I have to discuss with @ammen99. For some reason, wayfire ends up emitting "unmap" on that view, and does not emit a "mapped" signal.
It works properly on my system, it seems. I'll add a few more debug outputs and then if you give me the output, I'll be able to pinpoint why.. (hopefully)
This, AFAIK, I fixed in the latest commit. It was a bug in my code.
I am trying to track this down. This may be a LXQt bug - I am not sure. It's something to do with the
Not really - it's standard policy. You'll see this in case of Plasma as well. You "Show desktop", and then switch workspace, the "Show Desktop" is disabled and the windows are restored.
Again standard behaviour. You'll see this on plasma as well. |
Apparently, the "unampped" is not sent on the view. The unmapped is completely unrelated to the view altogether. Also, on closer look, LXQt Panel lacks a signal to indicate that output of a view has changed. Edit: On second thoughts, I am simply going to emit |
@tsujan @stefonarch I have added a few debug statements in the latest commit to help track down this button-based minimize/restore issue. Also, I have added other debug statements so we know what are the events we're receiving from wayfire. That way, we should be able to track down various issues. A few tips on reading the output. Right after |
Sorry for the telegram style, wrote it immediately. Fixed:
Issues:
|
Unfortunately... I do not know how I can fix this. Starting with the active button, once it's clicked, you know that the window is minimized, and the next view is focused. But the buttons do not seem to reflect this. I initially thought this might have something to do with the logic in taskbar plugin. But you can see:
The featherpad button is checked: Is there a mechanism elsewhere which changes the |
So reassuming I see 3 issues:
Any idea when wayfire will be released with the needed commits? |
So I've a new laptop, reinstalled the same packages and copied the home folder and but now things have changed for whatever reason:
|
@stefonarch @marcusbritanicus |
= this week ;) I just noticed that I can't stop the panel from session settings also in niri, so the issue is outside of the backend. EDIT: hm, I can't stop anything from session settings atm, so ignore for now. |
@tsujan I think you can help me out here. I am out of my depth with the rest of the code. What needs to be done here is we need a way to get the QScreen of the panel. I think I have made suitable provisions, but I am unable to integrate them properly.
Thank you so much. :) I have just started my work on ext-workspaces protocol. Let's see how that goes on. |
@marcusbritanicus Since your PRs aren't made against LXQt, sometimes I might need to create other PRs and give you the credit in them —which isn't a problem. |
After fixing the app's exit problem with this backend (by using
@marcusbritanicus BTW, please don't make changes to this PR. I use it as a reference. I'll make another PR based on it with all needed fixes. |
@tsujan It's great that you fixed this problem. I am not planning any changes to this currently. Please make the changes you need to make. I will open new PRs as and when new wayfire features become available. |
I implemented it in the panel's code, and now switchers on different screens don't affect each other. But there's still a problem. If the user starts the panel on desktop 1 of screen 1, there's no way for the backend to get the desktop of the screen 2, because it only gets the desktop of the active screen. This doesn't cause a problem on logging in; the problem happens only if the panel is started when the desktops of the screens are different. However, once the switcher is used for the first time, its desktop is corrected. So, IMO, this can be fixed later, in a separate PR. |
The credit goes to @marcusbritanicus for writing the core code in #2280. Known issues that may be fixed later in other PRs: 1. #2280 (comment) 2. I disabled "Move To Next/Previous Monitor" because it didn't work (the error message was that the method "wsets/send-view-to-wset" wasn't found). I also kept its state contingent on `LXQtTaskBarBackendAction::Move`, which isn't supported by this backend for now.
The credit goes to @marcusbritanicus for writing the core code in #2280. Known issues that may be fixed later in other PRs: 1. #2280 (comment) 2. I disabled "Move To Next/Previous Monitor" because it didn't work (the error message was that the method "wsets/send-view-to-wset" wasn't found). I also kept its state contingent on `LXQtTaskBarBackendAction::Move`, which isn't supported by this backend for now.
What works
What does not work, but can (eventually 😉)
What should work, but does not.
Unsupported
All other features are currently untested or not implemented.