-
-
Notifications
You must be signed in to change notification settings - Fork 982
feat: Add Air Traffic Control for automatic link routing to workspaces, b=no-bug, c=workspaces #9042
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: dev
Are you sure you want to change the base?
Conversation
6a7066b
to
ff9e5de
Compare
…s, b=no-bug, c=workspaces
ff9e5de
to
b8ca114
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It all looks pretty awesome!
Only thing im requesting is; please move all the settings into dialogs on the top window as we are trying to move away from it.
So, for example, create a dialog to manage all the rules and once done just remove it from the DOM, that should be enough.
And please run npm run pretty
for format the project
Looks really cool, cant wait to use it myself!
content/browser/preferences/widgets/setting-control.mjs (widgets/setting-control/setting-control.mjs) | ||
content/browser/preferences/widgets/setting-group.mjs (widgets/setting-group/setting-group.mjs) | ||
content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css) | ||
+ | ||
+ content/browser/preferences/zen-settings.js | ||
+ content/browser/preferences/zen-air-traffic-control.js |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we please have all these settings in the parent window as a dialog? Trying to avoid the preferences page as much as possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a need a little bit more clarity. Where should I put the affordance that would open up the dialog? Do you have an example where you've already done this in Zen?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@meenie unfortunately, I can't think of an example where we are currently doing this on zen.
But it would ideally just be the same XHTML contents but instead of being in the settings, it's opened via https://searchfox.org/mozilla-central/source/browser/base/content/browser.js#5250.
One example of this modal is when pressing CMD+Q on mac
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
153b5f8
to
4a1216d
Compare
BTW, @mauro-balades, there's a bug with the tests where I'm getting |
Should be just a warning, no? |
@meenie in that case, if you are going to make a PR for l10n packs, also add this one 🙏🏽 |
@meenie how is it going? Need help with anything? |
@mr-cheffy, sorry, work has been busy :). I'll try and finish this up to today. I see you pinged another person asking about adding the affordance to open up the ATC model in the context menu but haven't heard back yet. I'll go ahead and make the change as it's pretty easy to change again. |
Oh.. I misread the names 😅 Thanks a lot for such incredible amounts of patience and a great feature being introduced |
Just a quick question, are there any plans to implement synchronization (as with workspaces) in this PR? Or will it be done in another PR? |
In a separate pr imo would be better. Also, @meenie could we please call it 'Control Flow'? You know.. in order to not have the same names |
Nice, that this is coming as a native feature, I specifically developed an extension for this found here. Good work! |
@Propheticus, that is a very good question... I don't normally use Firefox so I wasn't aware of this. I will look into it! Sorry all for the delay. My regular work has been rather all-consuming. I plan on finishing this up this weekend! |
@meenie I just wanted to come check on this PR. How is it coming along locally? |
I worked on it this weekend and almost finished. It took me a long time to figure out how to get the dialog stuff working. I need to fix the e2e tests and an issue with the dialog box opening up with a random width that for the life of me I can't figure out how to change lol. Again, sorry for the delay but it's coming very soon! Here's a sneak preview: |
Looking great! Is the control flow thing an actual window or just created to look like one? |
@Anoms12, it's an actual window. Using |
@meenie okay cool! Last question, the text says external applications, so are tabs opened with the URL bar not affected? |
@Anoms12, that's correct. |
This is coming together nicely! A functional question:
|
@Propheticus, great questions :).
|
Agree. I can't imagine a lot of rules would conflict. Better make sure I create that catch all regex last then ;) |
@Propheticus, to answer you question from a little over a week ago, I'm not sure that extension will be very compatible with Zen in the first place. Zen introduces Spaces which inside there you can configure profiles (i.e. containers and profiles are the same thing in Zen). I'm not a Firefox user as of yet, so I'm not totally confident in this assumption. With that said, though, I think Control Flow would flash with that extension for sure and really, using Zen and Control Flow would negate the need for this extension, right? |
@meenie The 'profiles' naming of that menu item is misleading i.m.o. Zen (like Firefox) also knows the concept of profiles. Those are ~all encompassing. Within a profile live all the settings, extensions, site caches/cookies, etc. The extension is compatible and I have been using it for a while now.
While control flow manages incoming links opened externally and directs them to the correct workspace, the multi-account containers extension (also) manages links opened from within and opens them in the configured container tab. |
@meenie I might be crazy here but I could see genuine use in having an option for this to apply to the URL bar too. I feel that it would help with making sure each space keeps the use the user gives it, and help with organizing your tabs. If you have a different perspective I would love to hear it. |
@Anoms12, I feel pretty dumb right now. I thought Arc didn't do that, but it definitely does. When you click on a link in one space and it's routed to another, it will switch spaces with that tab. Same thing with using the option to open the link in a new tab, but in this scenario Arc doesn't switch, it just shows an alert saying it opened the link in another space. I will definitely make sure that Control Flow will do the same. Thanks a ton for catching that! @Propheticus, okay, looking into containers a bit more and also how Zen works and I am now realizing that each Workspace in Zen actually uses the same exact Profile! Meaning it shares your extensions, browser history, saved passwords, etc. I had no idea! I have yet to move over to this browser from Arc. In Arc, you can assign different chrome profiles to different spaces to keep them fully separate but that does not seem to be the case with Zen, correct? |
@meenie oh I thought Arc did what you already have, I didn't realize it worked across spaces (I am on windows), but thank you so much for being willing to add that! (Might want to update that text too, as it would be misleading) not to add more to your plate but do you have an ETA for this PR? I am really excited for this as I am bad at organization, so I do not use my spaces too well. |
I know I am not him, but this is correct. Only cookies are divided with containers on Zen. |
This page might be of interest to you. |
@Anoms12, if you asked me this question before all the realizations about this project I've had today, I would have said this evening I'd have it merged in lol. But now I need to go through and update some things and make sure I haven't broken anything. It's probably going to be a few more days. Also, once it's merged, I have no idea what the release process/schedule is for Zen. That's up to the maintainers. |
I was just reading that lol. |
@meenie okay sweet! Take your time though.might also wanna see what Mauro thinks. Plus, I use twilight so I'll get it the night of the day it gets merged. If I can provide any knowledge or resources please ping me. |
@meenie wanted to see how it's going :) |
@mr-cheffy oh I apologize. Thank you for being willing to tell me I am overstepping. |
Don't worry, I'm just saying it's better to get it right than to get it fast |
@mr-cheffy I get that. Do you know if we will be able to make changes to the UI to make it fit themes? As it is in a new window |
Not sure about that, sorry. But I think so yes |
This is an amazing feature, looking forward to be able to use it! Do you have plans to manage a default value? |
Air Traffic Control – Automatic External-Link Routing
I’ve been itching to move from Arc Browser to Zen for daily work, but I couldn’t live without Arc’s Air Traffic Control feature, so I decided to add it to Zen.
This is my very first contribution to the project, so please excuse any mistakes.
What’s inside ?
src/zen/modules/ZenAirTrafficControl.mjs
src/zen/modules/ZenAirTrafficControlIntegration.mjs
BrowserDOMWindow.openURI
, asks the engine, then opens/relocates the tab in the right workspace.browser/components/preferences/zen-air-traffic-control.{xhtml,js,css}
How it works
Users will create patterns (e.g.
*.github.com
,*/jira/*
) in the Preferences UI.ZenAirTrafficControl.routeURL()
returns{ workspaceId }
when a rule matches.The integration layer intercepts the external open, creates the tab, and moves it to the workspace – all in the same window, so no flash-of-new-window.
Screenshots
Main interface. I added it to the Tab Management section of Preferences

When importing, you can map routes from one workspace to another.

Missing Things
Localization (l10n)
Localized strings are not yet wired up; I'm actually not sure how that process works.
Documentation
I'll create a PR in https://github.com/zen-browser/docs if/when this PR is merged.