Files
misctils/background.js
2025-09-17 23:05:25 -04:00

97 lines
2.8 KiB
JavaScript

/* add a context menu for setting the background */
browser.menus.create({
id: "set-background",
title: "Set Background Image",
contexts: [ "image" ],
icons: {
"16": "icons/background.png",
"32": "icons/background.png",
"64": "icons/background.png",
"128": "icons/background.png",
"256": "icons/background.png"
}
})
/* add a context menu for accessing repo on github */
browser.menus.create({
id: "search-github",
title: "Open in Github",
contexts: [ "selection" ]
})
browser.menus.onClicked.addListener(info => {
if (info.menuItemId == "set-background") {
browser.runtime.sendNativeMessage("bg_app", info.srcUrl);
} else if (info.menuItemId == "search-github" && info.selectionText) {
const trimmedText = info.selectionText.trim();
const githubUrl = `https://github.com/${trimmedText}`;
chrome.tabs.create({ url: githubUrl })
}
});
/* add functionality to commands defined in manifest.json */
chrome.commands.onCommand.addListener(function(action) {
action.preventDefault();
switch (action) {
case "toggle-pin-tab": /* toggle current tab pinning */
chrome.tabs.query({ currentWindow: true, active: true }, function(found_tab) {
const currentTab = found_tab[0]
const toggledValue = !currentTab.pinned;
chrome.tabs.update(currentTab.id, { pinned: toggledValue });
});
break;
/* switch between tabs */
case "tab-up":
chrome.tabs.query({ currentWindow: true, active: true }, function(found_tab) {
switch_tab(found_tab[0].index - 1);
});
break;
case "tab-down":
chrome.tabs.query({ currentWindow: true, active: true }, function(found_tab) {
switch_tab(found_tab[0].index + 1);
});
break;
/* close tab */
case "tab-close":
chrome.tabs.query({ currentWindow: true, active: true }, function(found_tab) {
browser.tabs.remove(found_tab[0].id);
});
break;
case "scroll-half-down":
window.scrollBy(0, window.innerHeight / 2, "smooth");
console.log(window)
console.log("hello world")
break;
case "scroll-half-up":
window.scrollBy(0, -(window.innerHeight / 2), "smooth");
console.log(window)
console.log("hello world")
break;
}
});
function switch_tab(tab_number) {
/* I don't want it to cycle around */
if (tab_number < 0) {
return;
}
chrome.tabs.query({ currentWindow: true, active: true }, function(found_tabs) {
const currentTab = found_tabs[0];
if (currentTab.index == tab_number) {
/* we're already on the current tab */
return;
}
/* change the selected tab to active */
browser.tabs.query({ currentWindow: true }, function(window_tabs) {
if (typeof window_tabs.at(tab_number) != "undefined") {
chrome.tabs.update(window_tabs.at(tab_number).id, { active: true });
}
});
});
}