All Projects → hensm → Fx_cast

hensm / Fx_cast

Licence: mit
Implementation of the Google Cast Chrome Sender SDK within Firefox

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Fx cast

Disable Javascript
Adds the ability to disable JavaScript on specific sites.
Stars: ✭ 151 (-88.55%)
Mutual labels:  firefox, firefox-addon, firefox-extension, webextension
copy all tabs
Browser add-on to copy all URLs and titles from the open tabs in a browser window as a text list to the system clipboard. Links can also be pasted to a browser window to restore a list of tabs.
Stars: ✭ 21 (-98.41%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
Livemarks
Extension that restores RSS Feed Livemarks in Firefox.
Stars: ✭ 137 (-89.61%)
Mutual labels:  firefox, firefox-addon, firefox-extension, webextension
Newtaboverride
New Tab Override allows you to set the page that shows whenever you open a new tab.
Stars: ✭ 120 (-90.9%)
Mutual labels:  firefox, firefox-addon, firefox-extension, webextension
Ext Saladict
🥗 All-in-one professional pop-up dictionary and page translator which supports multiple search modes, page translations, new word notebook and PDF selection searching.
Stars: ✭ 8,418 (+538.21%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
web-extension-boilerplate
The web extension boilerplate help to set up project quickly using typescript, jest, webpack, githook, prettier and github actions
Stars: ✭ 35 (-97.35%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
Floccus
☁️ Sync your bookmarks privately across browsers
Stars: ✭ 2,630 (+99.39%)
Mutual labels:  firefox, firefox-addon, firefox-extension, webextension
webpageScanner
Extension for Firefox
Stars: ✭ 16 (-98.79%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
AntiRickRoll
Chrome extension that blocks Rickrolls!
Stars: ✭ 22 (-98.33%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
Session-resurrection
Save your browser sessions and restore them any time
Stars: ✭ 36 (-97.27%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
paxmod
🕊️ Firefox add-on for multi-row tabs and site-dependent tab colors
Stars: ✭ 123 (-90.67%)
Mutual labels:  firefox, firefox-addon, webextension, firefox-extension
Bookmarks Organizer
With the Bookmarks Organizer it's easy to put order in your bookmarks. The Bookmarks Organizer finds no longer working bookmarks, redirects, duplicates and more!
Stars: ✭ 90 (-93.18%)
Mutual labels:  firefox, firefox-addon, firefox-extension, webextension
Easy To Rss
🚀 Chrome/Firefox Extension to retreive RSS feeds URLs from WebSite, RSSHub supported
Stars: ✭ 386 (-70.74%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Webextension Toolbox
Small CLI toolbox for cross-browser WebExtension development
Stars: ✭ 365 (-72.33%)
Mutual labels:  firefox, firefox-extension, webextension
Autofill Firefox
Autofill is a small but powerful add-on for Mozilla Firefox that serves one purpose: fill form fields automatically on page load. It is for people who just want a straightforward form filler without all the bells and whistles.
Stars: ✭ 46 (-96.51%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Awesome Emoji Picker
Add-on/WebExtension that provides a modern emoji picker that you can use to find and copy/insert emoji into the active web page.
Stars: ✭ 54 (-95.91%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Extanalysis
Browser Extension Analysis Framework - Scan, Analyze Chrome, firefox and Brave extensions for vulnerabilities and intels
Stars: ✭ 351 (-73.39%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Browser Addon
Kee adds free, secure and easy password management features to your browser which save time and keep your private data more secure.
Stars: ✭ 386 (-70.74%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Mue
Fast, open and free-to-use new tab page for modern browsers
Stars: ✭ 56 (-95.75%)
Mutual labels:  firefox, firefox-addon, firefox-extension
Simpread
简悦 ( SimpRead ) - 让你瞬间进入沉浸式阅读的扩展
Stars: ✭ 5,352 (+305.76%)
Mutual labels:  firefox, firefox-addon, firefox-extension

Preview of cast device selection popup

fx_cast

Firefox extension that implements the Chrome sender API and exposes it to web apps to enable cast support. Communication with receiver devices is handled by a native application (bridge). Check the implementation notes for more info.

Note: No full public release yet! Pre-release beta version is incomplete and likely buggy.

Installing

Note: Currently supported on macOS, Windows and Linux.

Install the Firefox extension (from within Firefox) and companion bridge application via the installer packages. These are two separate downloads that can be found on the website or in the GitHub releases section.

On Linux platforms, it may be necessary to configure local hostname resolution.

Package managers

Usage

Most websites won't load the cast API unless the browser presents itself as Chrome. The extension includes a whitelist for sites that should be given a Chrome-compatible user agent string. Whitelist entries are specified as match patterns. To whitelist all sites, add <all_urls> to the whitelist, though this is not recommended and could cause breakage on random sites.

Whitelisted sites should then display a cast button as in Chrome, provided they're compatible with the extension/Firefox.

The Cast... menu item is visible in the page, toolbar button and tools menus, and provides access to the receiver selector at any time to stop an existing session or start screen mirroring or file casting.

HTML5 media elements also have a different Cast... context menu item that triggers the media sender, though this won't work for media using EME/MSE.

Building

Requirements

  • Node.js v12.x.x
  • Native build tools (see here)
  • Bonjour/Avahi (on Windows/Linux respectively)

Cross-compiling native depedencies may be possible, but isn't tested or supported. Build script options are provided for building/packaging on other platforms, but assume they won't work. Packaging on Linux for other Linux package formats should work fine.

Installing dependencies

Windows:

Debian / Ubuntu:

sudo apt install libavahi-compat-libdnssd-dev dpkg rpm
# Runtime: avahi-daemon

Fedora:

sudo dnf install avahi-compat-libdns_sd-devel dpkg rpm-build
# Runtime: avahi nss-mdns

Arch Linux:

sudo pacman -S avahi dpkg
yay -S rpm-org

Instructions

git clone https://github.com/hensm/fx_cast.git
cd fx_cast
npm install
npm run build

# Install manifest for dist/ build. Installs to
# user-specific location and overrides a system-wide
# install. Call `remove-manifest` to restore previous state.
npm run install-manifest
npm run remove-manifest

This will build the ext and app, outputting to dist/:

  • dist/app/

    ... contains the built bridge with launcher script and manifest with the path pointing that script. The install-manifest script copies this manifest to the proper location (or adds its current location to the registry on Windows).
  • dist/ext/

    ... contains the unpacked extension.

Watching ext changes:

npm run watch --prefix ./ext

Launch Firefox with built extension (run in separate terminal):

npm run start --prefix ./ext

Extension build script arguments

  • --package
    Should package with web-ext.
  • --watch
    Should run webpack in watch mode.
  • --mirroringAppId "<appID>"
    Provide an alternative default mirroring receiver app ID.
  • --mode "production", "development"
    Run webpack in a different mode. Defaults to "development" unless combined with --package.

Bridge build script arguments

  • --usePkg
    Creates a single executable instead of a launcher script.
  • --package
    Builds and creates installer packages for distribution.
  • --arch "x64","x86"
    Select platform arch to build for. Defaults to current platform arch.
  • --skipNativeBuilds
    macOS only. Skips native receiver selector build.

32-bit on Windows

Building a 32-bit version is only supported for Windows. If you're building from a 64-bit system, you'll also need to rebuild any native dependencies as 32-bit.

npm clean-install --prefix ./app --arch=ia32  # If on a 64-bit system

npm run build:app -- -- --arch=x86 --usePkg   # If building without packaging
npm run package:app -- -- --arch=x86          # ... else if packaging

Packaging

Build and package extension and bridge application for current platform:

npm run package
  • dist/app/

    ... contains the installer package: fx_cast_bridge-<version>-<arch>.(pkg|deb|rpm|exe)
  • dist/ext/

    ... contains the built extension archive: fx_cast-<version>.xpi.

Packaging examples:

npm run package:ext # Packaging extension
npm run package:app # Packaging bridge application

# Linux platforms
npm run package:app -- -- --packageType=deb
npm run package:app -- -- --packageType=rpm

Bridge package script arguments

Note: Includes the build script arguments.

  • --packageType "deb","rpm"
    Select the package type. Defaults to deb. Only relevant when building for Linux.

Testing

Testing requires geckodriver (or chromedriver for Chrome parity testing). See selenium-webdriver installation instructions (ignore npm install).

The test script expects a compatible installed bridge version and an extension archive at dist/ext/.

Test results will be displayed in the terminal and within the opened browser tab. Chrome may take some time to initialize the media router component before the cast API is available for testing.

npm run build --prefix ./app
npm run install-manifest
npm run package --prefix ./ext
npm test
SELENIUM_BROWSER=chrome npm test

Video Demos

Netflix / HTML5:

fx_cast Netflix fx_cast HTML5

Credit

Note: Since it seems to be causing confusion, this project does not use electron. The electron-chromecast library was only used as a reference for the initial implementation of the API shim.

Donation

PayPal

To donate via PayPal:

Donate with PayPal button

Donate with PayPal
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].