Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
baf64c6
Fix: Flatpak permission screen opening on non-flatpak app
Core447 Mar 28, 2024
4753450
Add NewPageManager class (wip)
Core447 Mar 28, 2024
714baf6
Add new PageManager with auto page switch option
Core447 Mar 29, 2024
584bab0
Handle error if generate_final_image gets None as foreground
Core447 Mar 29, 2024
0a8ee0a
Check if deck is visual before connecting to it
Core447 Mar 29, 2024
9b89479
Send black images to deck instead of using reset
Core447 Mar 29, 2024
8970b7e
Fall back to page backup if file is corrupted
Core447 Mar 29, 2024
4a4249e
Add info log to WindowsGrabber printing the environment
Core447 Mar 29, 2024
02446ba
Use logger to add print to WindowGrabber change
Core447 Mar 29, 2024
0424ce8
Catch potential error in WindowGrabber trying to change page on close…
Core447 Mar 29, 2024
d346aaf
Localize new PageManager
Core447 Mar 29, 2024
e3ca6b3
Fix: WindowGrabber loading page even if already loaded
Core447 Mar 29, 2024
b15561e
Use GLib.idle_add in SignalManager
Core447 Mar 29, 2024
2fa1a70
Ellipsize page labels in PageManager
Core447 Mar 29, 2024
2657511
Add min width to sidebar of PageManager
Core447 Mar 29, 2024
7d6de4d
Fix: DeckController not loading screensaver brightness
Core447 Mar 29, 2024
693b6bd
Fix: DeckController load_page not updating page brightness row
Core447 Mar 29, 2024
a2bc4ef
Fix: BackgroundVideo crash if loop is disabled
Core447 Mar 29, 2024
f773f1a
Ensure that the minimum screensaver delay is 1 in the backend
Core447 Mar 29, 2024
163c898
Make AssetManager header flat
Core447 Mar 29, 2024
e3133bd
Fix: KeyGrid paste accepting data from other apps
Core447 Mar 29, 2024
aa0cbcb
Fix: PageManager sidebar label ellipsizing not working
Core447 Mar 29, 2024
b86d7c7
Run signal for brightness scale change over GLib.idle_add
Core447 Mar 29, 2024
32da907
Update app icon for onboarding
Core447 Mar 30, 2024
deaad87
Force dark mode for now
Core447 Mar 30, 2024
85b1dda
Fix: Typo in locale key for NoPagesError
Core447 Mar 30, 2024
b6755b8
Block page deletetion of last and plugin pages
Core447 Mar 30, 2024
e53d120
Localize new page name entry
Core447 Mar 30, 2024
26a2c56
Limit number of open stores to one
Core447 Mar 30, 2024
62b40b0
Remove old requirements
Core447 Mar 30, 2024
243fcf0
Fix: Screensaver not always reloading old page correctly
Core447 Mar 30, 2024
1a85413
Add add_custom_pages argument to get_pages in PageManager
Core447 Mar 30, 2024
ce9cb01
Fix: Store only opens once per app launch
Core447 Mar 30, 2024
bdf0e34
Add allow white mode setting
Core447 Mar 30, 2024
9857dc7
Allow default page configuration
Core447 Mar 30, 2024
32ae8aa
Free up pixbuf memory in set_image of KeyGrid
Core447 Mar 30, 2024
b1cf7a9
Add css class for multi deck selector label
Core447 Mar 30, 2024
fae8487
Commit minor local changes made to DeckController
Core447 Mar 30, 2024
09d083b
1.3.0-beta release
Core447 Mar 30, 2024
fc8aaab
Fix merge conflict
Core447 Mar 30, 2024
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
Binary file modified Assets/Onboarding/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 9 additions & 4 deletions GtkHelper/GtkHelper.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw
from gi.repository import Gtk, Adw, Gdk

# Import Python modules
from loguru import logger as log
Expand Down Expand Up @@ -199,21 +199,23 @@ def get_deepest_focused_widget_with_attr(start: Gtk.Widget, attr:str) -> Gtk.Wid

class EntryDialog(Gtk.ApplicationWindow):
def __init__(self, parent_window, dialog_title:str, entry_heading:str = "Name:", default_text:str = None, confirm_label:str = "OK", forbid_answers:list[str] = [],
empty_warning:str = "The name cannot be empty", cancel_label:str = "Cancel", already_exists_warning:str = "This name already exists"):
empty_warning:str = "The name cannot be empty", cancel_label:str = "Cancel", already_exists_warning:str = "This name already exists",
placeholder:str = None):
self.default_text = default_text
self.confirm_label = confirm_label
self.entry_heading = entry_heading
self.forbid_answers = forbid_answers
self.empty_warning = empty_warning
self.cancel_label = cancel_label
self.placeholder_text = placeholder
self.already_exists_warning = already_exists_warning
super().__init__(transient_for=parent_window, modal=True, default_height=150, default_width=350, title = dialog_title)
self.callback_func = None
self.build()

def build(self):
# Create title bar
self.title_bar = Gtk.HeaderBar(show_title_buttons=False)
self.title_bar = Gtk.HeaderBar(show_title_buttons=False, css_classes=["flat"])
# Cancel button
self.cancel_button = Gtk.Button(label=self.cancel_label)
self.cancel_button.connect('clicked', self.on_cancel)
Expand All @@ -225,7 +227,7 @@ def build(self):
# Label
self.label = Gtk.Label(label=self.entry_heading)
# Input box
self.input_box = Gtk.Entry(hexpand=True, margin_top=10, text=self.default_text)
self.input_box = Gtk.Entry(hexpand=True, margin_top=10, text=self.default_text, placeholder_text=self.placeholder_text)
self.input_box.connect('changed', self.on_name_change)
# Warning label
self.warning_label = Gtk.Label(label=self.empty_warning, css_classes=['warning-label'], margin_top=10)
Expand All @@ -242,6 +244,9 @@ def build(self):
# Set status
self.on_name_change(self.input_box)

# Trigger on_confirm on return press
self.input_box.connect("activate", self.on_confirm)

def on_cancel(self, button):
self.destroy()

Expand Down
10 changes: 8 additions & 2 deletions flatpak/com.core447.StreamController.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,18 @@
<url type="contribute">https://github.com/StreamController/StreamController</url>

<releases>
<release version="1.2.1-beta" date="2024-03-27">
<release version="1.3.0-beta" date="2024-03-30">
<description translatable="no">
<p>Bugfixes</p>
<p>New page manager</p>
</description>
</release>
<release version="1.2.0-beta" date="2024-03-27">
<release version="1.2.1-beta" date="2024-03-27">
<description translatable="no">
<p>Bugfixes</p>
</description>
</release>
<release version="1.2.0-beta" date="2024-03-27">
<description translatable="no">
<p>First beta release</p>
<p>Bug fixes</p>
Expand Down
11 changes: 8 additions & 3 deletions globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
from src.backend.WallpaperPackManagement.WallpaperPackManager import WallpaperPackManager
from src.windows.Store.StoreBackend import StoreBackend
from src.Signals.SignalManager import SignalManager
from src.backend.DesktopGrabber import DesktopGrabber
from src.backend.WindowGrabber.WindowGrabber import WindowGrabber
from src.backend.GnomeExtensions import GnomeExtensions
from src.windows.Store.Store import Store


top_level_dir:str = os.path.dirname(__file__)
Expand All @@ -29,6 +31,7 @@
asset_manager_backend:"AssetManagerBackend" = None #AssetManager
asset_manager: "AssetManager" = None
page_manager:"PageManager" = None #PageManager
gnome_extensions:"GnomeExtensions" = None
settings_manager:"SettingsManager" = None #SettingsManager
app:"App" = None #App
deck_manager:"DeckManager" = None #DeckManager
Expand All @@ -40,16 +43,18 @@
store_backend: "StoreBackend" = None
pyro_daemon: Pyro5.api.Daemon = None
signal_manager: "SignalManager" = None
dekstop_grabber: "DesktopGrabber" = None
window_grabber: "WindowGrabber" = None
store: "Store" = None # Only if opened


app_version: str = "1.2.1-beta" # In breaking.feature.fix-state format
app_version: str = "1.3.0-beta" # In breaking.feature.fix-state format
exact_app_version_check: bool = False
argparser: argparse.ArgumentParser = None
logs: list[str] = []

release_notes: str = "<ul> \
<li>Now available as a Flatpak</li>\
<li>New page manager</li> \
<li>Bugfixes</li> \
<li>First Release</li> \
</ul>"
38 changes: 33 additions & 5 deletions locales/de_DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,31 @@
"page-settings-deck-show-background": "Hintergrund zeigen",
"error": "Fehler",
"select": "Auswählen",
"page-manager-search-hint": "Suchen",
"page-manager-add-page": "Seite hinzufügen",
"page-manager-rename": "Umbenennen",
"page-manager-remove": "Löschen",
"page-manager.title": "Seitenverwaltung",
"page-manager.page-editor.title": "Seite bearbeiten",
"page-manager.page-editor.no-page-selected": "Keine Seite ausgewählen",
"page-manager.page-editor.delete-page": "Seite löschen",
"page-manager.page-editor.delete-page-confirm.title": "Seite löschen",
"page-manager.page-editor.delete-page-confirm.cancel": "Abbrechen",
"page-manager.page-editor.delete-page-confirm.delete": "Löschen",
"page-manager.page-editor.delete-page-confirm.body": "Sind Sie sicher, dass Sie folgende Seite löschen wollen: ",
"page-manager.page-editor.name-group.title": "Name",
"page-manager.page-editor.name-group.name": "Name",
"page-manager.page-editor.change-group.title": "Automatisch wechseln",
"page-manager.page-editor.change-group.enable": "Aktivieren",
"page-manager.page-editor.change-group.wm-class-regex": "WM Klasse Regex",
"page-manager.page-editor.change-group.title-regex": "Titel Regex",
"page-manager.page-editor.matching-windows.title": "Übereinstimmende Fenster",
"page-manager.page-editor.matching-windows.subtitle": "Fenster, die ihren Filtern entsprechen",
"page-manager.page-selector.title": "Seitenauswahl",
"page-manager.page-selector.search-hint": "Suchen",
"page-manager.page-selector.add-new": "Neue Seite",
"page-manager.page-selector.add-dialog.title": "Neue Seite",
"page-manager.page-selector.add-dialog.placeholder": "Seitenname",
"page-manager.page-selector.add-dialog.confirm": "Hinzufügen",
"page-manager.page-selector.add-dialog.already-exists-warning": "Seite existiert bereits",
"page-manager.page-selector.add-dialog.empty-warning": "Seitenname kann nicht leer sein",
"page-manager.page-selector.add-dialog.cancel": "Abbrechen",
"right-area-no-page-selected-error": "Keine Seite ausgewählt",
"right-area-no-deck-selected-error": "Kein Deck ausgewählt",
"deck-switcher-no-decks": "Keine Decks Erkannt",
Expand Down Expand Up @@ -137,5 +158,12 @@
"permissions-window.description": "Manche Berechtigungen werden von Flathub aus Sichenheitsgründen eingeschräntk. Um eine reibungslose Erfahrung mit den Plugins zu gewährliesten, ist es empfolhen die dbus Berechtigungen mit folgendem Befehlt anzupassen:",
"permissions-window.copy-tooltip": "Kopieren",
"permissions-window.info-beginning": "Für mehr Informationen zu Berechtigungen von Flatpaks, besuche die ",
"permissions-window.flatpak-docs": "Flatpak Dokmentation"
"permissions-window.flatpak-docs": "Flatpak Dokmentation",
"settings-allow-white-mode": "White mode erlauben",
"settings-allow-white-mode-subtitle": "White mode für die UI erlauben - Experimentell",
"page-manager.page-editor.default-page.title": "Standartseite",
"page-manager.page-editor.default-page.row.title": "Standartseite",
"page-manager.page-editor.default-page.row.subtitle": "Auswählen auf welchen Decks diese Seite beim Start geladen werden soll",
"multi-deck-selector.title": "Decks auswählen",
"multi-deck-selector.selected": "auswählen"
}
37 changes: 32 additions & 5 deletions locales/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,30 @@
"error": "Error",
"select": "Select",
"page-manager.title": "Page Manager",
"page-manager-search-hint": "Search",
"page-manager-add-page": "Add Page",
"page-manager-rename": "Rename",
"page-manager-remove": "Delete",
"page-manager.page-editor.title": "Page Editor",
"page-manager.page-editor.no-page-selected": "No page selected",
"page-manager.page-editor.delete-page": "Delete Page",
"page-manager.page-editor.delete-page-confirm.title": "Delete Page",
"page-manager.page-editor.delete-page-confirm.cancel": "Cancel",
"page-manager.page-editor.delete-page-confirm.delete": "Delete",
"page-manager.page-editor.delete-page-confirm.body": "Are you sure you want to delete the page: ",
"page-manager.page-editor.name-group.title": "Name",
"page-manager.page-editor.name-group.name": "Name",
"page-manager.page-editor.change-group.title": "Auto change Page",
"page-manager.page-editor.change-group.enable": "Enable",
"page-manager.page-editor.change-group.wm-class-regex": "WM Class Regex",
"page-manager.page-editor.change-group.title-regex": "Title Regex",
"page-manager.page-editor.matching-windows.title": "Matching Windows",
"page-manager.page-editor.matching-windows.subtitle": "Windows matching your regex",
"page-manager.page-selector.title": "Page Selector",
"page-manager.page-selector.search-hint": "Search",
"page-manager.page-selector.add-new": "Add New",
"page-manager.page-selector.add-dialog.title": "Add Page",
"page-manager.page-selector.add-dialog.placeholder": "Page Name",
"page-manager.page-selector.add-dialog.confirm": "Add",
"page-manager.page-selector.add-dialog.already-exists-warning": "Page already exists",
"page-manager.page-selector.add-dialog.empty-warning": "Page name cannot be empty",
"page-manager.page-selector.add-dialog.cancel": "Cancel",
"right-area-no-page-selected-error": "No page selected",
"right-area-no-deck-selected-error": "No deck selected",
"deck-switcher-no-decks": "No Decks Detected",
Expand Down Expand Up @@ -138,5 +158,12 @@
"permissions-window.description": "Certain default permissions are restricted by Flathub for security reasons. To enhance your experience with plugins, consider adjusting the dbus permissions by running the following command in your terminal:",
"permissions-window.copy-tooltip": "Copy",
"permissions-window.info-beginning": "For more information on Flatpak permissions, visit the ",
"permissions-window.flatpak-docs": "Flatpak documentation"
"permissions-window.flatpak-docs": "Flatpak documentation",
"settings-allow-white-mode": "Allow white mode",
"settings-allow-white-mode-subtitle": "Allow white mode for the ui - Experimental",
"page-manager.page-editor.default-page.title": "Default Page",
"page-manager.page-editor.default-page.row.title": "Default page",
"page-manager.page-editor.default-page.row.subtitle": "Select for which decks this page should be opened by default",
"multi-deck-selector.title": "Select Decks",
"multi-deck-selector.selected": "selected"
}
7 changes: 6 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
from src.windows.Store.StoreBackend import StoreBackend, NoConnectionError
from autostart import setup_autostart
from src.Signals.SignalManager import SignalManager
from src.backend.DesktopGrabber import DesktopGrabber
from src.backend.WindowGrabber.WindowGrabber import WindowGrabber
from src.backend.GnomeExtensions import GnomeExtensions

# Import globals
import globals as gl
Expand Down Expand Up @@ -94,6 +95,8 @@ def create_global_objects():
gl.argparser.add_argument("-b", help="Open in background", action="store_true")
gl.argparser.add_argument("app_args", nargs="*")

gl.gnome_extensions = GnomeExtensions()

gl.settings_manager = SettingsManager()

gl.signal_manager = SignalManager()
Expand All @@ -112,6 +115,8 @@ def create_global_objects():
gl.plugin_manager.load_plugins()
gl.plugin_manager.generate_action_index()

gl.window_grabber = WindowGrabber()


# gl.dekstop_grabber = DesktopGrabber()

Expand Down
2 changes: 0 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ contourpy==1.2.0
cycler==0.12.1
dbus-python==1.3.2
decorator==5.1.1
decord==0.6.0
distlib==0.3.8
dnspython==2.6.1
evdev==1.7.0
Expand All @@ -27,7 +26,6 @@ Jinja2==3.1.3
joblib==1.3.2
kiwisolver==1.4.5
Levenshtein==0.25.0
line-profiler==4.1.2
linkify-it-py==2.0.3
loguru==0.7.2
markdown-it-py==3.0.0
Expand Down
4 changes: 2 additions & 2 deletions src/Signals/SignalManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@ def trigger_signal(self, signal: Signal, *args, **kwargs) -> None:
raise TypeError("signal_name must be of type Signal")

for callback in self.connected_signals.get(signal, []):
callback(*args, **kwargs)
# GLib.idle_add(callback, args, kwargs)
# callback(*args, **kwargs)
GLib.idle_add(callback, args, kwargs)
14 changes: 13 additions & 1 deletion src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
import gi
gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")
from gi.repository import Gtk, Adw, Gdk, Gio
gi.require_version("Xdp", "1.0")
from gi.repository import Gtk, Adw, Gdk, Gio, Xdp

# Import Python modules
from loguru import logger as log
Expand Down Expand Up @@ -49,6 +50,14 @@ def __init__(self, deck_manager, **kwargs):
css_provider.load_from_path(os.path.join(gl.top_level_dir, "style.css"))
Gtk.StyleContext.add_provider_for_display(Gdk.Display.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

allow_white_mode = gl.settings_manager.get_app_settings().get("ui", {}).get("allow-white-mode", False)

self.style_manager = self.get_style_manager()
if allow_white_mode:
self.style_manager.set_color_scheme(Adw.ColorScheme.PREFER_DARK)
else:
self.style_manager.set_color_scheme(Adw.ColorScheme.FORCE_DARK) # Not everything looks good in light mode at the moment #TODO

def on_activate(self, app):
log.trace("running: on_activate")
self.main_win = MainWindow(application=app, deck_manager=self.deck_manager)
Expand Down Expand Up @@ -88,6 +97,9 @@ def show_onboarding(self):
f.write("")

def show_permissions(self):
portal = Xdp.Portal.new()
if not portal.running_under_flatpak():
return
if os.path.exists(os.path.join(gl.DATA_PATH, ".skip-permissions")):
return
self.permissions = PermissionsWindow(application=self, main_window=self.main_win)
Expand Down
Loading