diff --git a/qutebrowser/browser/qutescheme.py b/qutebrowser/browser/qutescheme.py index 8bcb7ff37..57c32999b 100644 --- a/qutebrowser/browser/qutescheme.py +++ b/qutebrowser/browser/qutescheme.py @@ -201,6 +201,31 @@ def qute_bookmarks(_url): return 'text/html', html +def _tab_fields_to_tabs_page_info(fields): + return (fields['title'], fields['current_url']) + + +@add_handler('tabs') +def qute_tabs(_url): + """Handler for qute://tabs. Display information about all open tabs.""" + tabs = {} + for win_id in objreg.window_registry: + win_id_str = str(win_id) + tabs[win_id_str] = [] + tabbed_browser = objreg.get('tabbed-browser', + scope='window', + window=win_id) + for tab_idx in range(tabbed_browser.count()): + tabs[win_id_str].append( + _tab_fields_to_tabs_page_info( + tabbed_browser.get_tab_fields(tab_idx))) + + html = jinja.render('tabs.html', + title='Tabs', + tab_list_by_window=tabs) + return 'text/html', html + + def history_data(start_time, offset=None): """Return history data. diff --git a/qutebrowser/html/tabs.html b/qutebrowser/html/tabs.html new file mode 100644 index 000000000..80244ef51 --- /dev/null +++ b/qutebrowser/html/tabs.html @@ -0,0 +1,56 @@ +{% extends "styled.html" %} + +{% block style %} +{{super()}} +h1 { + margin-bottom: 10px; +} + +.url a { + color: #444; +} + +th { + text-align: left; +} + +.qmarks .name { + padding-left: 5px; +} + +.empty-msg { + background-color: #f8f8f8; + color: #444; + display: inline-block; + text-align: center; + width: 100%; +} +{% endblock %} + +{% block content %} + +
{{name}} | +{{url}} | +
+{% for win_id, tabs in tab_list_by_window.items() %}
+ {% for name, url in tabs %}
+ {{url}}
+ {% endfor %}
+{% endfor %}
+
+
+{% endblock %}