From e99c71c1f8fbf57e7807d08413f8d52de715f81f Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Thu, 2 Oct 2025 16:29:18 +0500 Subject: [PATCH 1/4] feat: optimize search Signed-off-by: Boris Yumankulov --- portprotonqt/game_library_manager.py | 255 +++++++++++++++------------ portprotonqt/main_window.py | 13 +- 2 files changed, 156 insertions(+), 112 deletions(-) diff --git a/portprotonqt/game_library_manager.py b/portprotonqt/game_library_manager.py index 9ad61f3..b5ca36f 100644 --- a/portprotonqt/game_library_manager.py +++ b/portprotonqt/game_library_manager.py @@ -51,8 +51,9 @@ class GameLibraryManager: self.sizeSlider: QSlider | None = None self._update_timer: QTimer | None = None self._pending_update = False - self.pending_deletions = deque() # Queue for deferred widget deletion - self.dirty = False # Flag for when full resort is needed + self.pending_deletions = deque() + self.is_filtering = False + self.dirty = False def create_games_library_widget(self): """Creates the games library widget with search, grid, and slider.""" @@ -201,10 +202,13 @@ class GameLibraryManager: self._pending_update = False self._update_game_grid_immediate() - def update_game_grid(self, games_list: list[tuple] | None = None): + def update_game_grid(self, games_list: list[tuple] | None = None, is_filter: bool = False): """Schedules a game grid update with debouncing.""" - if games_list is not None: - self.filtered_games = games_list + if not is_filter: + if games_list is not None: + self.filtered_games = games_list + self.dirty = True # Full rebuild only for non-filter + self.is_filtering = is_filter self._pending_update = True if self._update_timer is not None: @@ -217,123 +221,157 @@ class GameLibraryManager: if self.gamesListLayout is None or self.gamesListWidget is None: return - games_list = self.filtered_games if self.filtered_games else self.games search_text = self.main_window.searchEdit.text().strip().lower() - favorites = read_favorites() - sort_method = read_sort_method() - # Batch layout updates (extended scope) - self.gamesListWidget.setUpdatesEnabled(False) - if self.gamesListLayout is not None: - self.gamesListLayout.setEnabled(False) # Disable layout during batch + if self.is_filtering: + # Filter mode: do not change layout, only hide/show cards + self._apply_filter_visibility(search_text) + else: + # Full update: sorting, removal/addition, reorganization + games_list = self.filtered_games if self.filtered_games else self.games + favorites = read_favorites() + sort_method = read_sort_method() - try: - # Optimized sorting: Partition favorites first, then sort subgroups - def partition_sort_key(game): - name = game[0] - is_fav = name in favorites - fav_order = 0 if is_fav else 1 - if sort_method == "playtime": - return (fav_order, -game[11] if game[11] else 0, -game[10] if game[10] else 0) - elif sort_method == "alphabetical": - return (fav_order, name.lower()) - elif sort_method == "favorites": - return (fav_order,) + # Batch layout updates (extended scope) + self.gamesListWidget.setUpdatesEnabled(False) + if self.gamesListLayout is not None: + self.gamesListLayout.setEnabled(False) # Disable layout during batch + + try: + # Optimized sorting: Partition favorites first, then sort subgroups + def partition_sort_key(game): + name = game[0] + is_fav = name in favorites + fav_order = 0 if is_fav else 1 + if sort_method == "playtime": + return (fav_order, -game[11] if game[11] else 0, -game[10] if game[10] else 0) + elif sort_method == "alphabetical": + return (fav_order, name.lower()) + elif sort_method == "favorites": + return (fav_order,) + else: + return (fav_order, -game[10] if game[10] else 0, -game[11] if game[11] else 0) + + # Quick partition: Sort favorites and non-favorites separately, then merge + fav_games = [g for g in games_list if g[0] in favorites] + non_fav_games = [g for g in games_list if g[0] not in favorites] + sorted_fav = sorted(fav_games, key=partition_sort_key) + sorted_non_fav = sorted(non_fav_games, key=partition_sort_key) + sorted_games = sorted_fav + sorted_non_fav + + # Build set of current game keys for faster lookup + current_game_keys = {(game[0], game[4]) for game in sorted_games} + + # Remove cards that no longer exist (batch) + cards_to_remove = [] + for card_key in list(self.game_card_cache.keys()): + if card_key not in current_game_keys: + cards_to_remove.append(card_key) + + for card_key in cards_to_remove: + card = self.game_card_cache.pop(card_key) + if self.gamesListLayout is not None: + self.gamesListLayout.removeWidget(card) + self.pending_deletions.append(card) # Defer + if card_key in self.pending_images: + del self.pending_images[card_key] + + # Track current layout order (only if dirty/full update needed) + if self.dirty and self.gamesListLayout is not None: + current_layout_order = [] + for i in range(self.gamesListLayout.count()): + item = self.gamesListLayout.itemAt(i) + if item is not None: + widget = item.widget() + if widget: + for key, card in self.game_card_cache.items(): + if card == widget: + current_layout_order.append(key) + break else: - return (fav_order, -game[10] if game[10] else 0, -game[11] if game[11] else 0) + current_layout_order = None # Skip reorg if not dirty - # Quick partition: Sort favorites and non-favorites separately, then merge - fav_games = [g for g in games_list if g[0] in favorites] - non_fav_games = [g for g in games_list if g[0] not in favorites] - sorted_fav = sorted(fav_games, key=partition_sort_key) - sorted_non_fav = sorted(non_fav_games, key=partition_sort_key) - sorted_games = sorted_fav + sorted_non_fav + new_card_order = [] + cards_to_add = [] - # Build set of current game keys for faster lookup - current_game_keys = {(game[0], game[4]) for game in sorted_games} + for game_data in sorted_games: + game_name = game_data[0] + exec_line = game_data[4] + game_key = (game_name, exec_line) + should_be_visible = not search_text or search_text in game_name.lower() - # Remove cards that no longer exist (batch) - cards_to_remove = [] - for card_key in list(self.game_card_cache.keys()): - if card_key not in current_game_keys: - cards_to_remove.append(card_key) + if game_key in self.game_card_cache: + card = self.game_card_cache[game_key] + if card.isVisible() != should_be_visible: + card.setVisible(should_be_visible) + new_card_order.append(game_key) + else: + if self.context_menu_manager is None: + continue - for card_key in cards_to_remove: - card = self.game_card_cache.pop(card_key) - if self.gamesListLayout is not None: - self.gamesListLayout.removeWidget(card) - self.pending_deletions.append(card) # Defer - if card_key in self.pending_images: - del self.pending_images[card_key] - - # Track current layout order (only if dirty/full update needed) - if self.dirty and self.gamesListLayout is not None: - current_layout_order = [] - for i in range(self.gamesListLayout.count()): - item = self.gamesListLayout.itemAt(i) - if item is not None: - widget = item.widget() - if widget: - for key, card in self.game_card_cache.items(): - if card == widget: - current_layout_order.append(key) - break - else: - current_layout_order = None # Skip reorg if not dirty - - new_card_order = [] - cards_to_add = [] - - for game_data in sorted_games: - game_name = game_data[0] - exec_line = game_data[4] - game_key = (game_name, exec_line) - should_be_visible = not search_text or search_text in game_name.lower() - - if game_key in self.game_card_cache: - card = self.game_card_cache[game_key] - if card.isVisible() != should_be_visible: + card = self._create_game_card(game_data) + self.game_card_cache[game_key] = card card.setVisible(should_be_visible) - new_card_order.append(game_key) - else: - if self.context_menu_manager is None: - continue + new_card_order.append(game_key) + cards_to_add.append((game_key, card)) - card = self._create_game_card(game_data) - self.game_card_cache[game_key] = card - card.setVisible(should_be_visible) - new_card_order.append(game_key) - cards_to_add.append((game_key, card)) + # Only reorganize if order changed AND dirty + if self.dirty and self.gamesListLayout is not None and (current_layout_order is None or new_card_order != current_layout_order): + # Remove all widgets from layout (batch) + while self.gamesListLayout.count(): + self.gamesListLayout.takeAt(0) - # Only reorganize if order changed AND dirty - if self.dirty and self.gamesListLayout is not None and (current_layout_order is None or new_card_order != current_layout_order): - # Remove all widgets from layout (batch) - while self.gamesListLayout.count(): - self.gamesListLayout.takeAt(0) + # Add widgets in new order (batch) + for game_key in new_card_order: + card = self.game_card_cache[game_key] + self.gamesListLayout.addWidget(card) - # Add widgets in new order (batch) - for game_key in new_card_order: - card = self.game_card_cache[game_key] - self.gamesListLayout.addWidget(card) + self.dirty = False # Reset flag - self.dirty = False # Reset flag + # Deferred deletions (run in timer to avoid stack overflow) + if self.pending_deletions: + QTimer.singleShot(0, lambda: self._flush_deletions()) - # Deferred deletions (run in timer to avoid stack overflow) - if self.pending_deletions: - QTimer.singleShot(0, lambda: self._flush_deletions()) + # Load visible images for new cards only + if cards_to_add: + self.load_visible_images() - # Load visible images for new cards only - if cards_to_add: - self.load_visible_images() + finally: + if self.gamesListLayout is not None: + self.gamesListLayout.setEnabled(True) + self.gamesListWidget.setUpdatesEnabled(True) + if self.gamesListLayout is not None: + self.gamesListLayout.update() + self.gamesListWidget.updateGeometry() + self.main_window._last_card_width = self.card_width - finally: - if self.gamesListLayout is not None: - self.gamesListLayout.setEnabled(True) - self.gamesListWidget.setUpdatesEnabled(True) - if self.gamesListLayout is not None: - self.gamesListLayout.update() + self.is_filtering = False # Reset flag in any case + + def _apply_filter_visibility(self, search_text: str): + """Applies visibility to cards based on search, without changing the layout.""" + visible_count = 0 + for game_key, card in self.game_card_cache.items(): + game_name = card.name # Assume GameCard has 'name' attribute + should_be_visible = not search_text or search_text in game_name.lower() + if card.isVisible() != should_be_visible: + card.setVisible(should_be_visible) + if should_be_visible: + visible_count += 1 + # Load image only for newly visible cards + if game_key in self.pending_images: + cover_path, width, height, callback = self.pending_images.pop(game_key) + load_pixmap_async(cover_path, width, height, callback) + + # Force geometry update so FlowLayout accounts for hidden widgets + if self.gamesListLayout is not None: + self.gamesListLayout.update() + if self.gamesListWidget is not None: self.gamesListWidget.updateGeometry() - self.main_window._last_card_width = self.card_width + self.main_window._last_card_width = self.card_width + + # If search is empty, load images for visible ones + if not search_text: + self.load_visible_images() def _create_game_card(self, game_data: tuple) -> GameCard: """Creates a new game card with all necessary connections.""" @@ -412,9 +450,4 @@ class GameLibraryManager: def filter_games_delayed(self): """Filters games based on search text and updates the grid.""" - text = self.main_window.searchEdit.text().strip().lower() - if text == "": - self.filtered_games = self.games - else: - self.filtered_games = [game for game in self.games if text in game[0].lower()] - self.update_game_grid(self.filtered_games) + self.update_game_grid(is_filter=True) diff --git a/portprotonqt/main_window.py b/portprotonqt/main_window.py index 3473088..cbdb791 100644 --- a/portprotonqt/main_window.py +++ b/portprotonqt/main_window.py @@ -747,11 +747,22 @@ class MainWindow(QMainWindow): self.searchDebounceTimer = QTimer(self) self.searchDebounceTimer.setSingleShot(True) self.searchDebounceTimer.setInterval(300) - self.searchDebounceTimer.timeout.connect(self.game_library_manager.filter_games_delayed) + self.searchDebounceTimer.timeout.connect(self.on_search_changed) layout.addWidget(self.searchEdit) return self.container, self.searchEdit + def on_search_text_changed(self, text: str): + """Search text change handler with debounce.""" + self.searchDebounceTimer.stop() + self.searchDebounceTimer.start() + + @Slot() + def on_search_changed(self): + """Triggers filtering with delay.""" + if hasattr(self, 'game_library_manager'): + self.game_library_manager.filter_games_delayed() + def startSearchDebounce(self, text): self.searchDebounceTimer.start() From ba9d8b76d80c80203b514c2f0df84f95e7b13ac2 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Thu, 2 Oct 2025 16:31:01 +0500 Subject: [PATCH 2/4] chore(changelog): update Signed-off-by: Boris Yumankulov --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b9a1a8..e3a6205 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ ### Fixed - Исправлен вылет диалога выбора файлов при выборе обложки если в папке более сотни изображений - Исправлено зависание при добавлении или удалении игры в Wayland +- Исправлено зависание при поиске игр ### Contributors From 3f9f794e6f71344934efd74d4fe213e1730e7fc5 Mon Sep 17 00:00:00 2001 From: dervart Date: Sat, 4 Oct 2025 22:12:10 +0700 Subject: [PATCH 3/4] hint icons --- portprotonqt/main_window.py | 10 ++-- .../themes/standart/images/key_backspace.png | Bin 880 -> 0 bytes .../themes/standart/images/key_backspace.svg | 1 + .../themes/standart/images/key_context.png | Bin 2050 -> 0 bytes .../themes/standart/images/key_context.svg | 48 ++++++++++++++++++ portprotonqt/themes/standart/images/key_e.png | Bin 874 -> 0 bytes portprotonqt/themes/standart/images/key_e.svg | 1 + .../themes/standart/images/key_enter.png | Bin 1336 -> 0 bytes .../themes/standart/images/key_enter.svg | 1 + .../themes/standart/images/key_f11.png | Bin 943 -> 0 bytes .../themes/standart/images/key_f11.svg | 1 + .../themes/standart/images/key_left.png | Bin 933 -> 0 bytes .../themes/standart/images/key_left.svg | 1 + .../themes/standart/images/key_right.png | Bin 956 -> 0 bytes .../themes/standart/images/key_right.svg | 1 + .../themes/standart/images/ps_circle.png | Bin 1968 -> 0 bytes .../themes/standart/images/ps_circle.svg | 1 + .../themes/standart/images/ps_cross.png | Bin 1786 -> 0 bytes .../themes/standart/images/ps_cross.svg | 1 + portprotonqt/themes/standart/images/ps_l1.png | Bin 1788 -> 0 bytes portprotonqt/themes/standart/images/ps_l1.svg | 1 + .../themes/standart/images/ps_options.png | Bin 1317 -> 0 bytes .../themes/standart/images/ps_options.svg | 1 + portprotonqt/themes/standart/images/ps_r1.png | Bin 1877 -> 0 bytes portprotonqt/themes/standart/images/ps_r1.svg | 1 + .../themes/standart/images/ps_share.png | Bin 1401 -> 0 bytes .../themes/standart/images/ps_share.svg | 1 + .../themes/standart/images/ps_triangle.png | Bin 1831 -> 0 bytes .../themes/standart/images/ps_triangle.svg | 1 + .../themes/standart/images/xbox_a.png | Bin 1764 -> 0 bytes .../themes/standart/images/xbox_a.svg | 1 + .../themes/standart/images/xbox_b.png | Bin 1727 -> 0 bytes .../themes/standart/images/xbox_b.svg | 1 + .../themes/standart/images/xbox_lb.png | Bin 1920 -> 0 bytes .../themes/standart/images/xbox_lb.svg | 1 + .../themes/standart/images/xbox_rb.png | Bin 1831 -> 0 bytes .../themes/standart/images/xbox_rb.svg | 1 + .../themes/standart/images/xbox_start.png | Bin 2172 -> 0 bytes .../themes/standart/images/xbox_start.svg | 1 + .../themes/standart/images/xbox_view.png | Bin 2205 -> 0 bytes .../themes/standart/images/xbox_view.svg | 1 + .../themes/standart/images/xbox_x.png | Bin 1798 -> 0 bytes .../themes/standart/images/xbox_x.svg | 1 + 43 files changed, 73 insertions(+), 5 deletions(-) delete mode 100644 portprotonqt/themes/standart/images/key_backspace.png create mode 100644 portprotonqt/themes/standart/images/key_backspace.svg delete mode 100644 portprotonqt/themes/standart/images/key_context.png create mode 100644 portprotonqt/themes/standart/images/key_context.svg delete mode 100644 portprotonqt/themes/standart/images/key_e.png create mode 100644 portprotonqt/themes/standart/images/key_e.svg delete mode 100644 portprotonqt/themes/standart/images/key_enter.png create mode 100644 portprotonqt/themes/standart/images/key_enter.svg delete mode 100644 portprotonqt/themes/standart/images/key_f11.png create mode 100644 portprotonqt/themes/standart/images/key_f11.svg delete mode 100644 portprotonqt/themes/standart/images/key_left.png create mode 100644 portprotonqt/themes/standart/images/key_left.svg delete mode 100644 portprotonqt/themes/standart/images/key_right.png create mode 100644 portprotonqt/themes/standart/images/key_right.svg delete mode 100644 portprotonqt/themes/standart/images/ps_circle.png create mode 100644 portprotonqt/themes/standart/images/ps_circle.svg delete mode 100644 portprotonqt/themes/standart/images/ps_cross.png create mode 100644 portprotonqt/themes/standart/images/ps_cross.svg delete mode 100644 portprotonqt/themes/standart/images/ps_l1.png create mode 100644 portprotonqt/themes/standart/images/ps_l1.svg delete mode 100644 portprotonqt/themes/standart/images/ps_options.png create mode 100644 portprotonqt/themes/standart/images/ps_options.svg delete mode 100644 portprotonqt/themes/standart/images/ps_r1.png create mode 100644 portprotonqt/themes/standart/images/ps_r1.svg delete mode 100644 portprotonqt/themes/standart/images/ps_share.png create mode 100644 portprotonqt/themes/standart/images/ps_share.svg delete mode 100644 portprotonqt/themes/standart/images/ps_triangle.png create mode 100644 portprotonqt/themes/standart/images/ps_triangle.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_a.png create mode 100644 portprotonqt/themes/standart/images/xbox_a.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_b.png create mode 100644 portprotonqt/themes/standart/images/xbox_b.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_lb.png create mode 100644 portprotonqt/themes/standart/images/xbox_lb.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_rb.png create mode 100644 portprotonqt/themes/standart/images/xbox_rb.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_start.png create mode 100644 portprotonqt/themes/standart/images/xbox_start.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_view.png create mode 100644 portprotonqt/themes/standart/images/xbox_view.svg delete mode 100644 portprotonqt/themes/standart/images/xbox_x.png create mode 100644 portprotonqt/themes/standart/images/xbox_x.svg diff --git a/portprotonqt/main_window.py b/portprotonqt/main_window.py index cbdb791..31b55b2 100644 --- a/portprotonqt/main_window.py +++ b/portprotonqt/main_window.py @@ -301,12 +301,12 @@ class MainWindow(QMainWindow): def makeHint(icon_name: str, action_text: str, is_gamepad: bool, action: str | None = None,): container = QWidget() layout = QHBoxLayout(container) - layout.setContentsMargins(0, 0, 0, 0) + layout.setContentsMargins(0, 5, 0, 0) layout.setSpacing(6) # иконка кнопки icon_label = QLabel() - icon_label.setFixedSize(32, 32) + icon_label.setFixedSize(26, 26) icon_label.setAlignment(Qt.AlignmentFlag.AlignCenter) pixmap = QPixmap() @@ -319,7 +319,7 @@ class MainWindow(QMainWindow): if not pixmap.isNull(): icon_label.setPixmap(pixmap.scaled( - 32, 32, + 26, 26, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation )) @@ -412,7 +412,7 @@ class MainWindow(QMainWindow): pixmap.load(str(icon_path)) if not pixmap.isNull(): icon_label.setPixmap(pixmap.scaled( - 32, 32, + 26, 26, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation )) @@ -421,7 +421,7 @@ class MainWindow(QMainWindow): placeholder = self.theme_manager.get_theme_image("placeholder", self.current_theme_name) if placeholder: pixmap.load(str(placeholder)) - icon_label.setPixmap(pixmap.scaled(32, 32, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)) + icon_label.setPixmap(pixmap.scaled(26, 26, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)) else: container.setVisible(False) else: # Keyboard hint diff --git a/portprotonqt/themes/standart/images/key_backspace.png b/portprotonqt/themes/standart/images/key_backspace.png deleted file mode 100644 index 425addcb2fa5230ae20a90dd4531a1738256c880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRWPP)Iwi9|PMHo~mNCva!RH^3(_z5)ALh_hqo*45x&OMhFAP9mW2!bF8f*^=cAs7#2 z(y6?X1B4xAhr{XCl{z5Q{#08XOCj5@g(9Q?1fZ>ynr{{g$-c!wfZSAWyfhWE{Zyz1 zD=(CM^P@VBFvp95%kZLUM6xY4J47TPLgaAfGGz22Ynjr>sKY4pDlN&cb16b4fnReo zW~`M-&w?a!?I%&USjDe;Hs-r>mi}DhVj|iUn8^CBx>~mF=Ub9Bn}t& zGRqAU*s9f52jgih?r|dnNaFT%bU8a%Hx;7P)X@k4a079!a^u!q?kbEB3u|SxoRO!} z{2{7MQo^~#t8A;o1%^JyA~l_6++mK)Ek0&d%nzLSA>z-}3dnBw9V1o+Z+-#V1Y3B4 z$7`H_$?Q%X<%qm!@3j{9QNWd@(;cRZqQk1SdEzMGforvG7N{EXlhF_{7d~nW&v27@ zWJd?x)r2T*!NofD2z$E6d$wns;AAx+Zdz&|cU@mL7c$sTh0bChX%E(a+cLMFkX`J0 zQb=515F7X#79oddgh2=}KxL`=!>y1>DXq9{G0#@^1`hF@Sr985Hk^mu?*KSL{E z(@$B+`7R_B)*>M!BrHNi7dO713Q11?%VaGQvZjzcbgckIgsRpe)W+R-N!DT0$ZOS# z{r62{FtkSPotbc5$_S$6RhYQ8>t9JodwN}0So*?@TlAdyM#$;awJpB^@A<~wDllO| z)splFWt{nXeO=F2?I(+v$yaal16?1VA#rg3!wBv9XgJT2NmR~*Tz>g(+=q4%QEIB^ zTDZoskS;T0Qz1eXIn|TD17Roju2{xe<8sj25_ZPS{TaO diff --git a/portprotonqt/themes/standart/images/key_context.png b/portprotonqt/themes/standart/images/key_context.png deleted file mode 100644 index 03014ef508d95406afbe25fe4cbc11deb48f13d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmV+d2>thoP)7!zC0mD}Tr;&p_BeAgC}XC&=+bUk z+llTFpi`+7=wQHs9LR9u7&QNi5^3@>@ObaY`@{F{4`~?s0fO$x_wW0D-`}72-W}mm zF6C0fL`$Zb>t?Oc*8_2;dZ0Lbk>QK2+HU{$edG^w3_ zy%Hchf7Gg4C0Tk{HS6BvzecNTMAXFR`jJ*joaZI&&@8t9xg?ETHw#BpWlEZyb75a^ zvBmdtda3s+>UI+W$nIafFiZ>z7!&~0_4$wdXkUH8C$7(rfrs>XNY@9RRX_c`>Zmg6 zq;kVBF?o$E%9C+m|4pRJzxd7tNGsp|{Pc@dHL|^zsXOkK-}0LU<%2ZhClC2l+%#X5 zpFC0-nXc#?s#6#S?<|Dzg05?r-36uJ;7jt;o1#%w8<`>y9Ebb*j4e!9y2ce3S6lp# zhI98FpK|QnZEypVjk)d*Tw2qrsZwj#nqIwY57{7xj^Q-aX6(QKY^@Dx1MnFi*z@;> z?fFMsFr;C7w=N$$eT~bHk5e-C+wV`W@=nG4%&d-V7}&P)Hv9Jd5BwkaiaXo_#&m6s z8f*XsP8b3O_W5DjSefIrs8tc(YO2uL28NCwY5`jg4A^H2fWO)Iow>NY;qqtp(8}rA zNO>NJ;W6)tJO$u)Gv7__rcU;3u4cjhe@8@<^nhp{jRY~XWt+5HCU-wiEnu#OS0ief zoC1*R=G67(8~{P7S}#J)~gIIWk`p;krsEPqpvCs#Z` zsH6f!r0s412SPzs_dC559ZEnnYNcnN#H)lKxsdtukK=kH3;XuNMsy0~JY)h6} zKI`=~WnVel(s?PRkQTLs{EW(Bk|=wu)Js=+l_(3uVd~R}bNs#J!CP?8iBK!<0d)GJ z^NNTRke!274pAIt#I_OlqH29f!yhn6-fLN~eAcJ2fQV+YO9i6)tWRSB z$*)8o?ww4THHicet+*PEtSPNYB!F12j7CbYibhJTS`yMoc{LizD!G3>nfXXt7DtkW zK*VYwyY%5_6hgpDy+YI#{MKS174Q6HmZXP_g5O#QM9hUKnqwy=RqE`x+-{;85pyBt zr_VZjp~srhB+njM`_MFTjrbKE)5Tz$8;QcW!8XRslU{lxds32??U#2GqL|LE?d2P> z9fOkeZ35)jO~5T@*|iVp`p#34O9BGFFtRhE9n2Vd(J>tZA30Av##$Py$$)3}38BGF ziad+(93x!ihHGc05m_HfK;}=OI_TVVGSzKHv}j8YB}0*`GuumT&p!V+Q6RNxNPOXA z@?+PG8f>!31$}xh7wVOD@~pcKt|z4G_#DZJ9<_RWAWhMkS2}bs*>ufpjvPgx&xL13 zb#gvit|J-&XD*^gs~I0iU06ksEACLloZE$5m)a#B(V`hhp@Ewh((B2<1iIkN#?8?4 z^E|~l!i38OO?n}AFya^Ix?5cI*409dJa6S|nr$WLA!*5&4jpvztg{}vb33F@KNP~W zH-}gfFI~!bt#7C1ezq{bn!uS@L)N3e5d$B~36eAS2#8HB*xt*WOs~zQosaZg4nXFW z7>SVli#Ai`1vzBnkxD|G8Gy-V#u_;Vs>;0N9z$=T5q1`M0Q*Rz$suRdMS9`yXbJ zcV{|fU?1=6N(vrvL6L6`t4u{JQ3@z>Vx3U4PPCIa gM7oqqxfE6T74yE#DoxP^rvLx|07*qoM6N<$g5d`0GXMYp diff --git a/portprotonqt/themes/standart/images/key_context.svg b/portprotonqt/themes/standart/images/key_context.svg new file mode 100644 index 0000000..0d56e95 --- /dev/null +++ b/portprotonqt/themes/standart/images/key_context.svg @@ -0,0 +1,48 @@ + + diff --git a/portprotonqt/themes/standart/images/key_e.png b/portprotonqt/themes/standart/images/key_e.png deleted file mode 100644 index cd95f3bcebcdb4507fe90d89554aee243c3691f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874 zcmV-w1C{)VP)O(L~C z?4+7e+bdnQP{`hGfu%+%3O)uNtCfXxdhUp&?sCRqC1CbNFmM-J01Uy;*%&VUOdr4q zmp)gliZCITTYep1y?Tf}$=|iOf^-9bfqnde<*QvjMl$ONv*y35BrQV>`zUdQFgYPS z93A0xb%5TcogETn@sF$(b*kw-|#`mF4? z791bsOUNVepYeae+k6R0?%BMcM-1ineRg0bGJC%63l$4_w=NN}QxHNcdya(6cfamF z9Y-l8Coo&&?w8F8aSf&RsV)o5rgIpPM*>Nwl#-@i$Y>Vq4P`PmXQ_0hZXFq8ge?Ga zn*$jff$92!B}Fi`E+eJP>N0G6k1@4&=d-qrP6EcY@!7vgmcvNMS>ATp>yI`|)2)E2 z&_UZL0|0)_MvJ%0O7vQ7w5df&S%{M=MJK8d)^tb1RD}#VjD$R*HF5HPGyt%fl8mwM zk0VV^2lcmMzZ07*qoM6N<$f@8je A`2YX_ diff --git a/portprotonqt/themes/standart/images/key_e.svg b/portprotonqt/themes/standart/images/key_e.svg new file mode 100644 index 0000000..b659fad --- /dev/null +++ b/portprotonqt/themes/standart/images/key_e.svg @@ -0,0 +1 @@ + diff --git a/portprotonqt/themes/standart/images/key_enter.png b/portprotonqt/themes/standart/images/key_enter.png deleted file mode 100644 index d9d29118186c8f63adb5251c7cdaf19f51e5afe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 zcmV-81;_e{P)|RYd-h9a8WLRFzSAS z+U?CeUGSEwm2t}p~hb}M#&)3;I3&j_ZZ!5*j7*%-S*3j z0Yzj^(+%wK6$`*6h81xQHEj5_qC0+$J=V$aDA3I~^VC@+ z#WCPd%}|bU4yf`4cNpeHlAPo>{?Lexvcu+~3R12|gjGIdjRD?30tSJPfC~VW_*Ch2 z3V>OD0M-#X3!Ko1z)xH|q+52ZT5AW2z#33u9SP_;pw|ch#)AKl?s)Fd(S_p``TBr% z^+Q^8^ZmJ1CII!h zzz|3HB^ZY|)?ya#w;@thwCWYg)R<+S3E(tcEYrg?WEoPtOUM%|HO6|9rvX?}9AKW; zI8PQhuDxvI8ajTOZnAXRptqtHh z*L5v7xMApVlkbq|VV`xSWq}2 zhgxSuQlTO8(3XQFTug3*EC&_TqpoNZ`QMmUcvb7*LR3UmEA^0@Rv;;hjhk%VkNzbf zi@Pi-uL<;cPNhcDQu0%V>{CZevPEP|E6Jn+w0+~$+H;5n diff --git a/portprotonqt/themes/standart/images/key_f11.png b/portprotonqt/themes/standart/images/key_f11.png deleted file mode 100644 index 10be86ffc8aaee651f3455b602798db8bdbea9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 943 zcmV;g15o^lP)w6VRbUkD0jx2M%gHqgM){m1pkAz+{4s_=9SD zT+|do%fn=%5j7ELR$n30Hzc;2NRiBcPv!-YU0Q7*d&%Rawr)Wki0kVPi~*R7PdFO9W8Eg|iND(6_TP zC`U*L2_Ye)Dx|mjb??)0BBkVXtu}P`%X);kn@+S>by?SHx_}YoNLSEBN=b`eNTcoS zvB+eMw?pY7x?bxN4dei*-5ki^NGw;CEGd$qbuv`Q1eamsdx)Vm)f=@Xlw(L-8=v@_ zWCe_*GRwPN_I8JTzI7{LR4Ajw$pC;~-now!;)zuWC2CO;7UCpI(HT|VHK!n&OgPoxF6i>plD&M_! diff --git a/portprotonqt/themes/standart/images/key_left.png b/portprotonqt/themes/standart/images/key_left.png deleted file mode 100644 index e199d9c0ac51c5d089c5d1eeb06218c79c3ae9e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933 zcmV;W16urvP)Z99g5 zwE|6N>ZqwiNA(4no8ee$q$(GRAc!h4$YsrMvCOlaMMTAs?EPfnAqoI2&huO}2A)#~ z(8NV3E0QV>#P+9OFEn30!<^v%Y9>Ip09csEAK0O}D-@B)I>PMUpIQ>e;L|*oB0!iJ zNR$?o<;6mZ)`}Q-|L|+H;YtYKM7}fKny|Ps#T4nzMN85+xNtEc6jV;6yX+_Alt7FT z1F8CrcBUb=BO>AhDF@CCmMh`J;!fLoSMTA7QnD7tB}WK^Kr{d;;H?r6xf2kI*uVoF zLF%1S+)Pwytzm8G$v5*6DPR*tg*jr5x}~Ioh*(NHkOJP|dDmxg^VTnX)Dh$nHZc=n zv=JMTS9qP-f@sRLl*%$b4&=yhv;-}c*7i3^8E=ldrBbZ53Q89~i6BiJ;)Bj0!9Co; zH+W94hnl1i^AQnoffyVhz;C?A7s((-NvgHTC=^bt>98Y;=1@8en>VVBCgB|9+!Q5 z=kuk`qkyt>iAo3q0DcA~sFC8Hy@CprC>euznTF^M3&P5NtC1;4BO)TM95KpRy=h$m zn9K;Hg{yExLJQ(S@Gj4l9*J-uSlB%IWUT6w&aC|XrC_qN?YO&kidALX!n4--X?r~` z!Bmb${2Nw@YUbhwHdVj4cPB&}2hJf#Boc{4B9TZWQb+#*d=|uRJ@R$M00000NkvXX Hu0mjf$$q#_ diff --git a/portprotonqt/themes/standart/images/key_left.svg b/portprotonqt/themes/standart/images/key_left.svg new file mode 100644 index 0000000..c295c5b --- /dev/null +++ b/portprotonqt/themes/standart/images/key_left.svg @@ -0,0 +1 @@ + diff --git a/portprotonqt/themes/standart/images/key_right.png b/portprotonqt/themes/standart/images/key_right.png deleted file mode 100644 index b8c71f2b58a0cbcc976c7135a4e8138efa3bf546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmV;t14I0YP){D>xB(ab2miy1`U}blPQo8h%ZwfzoiSRe zj>-VGQrbzn9&DP>rfGJY%`Ro%X@_jt@AZ4{+b_)qP*6}%P*6}%P*Auk(E3lAoloSo z9H8Y$F6Q7&Vgkf$?tlL>Ad%U5eG3~BeBsZntza^NMCKkO_Aw=ic21i4!vjVl+0V#H zWCOEwtM|o3Kt9%`q5$MuX+gT1^@#y_zlxjyF3xG>?6eN{#O}h8g!UJ z#)k-DBjSg2Y`#cGC@r7FJJZk5gvB9z9m!U?)nQOMMQ2&gLW5HtELa#}3M#>}ocMwq z5fSZ@5jk-NO`#z+eIlYGQgoH;Zdc64qPA_NV|8yt5lIWf;t@qe5s`+-D#nI`NEVy8 zE)x;<0-VA+9x)VODLwK8%iJUuv)S)rjg!P;uUeB>#XXMwz`$4veJhm0Q)ID+x|~GP z$WqL{k2DJSGYlJI8f&;S96NgoD_Dx9jo)_$4Q^x}W36vNz9emY8kCF*_TGrCnBnhXxxds#$Je7NuP)$lGZtP@kz#={av6$7P}<1 zgI{vCDDMNWE_RTPy3-OOt(`ukF9nfP6e51vCe%3^^>V05bPPjyMhYT@oj zuC_<`KAzV26REe8J;IH~Xj@8W{C4&R>aAa)CYZEuQ!H1ZEGd-IIvPka;b~a-8lkkN zx>Z}oaSX<_@WFdX)+Zt=XSv5^Z(R6$rgapM7miW(&;WoR?NRUJvJBmC8D-U?2qt0+ z4bdKy2q`+FnouG&pNObDq7||5e^do9Du_k{Rc}O08)CtIm!~R+5ekfr&CR#kf;@I6 z#cvN8%}zFgp4!EX6SBcvwGI!O`5=SEnT_B#tU~q7*=4N6{o>w*5KR diff --git a/portprotonqt/themes/standart/images/ps_circle.png b/portprotonqt/themes/standart/images/ps_circle.png deleted file mode 100644 index f84f7efaf0ace0b53cdb3009141ab05470e88322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1968 zcmV;h2T%BkP)XcCxj* z$-KYBi;a@h z*xkd%%i!ed(be0&!N%F$;+2=2h>DMHaCBN+U{qFGqNJ&NeSxT}uxDv)wYa^vy1=io zwqavuo1UVMk(G3Idx3+9TwP$z(AB}j%4cY6$ji_-Rii@y000nlQchC<4?iz&pTAGv zACK>Uug_l)6)UO$00vx1L_t(&-tAdeTk1*_B}f#M9#B!Fh`wiOUP7 zw3B@`6@~*+O7dKYq>_TCLVM{f0%D}D*m>9Kn@pA>bCb@o|6c*k*&dDt*2v$&LAgTq z&WvKIP=;S`^W@=(TZ=>F#X(U!7$`D-KxyCur|vk2Ir0in+{1yDs`^l)cu=bq_-{Q; z9#V)fvKta2NB$AN{Rb!-YO`fRQ*Dr+vcx)%geBISNa!W{(UOLv7hY z#ljSrUCta_01}D8M=D3R({g|gX2H&!!0(17XO4xVynubG-*SXL^0VSKj($hs;v@MG z+Z;!Rkz+U-Po@Nu@n~pdK~Yo0)+ZU$>p)r9v960IT|LjHCd{5q8mpr$lf;S4FWGx9 zHb@-_!g0LJr#mozF|w4f@oi%=fS*vP(I2z}7Ne;EqlNa+1A65ZCm8Hu0UJT`SXts-o7Ou4Zd`##%qJ&=!uvEGNjuq!J^jD%YGS*eY=g(_?L++9$^evYeQV zYr-0I$-be9Ud=&r35(Nj9(~6v%317?F*)Q}oVDJ_18llKh%xP<8We{qX3GZQ8U(~;3p-CP|`elK*AYVDOPV*asRVu{4 z5<;V3MMBzQzBMF**xV%`%24+&l)#esERo$~aOr;V+Iq9Qv1Yu!kWoI-A$dWhV3Ii4 zou!nOjcajkJl9i8mPU$K;9M7wQ`kj9Ok#WYF8Id~NgW;XE^x0Py-JXO@D9APzu}3% zEM9f@3OXkl+mnoWtsY1mkt{WmB0A(taBppsEFBtt%z0Pe+Jz%DKi2g)apuCryH?KP zWba^H@LK)0C&5+3=iQy^Dyp+E;NR+!+f_!zEAdSv7up!Y?eZ!D2*47-v2Pf<= zR7#|wR^6TIL$n~`F0H=~oOsUbw1ZwoW%sS{(hBOuit+m0*xp%Ml=R^Gy%3gnTp>|4 z=v!Q@pwi1&-&LUK&Wj5#+BWbd5u7m>-tx4*TylkK8E#)u35kvJg}$StJ25SJxZ2%- zrKyB`(zPX9^wxRkT?HDW^}gmAP1>L4Em}H>bq@EOC{ROM72GRL%qoQYl~uuQ zXdRm7_GD}l=4EVdP-yFLp0a8kU`~(#FRpGkTJxdy&CB6@yVXK9YK978(FBnq5|>4| zo%=Am5K+yTV5PTny5pf3DVC`qvfaqzmNuq(^SjuHTE>meQKPdDMOnKWZm2%NE^jL4v7@9~t_`t&ga+CON#vVbYFl?5FVG8v!;&|pGgR?ao zbnJ2KVC>=XgqepGb_|IY&lHR8F%cQykTFrneutrr)CxtXqo{AhaevJW;&(7pk7&a| zGQ{cGbM)@0J;;FY%+XdwHn7|cY-V1afq}#65R%N*Qg~K$O@^te1x-`MPn0mnW6I6Y zmX4muSeVQ@E2?1F*(9^n;;TLwc0PWV{M_)FjL^H)?`?{QYS%n`4tbn|ZZ*Ehg!~m| z+}-L&O^>~rI)E|yJ&e)6$P2QoWesSIEdM={mxZ3!<-)5+P<_xP1 zw;XJ)ihP-EnsS9qwy5n+vY7(g(p<)VuyOLzg1e(osDmV7BCVP;6Momn(`{Idn^3Ad1qy(=2txpijv=et>NC~Aq&@2r0%pI^k_ z_eq{#Lm;xf$o9*TfakX%c_Tp$5wGMq;D7`EHT(w*tU@IylABNf0000 diff --git a/portprotonqt/themes/standart/images/ps_cross.png b/portprotonqt/themes/standart/images/ps_cross.png deleted file mode 100644 index de8039c707c5035c9635668d71fc7f54eb01f952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1786 zcmV=FptiHj<;NxbaR90GHV`pw~ zbZ2R8j**p!ijP`cV5qCGTwP$b`Y%5K000nlQchC)!0DSj^h)9QiXNhoELlVITVkbrO`nv%*{@K7p6PEr~P#lm|N z;(;^AnrW1b{kQWyF|m~!vblWW;>TJp3&r#b6N~STNC+)5CHwkoxylKnC3bZ;_eHrV zC!j*bEWQ=p$z}<(RJJ76yS}-tRH`VoO1&X|FCiwhL!h1GA1q!XpkBLcZb+-$xkgOB z%-)T74JtHMrpp$&sWlZ+yFsI244ivo1W^sPLZ`}C?DZ{cfO2mQNBHAIoxN0K$^^YY zm>%T<)8c`xHGUkB4VhSD_NdCd(`A&Hdj``Z12J{|#MbFgiBzV2_P7F+i;O3~FrR0@ z<1?m)H781$KQ4qamtH6lW-HL6-U3fdh*l;&h&1rb1+$o|NIqo@2&-FAD{s1my9A9UyfIMn2yWJlrLOT*~;${ikv~7(O%!mT`yen;Ix*M zqF^w4L5&2}p3WuLH2ZD^(gsDvAcSV)878nZDTKR(o+Evtr>GgEj|mLcl3u0Y0lLH@ zT8f4N`|*iydcOja#=JEkI*N`#2DEgci=-8hfB~|i=okQj%#u^=`4~S+XnZKLA*bjV zgkX3T6)|jv*eFWI{*V<#%{Tyr`&^on4+Rkn9c5q0nxUcSA&?)xF?9`ejL%OUg@^FB zB7{wwakU4(bQHs8^z$m>NuE}0`&>t{rIk}vg2W3$U(3)^3<;9eDqU7ajP(p1WyDGe zb*hi@BfhzPXl><06~%aH1^CHGJ%4XtC@IhA_nh+hJ>_RSb;^(!YX&)Gj4n|Z62d8s zO?&;4<|`Qmtkpo5gfzt+T(a8EAbwTkL{9nRj4e}fmynmKAF8~I6k7#3Z?4PKgsI@Z zbEpCpq&&9+#a=-^qT5RvYvIi|%P+n*uPi@4mWrE$Hm!KXhQZU@- zPWat-=B^d7m9|<9e*X=cS{`|RF`as24EV(~Z@QSWC}zDIYOvA73uCgt@MT>beRGZ7 zvD3U+FrK?-K;wfo3)1Fh0d@=W+%03*x=hC0APrUMS;kCL9uS(NmACn}a}c(U^c%1oH`V;i=&mZFpty3JGHQiqB#iom#cEnw?Z@9WkZ3%Iq<5 z^7DySy7WUMB|bh&?l_{0pNqMfYN~Zn%!p~@?(@0R diff --git a/portprotonqt/themes/standart/images/ps_l1.png b/portprotonqt/themes/standart/images/ps_l1.png deleted file mode 100644 index 709677fed2957d8dafd454cbf3dba01eff58edb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcmV|Jks?Kk6e&`qNRa|S ztnZ`u59Lv&N=7WJ(w%s?Lt~2^P-ahArC<>eb$*H@ zviI6qDQ!Dw?6Di-?K+YvCdN{O4wK#+ifjS9e8K<wMp-YA{tqCxCWahqc8u6H<$6NtR`g+1}5rOlU&gBVfkC(?Fj zk_kGH*<3I!fSud?`&z#7*;R~g`SxSlWNFuO?ibD6s_!c5AH%gKG15Vh$9OVH-?zZo z97HgYR-83EvLjqRY0#sJhL$iz&a2=V;?=sr!y87HjDZ%hlg(Uu`)UopX=sXo;Z29F zghX@~k^DN3fEUd2(6?gu7btihi#Y#~*wc9r!cuyl_ zROY!|1K-UJs;aK-ji^@%4bb`IC(=$pqNZ9qa7&BD^XK!NG6#AzYCs>eVh^TbX~b;w_3CTWW5{d{lOr^4U?c-5&+F za4cMAJZbZGUSjDON)YeqvrU%S*=uHHb}3MyqwNJo`!)bI1Wm6Uu~8phd>LE%Q4rM+|FG1&iQnY z`sMqmC0H~SN4J(>%hfJW;^2X$i_SFzoRe*E<35v#pb@)+Ztu0$be?T{+d4G9qC_b{ zCyLIHArpqaa^7U<>CuX&k)Rdu;8-@@eT*5(zJY6$z}Fq*#BBJJkd40p63C8dMA1mp z)A)3!bnb0K6BH@0WUI(v#3bm5@9h3Gs#P}OcGYNn`%9%KzI89&b%u diff --git a/portprotonqt/themes/standart/images/ps_options.png b/portprotonqt/themes/standart/images/ps_options.png deleted file mode 100644 index 0a87765fe2aef0c9da62a30daabf28079fc839d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmV+=1={+FP)F?v`@9ysI;^*z-=Ir9XU`&wPD>+u!BQ(AC4n%e=qD)Y#ofNJ`-3>d4E`#mUaz;^@!Q+1A?NO-)eQ-QvK+ z$;!^tzQM-c;^)uP*wNM7adLLl*xrI|yN3V(03CEvPE!CcKM&uppYI>PUypB3A8(Jp ze?Jdj&)=UerL|k3ngCm@R2?zuMQAEW>A`tMx zga7|`c6z1>kc@okX7}ye)Hf2|6q)L-nlzC}h;3mf>c=iOMf8gq#2z!rzNy2`A0YX9 zz)P~be;CA0SgC&#yWjQ#l6;Rcll;(D7jruvYWsxwQGV(;_PIqlhz1dsYH0PL)ra^8 z5Q`_00K-Vdw!@IlWUUosjVT}xlE_hnMatfD z^zR0az~Ekff*q?cJW4_=F%+BCf<;GTX90I4K2MsqeF`LT8VNYowfMnP;21bdxWIZV z?v$YMY4wYWG-1hA4##PWu3$U z@uyhDBvJBMTNAOM>mzxAN5T3c^j&_GFMJ`$IU1om4vQTO7#`cy()426WOr16>Vui|RUwm*ovM>gp`L*3!*m0$=Ht?pndb2OCYk#9iC*`6 zWhyM;VtM60_DleRLIJVTh=>U1B#v5O(G7GW~i93s3h88U@Q@W{0c zlN$BVg<&EOsLqBkDKLadSF1Zym=w`eK==1;g$cYW);~EsdSOy$2$Krx?rsW`;8(;BM0QJSkB diff --git a/portprotonqt/themes/standart/images/ps_options.svg b/portprotonqt/themes/standart/images/ps_options.svg new file mode 100644 index 0000000..6b6e985 --- /dev/null +++ b/portprotonqt/themes/standart/images/ps_options.svg @@ -0,0 +1 @@ + diff --git a/portprotonqt/themes/standart/images/ps_r1.png b/portprotonqt/themes/standart/images/ps_r1.png deleted file mode 100644 index 78a9be3b240f694ed31741b3400a97f8a831e765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1877 zcmV-b2demqP)=0UKCLvGf3lh=~b_ zh>gf_=|7tnJ-I|4e=pkUs|P$-p$iR37!nf}E9S))ufHit{bpf^BbZGlJDkHj2IA1omCVuq9|K^ zEJNDnPua*{0zMGo;}g*@pc8PDRmY3l`KnBr*g8#PV?<+}&$ZKr6Thcn$@f`>nQa@C zaYB3|e4vl7>1WfRflr@g{HK<6$={6>IZ*HUNJhso+W`378fBSD*a(oHwFZbe4*G#U zJ$&siF`kwP;`6+)7gLG1JGSc|WNdsk(p0n5;;^uA?{E)q48oR^v3!G;^>nEwV~Pgxuou z0gs**-ury647#H^PjX&?$Xz4E=RJLyOd1@k)Ulh!Lwo*)X9wX#%h0eCcZvtphi!c7AZxq93uMpxgR$fWrRJ%e=l zk0%J-4`L#~QO>on^P6~JJ5!H&z%6~Qri$|?90TCu8d0(5Xkkbsnk#BP#-#S>W~lsG zTjrJt%gjrwqe)v?%i%98qOp>^+La&tM5@x{h!+!-?vzMW!J)>{0q~oOnkKNvvAkH{ zpvzo_Yjv{G(O2bnbxP^yz!m?!pBPyLY2yTaegt0eW9e=t-C#D_;3dBN1)G0}29Y$Z9%Bg;nN4FJ2IM9@xrHFxReOM^H zc@yhM6(asLk!}gs8dkix3p~LALb?TeB<7CgOUFumBrqVduxpJ9k0ZG+wippd%Xpfu z-rSyjx;PmJTDb)LN?!J8!6k4F2qlqWL8#{tNuMFb86xF+#E@6gqQ?u;NLQe=4o@HG z6)WPAi4wn3u#Yv_TVRiJl>U2DM1*Tbq?^@bP^tbMYeHpB!~~I&t_6upCf)h+L{U+b zCQmBrVF7QY6558gm$#Aa%uG9)m^U;4d(L{$pVGvYyOk}aj_$kjmd8<7_-;y%ya>r9 zlGnF4fVDY9UgT)#s)T{ePA-H`z#_kt`$wV*4WnT+$A<;tvoiVX2j=)L;`I| zj5B%b?zZVRaDcZ;kKeU6BmenG4w3i0Gyw;aNT6A1^{{9Fq0(cZ$J1q*ex%EUXI@Dn zccF=38wh~@znJa_t#HKwYslgrk%Sl1@5WpX?I0?AvU{`M##^S zMx@bz_^fo#9$loz*D`m#;ibCZPQ@LTqIBDm1`2thI*^`5Be^IVikfjh{g*o}{yI*= z1G&oj_%v_;n@t?zN)Jc#s@xs*$iU-;>d?JRPw4;SHYiFFGoTL+z$QD2`6KqVo+ZdU z`757jEgGuV3Aj=vNkmVl;ri|3X_UfwExV&jzoV6N2NT74NKDAEghm2~^~}ojR!g|U zOl;tBGH*txFqFa|4#Q1tuRf2|5E1q?*S!7a|D;kFKiPY4|L^Ux@f~1?An$9*FRUCO^nu1NEM`9)z z;uB2O3(0f;%zWz9xO95_l{n7}hfN%uioME^gn(gg! diff --git a/portprotonqt/themes/standart/images/ps_share.png b/portprotonqt/themes/standart/images/ps_share.png deleted file mode 100644 index 428f031dc5d8607992c06230368ce9d6b02deceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1401 zcmV-<1%~>GP)F?v`@9ysI;^*z+=I!F=I`U@?BnO{?c(U~LPA18K}AAB zL_vl%jgsKx>d4E`z{JUXeSy~6;Ig&5&(qn|*xtp- z&e`4K&Cu0NO;FzA=W%j&&(qjQNJ_rJ#zU+XyZ`_IA9PYqQvfeN51)_kuU{X(e{bK< zPai*jzn?G9-|vqPPp@BZw@U#o000CWNklriPtD%FeF~&j% zVLuim5{<5Z2NJPjc#u_|G&Ub(nXxr|w{7sGEAv5kv$0Jy$QIK}(Lt8satnW6ah@is zW!={6j1w@w4u972t}K4Bq5rl+(O=vCyc$R(u0dkL@|U84YzFwkHdx#M5(9~$5;9TB z`YcG4kqn7%7~(S^7E$|p=Q2$fo1Rcq?`D!x)Lidutop{%qEyK>7LOVFAsW6BTmQj` z7x9lsByBqdk+ye3La_IWzR1`KdWdu}7}?xDDa3xRXo?IaO2Rv+($TSq6Ay)sn%%6( zSgxEpUYu4+^2m~;80D&?N3ASi@-%!1j3br$tj^ka0M+rKCUJV*xkfP}Y9j~3j#0TlFs9YB_v0fVtiK!GMpQ4|8C zUx>Wzj?1HScQ39U`28yU38cX6LXIwPDq#Ha$@Svt(c=Y5$>BgiPEL5L2go_aaNTD> zX*4DG85{`cNsku-7%#3rI&iDcrv+-obunb{Sbx?)+%~`Us?IBkr3Cu-b*2!0U;wN@ zZ0sbKc%nC+?=Ar10?3);9AoFv1A%;lAjmtvS$CWsNDBo>!vxZnV_yT_C_sRdk08j0 zn))J=c>o#mJl6)|-2qIBV*U`@!lzPHK3x;@N+fgGVXUfQoB{ci%#W}d363?I*IqAD zzN%Q}Z6(4+=Eq8jv7VAtBM;2CP0WL^l#$O9`%1j}Jm0%JM_5jF?4F>GG_e7SGQ%}O7TFRk%D0($9Pi-l!d6x1GDq;D~QU+8H#NSy8StYg-mbburke?IuG#;pjiI#!+ zwt8ThP`spgGynLdPdvE%h2wPbucuk5_CknXW=#I7DJLHJ;#g4Q*kXYLYkNzBGX51f zuiR0T!rndW`T|W6g;Xi_5*g(w=W>739`G2qfT9$q0@a(~wy(k%(a zT6j`%g3*IIu@QHUJ diff --git a/portprotonqt/themes/standart/images/ps_triangle.png b/portprotonqt/themes/standart/images/ps_triangle.png deleted file mode 100644 index c8b579a99c3f0f1919d7a12c75c59d0f7acaa65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcmV+?2iW+DP)XcCxj* z$-KYBi;a@h z*xkd%%i!ed(be0&!N%F$;DMnk(Fm@ZB$lTZg6yaeSxpBwzs;#bas29q^X;p zqG4laT3le2mz-Q(V1a{(&Cu1s#LB3vuxDs%$ji_oA@O7Y000nlQchC<4?iz&pTAGv zACK>Uug_l)6)UO$00q-YL_t(&-tAf0R^mVqB}f!xi4agx1d&C7$SS*vijFfbL+zNxjVt3sg-HrU|*gAz9JPxjx6sM~usY^#y2?_}6fqkAZ# z>NklL+l}uzAfAYQog!)7F`eN^TYugC8jYfwJ7x52Zr_4jR?nD=2_-m3L@4Uua396t zfl%5`P)()S26;WVFGWtzv!{}Qbfz&e@<(F7L6g{IqSVQ0F(WMf#PM5MIeA**@MP5Cx(|v}c0gBO(E}sC) zRoa(b7)MTsF`i5ZQcNdfAxzE>i$-+?a-6_t&iVsK^k?8{V3{kbF;AWxHtkUaF^qvL z3=pOw>=O47l?si)E|+6G8hF46SiqUP@NUYZV?mTxz^A4IPnZ%vs~to1dkU8b&4*xf zhzx{detm#nJYWn zJ|;YiD65I>^R(c2!d8j#OWea8f&~Q0bMI|q+uR9~J8ZShqb2WT73x}WN|B5;#CG|y zF!2LhA2LzSKon^W$1PGIUxX&CXW0JdPx$+crZFZ8waSizwjd5m5O3N4=ND*;)IO&YLFUg~1onR}5rsI|p3Ko8p<-Gh;$~(J?>vnR={2|yQkTq`zA{$_b8nX7^Z+DC z_{ow>V3IkKNam8{5|{-2YDsblN+Queo?L>GNIVHoF3uzx&ySt;IFZH#mRv}jba;l; z`~;&ky0PTq5{zM9MZ8z5wo3lDG*5B*-?j?BT7BoW#Fj&XT&^WZdB(*QIb;={EJ0dQ zea}TF4w`gJ^+{e3*$=H-=_zPB_pOgZE3qn8F4sct@kxTmwJ?2Sc0Z7oca}n;Wsf*F zJX;HirDGux;@1XiN%XYvgd2NF)O9E!!6+Z(JL)SZzV=3PZ7=RV9Ev-Q>x=l;cxnw2 zS8)HD@`~H3OjX3qp|KL>=FS6dRyP#$?%?U_&>#55$Z~a1o%;k?=EW`lBr_&R7Iuj_ zU*e%Gg6rIyUk-y^=V&>ky0tvc_{DVOkE6{mre`jKFi~jlhA6D*%Pjpdb6?uUac-_{ z?eSCPyym^>AsQdhETAVz+@(#N5DEjc^gPSb?{R}rWkuYYD=Fb&70*o~*7TsQ73x{r z?lTOtrBAgmL_(fG z`)YaU6&=%Ns^LJ>H{gjnaCGy28qmD;Oxwb=*V!~AZq}#0)Y@{@81~+NR-%^XGi{-d zTYr$NZfm^Wd`|kGYJAWR`I7ax$E~+j(Kl@yGuB3Lur~S!eL?j#tYI1x1A&5cAW$z@ z2LirY^}v#}k2c;LpBXyur?%0CUk=e%CB7^sO{bM&sb6W=2xt*9NpZmVs>gMK|$c z8E2-xKAR0E_Z*S@p7E~|iOLwF5he6(h-se(*-=%Cg}xg~SWB4D!b)g^4L11S@E2RW VJgG$b^Sl56002ovPDHLkV1miwavuNy diff --git a/portprotonqt/themes/standart/images/ps_triangle.svg b/portprotonqt/themes/standart/images/ps_triangle.svg new file mode 100644 index 0000000..c3defdd --- /dev/null +++ b/portprotonqt/themes/standart/images/ps_triangle.svg @@ -0,0 +1 @@ + diff --git a/portprotonqt/themes/standart/images/xbox_a.png b/portprotonqt/themes/standart/images/xbox_a.png deleted file mode 100644 index a058ddc92b48436bffe8fadcebe189ea95c28158..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 zcmV@+9UUkrC>$IdCnqO2H#a~)KuJkSPft%(RaHGbJzHB_ zVq#(}EG#ZAE;KYWOiWBhMn+yUug_l)6)UO$ z00o>$L_t(&-tAf0R^mVqB?t<#6GQ=lpePulhzjEZj;Mp{|9{WWUEQ5ddPxGz!<@r? z@f?%%rS|HoSZsq0Hu(Qw#2Nm{`CEzPcF}|FWMXTb3_HnGQHoS@O(LatGer$D+4SlZ zIsU{_nV`h~cXu@!BgsxGo0YvPhrNnfW)HK*@*D}OsQrVg6bJiMX*Z82G(dCRzu*hfnP2}wKzmxnO9V^)wVhWR=d^Yl?Fbr z8;t{-qhY$o99hR*AC9df_qmCMNk$>Tax_ku3~hmd@U)pcCzvH0(H^B!@_Db{)u7)a zubq}6*#$VLInHc)-nnyeN#G35>3{7rYM3Z21*|I~N7Er^T@5WCuCK@=hv@7SYb=x} z$9a3)fEc$IBTIsja|^=UaCXUrh)M&;AmIROjIS*fMuRa}hOnS-^C2CJM7f0z_%*UL zxC2=&68)jVC4uuH(G~vu+6n-ehG-0D%$*R*B94VQ#`jhrE;ttKVyO_`3kG?>dI-U> z@H5Qv;F?7nlWFt@B$M8;R9BA(6RE~*2ul-rm=PdI1C(_y<(Nz{o}?@tP*_86`?Tv> zE%enuP|R;2c@`d=yJo5Dg9Qmv17#tD*uqgW;F!L=3IQ{A6;{((1-lkhsW$pycLK>9 zA({RW9$mUId5A<&_HfK1SP(}z=!tSn=ZbLYF{|uow6)I!8H<7b$VjFWORBIwi%3=d zLfV4fM=pr<;*z|JPf@%4EvnLoP}SAJ9;y{Osb%CrgZ?`%?b} zyveNsiSl!CR6?15>r7iimH$2yr3qea4Vk`>f8~@W!D;J3t}WufPvq~T_{NxKuoGpL zMB&cT?=O}Aepw$RAT4RwL&ZmDsq9{2_0UoI?>Do}MCxDQ#3hC05lI=p(OJBEsqo*q z>t%Ck)I*jmD@d{|6pv+fWa3)lm6(3!e+OmmV-}8C1qqZAT(kX{b4mV_RwE()`!WMOE6U1hB+pYR{;ZSa^+irHk4jQt`B99M$y9-f zB2GRP{k=CBhcf>a@h)UYeK5vZ7a^pT*;I)Sd0Iie#8zN}JeT%v7D}msdirx%<&HcLk=e zUe^tk??-^poqUi7-)@jVn_AVisfK%VutMJCxT-j2X0PiS?%=C~2DbO=kkro!DlqK8 zQ;6^!xTlA9sDe&O>o4)p7FC^4*K5z!)Ty#|C>b>JfT(ZU5m+#X-DJ^TOb5*)$n2)o z?aD6@@=F7aLp;UN57)Metg673E{t7ZB+;(2N|Ff}6K7q8kD!LT&^ha|7k=;u$w diff --git a/portprotonqt/themes/standart/images/xbox_b.png b/portprotonqt/themes/standart/images/xbox_b.png deleted file mode 100644 index 0c21c3f145d8f4d7069b38decb658cca76d28aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1727 zcmV;w20;0VP)@+9UUkrC>$IdCnqO2H#a~)KuJkSPft%(RaHGbJzHB_ zVq#(}EG#ZAE;KYWOiWBhMn+yzB@ajKtP#7LUc$-SWQjiH8r$7Jz+~rk3&PNK0eSm zI3Xb+$2mEDMn>5-Hfl;rBqStXoKM~W000nlQchC<4?iz&pTAGvACK>Uug_l)6)UO$ z00nnRL_t(&-tAdySK>SnrU(LZr-%XqK@qT45fv5$5#D_P7ybXgXUU~$dda20?m2r7 z&$rSv51GkKCeMUIM;vj)zXvT$@ki!Ai9}Cx4xC0KCx>K+MdLYN#G?mVQsOL`6CjyN z>`#$qXUrD}^6al?`_X7oI#WR}o|hP$7xe;tnbLOWh**ZYxGeeN^1?D&Y*$NV@C0T3 zyu`)1UdE%+JJ~FYmr<^iB&cATRu*{$Z7qCCHQ*l` ziAffV88hI~j>#*y6mAViJ%Scu0vXBTf45sY)GIN8wJzvFh66dt;-|}CT^fAP4Ynm8)z9g2b z=bwbd9V|FeuD4S~xcRq2t<@KjfL}f&eQGbbztUWnptSYowU&ouj-NM59-sJdE}q}>^gJ{rB;7g*$}+bWJ&Tsz6pQw3k?RQ!S^iAIT@BuR-( zoU#o@q?Mv3D3*i!o9VaL78)&N`L%Fjz_Lr6qF=(cE4bSuLrc zsb^Vnkg&WyaHJa|s$H`Jp;A}HAwhP?Uwt(_MjH{`u4Q&ujz~xeNLMRcf^F9lI*neR z5{>#j!!2~)mV*e;M0&PZYGaXP3u+EwSY3YB;!g4TZ7iiA9O>X)jc;40Zz2j*J1d{3@OFDRKBPfTZt8Vx5rHtY-zemR@Oqz=Y zVK1mc+Gm*^TXfo))%nxg{tRtBZ*?1Y@6VlNtR`PsFS;3uR?lpk68CG+#+Zg|eyvli znRaGo|K4mkof9H`nD(z0iSroZ5iN8uB(mN{c08I*gbocYoJ~<=!&>NwBaZmj@EfWh VkgFp>C$<0p002ovPDHLkV1gn<-Twdp diff --git a/portprotonqt/themes/standart/images/xbox_b.svg b/portprotonqt/themes/standart/images/xbox_b.svg new file mode 100644 index 0000000..8ba57ed --- /dev/null +++ b/portprotonqt/themes/standart/images/xbox_b.svg @@ -0,0 +1 @@ + diff --git a/portprotonqt/themes/standart/images/xbox_lb.png b/portprotonqt/themes/standart/images/xbox_lb.png deleted file mode 100644 index 70e528c7a7b67c0e226cd08cf574bb0427d19959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmV-`2Y>j9P)6+%_eP;08xNZCewj4a^hGvCGvEk!+%O7^=A*j*NDxK6sh;T-{1MpfdT~z6ev)j zK!E}U3KS?%U;!LFzOUa*q}|Z0SC8q)Bhhis$R6iT_sv&7Dk2A;%2Uyvaj`4A_lJ;} zXGZeO*I_nfj~?fuKlu7y5_#~6eoiCLqhw$7WtZOFP!cnpx|@$ioRa9<{oCFTmv=~{ zS+DkkG)inyK?59anQ)7f{S8BU^yJX#ivG8+HcVvyAL7J4)~Hd5-LU{6*Pr_IMBnbi zYQuz>uZLh4eeMG+Cfs7@rsS$6`}D!-E=$aapE95LX4Occ0cFZmfiVsf^*b{f98E`3 z2M&~X0X;bcdd@IAy_h0<54FDkC4EQPkF>EFtKTa_R}N)Y>&}jcF(Uha z7pMM!m0gwiW#FD`MqDz&N`1e>gb5OBQR9onL;3m5SyChvv;Ct)(^KXbNj8{+&=g~& z(h4TXg~{;b^_M9`4nE~9uE)=*&3*JWmZFpo7Lth~n3LGa;ETD=E{}zGq3n5wOXCI& zEkT5P zTP&`yu((>h+rJtGH%{~HN&*zk?=%!zuw1zQHh7yTR=y{pqv;Erl?Q} zc-e#zFv8{vurh}VjgK%0h;YJZGfZp$r91c7rm6`2T3!3VP3o(rl#E0_njb7|Y(^ff z5%$b`Kk&i-Psh(IM$kk2DU{*m55Km`V#{t4)X*rQp;OB6xvGkiN#XrXL@|?V&p72V zNkl50a6AF1d+{otWjldVMWACK5E$q)JZcufDs^6jBA`aavklQm^bvnH=%3v7h%Awf znS}hy@QiRuF0B~+8P6gH?3-3Hkw(;UOci(+&%#NVsDJ(#Yk+|ON)RJg!3=3qN~?Z- zBIU^66&8Op%+RGa3XObCjlQ1YDM9kFMuX`YM;07%$OX@MzaoM*P9g`qsoL1fv8@TVl%*GD9nYr{nJ6}{}5fAigvStNsL1zTZL z3Rm7u%Tc-Df-z8~okLySqfdrBqD2}lkuu<&NWkl*viKzXtW7|DuA#*~0d zChC^0)K1kk@7PJa@;jyK&ZdYAzTWS<^Y$BMPT#Yqh@?$-2MmB3JL)G`X9elL-AMTD za^g1FYKq9m7=V^RlWF(seV{OWj=@eqi!uM&P#!sVi8#u*?0_aEY%H8P&6+5lZ_Gy` zCCckB8T!=`N)xxESYnGE8q_hVAh=J6)mqYvTsJCq*}RB!wG66kvrB_2Tbr2)EI{Nm zXzz~F=D!RRbFaxqG-*-8#JE#Rv3Gy_N}l;i?8?ioFZmCz7{&?)H_ue5)1*!flhVqn zv!&+u&AQq1o2OfBN7$CxrA$4gYO-;d;4oRJ|2{R~y0VKGq4WRq1HPDB{r+%SInlem zr%b4aM%dzwB2=eLJz*7oYIc6#*TH6jL@q&V!CE=E1P6jD<{S^GV`8dh>MR&5#m2bp zxwR+)F!QpUv0Fat5vFs#9}l!2w}*fP*&XcWd&rRm>F?yorHWd_qqP0xFO)lSnl zJZV(WF;bUEr%ec5DW;=m@T*s$GSl)i+Hla!H8F11tH*OT1SaH^=~`7e^Ziq`rUnUw z)*HW9G19M|y;b7w;13JU@b~{rhmJVTW4DGfKe4hl&|ANM{Q2N-i?%A1=Ws$twzF&G zw=l|T0dCREA22NBad6AP5+&@xW7*EDQ8)-sb<)r?)@cqyUysO!ftA$adk;Al4RMrT zrFeev$q}LVfl(lN%G1}ME#3vofCrywN3=zo&f=Rpv&7`E9;|bA)T~!JdRw;X(9W`d zI9IRhD7v$5W7E97hq5g?q9KlCV>w!~@0`Rp2;SLz_29AH(2hVf@ diff --git a/portprotonqt/themes/standart/images/xbox_rb.png b/portprotonqt/themes/standart/images/xbox_rb.png deleted file mode 100644 index a05fd574e10eee2c10ecdd58233311d76260d532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcmV+?2iW+DP)1uSGah%+5~ryUDX!G1L^s{U5*s$CUb7*0fVqQSLbwCC0@6DO8#Zi=V8PPe zAfX_2K%@j!P3x$)0FTKL;Jrrqe%s+xw3Y*?FopMU!Uw)4&n?$IstkBK6(C zW{*Z>foudF(K>$dP7$f^1~v`R3~XT+`eN7HJNfa3iQKJK8@e6XONgJKLNnbe*GlC6 z!@$;>Vv7b1wp72RQN^H&2KWrQWSpSVx6=Y&tU6>tw*#97wu;|p5lCXlIeru?2d}Gpfv$o*hRD+7hk7}fw}N4k5ht$HW7tH-l73wiw0cD(=pJf$iHeB^ER@{{;RJF z5UKC_P03Y-0f@oW|mO6khxG-+#=iCN;y{YKdpq+LcAu&@mAh z807yq6N?%a8{wUY3>e7kjTjNp;;USXeE2zEFY7h}1Ek)CvfIoPh~V;DNZ@Uhzvkj( zj!69r4vGmr5!gWF1Z6U8{KXtTNY!^8VA`fGzpU zLw=Rd2b_oR_P65Bm9U8QEKcJ#7R!daj)jRSDO7XcPZF5of*JtT&?eOwk&V5#&$C>s z6Y#lf)wh z8dISs4&$z@pPmxA6LX^Je-{}2x+8Sq{CkFtE(R- zKbzC`4+<7Zk6eW|KB@VUx)+9cEHw}JfD?{0bYG#)v9cvqiF6hdp&*gibjc1sh0R5u zW5%5EgiW|oZAvz^Q4DmiBT(N+*Z4TRH{b||Q;t^pOU8BPo9|^C{%NY_KLFt5Dyi97 z6Orj)G#eM&RH(B9yqJ5MUDZbOj=x?alTP$3{JhC0^6HIJ2OzSEtjo0?W3errDlH=J zagU?iSTQn*`0XW$h=R>ul)GNW(r=$*;0>ER0UqZP(PxPG%hnO-OReflHiJp659Fs) z9UwuL2btQ6|~uzgC)S=SsRr=0Ns*htjx z3fsUY52yfVIeDv+ut&loowX4GmzO*Op72ko%P4EXm|t?D(wrd@*-sp1RQBt^k<{y> zlxKhOb57LV3Ki0mG=iJ4NMsY6m$<-~GX@NlT6ira@;aOsqX>ERVy#5rNNU~UTsAH0 zlZz&m@j6_L2+>|kK|G=#uA;kz+d~}<6Fm&{*D`O8k3&Qu}%D zx{UD`Hjs-?Yh@Dg64|AvaLA;OhbJ}e#cOb;ay(o-hAJ!hU4Q@YZ;GsIwWr%zZi2`u zCfl*ig>%_3cydk{DX&J3Sf@F{rnS+GeiO>T6#(DiJUCGkTxceZsQhOx(E*G z(3$P16p4uTbYJ(9+e^<}p4@bsXulW&M>upiSQHHkMEv$t_<%FT!&g486nLWhHIemEZ(E{8qFgj<*skwv((93C+@CN7@hCL6^h%&gsfT?myI=Yi+x_bOHy*Z)cqr zT@jI@r-PI<-@&0H9M2hc^0Uv%h(P@dzFy{ZVxo9;gLcpjI>K3n+bl^0?$$OA)eitp zGELA0zpZzVUvMMH+~K_cPhqC|-jB}$YiQKCeN5+(lk_!m|E VV diff --git a/portprotonqt/themes/standart/images/xbox_start.png b/portprotonqt/themes/standart/images/xbox_start.png deleted file mode 100644 index 835c2ff3b98764dca554fb52a8805658ebb3a42f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2172 zcmV-?2!r>DP)NklD30`cIwO@a|P#}I73=NcoZ&fsK3H1o$=s3YCEa8(0PJO(@ zg~F06RRuLcp;T<3fkKSYOq`-8fUz;aD6xX6NntFZPP?Gu8a_oerkyCL;uEMCx=b*X z0nw9fFCXYnGiPM&p4#Dm)uGY<8@M4cVPOgjW*}M=P=Jb}w0kCAfqPs7x;Rqv=t-tP z)^93Z?r@i|L|m-ls?P^aFb)lOen4fEeEhw^5h>Ywyce9Yy%jBai3DV|p>=pxTfs7U ztQ)8bAjU9cM>=C-4P^n$5UJmR%B6+$Ps+Lyy6Q;9@a`iK08Af;vvzQHq$r z_I`G^-qoL_R;|^B*7Z_DhD$DT6}L&LObmPxA+D&Xk+T@$xjU9cpaAE<*qWzab3LXe zWVp*j;4J~hSt=NSg)>s5DsBo=sw)dLDh_d6Yp3x391Q=(T!0?ZB84c0^CaxqoBO)JO>`?JJY4qvbh!IB$1i-|v zuDS{_Wllty$p~w4KDLVr&8jbg&34+ zU3Fc%A_QC{1+sC6`zy`|D3Mr%@KM*KnE|%Bac7odM&P4Dd|W2A^1Iv(Tu-?4GyEnU zv8t}gA7KJOL4_wQEj&yB#Mx$)K75cX!tvBERf3pSMzn2L&~s-W(TdIoqRhB>BgHC{ zu@2|Y)ol{$H>KU@nDs=WQ)YSN^!4at8D$Z$%5295MmCK!ET z#^7pV1F`pbqGC{1#j8u%#&}hzg7wHgoRHPT26Fh)5je43l{%tFYZ-bkCNzW`k$rGJ zoc8RB)%?=i0Y8^}?J~FMGQ-4KCYKQm%j9?ZctHlwJyy!no5%^TUc3@YGK~xrOcmO3 zhEzcmD=_o;h*X}g9(V*OxJ38Bw`poSWnEXrGVP~{=kD@toNx!`Mbabq4D}LQoW%YIz=jd4;820)YpQuptomA=BB)j5hL{^9tq8kULCu$XzQGIOP%Y*R&V#p4qgh%c(Vx}&o}~a2SQOWFOrVkB zD=0xj0Sw`H#41XtqUP(?8l#6d!a-{&hUA^YAEK&hWbrpR;Qhv*=o536)SMZw&oovv(;wHt znjFeV=ufoJ#|hx;iaTFS{EY(~3tUXl_f=k;-PaG(UmVVI#Zn*klF#>i2$q+i33lTL zV8FnMbbVpNkQ)$U_hM(#QobCT(wBVA%^!9>to}F-=4%(xQVsxX_mn;VD@Y2e3Hsx0 zj4+gLWSp+O6SYM)HIVSvE*Q$tLOoOX5!b*t;G&bic9Af39gX!LYkhXt@2E_SV8Db8 z|wjA1~B5iF|q?MH_XN8_XiffN${It;(pkOy~WRD_drkpU3*=+)*aWkTuLt$+1p zF#*gDT8Z9#>!WS&W$|)lW{2+8Ms*vlSlo2b9`0xH4q~Q21lQbT&5+kyIR{;*V|S9c y*b4>187gmu1ix-p4CInaF1h5AOD?(m2jm~>c&=Ln@iJTh0000 diff --git a/portprotonqt/themes/standart/images/xbox_view.png b/portprotonqt/themes/standart/images/xbox_view.png deleted file mode 100644 index 31e644ca976032e798077f98f7f1a6d3723c31cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2205 zcmV;O2x9k%P)C;hdMg0j*io2-K$q0ERgyWG~EU}iT7={!`f)|o_|n4 zc59_3J7dSmf9ZDJi&5*R+YbQ9;X`)LPD4tRM0EGkJzrMU*m6vi&vBNKZd?q{mtkfJ zAcudBR;L{D$U%h)RrodT!PUo+@dFdaWKFrwSuW>VQgWWc0t7veuZ*EJ5f-^ zFQH=SF~Lv-L{D~F?HbQBXXM~Bwas5`L!70o*6a_Ftye7|eC)kSHF&lA0WGoxm{|k@eB8_ zB$16wF+q+NkjD-TkIN!#VwD}_OU6Gk0dn*?yWmPu^+;6lm|U*|BLNqJi^Uig^4^FF zw$b-S$zuY?|Ju{-j`73Nstm5j|3QZOThqa+>s)c@rdA6`EDO;XG=07daDAttq0gArMl%Ru!Jb6 z(VpJmH68J})j7xWz1IRplrw+zjCQCdz_`lc;YacV!7#Ig0azFkqyuvCw9`AmtUD1SM=yOt_xUK` zw-g2L004V)6_DQYml>o6xz4pCutDqFIqC`O4Q+}y%FP{j<(^bicyw@kv?Ba@|T*d5* zH&U!3IbQ!X7fwfR@a^0M{*KsOl(tMf4r=Imvm2ybhYx3Yu9=J|4bF$+X={;oZIv>j z?bEy^<|9@WU$rQ0FGzgYE3yxS#;-{$5LXpjwfIl+lK+^bTHdz_zB}>e(n3};8%PXB zR0+rwtCp!Wqq-C$J2H?WMc_pe*RW@~2}_z$jaXGoMtJB^LV?L$IU_FQK&(WpEEW(u z#D}^z#S&*xL!8(m* z4VznWI-n3EgYdzjlQ@nzZ6(Br<$b+GR|NCr)45r&Hsk#gd8#lYPCGG>t5u8t2`jT*^-H9sQ`ZGR5Mp2k$}-ov$caWWVI*?s&Rt zgr>{dKKw26>tBv&>X#{Vf%;Fra`{!>2JGrKxRx-?mna~h&P4>b0a9i^$R*Oq-UGDe&c9}b3CU1Fu-hzQ0Z+eCT+|*Etf^BdZ z!TO~0)w^#ND`yO;{}T=Wf8J125UTCK1cSuZ!cY-%=^H~WI`y(JO<6&y%H)Y z3cL6gFNH(3m@~Lvyn7zc(qf76Lq+#31(?959M!-C8X3NV0yN~n5Pe6iqJT0gfo`oa zdU#8(?gB>y=j`h1xM~_(f{mFap;tt1KSTIr2Ov=A5V*J&IJ^reXOafZ1VO-fwtdXo z&n(zB)WATLIs5A1wEv33d|%V8TRSy8Uus$_)sKd$BWVDX)fl zuJ7ZFeBUyOtUr#!`Pw>K$^qcuGvy-q2$F(wic_P55r$Hul-qI6;g8{D>{1`bW|2bFk!)gGLsz}W0){thKs7Y^VQXtqjB1U zz!DPuI1E2U%Y(afD#Gcx$N-3U^lI^xGNrVg=Fj@Dm;mMs%~Vgm>1a6@Sv*{s*`a&4 zRz5{D5jSnLhL>49gP180!8JEnBjWK^&Oyg*JMA diff --git a/portprotonqt/themes/standart/images/xbox_x.png b/portprotonqt/themes/standart/images/xbox_x.png deleted file mode 100644 index 4761f0385cebd4f903acc92def6732a117e6139b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1798 zcmV+h2l@DkP)@+9UUkrC>$IdCnqO2H#a~)KuJkSPft%(RaHGbJzHB_ zVq#(}EG#ZAE;KYWOiWBhMn+yUug_l)6)UO$ z00q8DL_t(&-tAfIR_ZzsrU(jhr-%XqMNqI-5f!!<5JlJ?)c1d$Lz2lfrA^wR{@80V zzo4Y~m~Sqb%tRtv*~(V_J<*~lzq0>MEWVp}$ZkBg^OFdB@kHKJ67e5WDY>7@D-6vU_d--FTOxKmLt9h3z*DCtG~F|BQm5#vN19+f@i=#Z1Pw<%Luwn0Td zC`;u)udr2_jX29OH7eDzk5m~-G*O>Zijod#kHQ(e-tBc1 z((A&qvqC7lFbr;vbCd6PVO?H2D8TK#*oRdKVp^v6!LC1pkqOl8+3y| zLqj3=OjiSDXg&n4=<7Fzk1*2!V>Dy#1t1F?i(-r(3}3kvP^gO~0(dVo$Rp(; z0LIGCD9WR47G+E($qJTCy6r$*35=O6EOp{xnvWtiM%F_J3_xiy!fI;UCvDGakhl75 zho>={32|z+GkA>o3I7@I)8KVXBZ@3o2*ij^F`8c4P9&G^wF`y z_A?h*T$Kjhpe9ZE>D4bwOpJXe$g}w0pWS3}tFT15Tx}JT=HDu^wSGpu3bvoHj~{dA zk^%BX{3|0h2~As%Zngx%rs%%Y^(7;o!A_-Fl7u^^-#;!8ZtR8e!9IMtmXNS#CqCIr zX7>V~hn71({pB(4O&0hUbK-);@&u$vSF~1ZuROBg&}c@qzn4M7CLUVjbb+2-qQ{#zhp!6uVm0+~6y z>-ASa-kouR$5j}R9Og$!oWMEt$t^Qh#K}@p-#deGAR}vK@tKUUfp0KIv5N3aEAPV2 z{Oo;~rWI04?D!_g3kg{ZF(?-v3G!B%Al0e<(~+^BymL!{RG-0u$bD!{o#hHB#qeJbn+Q<=t8#G4vp7=Bm3sLlzPd``SSGx^$EE;gOK1j%$jE z*9Tb%NsRJ^PHd}!7MOY{hlB~m-It=c%OPLgju&Sb?aRjBYDMrih`s^FGg9Ri8zygJ0yeS#8ecF-UbQ|E{?jnwv)$G zgqGfA!9Ck#-M#yN=Zr zF=CNGLi=hJ-mvZQMyJ^yAkh7wZ>~2wPb*;>(9nA3DD?+b%hsqn8pFZc&sxISe13fJ zg#e69_^HO1-KTF_ZiLo(7Z-fd7viCYHH`wQzs4)oXNJ1A$PjdV-P(KiUY3 z!TYK!Uq14KI4XQ&;uMA9Vo^B@s>1jzyWxmV+vk%%{mdKTOfT?hnRrJz2 zLW$4JRw?m&1KK@dAX`}KC`)0Snf?B3Hk!#RCG#`mUoDo9AtYj2{pTlv@Ie-hq<)(qTJ761SM07*qoM6N<$f@aYpga7~l diff --git a/portprotonqt/themes/standart/images/xbox_x.svg b/portprotonqt/themes/standart/images/xbox_x.svg new file mode 100644 index 0000000..5c732c8 --- /dev/null +++ b/portprotonqt/themes/standart/images/xbox_x.svg @@ -0,0 +1 @@ + From c8c45dda0613d2f0a3897ddf59415019d2cecfd7 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Sat, 4 Oct 2025 20:54:57 +0500 Subject: [PATCH 4/4] chore(readme): drop Those Awesome Guys Signed-off-by: Boris Yumankulov --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 7708dd0..acb8bbc 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,6 @@ PortProtonQt использует код и зависимости от след - [Legendary](https://github.com/derrod/legendary) — инструмент для работы с Epic Games Store, лицензия [GPL-3.0](https://github.com/derrod/legendary/blob/master/LICENSE). - [Icoextract](https://github.com/jlu5/icoextract) — библиотека для извлечения иконок, лицензия [MIT](https://github.com/jlu5/icoextract/blob/master/LICENSE). - [HowLongToBeat Python API](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI) — библиотека для взаимодействия с HowLongToBeat, лицензия [MIT](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI/blob/master/LICENSE.md). -- [Those Awesome Guys: Gamepad prompts images](https://thoseawesomeguys.com/prompts/) - Набор подсказок для геймпада и клавиатур, лицензия [CC0](https://creativecommons.org/public-domain/cc0/) - Полный текст лицензий см. в файле [LICENSE](LICENSE). > [!WARNING]