-
-
Notifications
You must be signed in to change notification settings - Fork 52
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
Implement System Integration on macOS #33
Comments
@filips123 I still have to do some clean up, but it looks promising so far. |
Hey, you are doing a great job there! just dont dump this project like mozilla did. Also can we get the expected time for macOS pwa support!? I just don't use firefox and have to switch because of pwa only. Have a good day Dattebayo! |
@filips123 I hit a bit of a road block here. macOS requires each Application bundle to launch its own process, and a single process can not provide windows for more than one app. I only see two feasible options here:
On a side note: I investigated how Chromium is dealing with this issue, and they are launching a tiny process that provides the system integration and imports a framework / library from the main chromium app bundle. This then allows them to create a hidden tab inside the main chromium process, but remotely display it inside the PWA process. |
There is a similar processes-related problem on Linux which I also haven't fixed yet. I use What happens on macOS when you have multiple PWAs, but only have one running at the time? Will it still work and have the correct icon, and break only when you open multiple PWAs? If so, I think it's fine for the first version of macOS system integration, but should be fixed in the future. For solutions, I unfortunately don't know what the best thing would be. Separate profiles for each PWA could be quite annoying, as users would have to re-configure everything for each PWA (which can be a lot of work if they use more addons and configurations). Profile trickery would be better for users (except when it breaks) but I agree it would be quite unreliable. Is it possible to do something similar to what Chromium does? Or maybe there is some macOS system API that can change the "ID" of the window (like Windows' AppUserModelIDs or Linux XSetClassHint)? If there is such API, maybe it could be possible to submit another patch to Firefox to allow privileged JS to access it? I added current limitations section to README and linked it from the wiki. It describes current problems with window handling that I cannot solve yet. If macOS integration works with only one PWA open at the time and only breaks with multiple, please add still create PR and describe the problem in that section. If it always breaks, we will have to do something else... |
Yes, it will work properly for the first PWA. Every PWA which is then launched looks as if it instantly quits and a new window inside the first PWA is opened.
Alright, I will do that. I think we can tell people to work around this issue by using a new profile for each PWA. It's then up to the user to choose a trade-off. |
Maybe. Gecko uses IPC links internally to render websites in its content processes, but display them in the window of the parent process. Here is a brief explanation from back in 2013 when it was first implemented. I think we might also be able to use the same IPC protocol between our host process and the main Firefox runtime, but there is not much public documentation on how exactly this works. I think we would have to find a gecko engineer who can tell us if a gecko is ready for such a setup or how much work it would be to make it possible.
I was not able to find any such API. It also makes sense to me that apple wouldn't want applications to be able to impersonate each other. Here is a short design document from the chromium team that outlines the options they considered when implementing web app into chromium. They also do not mention any such API. |
Improved icon handling
Implement System Integration on macOS #33
Has been implemented in #38 |
perhaps a new issue should be made for this? this issue is now closed and the problem on linux still persists. |
I didn't create a new issue because it is already listed in current limitations section of README and I thought a separate issue wouldn't be needed. However, I can create a new issue (and perhaps also issues for other "current limitations") if you think that would be useful. |
It definitely makes sense to me that a "current limitation" has a related issue, as "current" implies it will be fixed in future, so it must be a "bug" that the limitation exists now. It would also be useful as a discussion platform for working on these limitations. |
Sorry for the delay, but I finally made issue #81 that can be used to track this problem. |
Yeah |
From #31 (review):
The text was updated successfully, but these errors were encountered: