Last active
June 27, 2024 09:08
-
-
Save timsutton/6484b2f29f1b872e1a40a23c73e6ed73 to your computer and use it in GitHub Desktop.
Two examples of launching an application and quitting it using `NSRunningApplication.terminate()`
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import AppKit | |
from time import sleep | |
from Foundation import NSURL | |
xcode_url = NSURL.fileURLWithPath_isDirectory_('/Applications/Xcode.app', True) | |
workspace = AppKit.NSWorkspace.sharedWorkspace() | |
workspace.launchApplicationAtURL_options_configuration_error_(xcode_url, AppKit.NSWorkspaceLaunchDefault, {}, None) | |
# Sleeping to just give it time to launch | |
sleep(10) | |
# naively assume that we get at least one result back from `runningApplicationsWithBundleIdentifier` | |
running_xcode = AppKit.NSRunningApplication.runningApplicationsWithBundleIdentifier_('com.apple.dt.Xcode')[0] | |
running_xcode.terminate() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# Alternate example using subprocess.Popen and finding the NSRunningApplication by PID | |
import AppKit | |
from time import sleep | |
from Foundation import NSURL | |
proc = subprocess.Popen(['/Applications/Xcode.app/Contents/MacOS/Xcode']) | |
# Sleeping to just give it time to launch | |
sleep(10) | |
# Find the running app by the pid we got from Popen() | |
running_xcode = NSRunningApplication.runningApplicationWithProcessIdentifier_(proc.pid) | |
running_xcode.terminate() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment