Requirements: Android 5.0+ | LSposed or LSPatch
Overview: Adds UserScript and DevTools supports to Chromium based and WebView based browsers using Xposed framework.
We hook the onUpdateUrl function in UserScript.kt, add URL comparison there and evaluate JavaScript using the javascript: scheme (or DevTools Protocol when possible).
Chromium based browsers, such as Egde, Bromite, Samsung Internet, and Brave, are fully supported.
Most WebView based browsers are also supported, if not, please report it. Note for WebView based browsers users: you only need to enable this module for the browser application you wish to use, not for any possible WebView applications, neither for the Android system.
ChromeXt requires Xposed framework.
For root users, install LSPosed first, pick up the latest built APK from my repo’s GitHub Actions and install it.
For non-root users, I modify a bit LSPatch to support ChromeXt; here is how to use it:
Download the latest lspatch-release from my GitHub Actions.
Download the latest ChromeXt.apk from my GitHub Actions.
Extract previously downloaded files to get files lspatch.jar (with some suffix) and ChromeXt-signed.apk.
Patch your APK (taking arm64_ChromePublic.apk as example) using the following command: java -jar lspatch.jar arm64_ChromePublic.apk -d -v -m ChromeXt-signed.apk –force. If java environment is not available, please consider using the provided manager APK.
Install the patched APK, which might require you to first uninstall the one on your devices.
Notes: currently to download files from GitHub Actions, one needs to log in GitHub.
The author uploads releases to Xposed-Modules-Repo when needed, but not that frequently.
You can then install UserScripts from popular sources: URLs that ends with .user.js.
Supported API
Currently, ChromeXt supports almost all Tampermonkey APIs:
@name (colons not allowed), @namespace, @description and so on
@match (conform to the Chrome Standard, supports regular expressions)
@include = @match, @exclude
@run-at: document-start, document-end, document-idle (the default and fallback value)
@grant: GM_addStyle, GM_addElement, GM_xmlhttpRequest, GM_openInTab, GM_registerMenuCommand (shown in the Resources panel of eruda), GM_unregisterMenuCommand, GM_download, unsafeWindow (= window)
@grant: GM_setValue, GM_getValue (less powerful than GM.getValue), GM_listValues, GM_addValueChangeListener, GM_removeValueChangeListener, GM_setClipboard, GM_cookie, GM_notification
@require, @resource (without Subresource Integrity)
These APIs are implemented differently from the official ones, please refer to the source files Local.kt and GM.js if you have doubts or questions.
Moreover, there is the powerful (also dangerous) GM.ChromeXt API, which must be declared by @grant GM.ChromeXt to unlock its usage. It is locked by default so that the users are protected from malicious UserScripts exploiting ChromeXt. This API allows scripts to use the JavaScript method ChromeXt.dispatch(action, payload), which is fundamental to implement other APIs. (Hence, one can find usage examples in GM.js). Dispatched action and payload are handled by Listener.kt.
UserScripts manager front end
To manage scripts installed by ChromeXt, here are a simple front end hosted on github.io and two mirrors of it (in case that you have connection issues):
https://jingmatrix.github.io/ChromeXt/
https://jianyu-ma.onrender.com/ChromeXt/
https://jianyu-ma.netlify.app/ChromeXt/
Edit scripts before installing them
If you cancel the prompt of installing a new UserScript, then you can edit it directly in Chrome. Use the Install UserScript page menu to install your modified UserScript.
DevTools for developers
From the three dots page menu, ChromeXt offers you the
Developer tools menu for the UserScript manager front end,
Eruda console menu for other pages.
For Edge browser, these menus are moved to the page info menu, which locates at the left corner inside the URL input bar.
For WebView based browsers and Samsung Internet, these menu items are presented in the context menu.
What’s New:
Support Mi Browser
This app has no advertisements
More Info:
https://github.com/JingMatrix/ChromeXt
Download Instructions:
https://ouo.io/BxqWKLc
Mirror:
https://ouo.io/m4Tvlg
https://ouo.io/Q0UCn9
https://ouo.io/klEAJo
https://ouo.io/CZhsf3e
Modified LSPatch
https://ouo.io/4vszbxh
Mirror:
https://ouo.io/PhGieAd
https://ouo.io/leVJL0N
https://ouo.io/vFA2Gy.