You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Elgato Stream Deck app doesn't support Linux, but OpenDeck (an
open-source alternative) does and is compatible with Elgato SDK plugins.
This adds Linux as a build target and produces a separate Linux-inclusive
.streamDeckPlugin package for OpenDeck users.
Changes:
- Add CodePathLin and Platform linux to plugin manifest (OpenDeck extensions)
- Add Linux to CI build matrix (ubuntu-latest, PyInstaller)
- Strip Linux-specific manifest entries before Elgato CLI validation,
then restore and zip into a separate Linux-inclusive artifact
- Make macholib/altgraph macOS-only via PEP 508 environment markers
- Add Linux install, dev setup, and build instructions to README
- Update release workflow to attach Linux-inclusive artifact
Tested end-to-end on Fedora with OpenDeck: plugin registers, launches
the binary, and communicates with the browser extension over WebSocket.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+52-18Lines changed: 52 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,34 +6,46 @@ This is a plugin that allows the [Elgato Stream Deck](https://www.elgato.com/en/
6
6
7
7
This plugin works in conjuction with our Google Chrome / Mozilla Firefox browser extension, which is required for this plugin to function.
8
8
9
-
Developed and tested primarily on macOS 15.0, Python 3.13.0, Chrome 130, and Stream Deck app v6.6. It should work on Windows or in Firefox as well.
9
+
Developed and tested primarily on macOS 15.0, Python 3.13.0, Chrome 130, and Stream Deck app v6.6. It should work on Windows or in Firefox as well. Linux is supported via [OpenDeck](https://github.com/nekename/OpenDeck).
10
10
11
11
## Installing
12
12
13
+
### macOS / Windows
14
+
13
15
1. If you're running on an Apple Silicon Mac (e.g. an M1 chip), you must have Apple's [Rosetta 2](https://support.apple.com/en-us/HT211861) installed. If you don't (or if you're not sure), open Terminal and run this command:
2. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the `com.chrisregado.googlemeet.streamDeckPlugin` package and open it. The Stream Deck desktop software will prompt you to install the plugin.
20
-
3. The browser extension is not in the web store, so we'll install it manually:
21
22
22
-
**For Google Chrome:**
23
-
1. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the `chrome-extension` zip file and extract it somewhere you can keep it. (If you move the folder after installing, Chrome will uninstall the extension from your browser and you'll have to reinstall it.)
24
-
2. From Chrome's extension settings page (`chrome://extensions/`), turn on "Developer mode" using the toggle at the top-right corner of the page.
25
-
3. Click the "Load unpacked" button at the top-left corner, and select the folder you extracted the zip to earlier.
26
-
4. You can turn Developer mode back off now if you want.
23
+
### Linux (via OpenDeck)
24
+
25
+
1. Install [OpenDeck](https://github.com/nekename/OpenDeck), an open-source Stream Deck application that supports Elgato SDK plugins on Linux.
26
+
2. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the `com.chrisregado.googlemeet-linux.streamDeckPlugin` package (the Linux-inclusive build) and install it through OpenDeck.
27
+
28
+
### Browser Extension
29
+
30
+
The browser extension is not in the web store, so we'll install it manually:
31
+
32
+
**For Google Chrome:**
33
+
1. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the `chrome-extension` zip file and extract it somewhere you can keep it. (If you move the folder after installing, Chrome will uninstall the extension from your browser and you'll have to reinstall it.)
34
+
2. From Chrome's extension settings page (`chrome://extensions/`), turn on "Developer mode" using the toggle at the top-right corner of the page.
35
+
3. Click the "Load unpacked" button at the top-left corner, and select the folder you extracted the zip to earlier.
36
+
4. You can turn Developer mode back off now if you want.
27
37
28
-
**For Mozilla Firefox:**
29
-
1. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the Firefox extension `.xpi` file.
30
-
2. From Firefox's extension settings page (`about:addons`), click the Settings cogwheel at the top-right of the page, click "Install Add-on From File...", and select the `.xpi` file that you just downloaded.
31
-
3. Click "Add" on the Firefox popup to allow the extension to install.
38
+
**For Mozilla Firefox:**
39
+
1. From the [Releases page](https://github.com/ChrisRegado/streamdeck-googlemeet/releases), download the Firefox extension `.xpi` file.
40
+
2. From Firefox's extension settings page (`about:addons`), click the Settings cogwheel at the top-right of the page, click "Install Add-on From File...", and select the `.xpi` file that you just downloaded.
41
+
3. Click "Add" on the Firefox popup to allow the extension to install.
32
42
33
-
4. If you use an ad blocker (such as uBlock Origin with the EasyPrivacy filter list), you may have to add meet.google.com as a trusted site in your blocker's settings to allow the browser Extension to work. (Some filters block websockets to 127.0.0.1, which this extension needs to communicate with the Stream Deck.)
34
-
5. Add some buttons to your Stream Deck, and start a Google Meet call to try them out!
43
+
### Final Steps
35
44
36
-
It's safe to delete the `com.chrisregado.googlemeet.streamDeckPlugin` file once it's installed. However, on Windows, you may need to quit the Stream Deck desktop software (by right clicking its icon in the Windows task tray and clicking Quit) and re-launch it to avoid "action can't be completed because the file is open" errors.
45
+
1. If you use an ad blocker (such as uBlock Origin with the EasyPrivacy filter list), you may have to add meet.google.com as a trusted site in your blocker's settings to allow the browser Extension to work. (Some filters block websockets to 127.0.0.1, which this extension needs to communicate with the Stream Deck.)
46
+
2. Add some buttons to your Stream Deck, and start a Google Meet call to try them out!
47
+
48
+
It's safe to delete the `.streamDeckPlugin` file once it's installed. However, on Windows, you may need to quit the Stream Deck desktop software (by right clicking its icon in the Windows task tray and clicking Quit) and re-launch it to avoid "action can't be completed because the file is open" errors.
37
49
38
50
## Updating
39
51
@@ -67,7 +79,7 @@ The Stream Deck plugin code is in the `streamdeck-plugin` directory. The browser
67
79
68
80
The plugin is written in Python. Create a venv to hold your package's dependencies, and install those dependencies:
69
81
70
-
**MacOS:**
82
+
**macOS / Linux:**
71
83
72
84
```
73
85
cd streamdeck-plugin
@@ -89,7 +101,7 @@ Remember that virtualenvs are not portable. If you move this folder at all, you'
89
101
90
102
### Running Unit Tests
91
103
92
-
**MacOS:**
104
+
**macOS / Linux:**
93
105
94
106
```
95
107
cd streamdeck-plugin
@@ -113,7 +125,7 @@ Our plugin code is written in Python, but the Elgato CLI tool is distributed as
113
125
114
126
To build the plugin:
115
127
116
-
**MacOS:**
128
+
**macOS:**
117
129
118
130
```
119
131
cd streamdeck-plugin
@@ -123,6 +135,16 @@ pyinstaller --clean --dist "../com.chrisregado.googlemeet.sdPlugin/dist/macos" s
Note that the resulting executable is only valid for the OS you built it on. MacOS and Windows bundles must be created separately from a machine/VM of that OS, and then combined into the `com.chrisregado.googlemeet.sdPlugin/dist/` folder with `macos` and `windows` subdirectories for release.
158
+
Note that the resulting executable is only valid for the OS you built it on. macOS, Linux, and Windows bundles must be created separately from a machine/VM of that OS, and then combined into the `com.chrisregado.googlemeet.sdPlugin/dist/` folder with `macos`, `linux`, and `windows` subdirectories for release.
137
159
138
160
If you're just testing locally (so you only care about one OS), you can place any file in the other OS's executable location (`CodePath`s from `manifest.json`) to appease the Elgato packaging tool. Example:
type nul > com.chrisregado.googlemeet.sdPlugin\dist\linux\main\main
148
180
```
149
181
150
182
Or, if you don't ever plan on publishing your local builds, delete the other OS's CodePath and `OS` entry in manifest.json so you don't have to worry about multi-OS support.
151
183
184
+
Note that the Elgato `streamdeck` CLI does not recognize `CodePathLin` (it's an OpenDeck extension). If you need to run `streamdeck validate` or `streamdeck pack` locally, temporarily remove the `CodePathLin` entry from manifest.json first.
185
+
152
186
Finally, use Elgato's `streamdeck` CLI tool to bundle everything into the Stream Deck plugin distributable that you can install or send to users. From the root of this git repo, run:
Copy file name to clipboardExpand all lines: RELEASE_INSTRUCTIONS.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,13 +37,13 @@ Follow these steps each time you want to release a new version of the plugin and
37
37
1. Tag the commit you wish to release and push it to GitHub. We use semantic versioning with a "v" prefix for our releases. For example: `git checkout master && git tag v1.2.3 && git push origin tag v1.2.3`
38
38
* Our CI jobs will update version numbers automatically to match that tag for both the plugin and browser extensions. You don't need to manually change any version numbers in code/config.
39
39
2. CI jobs should automatically launch against that tag to build the [Stream Deck plugin](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/streamdeck-plugin-build.yml) and [browser extensions](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/browser-extension-build.yml). (The list of workflow runs should show one copy of each of those two jobs with your `v1.2.3` tag.) Wait for them to complete successfully.
40
-
3. Click into those two build jobs, and on each job's "Summary" tab, download our build artifacts. The browser extension build job should have `chrome-extension` and `firefox-extension-signed` artifacts, and the plugin build job should have `com.chrisregado.googlemeet.streamDeckPlugin`.
41
-
4. Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality.
40
+
3. Click into those two build jobs, and on each job's "Summary" tab, download our build artifacts. The browser extension build job should have `chrome-extension` and `firefox-extension-signed` artifacts, and the plugin build job should have `com.chrisregado.googlemeet.streamDeckPlugin` (macOS/Windows, Elgato-validated) and `com.chrisregado.googlemeet-linux.streamDeckPlugin` (Linux-inclusive, for OpenDeck).
41
+
4. Do a final manual validation of those release artifacts. Install the plugin, Firefox extension, and Chrome extension, and verify basic functionality. If you have access to a Linux machine with OpenDeck, test the Linux-inclusive package as well.
42
42
5. On the Github page for your repo, click "Releases". (https://github.com/ChrisRegado/streamdeck-googlemeet/releases)
43
43
6. Click "Draft a new release".
44
44
7. Click the "Tag" button and select the tag you made in the previous step.
45
45
8. Use the your tag name as the "Release title", and enter a description summarizing notable changes in this release.
46
46
9. Select the "Set as a pre-release" checkbox near the bottom of the page.
47
47
10. Click "Publish release".
48
-
11. Our [release CI job](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/release.yaml) should automatically start and attach our tag's artifacts to the GitHub Release. Wait for it to complete. If all goes well, in a minute or two you should see 3 attachments appear on the release: the `com.chrisregado.googlemeet.streamDeckPlugin` plugin, a zip of the Chrome extension, and an `.xpi` file for the Firefox extension.
48
+
11. Our [release CI job](https://github.com/ChrisRegado/streamdeck-googlemeet/actions/workflows/release.yaml) should automatically start and attach our tag's artifacts to the GitHub Release. Wait for it to complete. If all goes well, in a minute or two you should see 4 attachments appear on the release: the `com.chrisregado.googlemeet.streamDeckPlugin` plugin (macOS/Windows), the `com.chrisregado.googlemeet-linux.streamDeckPlugin` (Linux-inclusive, for OpenDeck), a zip of the Chrome extension, and an `.xpi` file for the Firefox extension.
49
49
12. Edit the release, uncheck the "Set as a pre-release" checkbox at the bottom of the page, select the "Set as the latest release" checkbox, and click "Update release".
0 commit comments