diff options
Diffstat (limited to 'extension/background.js')
-rw-r--r-- | extension/background.js | 30 |
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', |