summaryrefslogtreecommitdiff
path: root/extension/background.js
diff options
context:
space:
mode:
Diffstat (limited to 'extension/background.js')
-rw-r--r--extension/background.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/extension/background.js b/extension/background.js
index 0d95b95..411930c 100644
--- a/extension/background.js
+++ b/extension/background.js
@@ -215,6 +215,36 @@ Routes["/tabs/create"] = {
async truncate() { return {}; }
};
+Routes["/tabs/create-reuse"] = {
+ description: 'Open a URL, reusing existing tabs where it makes sense.',
+ usage: 'echo "https://en.wikipedia.org/wiki/HTTP#History" > $0',
+ async write({buf}) {
+ const CURRENT = browser.windows.WINDOW_ID_CURRENT
+ const url = buf.trim();
+
+ let tabs = await browser.tabs.query({url}),
+ tab, t
+ // algorithm improvements welcome
+ if (t = tabs.find(t => t.active && t.windowId == CURRENT))
+ tab = t
+ else if (t = tabs.find(t => t.windowId == CURRENT))
+ tab = t
+ else
+ tab = tabs[0]
+ if (!tab) tab = await browser.tabs.create({url})
+
+ let nurl = new URL(url),
+ ourl = new URL(tab.url)
+ if (ourl.hash != nurl.hash) {
+ ourl.hash = nurl.hash
+ tab.url = ourl.toString()
+ }
+
+ return {size: stringToUtf8Array(buf).length};
+ },
+ async truncate() { return {}; }
+};
+
Routes["/tabs/by-title"] = {
description: 'Open tabs, organized by title; each subfolder represents an open tab.',
usage: 'ls $0',