-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Embedding KeePassXC-Browser as Safari Web Extension within KeePassXC on macOS #12002
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: develop
Are you sure you want to change the base?
Embedding KeePassXC-Browser as Safari Web Extension within KeePassXC on macOS #12002
Conversation
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.
Copilot reviewed 11 out of 23 changed files in this pull request and generated no comments.
Files not reviewed (12)
- .gitmodules: Language not supported
- CMakeLists.txt: Language not supported
- release-tool: Language not supported
- share/macosx/Info.plist.cmake: Language not supported
- share/macosx/keepassxc_entitlements.cmake: Language not supported
- src/CMakeLists.txt: Language not supported
- src/browser/BrowserSharedMac.mm: Language not supported
- src/browser/CMakeLists.txt: Language not supported
- src/proxy/CMakeLists.txt: Language not supported
- src/safariwebextension/CMakeLists.txt: Language not supported
- src/safariwebextension/Info.plist: Language not supported
- src/safariwebextension/SafariWebExtensionCheckbox.mm: Language not supported
|
|
||
| # macOS App Bundle | ||
| if(APPLE AND WITH_APP_BUNDLE) | ||
| set(APPLE_TEAM_ID "G2S7P7J672" CACHE STRING "Apple Developer Team ID") |
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.
We need to check this ID.
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.
its came from share/macosx/keepassxc.entitlements
|
Embedding the extension in the application itself prevents any extension updates. If there's some bug, only a new KeePassXC release will fix it with Safari. |
|
Any news? |
|
When can the code be merged and released? What's the current progress? Can it be expedited? This feature is really needed. |
Read my previous comment. Plus I haven't had time to review this properly yet. I would be still in favor of keeping the extension separate, not embedded. |
As a user, I don't care which method is used. What I'm more concerned about is when it can be used and when the passwords saved in KeepassXC can be used in Safari browser. |
As a developer, I do care :) The extension is updated much more frequently than KeePassXC. If the extension is embedded to the main application, extension will not get updates unless a new version of KeePassXC is released. |
|
I believe the best approach is to embed the browser extension within KeePassXC. I understand the concern about needing to update KeePassXC for macOS whenever a new version of the extension is released. However, the alternative - packaging the extension as a separate app - prevents KeePassXC from being able to send messages directly to the Safari extension. By embedding the extension:
Additionally, this seems to be the approach Apple intends Safari extensions to follow, so aligning with it makes sense. |
d982682 to
5ebcb6f
Compare
8c1e059 to
361cf06
Compare
361cf06 to
56b63a9
Compare
|
Would it be possible to change |
|
Any news? |
1 similar comment
|
Any news? |
|
Read the previous comments. |
|
@varjolintu I totally understand, why you would prefer to separate the extension from the app. But #12002 (comment) explains well, why this currently seems impossible. Is there any way to move this forward with the extension being part of the app, as this seems to be the only way to work fine with MacOS/Safari? Or are your objections to that so strong, that you'd rather have no safari extension, than one included in the app? |
I understand your reasons for it. Have you checked if using WebSockets has a similar kind of restrictions? After all, I'm bringing that as an alternative option for native messaging: |
This pull request embeds the KeePassXC-Browser extension within the KeePassXC app on macOS. Safari 18.4 introduced the option to distribute Safari Web Extension outside App Store.
I've added the keepassxc-browser repository as a submodule. Currently this repository is linked to my own fork. I've submitted a pull request with required changes for the keepassxc-browser extension. The submodule must be changed to the original keepassxc-browser repository.
In order to test this, please build it with CMake option
-DWITH_XC_SAFARI_WEB_EXTENSION=ON. Please make sure to use the release tool for signing the application. After this, the application must be opened once for the web extension to show in Safari or use the checkbox within the Browser Settings tab.Example building command within the build directory:
cmake -DWITH_TESTS=OFF -DWITH_XC_ALL=ON -DCMAKE_BUILD_TYPE=Release -DAPPLE_TEAM_ID="<your team identifier>" -DAPPLE_APP_IDENTIFIER="<your app identifier>" .. && make -j8 package && cd .. && ./release-tool appsign -I "<Your apple developer identitiy>" -f <path to the app> && cd buildScreenshots
An option for enabling the Safari Web Extension is shown in Browser-integration tab in the KeepPassXC app.




When the checkbox is clicked it opens the Safari and shows the an option to enable the extension.
Popup shown in toolbar:
Settings page:
Testing strategy
Type of change