Package: el-decko-core
El Decko CoreThis is the core of El Decko.It serves as the glue between any backend, the Stream Deck  and any given user interface.If writing news user interfaces please target the core instead of using any or multiple backends directly.Also don't provide Stream Deck related functionality directly in the UI but seek to add missing stuff here.Develop El DeckoIf you're using virtualenv to develop El Decko I advise to not use separate venvs for each component but to install themall in the same environment simply do the following:pip install --editable .on all backends, the core and UIsand simply use them as they were properly installed on your system.Since in development modules can't be pushed to the pip registry this is, afaik, the best way to develop and test allcomponents together.Changes on the python code will take effect imminently.Only if you change the pyproject.toml files you need to re-runpip install --editable .to let thischanges take effect.lib-hidapi and flatpakIf you happen to run PyCharm from flatpak (as I do) it will not be able to accesslibhidapi-libusb.sofrom the host.To workaround this issue simply runpip install --editable .in a terminal on your host OS which is not sandboxed byflatpak.Until I found a way to resolve this issue inside the flatpak runtime El Decko can't be provided as a flatpak. :/I am really sorry for this.StandaloneIf you do not want to run El Decko using any UI but just want it to sit silently in the background and waiting for key press events on your Stream Deck you can run it as a stand-alone program after installing it via pip as follows:ed-coreBut keep in mind that any change on your configuration files will require you to quit and restart El Decko manually and don't close the terminal window as this might exit the program as well.First runUpon the first run El Decko Core will create an empty default configurations file at$XDG_CONFIG/eldecko.The default path is:$HOME/.config/eldeckoAvailable backendsOBS Studio WebsocketControls OBS Studio via it's build-in Websocket serverMPRIS 2Controls MPRIS2 compatible media playersWrite your own backends / pluginsIf you want to write your own backend / plugin for El Decko you do not need to release your code under the same license as the core.As El Decko Core searches your python sitelibs for applciations exposing some pre-defined endpoints, but does not change its actual code, your plugin can be distributed under any license you want. This also includes keeping it all for yourself.The following entry points are searched for:initThis entry point is invoked for each backend/plugin once uppon booting up El DeckostopThis entry point is invoked once for each backend/plugin when El Decko is shutdownfireThis entry point is invoked for a dedicated backend/plugin once a button on the Stream Deck is pressedWhich backend/plugin is to be invoked is defined by thekey_configof a given key usinbg thebackendproiperty.The configuration file holding this information is located at:$XDG_CONFIG/eldecko/streamdeck.jsoneventsThis entry point is not used by any component of El Deck but is intendet to be used in conjunction with user interfaces.The idea is to supply a unified way to query all available events of all available backend/plugins to be exposed inside a UIThis could be a drop down allowing to select an backend/plugin plus another drop down to then select a available event supported by the previously selected backendAddionally ed_core exposed some entry points for backend/plugins to hook into:startThis entry point is the same entry point which is used to boot up ed_core from CLIIt is intendet to be later on used to boot up ed_core from an UI rather than running ed_core manualylö from CLI and then launching any given UIbackendsRetruns a list of all available backendsAs backends are only loaded as soon as the core is launched this currently conflicts with the above entry point as a UI can not list all available backends if the core isn't already running