ferdium / ferdium-app

All your services in one place, built by the community
https://ferdium.org
Apache License 2.0
2.67k stars 164 forks source link

Feature: Ability to add Chrome extensions like password managers #135

Open MurzNN opened 2 years ago

MurzNN commented 2 years ago

Preflight Checklist

Problem Description

Rambox has ability to add extensions to the services, here is a description of this feature: https://rambox.app/feature/extensions

This is very useful to automate entering passwords using password managers like Bitwarden, also Grammarly integration will be cool too!

Shift also has the same feature: https://tryshift.com/features/extensions/

Proposed Solution

Will be good to have same feature in Ferdium too!

Alternatives Considered

Nope

Additional Information

No response

R2Pitou commented 7 months ago

Adding myself to the cacophony. Being able to use Chrome Extensions like 1password, AI ghostwriters etc. would bring a massive productivity boost to ferdium!

bayazidbh commented 7 months ago

There's already so many people asking for this, but how would this be implemented? Isn't Ferdium using electron? Not sure if that supports extensions, beyond some .js ones (though, having a better UX for that would still help). Wavebox, which I'm currently use it. implement it by just being an actual browser - it's actual real Chromium browser with a different front-end a la Vivaldi. That would require a major rewrite of the project, though, in which case I get why there's no answer/plan here yet from the devs.

nickchomey commented 5 months ago

Agreed - this would be fantastic

germain-italic commented 5 months ago

+1 for Chrome extensions (not necessarily adblockers, I have a bunch of Gmail exts that enhance my workflow)

D3SOX commented 5 months ago

Please stop the +1 comments and just use the upvote function. I've subscribed to this issue for actual updates...

Qu1ckJ commented 5 months ago

+1 for Chrome extensions

o0-o commented 5 months ago

Are Chrome extensions at all feasible for a platform based on Electron? Looking at Rambox, it looks like they transitioned their whole platform from Electron to pure Chromium at which point they were able to support Chrome extensions. Of course, that was also the point at which they transitioned away from open source, so I suppose we can't know exactly what happened with the code.

Anyway, I just wanted to point out that implementing general support for Chrome extensions would likely involve a fundamental restructure of either Ferdium or Electron. Correct me if I'm wrong.

vraravam commented 5 months ago

Anyway, I just wanted to point out that implementing general support for Chrome extensions would likely involve a fundamental restructure of either Ferdium or Electron

Yes, you are absolutely correct. Electron (as a framework) needs to provide support for chrome extensions, after which, based on volunteers in Ferdium, we can try to incorporate/enable the same. Without either of them, its pointless to keep adding +1 messages to this ticket. For those who want to watch/subscribe to this thread, please click on the "Subscribe" button on the right, rather than adding a comment. It only creates spam for those of us watching, without any positive impact on the outcomes. TIA

Julian88Tex commented 5 months ago

Thanks for the extra context. RE electron supporting chrome extensions, is there perhaps an electron issue we can subscribe to with this request?

RE +1s, I suspect many people don't know or forget about this github feature. Seems like a reasonable Github feature request is for it to prompt and subscribe or emoji response before posting.

o0-o commented 5 months ago

RE electron supporting chrome extensions, is there perhaps an electron issue we can subscribe to with this request?

If that issue exists, linking it here and freezing additional comments (assuming that is possible?) would make sense, imho.

Julian88Tex commented 5 months ago

It appears Electrons documentation explicitly states that supporting extensions is a "non-goal": https://electronjs.org/docs/latest/api/extensions

In that case it seems like this should be closed as a won't do with some reasoning provided or it should be linked to another issue which discusses the possibility of rewriting Ferdium as a non-Electron app with pros and cons.

martinszy commented 5 months ago

What about the option we were talking about last year with the rambox code?

here: https://github.com/ferdium/ferdium-app/issues/135#issuecomment-1566886105

o0-o commented 5 months ago

What about the option we were talking about last year with the rambox code?

here: https://github.com/ferdium/ferdium-app/issues/135#issuecomment-1566886105

For anyone new to this issue, please hold any "+1" or other non-substantive posts until Ferdium devs can respond to @martinszy

vraravam commented 5 months ago

here: #135 (comment)

This is non-trivial (and requires an almost full rewrite of Ferdium), and unless we have new volunteers who are willing to take this up, it won't be implemented. (I have greatly minimized my contribution to Ferdium, so I might not have the latest thinking from the rest of the core contributors - so please take that into account.)

MurzNN commented 5 months ago

As I see here https://github.com/ferdium/ferdium-app/blob/55a5d3843f099d331866f818f5cc2b1b9b3b1ae1/src/index.ts#L546-L547 We're already creating a new Browser Windows for each service, so seems we can pass it to the extension from the example https://github.com/ramboxapp/electron-chrome-extensions/blob/master/README.md#advanced:

// Adds the active tab of the browser
  extensions.addTab(browserWindow.webContents, browserWindow)

Or this will not work and we shold rework the whole approach?

vraravam commented 5 months ago

where are extensions managed from? What format will that be "understood" in? do we want universally enabled or per-service-enabled? what about performance hits due to extensions?

MurzNN commented 5 months ago

where are extensions managed from? What format will that be "understood" in?

As I see in this example https://github.com/samuelmaddock/electron-browser-shell - seems we should manually "pack" them: https://github.com/samuelmaddock/electron-browser-shell/tree/master/extensions

Place unpacked extensions (not .crx archives) here to have them automatically loaded by the browser.

After this, I guess they should automatically appear in the url bar at the right.

