Things which could be improved after #3040 is in: - [ ] Maybe offer an install dialog when a `.user.js` file is opened, [like Chromium](https://www.chromium.org/developers/design-documents/user-scripts) - [ ] Have some kind of updater for userscripts? - [x] Support [`@require`](https://wiki.greasespot.net/Third-Party_Libraries) (maybe without the downloading, but at least load those files if they exist?) - [ ] Try stubbing [exportFunction](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.exportFunction) and maybe set a more correct `scriptHandler` and `version` then for [GM_info](https://wiki.greasespot.net/GM_info)? - [ ] Support `isPrivate` in [GM_info](https://wiki.greasespot.net/GM_info). - [ ] Look into GreaseMonkey's sandboxing/security features - [ ] Set up a [QtWebChannel](http://doc.qt.io/qt-5/qtwebchannel-index.html) so we can give scripts elevated permissions - [ ] Use some kind of database for [GM_getValue](https://wiki.greasespot.net/GM_getValue) et al so it's isolated from the page's localStorage - [ ] Use a [QNetworkAccessManager](http://doc.qt.io/qt-5/qnetworkaccessmanager.html) for [GM_xmlhttpRequest](https://wiki.greasespot.net/GM_xmlhttpRequest) so it can be cross-origin. - Looks like there's some [WIP work](https://github.com/qutebrowser/qutebrowser/compare/master...toofar:cross_origin_gm_xhr) - But apparently that [sometimes hangs?](http://paste.the-compiler.org/view/1e64bfa1) - [ ] Maybe also something for [GM_openInTab](https://wiki.greasespot.net/GM_openInTab) - [x] Support for the [GreaseMonkey 4 API](http://www.greasespot.net/2017/09/greasemonkey-4-for-script-authors.html). - [ ] Investigate why `@noframes` sometimes doesn't work with QtWebEngine / QWebEngineScript - [ ] Support [`GM_registerMenuCommand`](https://wiki.greasespot.net/index.php?title=GM_registerMenuCommand&oldid=7473) somehow - [ ] Can we disable the page's JavaScript exception handler while running the Greasemonkey script? - [x] ~~Can we set the injection point correctly for a Qt 5.8+ QtWebEngine?~~ (my bad, Qt already does this based on the userscript comment) - [x] Maybe a missing `run-at` shouldn't show an error? - [x] Regex for include/exclude - [ ] Use UrlPattern from #3369 for `@match` - [x] Support a custom metadata directive like `@qute-js-world` to request the script be ran in a non-default javascript "[world](https://doc.qt.io/qt-5/qwebenginescript.html#ScriptWorldId-enum)" - [ ] Alias/map qute-js-world to `@inject-into` https://violentmonkey.github.io/posts/inject-into-context/ - [ ] Implement `GM_getResourceText` (#3975) - [ ] Require `@grant unsafeWindow` to use `unsafeWindow` - [ ] Somehow fix up line numbers, e.g. via source maps? (#5080) - [ ] Accept relative `@requires` directives, without requiring the use of the `file://` protocol (from #6458) - [ ] Load local files directly rather than needing to copy them (from #6458) - [ ] Support `GM_setValue` with non-primitive values (see #6699) - [ ] Update docs and commands to not seem so Greasemonkey (the extension) specific (from #7286) - [ ] Add some Greasemonkey docs for qutebrowser, also e.g. `@qute-js-world` cc @toofar
Things which could be improved after #3040 is in:
.user.jsfile is opened, like Chromium@require(maybe without the downloading, but at least load those files if they exist?)scriptHandlerandversionthen for GM_info?isPrivatein GM_info.@noframessometimes doesn't work with QtWebEngine / QWebEngineScriptGM_registerMenuCommandsomehowCan we set the injection point correctly for a Qt 5.8+ QtWebEngine?(my bad, Qt already does this based on the userscript comment)run-atshouldn't show an error?@match@qute-js-worldto request the script be ran in a non-default javascript "world"@inject-intohttps://violentmonkey.github.io/posts/inject-into-context/GM_getResourceText(Wanikani Niai Similar Kanji called unimplemented GM_getResourceText #3975)@grant unsafeWindowto useunsafeWindow@requiresdirectives, without requiring the use of thefile://protocol (from Greasemonkey scripts: Local file improvements #6458)GM_setValuewith non-primitive values (see Improve some Greasemonkey API stubs #6699)@qute-js-worldcc @toofar