diff --git a/rare/__main__.py b/rare/__main__.py index 4fb7217e..f2645432 100644 --- a/rare/__main__.py +++ b/rare/__main__.py @@ -1,3 +1,4 @@ +import os from argparse import ArgumentParser from rare import __version__ from rare.utils import singleton @@ -22,6 +23,15 @@ def main(): me = singleton.SingleInstance() except singleton.SingleInstanceException: print("Rare is already running") + + with open(os.path.expanduser("~/.cache/rare/lockfile"), "w") as file: + if args.subparser == "launch": + file.write("launch " + args.app_name) + else: + print("write start") + file.write("start") + file.close() + exit(0) from rare.app import start diff --git a/rare/components/main_window.py b/rare/components/main_window.py index ddfbeb27..9f641c34 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -1,6 +1,7 @@ +import os from logging import getLogger -from PyQt5.QtCore import QSettings +from PyQt5.QtCore import QSettings, QTimer from PyQt5.QtGui import QCloseEvent from PyQt5.QtWidgets import QMainWindow, QMessageBox @@ -40,7 +41,6 @@ class MainWindow(QMainWindow): if game != ("", 0): self.rpc.set_discord_rpc(game[0]) # Appname - self.show() if args.subparser == "launch": logger.info("Launching " + self.core.get_installed_game(args.app_name).title) if args.app_name in self.tab_widget.games_tab.default_widget.game_list.widgets.keys(): @@ -48,6 +48,30 @@ class MainWindow(QMainWindow): else: logger.info(f"Could not find {args.app_name} in Games") + self.timer = QTimer() + self.timer.timeout.connect(self.timer_finished) + self.timer.start(1000) + + self.show() + + def timer_finished(self): + file_path = os.path.expanduser("~/.cache/rare/lockfile") + if os.path.exists(file_path): + file = open(file_path, "r") + action = file.read() + file.close() + if action.startswith("launch"): + game = action.replace("launch ", "").replace("\n", "") + if game in self.tab_widget.games_tab.default_widget.game_list.widgets.keys(): + self.tab_widget.games_tab.default_widget.game_list.widgets[game][1].launch() + else: + logger.info(f"Could not find {game} in Games") + + elif action.startswith("start"): + self.show() + os.remove(file_path) + self.timer.start(1000) + def closeEvent(self, e: QCloseEvent): if self.settings.value("sys_tray", True, bool): self.hide()