This feels like a shot in the dark but...
Should a single Native Messaging host be able to communicate with the same extension installed on multiple chrome profiles?
I'm working on an extension which is installed to both my personal and work profiles. But it seems that the Native Messaging host only sends messages to the most recently connected instance of the extension.
I don't believe this is addressed in the Native Messaging documentation and I've run out of search ideas, thanks in advance for any help!
When nativeMessaging API is used it starts an instance of native app each time a connection is created by the extension so such an instance can communicate with its "parent" extension only. Consequently, there should be no problem.
In case you want to use chrome.runtime.onConnectNative to do the reverse (to connect from a native app to an extension which will work even when Chrome is closed) see crbug.com/967262 for more info or create a new issue there asking for details. Judging by the bits I see this feature is available only on ChromeOS and it's even disabled by default.
Related
We have chrome and FF extensions which works with a native messaging app. Recently we developed edge extension and a UWP app which works in the same way. Now the user has to install two separate native messaging apps if they want use any chrome/FF/Edge browsers.
My question is, is it possible for Chrome/FF extension talk to windows UWP app?
Unfortunately no. On Windows, both Chrome and Firefox use the registry to locate the native applications manifest, and Windows Store apps are forbidden from writing to the registry. (ref: Prepare to package an app (Desktop Bridge)
If something changes (Store apps gain the ability to alter the registry, or Chrome and Firefox introduce an alternative way to locate the manifest), then it might be possible. Though likely not via the UWP app directly. UWP apps appear to support standard input and output, but the way they are run prevents access to it. It might however be possible to create an intermediary Win32 app that can communicate with the UWP app via the AppService and the browser extension via stdio.
Afterthought: Enpass Password Manager (win32) was ported to the Windows Store reportedly because of API issues, and has a browser extension for Chrome and Firefox. Might be worth asking them how they pulled it off. I did some more digging, and figured it out. localhost loopback, a custom url scheme, web sockets, and browser verifications is how they are doing it. Not an ideal solution, but it seems to work.
I would need the list of currently opened desktop apps (+ files opened in it) from a Chrome Extension, or at least the active application name (With current focus on the desktop).
Use case : Imagine a chrome extension that would get the list of tabs with URLS (I solved it with Chrome.tabs) and in addition would give the name of the current active app when Chrome loose the focus (idle) : exemple => powerpoint.app / documentname.ppt.
I'm looking for any option, ideally without having to implement a Desktop App that would exchange messages with the Extension. But if this is the only way, any example/experience to do so with Electron (http://electron.atom.io/) or Node-WebKit?
This may be possible in an electron app, but I don't think so as Electron is more multiplatform-oriented and this is a platform-oriented feature. You only will have access to methods that the developers chose to expose to you, and I doubt that they exposed a way to have this kind of information. (I have very little knowledge in the tech since I used it only once, so I might be wrong).
The only solution I see is the one you talked about in your question, a real desktop app messaging with the chrome extension.
Is there an API for a Chrome extension to launch and control new Chrome windows under different user profiles?
My understanding is that while an extension may be run under multiple user profiles simultaneously, these instances are isolated; they cannot communicate directly and an extension in one profile cannot access the windows/tabs/processes/etc of another profile. Is this the case?
It seems like the best way to launch and control Chrome windows under multiple profiles is to use an approach based on the Remote Debugger API such as the ChromeDriver project.
For context, I'm interested in writing a tool to manage and launch predefined "bundles" of multiple Chrome windows, each with different URLs and screen positions, and each under a different profiles. The attached screenshot shows an example desired state: three browsers, each in a separate profile, each at a different URL, with different devtools states, organized in a specific screen layout. It is conceptually similar to tmuxinator.
If I wanted to provide a Chrome-based UI for designing and managing these presaved layouts, it seems that I would need to provide a native shim that invokes new Chromes via chromedriver, and communicate with them via native messaging. Is there a more direct API that I am missing?
It seems that the proposed Profile Extension API would do exactly what I'm interested in, but I don't see any discussion on the apps-dev#chromium.org list.
If chrome allowed this it would be a huge security hole.
Chrome extensions are installed per user account so they shouldnt be able to see anything from other accounts.
Is it possible to create system hotkeys/shortcuts for Google Chrome Extension? I mean hotkeys that also works when Chrome doesn't have focus.
Yes, but it won't be trivial. To get truly global hotkeys you will have to use native messaging. You will need to create some application to run in the background and capture keypresses and then you can send those keypresses back to Chrome through stdout. This approach will require you to create an additional installer for your extension to install the native messaging app onto the user's system...before you could bundle your app along with the extension (using NPAPI) but that has recently been phased out. I have seen some discussion in the Chromium group about adding bundling support for native messaging apps, but nothing has been added (yet).
Another much easier option is to use the Chrome commands API which will enable you to use hotkeys across all Chrome windows (but not globally...). Just something to consider if "true" global hotkeys are not an absolute requirement since this approach is (much) less complex.
Global media keys will be added to Chrome soon, however. There is a good discussion about this feature to read here.
It's now part of Chrome: chrome://extensions/shortcuts
I have a chrome packaged app that I update form time to time - when I'm creating an update I want to send email to subscribed customers with a link the that extension -that will launch it.
Anyone knows if there is a chrome url scheme i can use?
Currently this is not possible, but there is an API proposal and an implementation being developed for a chrome-app://appid URL schema that would do pretty much what you describe.
Follow the status here
I also want to be able to do this. It seems that one possible solution is to install both an extension and a packaged app, and have the extension register a context menu that then communicates with the app, or something similar.