do we want universally enabled or per-service-enabled?

I think global enabling would be more convenient, especially for password managers like Bitwarden and ad blockers.

what about performance hits due to extensions?

I think like in the usual Chrome instance, but I think everyone thirsty for this feature will be ready to get some performance degradation.

P.S. I understand that this is maybe not as trivial as I describe, but just want to give it a try, maybe the integration will be really not as hard as it looks. Especially if we already have a working example here https://github.com/samuelmaddock/electron-browser-shell

I'm not an Electron developer, so can't give any deep technical help from my side, but really wish to get extensions in the Ferdium, so ready to test and give ideas.

RJVB commented 5 months ago

How big of an issue is extension support in the Electron world? Supposing there's enough demand for it from dependent project devs who have the general know-how, wouldn't it be more efficient to fork Electron? If not only to streamline this "Place unpacked extensions (not .crx archives) here to have them automatically loaded by the browser." method?

quentingosset commented 4 months ago

where are extensions managed from? What format will that be "understood" in?

As I see in this example https://github.com/samuelmaddock/electron-browser-shell - seems we should manually "pack" them: https://github.com/samuelmaddock/electron-browser-shell/tree/master/extensions

Place unpacked extensions (not .crx archives) here to have them automatically loaded by the browser.

After this, I guess they should automatically appear in the url bar at the right.

do we want universally enabled or per-service-enabled?

I think global enabling would be more convenient, especially for password managers like Bitwarden and ad blockers.

what about performance hits due to extensions?

I think like in the usual Chrome instance, but I think everyone thirsty for this feature will be ready to get some performance degradation.

P.S. I understand that this is maybe not as trivial as I describe, but just want to give it a try, maybe the integration will be really not as hard as it looks. Especially if we already have a working example here https://github.com/samuelmaddock/electron-browser-shell

I'm not an Electron developer, so can't give any deep technical help from my side, but really wish to get extensions in the Ferdium, so ready to test and give ideas.

Hey @MurzNN do you have find something to make extension work ? it's seems electron can use chrome extension. If you see the dependencies used on this product : https://codecanyon.net/item/web3-browser-ifox/46329836 you can see "electron-chrome-extensions": "^3.10.1". So i think we have a proof thats it possible. now, we need just learn how to use it and make it work :D

kteppris commented 3 months ago

This feature would be really need. Has there been any progress? :)

vraravam commented 3 months ago

waiting for new contributors to help with the backlog @kteppris . till then, no progress can be made

RJVB commented 3 months ago

Not that it makes a lot of difference with the backlog, but part of the reason behind the request for extension support is to be able to run an adblocker.

I can't recall if it's been suggested already, but adblocking could also be built in. Quite a few applications provide implementations of that which are compatible with standard AdBlock filter lists (I was just reminded it exists, or existed, in KMail, for instance).

I would be really surprised if no module exists for NodeJS and/or Electron that implements such functionality (and that would thus probably be a lot easier to integrate).

bayazidbh commented 3 months ago

Adblock and a GUI userscript manager would be enough in most cases IMO. I'd love to have more, but at that point it'd be a browser, and I do actually have actual browsers for that.

RJVB commented 3 months ago

On Sunday March 24 2024 23:20:05 Bayazid B. Halim wrote:

a GUI userscript manager

Something like TamperMonkey?

That'd be great, but I have the impression that would take us more than halfway to full extension support. Many of the userscripts I are crippled if not downright broken if they don't have access to a settings store mechanism and a standardised way to put up a GUI.

But since we're talking userscripts ... anyone here have an idea how to get one of the existing video-autoplay inhibitor scripts to work? Most do NOT require settings access or a GUI, from what I can tell.

MurzNN commented 3 months ago

Adblock and a GUI userscript manager would be enough in most cases IMO. I'd love to have more, but at that point it'd be a browser, and I do actually have actual browsers for that.

But we already have some kind of userscripts via editing the per-serivce user.js file from the service settings page. You can include there any hacks you want :) But copy-pasting some kind of adblock there will be a pretty tricky task

RJVB commented 3 months ago

But we already have some kind of userscripts via editing the per-serivce user.js file from the service settings page.

Yes, but that only allows you to have a single script, so you would have to implement a multiplexer yourself to run multiple scripts. Plus the standard APIs browser extensions can use to put up a settings page, menus and store settings are missing.

trymeouteh commented 2 months ago

This would be an amzing feature to have

odnar-dev commented 2 months ago

i think this may be related : https://github.com/samuelmaddock/electron-browser-shell

cobbinaloic commented 1 week ago

Still hoping to see that feature in the future.

pepper3k commented 1 week ago

omg this sounds super complicated to implement, don't get your hopes up, we need more devs

davidkennedydev commented 1 week ago

Maintainers, do you intend to support and use a project like https://github.com/getstation/electron-chrome-extension to solve that issue?

cobbinaloic commented 1 week ago

I think that is an interesting idea. How do I support?

On Thu, Jun 27, 2024 at 7:20 PM David Kennedy Souza Araújo < @.***> wrote:

Maintainers, do you intend to support and use a project like https://github.com/getstation/electron-chrome-extension to solve that issue?

— Reply to this email directly, view it on GitHub https://github.com/ferdium/ferdium-app/issues/135#issuecomment-2195503488, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFNBVHOEOIZUKWGFOU5SDX3ZJRQWFAVCNFSM5VTXRLTKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMJZGU2TAMZUHA4A . You are receiving this because you commented.Message ID: @.***>