Merge dev into main (1.5.0-beta.8) by Core447 · Pull Request #345 · StreamController/StreamController · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
539a54b
Added Image Layering to ActionBase (#205)
G4PLS Oct 10, 2024
16aeb89
Fix(mainWindow): Showing "no decks available" in header when no pages
Core447 Oct 15, 2024
9adbb29
Add support for the sd-neo
Core447 Oct 16, 2024
a506025
Chore(deps): Bump nltk from 3.8.1 to 3.9 (#209)
dependabot[bot] Oct 16, 2024
f6be477
Build(deps): Bump certifi from 2024.2.2 to 2024.7.4 (#155)
dependabot[bot] Oct 16, 2024
b852753
Update requirements.txt
Core447 Oct 16, 2024
36310d1
Move to Gnome 47 runtime (#258)
wanderboessenkool Oct 16, 2024
ed616b6
Update pypi-requirements.yaml
Core447 Oct 16, 2024
edb9f36
Chore(StoreBackend): Add official store branch info log
Core447 Oct 16, 2024
d7ec4af
Bump version to 1.5.0-beta.7
Core447 Oct 16, 2024
8bad20f
Update release notes
Core447 Oct 16, 2024
a2fb43a
Chore: Add sd neo support to readmes
Core447 Oct 17, 2024
23f8490
Fixes a typo in contribution section of README file (#262)
AdiHarif Oct 22, 2024
25a6231
Feat: Add gsk warning
Core447 Oct 22, 2024
8dc8448
Chore: Fix typo in release notes
Core447 Oct 22, 2024
37be1fa
Chore: Reformat changelog
Core447 Oct 25, 2024
d0fd0e5
Chore: Add release to metainfo
Core447 Oct 25, 2024
5f1d78b
Fix(ActionBase): Fixed using empty list in param for get_asset_path (…
G4PLS Oct 26, 2024
ec67e35
Feat(SearchComboRow): Added new ComboRow with integrated Search, usef…
G4PLS Oct 27, 2024
2b9f75e
Refactor: Move action permission methods into ActionPermissionManager…
Core447 Oct 27, 2024
ef69063
Fix(BackgroundEditor): Not correctly restoring transparent colors
Core447 Oct 27, 2024
1c06967
Feat: Add proper background permission management
Core447 Oct 27, 2024
0023e5c
Fix: Icon preview not updating under runtime 47
Core447 Oct 28, 2024
2766880
Add Stream Deck NEO to udev.rules (#269)
sifmelcara Nov 3, 2024
453119f
Fix(SearchComboRow): Changed instances of ComboRowSearchItem to Searc…
G4PLS Nov 9, 2024
5d17d61
Fix: Horizontal background tile gap too small on SD+
Core447 Nov 9, 2024
5be433f
Fix: Give first action background-control permission per default
Core447 Nov 9, 2024
aa24134
Revert "feat: add ability to use line breaks in labels (#147)" becaus…
Core447 Nov 9, 2024
a098755
Fix: on_update may be called before on_ready
Core447 Nov 12, 2024
3ded70c
Feat(Locales): Updated PluginBase and LocaleManager for minor improve…
G4PLS Nov 13, 2024
393bbcd
Fix: Loading action objects of inputs that don't exists on deck
Core447 Nov 13, 2024
d75f89b
Fix(ActionConfigurator): UI not getting hidden properly (#275)
G4PLS Nov 13, 2024
7ef9c57
Remove sd neo patcher
Core447 Nov 13, 2024
536a793
Fix: Old sd neo patch import
Core447 Nov 13, 2024
5615c94
Chore: Remove old debug prints
Core447 Nov 13, 2024
1b10f86
Update requirements
Core447 Nov 13, 2024
6459b27
Chore: Update changelog
Core447 Nov 13, 2024
c05deee
Feat(GtkHelper): Added a better disconnect function because adding tr…
G4PLS Nov 16, 2024
0c7ad4c
Fix: Weblinks not opening on Flatpak
Core447 Nov 16, 2024
fb3dcc9
Feat: Add donation dialog
Core447 Nov 16, 2024
6abe605
Fix: Donate entry of hamburger menu not working
Core447 Nov 16, 2024
efe7f1a
Merge branch 'main' into dev
Core447 Nov 16, 2024
6911476
Feat(ActionGroup): Added Action Groups to the PluginBase and the Acti…
G4PLS Dec 8, 2024
68b29af
Fix(ActionChooser): Fixed weird styling
G4PLS Dec 8, 2024
a695ed4
Doc(style.css): Added some comments to clarify what class is for what…
G4PLS Dec 8, 2024
6ede85b
Feat(ActionChooser): Added some extra styling to the Nested Expanders
G4PLS Dec 8, 2024
fe5240f
Doc(style): Added comment for latest css class
G4PLS Dec 8, 2024
a5746a3
Fix beta.7 releaes date in metainfo
Core447 Dec 8, 2024
e065a57
Refactor(ActionChooser): Moved Open Store button into Header
G4PLS Dec 8, 2024
a61a91e
Fix: Nested ActionGroupExpander icon states not updating
Core447 Dec 8, 2024
da03f9a
Fix: ActionChooser groups errors when searching
Core447 Dec 8, 2024
7ec1a65
Feat(ActionChooser): Moved OpenStore button and added small icon to e…
G4PLS Dec 8, 2024
40682df
Feat(ActionHolderGroup): Swapped to ActionHolderGroup.py
G4PLS Dec 11, 2024
0f94885
Doc(ActionHolderGroup): Added some basic docs to ActionHolderGroup.py
G4PLS Dec 12, 2024
df1aaea
Refactor(ActionChooser): Removed debug print
G4PLS Dec 12, 2024
994cff2
Feat(PluginBase): Added methods to accept lists as well
G4PLS Dec 12, 2024
8945942
Always show action groups, even if no action is compatible with curre…
Core447 Dec 23, 2024
5777f78
Merge pull request #295 from G4PLS/action-chooser-groups
Core447 Dec 25, 2024
5988c69
Increase max screensaver delay from 1h to 24h
Core447 Jan 1, 2025
57baffa
Squashed commit of the following:
Core447 Jan 5, 2025
33f3799
Fix(PluginBase): When dumping json new_content was not used (#315)
G4PLS Jan 11, 2025
bdd6cc9
Refactor(X11): Added some extra error handling (#311)
G4PLS Jan 12, 2025
1db3c37
Add KDE window grabber integration using kdotool (#308)
flifloo Jan 12, 2025
b61439e
Feat(EventHolder): Added suffix to EventHolders (#310)
G4PLS Jan 12, 2025
7dc78a7
Fix: Log spamming when on kde without kdotool
Core447 Jan 17, 2025
5d12f05
Chore: Stop overwritting desktop file if already present
Core447 Jan 21, 2025
ef91ef1
Use absolute paths for autostart desktop entries copying
Core447 Jan 21, 2025
4c9a8bf
Re-enable autostart desktop entry overridesx
Core447 Jan 21, 2025
5e46d1c
Update streamcontroller-plugin-tools to 2.0.2
Core447 Feb 9, 2025
81dd61e
Chore: Allow public attrs access in rpyc
Core447 Feb 9, 2025
f9f1069
Fix: Deck lock during screensaver can be bypassed by reconnecting
Core447 Feb 10, 2025
684a76f
Initial Code for TrayIcon core implementation (#336)
eumario Feb 16, 2025
5eb5989
Fix: Copy/paste of buttons not working under KDE+Wayland
Core447 Feb 25, 2025
94d711a
Update requirements.txt packages
Core447 Feb 27, 2025
ad99c1e
Remove unused dependencies from requirements.txt
Core447 Feb 27, 2025
c2e5862
Bump version to .8 and update release notes
Core447 Feb 27, 2025
d0405eb
Remove unused idlelib import
Core447 Feb 27, 2025
e67b265
Mention KDE in readme for automatic page switching
Core447 Feb 27, 2025
4fadab2
Merge main into dev
Core447 Feb 27, 2025
4439a11
Merge branch 'main' into dev
Core447 Feb 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions Assets/icons/hicolor/scalable/places/folder-symbolic.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions GtkHelper/GtkHelper.py
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Set up a custom screen saver to display a picture or video when your Stream Deck

### Automatic Page Switching

Available for GNOME, Hyprland, Sway and all X11 desktops, this feature allows you to automatically change your active page based on the active window. For example, you can switch to your favorite music albums when you open Spotify, your projects when you open VSCode, or your favorite websites in Firefox.
Available for GNOME, Hyprland, Sway, KDE (when kdotool is installed) and all X11 desktops, this feature allows you to automatically change your active page based on the active window. For example, you can switch to your favorite music albums when you open Spotify, your projects when you open VSCode, or your favorite websites in Firefox.

## Auto-Lock

Expand Down
21 changes: 19 additions & 2 deletions autostart.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import os
import shutil
import globals as gl

import gi
gi.require_version("Xdp", "1.0")
Expand Down Expand Up @@ -89,9 +90,9 @@ def setup_autostart_desktop_entry(enable: bool = True, native: bool = False):
try:
os.makedirs(os.path.dirname(AUTOSTART_DESKTOP_PATH), exist_ok=True)
if native:
shutil.copyfile(os.path.join("flatpak", "autostart-native.desktop"), AUTOSTART_DESKTOP_PATH)
copy_desktop_file(os.path.join(gl.MAIN_PATH, "flatpak", "autostart-native.desktop"), AUTOSTART_DESKTOP_PATH, True) # Why overwrite? In case someone is using the Flatpak and the source version
else:
shutil.copyfile(os.path.join("flatpak", "autostart.desktop"), AUTOSTART_DESKTOP_PATH)
copy_desktop_file(os.path.join(gl.MAIN_PATH, "flatpak", "autostart.desktop"), AUTOSTART_DESKTOP_PATH, True) # Why overwrite? In case someone is using the Flatpak and the source version
log.info(f"Autostart set up at: {AUTOSTART_DESKTOP_PATH}")
except Exception as e:
log.error(f"Failed to set up autostart at: {AUTOSTART_DESKTOP_PATH} with error: {e}")
Expand All @@ -102,3 +103,19 @@ def setup_autostart_desktop_entry(enable: bool = True, native: bool = False):
log.info(f"Autostart removed from: {AUTOSTART_DESKTOP_PATH}")
except Exception as e:
log.error(f"Failed to remove autostart from: {AUTOSTART_DESKTOP_PATH} with error: {e}")

def copy_desktop_file(source: str, target: str, overwrite: bool = False):
if not overwrite and os.path.exists(target):
log.info(f"Desktop file already exists at: {target}")
return

# Check that source exists
if not os.path.exists(source):
log.error(f"Desktop file does not exist at: {source}")
return

try:
shutil.copyfile(source, target)
log.info(f"Desktop file copied from: {source} to: {target}")
except Exception as e:
log.error(f"Failed to copy desktop file from: {source} to: {target} with error: {e}")
26 changes: 25 additions & 1 deletion flatpak/com.core447.StreamController.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,31 @@
<url type="bugtracker">https://github.com/StreamController/StreamController/issues</url>
<url type="contribute">https://github.com/StreamController/StreamController</url>
<releases>
<release version="1.5.0-beta.7" date="2024-06-28">
<release version="1.5.0-beta.8" date="2025-02-27">
<description translatable="no">
<p>Features:</p>
<ul>
<li>Add Action Groups</li>
<li>Add auto page switching under KDE when kdotool is installed</li>
<li>Add tray icon</li>
<li>Add plugins settings page to the settings window</li>
</ul>

<p>Improvements:</p>
<ul>
<li>Increate max screensaver delay from 1h to 24h</li>
</ul>

<p>Fixes:</p>
<ul>
<li>Showing "no decks available" in header when no pages</li>
<li>Overwritting desktop file if already present</li>
<li>Deck lock during screensaver can be bypassed by reconnecting the deck</li>
<li>Copy/paste of buttons not working under KDE+Wayland</li>
</ul>
</description>
</release>
<release version="1.5.0-beta.7" date="2024-11-20">
<description translatable="no">
<p>Features:</p>
<ul>
Expand Down
47 changes: 12 additions & 35 deletions globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
argparser.add_argument("--change-page", action="append", nargs=2, help="Change the page for a device", metavar=("SERIAL_NUMBER", "PAGE_NAME"))
argparser.add_argument("app_args", nargs="*")

MAIN_PATH: str
VAR_APP_PATH = os.path.join(os.path.expanduser("~"), ".var", "app", "com.core447.StreamController")
STATIC_SETTINGS_FILE_PATH = os.path.join(VAR_APP_PATH, "static", "settings.json")

Expand Down Expand Up @@ -111,55 +112,31 @@
tray_icon: "TrayIcon" = None
fallback_font: str = find_fallback_font()
showed_donate_window: bool = False
screen_locked: bool = False

app_version: str = "1.5.0-beta.7" # In breaking.feature.fix-state format
app_version: str = "1.5.0-beta.8" # In breaking.feature.fix-state format
exact_app_version_check: bool = False
logs: list[str] = []

release_notes: str = """
<p>Features:</p>
<ul>
<li>Add Spanish translations</li>
<li>Add option to change the outline color of labels</li>
<li>Add default font for labels</li>
<li>New option to configure default font</li>
<li>Add auto page change for swaywm</li>
<li>Add support for screensaver under Cinnamon</li>
<li>Add ability to use line breaks in labels</li>
<li>Add basic support for the Stream Deck Neo (limited to the normal buttons)</li>
<li>Add Action Groups</li>
<li>Add auto page switching under KDE when kdotool is installed</li>
<li>Add tray icon</li>
<li>Add plugins settings page to the settings window</li>
</ul>

<p>Improvements:</p>
<ul>
<li>Use git to download plugins in dev mode</li>
<li>Add link to wiki when no decks are being detected</li>
<li>Update dependencies</li>
<li>Increate max screensaver delay from 1h to 24h</li>
</ul>

<p>Fixes:</p>
<ul>
<li>Crash if label is not a string</li>
<li>Error launching action backend in terminal</li>
<li>Swipes not working for Stream Deck Plus</li>
<li>Error when image size is 0</li>
<li>Error on X11 when decoding the active window</li>
<li>Not blocking action labels and images during screensaver</li>
<li>Not reloading page after plugin uninstall</li>
<li>Error when XDG_CURRENT_DESKTOP is not set</li>
<li>Font weights not stored</li>
<li>Removing action not updating input on active page</li>
<li>Not always uninstalling plugins correctly</li>
<li>Crash when streamdeck-ui has no states key</li>
<li>Registering dial and touch event when used to wake up</li>
<li>Not loading screen brightness from page</li>
<li>Ignoring font styles and weights</li>
<li>Decks not always reconnecting</li>
<li>Error when renaming page to the same name</li>
<li>Keeping old page backups indefinitely</li>
<li>Crash when drag and dropping buttons with actions</li>
<li>Showing "No decks available" in header when no pages are available</li>
<li>No proper background color permission handling</li>
<li>Loading action objects of inputs that aren't available on deck</li>
<li>Weblinks not opening on Flatpak</li>
<li>Showing "no decks available" in header when no pages</li>
<li>Overwritting desktop file if already present</li>
<li>Deck lock during screensaver can be bypassed by reconnecting the deck</li>
<li>Copy/paste of buttons not working under KDE+Wayland</li>
</ul>
"""
1 change: 1 addition & 0 deletions locales/locales.csv
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ right-area-no-page-selected-error;Keine Seite ausgewählt;No page selected;Aucun
right-area-no-deck-selected-error;Kein Deck ausgewählt;No deck selected;Aucun Deck sélectionnée;No hay cubierta seleccionada
deck-switcher-no-decks;Keine Decks Erkannt;No Decks Detected;Aucun Deck Détecté;No se han detectado cubiertas
open-settings;Einstellungen öffnen;Open Settings;Ouvrir les paramètres;Abrir configuración
settings-show-tray-icon;Taskleistensymbol anzeigen;Show Tray Icon;Afficher l’icône de la barre d’état;Mostrar icono de bandeja
settings-emulate-at-double-click;Bei Doppelklick klick auf Gerät simulieren;Emulate button press on double click;Simuler une pression de bouton par double-clic;Emular pulsación de botón al hacer doble clic
settings-dev-settings-title;Entwickler;Developer;Développeur;Desarrollador
settings-fake-decks-header;Fake Decks;Fake Decks;Faux Decks;Mazos falsos
Expand Down
1 change: 1 addition & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import globals as gl

main_path = os.path.abspath(os.path.dirname(__file__))
gl.MAIN_PATH = main_path

def write_logs(record):
gl.logs.append(record)
Expand Down
112 changes: 44 additions & 68 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,131 +1,107 @@
aiohappyeyeballs==2.4.3
aiohttp==3.11.0
aiosignal==1.3.1
annotated-types==0.7.0
anyio==4.6.2.post1
async-lru==2.0.4
attrs==24.2.0
bcrypt==4.2.0
bcrypt==4.2.1
blinker==1.9.0
cairocffi==1.7.1
CairoSVG==2.7.1
certifi==2024.8.30
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.0
click==8.1.7
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
contourpy==1.3.1
cssselect2==0.7.0
cycler==0.12.1
dbus-python==1.3.2
decorator==5.1.1
decorator==5.2.1
defusedxml==0.7.1
deprecation==2.1.0
distlib==0.3.9
dnspython==2.7.0
evdev==1.7.1
filelock==3.16.1
evdev==1.9.1
filelock==3.17.0
Flask==3.1.0
Flask-Cors==5.0.0
fonttools==4.54.1
frozenlist==1.5.0
flask-cors==5.0.1
fonttools==4.56.0
fuzzywuzzy==0.18.0
get-video-properties==0.1.1
gitdb==4.0.11
gotrue==2.10.0
h11==0.14.0
h2==4.1.0
hpack==4.0.0
httpcore==1.0.6
httpx==0.27.2
hyperframe==6.0.1
gitdb==4.0.12
h2==4.2.0
hpack==4.1.0
hyperframe==6.1.0
idna==3.10
imageio==2.36.0
imageio-ffmpeg==0.5.1
imageio==2.37.0
imageio-ffmpeg==0.6.0
indexed_bzip2==1.6.0
itsdangerous==2.2.0
Jinja2==3.1.4
Jinja2==3.1.5
joblib==1.4.2
kiwisolver==1.4.7
kiwisolver==1.4.8
Levenshtein==0.26.1
linkify-it-py==2.0.3
loguru==0.7.2
loguru==0.7.3
markdown-it-py==3.0.0
MarkupSafe==3.0.2
matplotlib==3.9.2
matplotlib==3.10.0
mdit-py-plugins==0.4.2
mdurl==0.1.2
memray==1.14.0
meson==1.6.0
memray==1.15.0
meson==1.7.0
meson-python==0.17.1
multidict==6.1.0
natsort==8.4.0
nltk==3.9.1
numpy==2.1.3
opencv-python==4.10.0.84
numpy==2.2.3
opencv-python==4.11.0.86
packaging==24.2
patchelf==0.17.2.1
pillow==11.0.0
pillow==11.1.0
pip-review==1.3.0
pipenv==2024.4.0
pipenv==2024.4.1
platformdirs==4.3.6
plumbum==1.9.0
postgrest==0.18.0
proglog==0.1.10
propcache==0.2.0
psutil==6.1.0
pulsectl==24.11.0
psutil==7.0.0
pulsectl==24.12.0
py-gcode-metadata==0.2.0
pycairo==1.27.0
pyclip==0.7.0
pycparser==2.22
pydantic==2.9.2
pydantic_core==2.23.4
pyenchant==3.2.2
Pygments==2.18.0
Pygments==2.19.1
PyGObject==3.50.0
PyGObject-stubs==2.12.0
pymongo==4.10.1
pyparsing==3.2.0
pymongo==4.11.1
pyparsing==3.2.1
pyperclip==1.9.0
pyproject-metadata==0.9.0
Pyro5==5.15
pyspellchecker==0.8.1
pyspellchecker==0.8.2
python-dateutil==2.9.0.post0
pyudev==0.24.3
pyusb==1.2.1
pyusb==1.3.1
PyYAML==6.0.2
RapidFuzz==3.10.1
realtime==2.0.6
RapidFuzz==3.12.1
regex==2024.11.6
req2flatpak==0.2.0
requests==2.32.3
requirements-parser==0.11.0
rich==13.9.4
rpyc==6.0.1
serpent==1.41
setproctitle==1.3.3
setuptools==75.5.0
six==1.16.0
smmap==5.0.1
sniffio==1.3.1
setproctitle==1.3.5
setuptools==75.8.2
six==1.17.0
smmap==5.0.2
speedtest-cli==2.1.3
storage3==0.9.0
streamcontroller-plugin-tools==2.0.1
streamcontroller-plugin-tools==2.0.2
streamdeck==0.9.6
supabase==2.10.0
supafunc==0.7.0
textual==0.85.2
textual==2.1.2
tinycss2==1.4.0
tqdm==4.67.0
types-setuptools==75.3.0.20241112
tqdm==4.67.1
types-setuptools==75.8.0.20250225
typing_extensions==4.12.2
uc-micro-py==1.0.3
urllib3==2.2.3
usb-monitor==1.21
virtualenv==20.27.1
urllib3==2.3.0
usb-monitor==1.23
virtualenv==20.29.2
webencodings==0.5.1
websocket-client==1.8.0
websockets==13.1
Werkzeug==3.1.3
yarl==1.17.1
5 changes: 5 additions & 0 deletions src/backend/DeckManagement/DeckController.py
Loading