RFC: Overall Implementation Framework of Plugin System #3953
Replies: 2 comments 2 replies
-
I think it is safer to separate user configurable settings from the plugin yaml definition. This way we prevent manipulation of plugin stuff by the end user. |
Beta Was this translation helpful? Give feedback.
-
If this is primarily about export to Imgur or OCR, I wonder if it makes sense to add a "Share (files/images/content)" portal to xdg-desktop-portals and use that in the long run. Then Flameshot could do without internet access entirely, and as an added bonus all other programs can use the same upload functionality too (or whatever the image gets shared with). KDE has a Frameworks library called Purpose with the same goal of sharing data through plugins. This could be used to implement a portal on the KDE side, or if you don't like the portals concept, could be used by Flameshot directly. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Note: This is a replacement for RFC #2529
**### RFC: Flameshot Plugin System Architecture
Status: Draft • Date: 2025-05-22 • Version: 0.1
1. Introduction
Flameshot requires a scalable plugin framework to enable modular extensions, empower user customization, and future-proof the application against evolving requirements. This RFC outlines the architectural design for a plugin system that balances flexibility, security, and performance.
2. Directory Structure
Plugins are organized under the user's configuration directory with a standardized naming convention:
3. Plugin Configuration Model
3.1 Self-Managed Settings
Plugins have full autonomy over their internal configuration storage (e.g., INI files, JSON, databases). The core framework only mandates system-level metadata in
metadata.yaml
.3.2 Standardized Metadata
4. Process-Driven Execution Model
4.1 Configurable Workflows
Users can define custom processing pipelines for action/final_action plugins (e.g., upload, OCR). Pipelines specify:
4.2 Key Principles
QPixmap
) and metadata (e.g., file format).5. Interoperability Architecture
5.1 Bidirectional Communication
A layered model enables secure interaction between plugins and the core:
5.2 Core Components
6. Security & Compatibility
7. Core API
7.1 Plugin API
8. References
Change Log:
Beta Was this translation helpful? Give feedback.
All reactions