diff --git a/plexpy/macos.py b/plexpy/macos.py index 8634e2c9..eca9ff6f 100644 --- a/plexpy/macos.py +++ b/plexpy/macos.py @@ -16,6 +16,7 @@ # along with Tautulli. If not, see . import os +import subprocess import sys import plistlib @@ -29,50 +30,73 @@ else: def set_startup(): - launch_agents = os.path.join(os.path.expanduser('~'), 'Library/LaunchAgents') - plist_file = 'com.Tautulli.Tautulli.plist' - plist_file_path = os.path.join(launch_agents, plist_file) - - exe = sys.executable - if plexpy.FROZEN: - args = [exe] - else: - args = [exe, plexpy.FULL_PATH] - - args += ['--nolaunch'] - - plist_dict = { - 'Label': common.PRODUCT, - 'ProgramArguments': args, - 'RunAtLoad': True, - 'KeepAlive': True - } - - if plexpy.CONFIG.LAUNCH_STARTUP: - if not os.path.exists(launch_agents): + if plexpy.INSTALL_TYPE == 'macos': + if plexpy.CONFIG.LAUNCH_STARTUP: try: - os.makedirs(launch_agents) - except OSError: - return False - - with open(plist_file_path, 'wb') as f: - try: - plistlib.dump(plist_dict, f) - except AttributeError: - plistlib.writePlist(plist_dict, f) + subprocess.Popen(['osascript', '-e', + 'tell application "System Events" to make login item at end with properties ' + '{path:"~/Applications/Tautulli.app", hidden:false}']) + logger.info("Added Tautulli to MacOS login items.") + return True except OSError as e: - logger.error("Failed to create MacOS system startup plist file: %s", e) + logger.error("Failed to add Tautulli to MacOS login items: %s", e) return False - logger.info("Added Tautulli to MacOS system startup.") - return True + else: + try: + subprocess.Popen(['osascript', '-e', + 'tell application "System Events" to delete login item "Tautulli"']) + logger.info("Removed Tautulli from MacOS login items.") + return True + except OSError as e: + logger.error("Failed to remove Tautulli from MacOS login items: %s", e) + return False else: - try: - if os.path.isfile(plist_file_path): - os.remove(plist_file_path) - logger.info("Removed Tautulli from MacOS system startup.") + launch_agents = os.path.join(os.path.expanduser('~'), 'Library/LaunchAgents') + plist_file = 'com.Tautulli.Tautulli.plist' + plist_file_path = os.path.join(launch_agents, plist_file) + + exe = sys.executable + if plexpy.FROZEN: + args = [exe] + else: + args = [exe, plexpy.FULL_PATH] + + args += ['--nolaunch'] + + plist_dict = { + 'Label': common.PRODUCT, + 'ProgramArguments': args, + 'RunAtLoad': True, + 'KeepAlive': True + } + + if plexpy.CONFIG.LAUNCH_STARTUP: + if not os.path.exists(launch_agents): + try: + os.makedirs(launch_agents) + except OSError: + return False + + with open(plist_file_path, 'wb') as f: + try: + plistlib.dump(plist_dict, f) + except AttributeError: + plistlib.writePlist(plist_dict, f) + except OSError as e: + logger.error("Failed to create MacOS system startup plist file: %s", e) + return False + + logger.info("Added Tautulli to MacOS system startup launch agents.") return True - except OSError as e: - logger.error("Failed to delete MacOS system startup plist file: %s", e) - return False + + else: + try: + if os.path.isfile(plist_file_path): + os.remove(plist_file_path) + logger.info("Removed Tautulli from MacOS system startup launch agents.") + return True + except OSError as e: + logger.error("Failed to delete MacOS system startup plist file: %s", e) + return False diff --git a/plexpy/windows.py b/plexpy/windows.py index 04f62762..a41c2108 100644 --- a/plexpy/windows.py +++ b/plexpy/windows.py @@ -115,7 +115,7 @@ def set_startup(): registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_WRITE) winreg.SetValueEx(registry_key, common.PRODUCT, 0, winreg.REG_SZ, cmd) winreg.CloseKey(registry_key) - logger.info("Added Tautulli to Windows system startup.") + logger.info("Added Tautulli to Windows system startup registry key.") return True except WindowsError as e: logger.error("Failed to create Windows system startup registry key: %s", e) @@ -126,7 +126,7 @@ def set_startup(): registry_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, startup_reg_path, 0, winreg.KEY_ALL_ACCESS) winreg.DeleteValue(registry_key, common.PRODUCT) winreg.CloseKey(registry_key) - logger.info("Removed Tautulli from Windows system startup.") + logger.info("Removed Tautulli from Windows system startup registry key.") return True except WindowsError as e: logger.error("Failed to delete Windows system startup registry key: %s", e)