Simple package for registering an app with apple Launch Services to handle UTI and URL
Project description
applaunchservices
Simple package for registering an app with apple Launch Services to handle UTI and URL. See Apple documentations for details.
URL
Launch Services allows a GUI app to register a URL scheme.
This means the app can be called when the user types a URL like <scheme>://<something>
.
set_URL_scheme_handler
: Sets the given bundleid as the default handler for a given url scheme.get_URL_scheme_handler
: Gets the default bundleid for a given url scheme.open_URL
: Opens the given URL with launch services
Files
Launch Services allows a GUI app to register a uniform type identifier (UTI).
This means the app can be called when the user double click on a file in the finder that matches this scheme.
Or if the user types an url like <file:///path/to/file.ext>
.
set_UTI_handler
: Sets the given bundleid as the default handler for a given uniform type identifier and role.get_UTI_handler
: Gets the default bundleid for a given uniform type identifier and role.open_path
: Opens the given path with launch services
The roles are:
- 'none'
- 'viewer'
- 'editor'
- 'shell'
- 'all'
Bundle Identifier
The bundle identifier is used to identify an app. Two functions are supplied:
get_bundle_identifier()
: Gets the current bundle identifier if it exists (The app is a GUI app)get_bundle_identifier(pid)
: Gets the bundle identifier for the given process id if it exists (The app is a GUI app)get_bundle_identifier_for_path(path)
: Gets the bundle identifier if the path points to a bundle
Usage example:
import applaunchservices as als
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import QEvent, Qt
# This app opens python scripts as an editor
uniform_type_identifier = "public.python-script"
role = 'editor'
class MacApplication(QApplication):
"""Application that process fileopen events."""
def event(self, event):
if event.type() == QEvent.FileOpen:
widget.setWindowTitle(str(event.file()))
return QApplication.event(self, event)
# Create application and window
app = MacApplication([''])
widget = QWidget()
# Reset old handler at the end
old_handler = als.get_UTI_handler(uniform_type_identifier, role)
app.aboutToQuit.connect(
lambda: als.set_UTI_handler(
uniform_type_identifier, role, old_handler))
# When the app is visible, register itself as a handler
def handle_applicationStateChanged(state):
if state == Qt.ApplicationActive and app._starting:
app._starting = False
bundle_identifier = als.get_bundle_identifier()
als.set_UTI_handler(
uniform_type_identifier, role, bundle_identifier)
app._starting = True
app.applicationStateChanged.connect(handle_applicationStateChanged)
# Launch app
widget.setWindowTitle('test')
widget.show()
app.exec_()
# The app can now receive file open events
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file applaunchservices-0.3.0.tar.gz
.
File metadata
- Download URL: applaunchservices-0.3.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cc6ad5c6c88457230b3cc3d1f76c39c00dcd2597af9c6ee592dce5e67eb2cad |
|
MD5 | 591988d5d1b6a91a475524fa3d742d40 |
|
BLAKE2b-256 | 08c1116fae680fceceb75ccb46c089631713f4f7a8a755218f9108aad4aaec54 |
Provenance
File details
Details for the file applaunchservices-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: applaunchservices-0.3.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c2355bec63fb19aeeea075b89678410a528e2f21dd7b6f6cd2671aed9d8d706 |
|
MD5 | bf4d5e64aeaf4b7f779df893b227e4c1 |
|
BLAKE2b-256 | beb9fdcca105aac6410c9dec2f491480743cc06d64d48bed591fc387c4611b1b |