diff --git a/doc/userscripts.asciidoc b/doc/userscripts.asciidoc index 0e34f5d4d..e9ae01cf8 100644 --- a/doc/userscripts.asciidoc +++ b/doc/userscripts.asciidoc @@ -24,6 +24,8 @@ The following environment variables will be set when an userscript is launched: command or key binding). - `QUTE_USER_AGENT`: The currently set user agent. - `QUTE_FIFO`: The FIFO or file to write commands to. +- `QUTE_HTML`: The HTML source of the current page. +- `QUTE_TEXT`: The plaintext of the current page. In `command` mode: diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 7dc0a35fd..93bed2b49 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -876,9 +876,14 @@ class CommandDispatcher: env['QUTE_TITLE'] = tabbed_browser.page_title(idx) webview = tabbed_browser.currentWidget() - if webview is not None and webview.hasSelection(): - env['QUTE_SELECTED_TEXT'] = webview.selectedText() - env['QUTE_SELECTED_HTML'] = webview.selectedHtml() + if webview is not None: + if webview.hasSelection(): + env['QUTE_SELECTED_TEXT'] = webview.selectedText() + env['QUTE_SELECTED_HTML'] = webview.selectedHtml() + mainframe = webview.page().mainFrame() + if mainframe is not None: + env['QUTE_HTML'] = mainframe.toHtml() + env['QUTE_TEXT'] = mainframe.toPlainText() try: url = tabbed_browser.current_url() diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index debe5658b..d4fe4bcc6 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -518,10 +518,13 @@ class HintManager(QObject): """ cmd = context.args[0] args = context.args[1:] + frame = context.mainframe env = { 'QUTE_MODE': 'hints', 'QUTE_SELECTED_TEXT': str(elem), 'QUTE_SELECTED_HTML': elem.toOuterXml(), + 'QUTE_HTML': mainframe.toHtml(), + 'QUTE_TEXT': mainframe.toPlainText(), } url = self._resolve_url(elem, context.baseurl) if url is not None: