Skip to main content

A package with basic native messaging apis for webextensions

Project description

nativemessaging

A Python package for interfacing with Native Messaging in WebExtensions

See Native Messaging on MDN

Based on Native Messaging on MDN and native-messaging on mdn/webextension-examples (MPL 2.0 License)

pip3 install nativemessaging

get_message()

nativemessaging.get_message() will poll for a message from the browser.
If runtime.connectNative is used, get_message() must be called repeatedly in a loop to poll for messages.
If runtime.sendNativeMessage is used, get_message() only needs to be called once.

encode_message( message_content )

nativemessaging.encode_message() takes one argument, a message to be encoded.
Returns an encoded version of a message to be returned to the browser. Use with send_message().

send_message( encoded_message )

nativemessaging.send_message() takes one argument, an encoded message from encode_message(). Returns a message to the browser.

Sample

Browser side:

function onReceived(response) {
    console.log(response);
}

// runtime.connectNative
var port = browser.runtime.connectNative("application_name");
port.onMessage.addListener(onReceived);
port.postMessage("hello");

// runtime.sendNativeMessage
browser.runtime.sendNativeMessage("application_name", "hello").then(onReceived);

App side:

import nativemessaging

while True:
    message = nativemessaging.get_message()
    if message == "hello":
        nativemessaging.send_message(nativemessaging.encode_message("world"))

nativemessaging-install

nativemessaging-install is a command line script provided with the package.

Arguments

nativemessaging-install browser [--manifest manifest]

  • browser - positional argument, 1 or more parameters. Must be chrome or firefox.
  • --manifest - a path to a manifest file to use for installing.

manifest-install.json

A native-manifest.json file is expected in the current working directory when running the script, unless --manifest is passsed. The format must be similar to the native manifest format for Chrome or Firefox, with two main differences:

  • path must be a relative path to the native app in relation to your current working directory.
  • Both allowed_extensions and allowed_origins must be in the manifest to work with both Chrome and Firefox.
{
    "name": "application_name",
    "description": "description",
    "path": "application_name.py",
    "type": "stdio",
    "allowed_extensions": ["extension@id"],
    "allowed_origins": ["chrome-extension://extension-id"]
}

Created files

On Windows, it will create <application_name>_firefox.json and <application_name>_chrome.json in the same directory as <path>.
A batch file will also be created for python apps on Windows.
A registry key is created at HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\<application_name> or HKEY_CURRENT_USER\Software\Mozilla\NativeMessagingHosts\<application_name>

On linux, it will create ~/.config/google-chrome/NativeMessagingHosts/<application_name>.json or ~/.mozilla/native-messaging-hosts/<application_name>.json

On mac, it will create ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/<application_name>.json or ~/Library/Application Support/Mozilla/NativeMessagingHosts/<application_name>.json

See also:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nativemessaging-1.0.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

nativemessaging-1.0.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file nativemessaging-1.0.0.tar.gz.

File metadata

  • Download URL: nativemessaging-1.0.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.9.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5

File hashes

Hashes for nativemessaging-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1c6ab268448ed5ba1149ce8f91e1aad1012ac00760dcabf0acfb4a5526cf3cd0
MD5 83bda8f3656ed48bb2e573153f1f9515
BLAKE2b-256 22d8fbea6f97e03f9c557bdbe1be537c5b825b11fc42f2175353cc6e2ba60c72

See more details on using hashes here.

Provenance

File details

Details for the file nativemessaging-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: nativemessaging-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.9.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.5

File hashes

Hashes for nativemessaging-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21f0d1d301dbea5d80b7c6c64b2d8b6771e155ef3e30bc8962bd94aa2fde2c19
MD5 f7db0d13906ac6f249bddae330b22206
BLAKE2b-256 00c9994c76668cf1bafcc9f3e3c6ca7807edb82844f30a0ed490a071b7b4e0ac

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page