Highlights Mozilla published its standards position on the Web Environment Integrity API proposal draft put forward by the Google Chrome team. A new version of Firefox View is in ...
You can customize browser-internal shortcuts with a script in your profile dir.
For example this is my script
‹user profile›/chrome/removeshortcuts.uc.js
var ids = `
viewBookmarksSidebarKb
key_quitApplication
openFileKb
key_savePage
printKb
goBackKb2
goForwardKb2
addBookmarkAsKb
bookmarkAllTabsKb
manBookmarkKb
viewBookmarksToolbarKb
`.replace(/\s+/g,' ').trim().split(' ');
ids.forEach( id=>{
var key = document.getElementById(id);
if (key) key.remove();
});
var originalKey = document.getElementById("key_screenshot");
if (originalKey) {
// Clone the original keyvarnewKey = originalKey.cloneNode(true);
// Set the new id and shortcut for the new keynewKey.setAttribute("id", newKey.id+"_redjard_alt");
if (newKey.hasAttribute('data-l10n-id'))
newKey.setAttribute("data-l10n-id", newKey.getAttribute('data-l10n-id')+"_redjard_alt");
newKey.setAttribute("key", "S");
newKey.setAttribute("modifiers", "accel");
// Add the new key to the parent of the original key
originalKey.parentNode.appendChild(newKey);
}
The script removes the shortcuts listed in the beginning and adds an alternate shortcut for screenshots to ctrl+s.
You can see all internashortcuts by opening a browser console and querying the shortcut elements (using regular javascript)
To complete this, probably with ff117 I had to fix the way I load my userchrome files, reminding me I should probably put them here too:
/usr/lib64/firefox/firefox.cfg
// firefox.cfg file needs to start with a comment line// it is included by having the following two lines in defaults/pref/autoconfig.js:// pref("general.config.sandbox_enabled", false);// pref("general.config.filename", "firefox.cfg");// pref("general.config.obscure_value", 0);varServices = globalThis.Services;
Services.obs.addObserver((aSubject, _aTopic, _aData)=>{
var chromeWindow = aSubject;
chromeWindow.setTimeout(()=>{
try {
if (chromeWindow.userChromeJsMod) return;
chromeWindow.userChromeJsMod = true;
var chromeFiles = chromeWindow.FileUtils.getDir("UChrm", []).directoryEntries;
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
while (chromeFiles.hasMoreElements()) {
var file = chromeFiles.getNext().QueryInterface(Components.interfaces.nsIFile);
var fileURI = Services.io.newFileURI(file);
if (!file.isFile()) continue;
if (/(^userChrome|\.uc)\.js$/i.test(file.leafName)) {
// load userChrome.js and *.uc.js (case insensitive) as js fileServices.scriptloader.loadSubScriptWithOptions(fileURI.spec, {
target: chromeWindow,
charset: "UTF-8",
ignoreCache: true,
});
} elseif (/\.as\.css$/i.test(file.leafName)) {
// load *.as.css (case insensitive) as css file (in browser scope)if (!sss.sheetRegistered(fileURI, sss.AGENT_SHEET)) {
sss.loadAndRegisterSheet(fileURI, sss.AGENT_SHEET);
}
} elseif (/^(?!(userChrome|userContent)\.css$).+\.css$/i.test(file.leafName)) {
if (!sss.sheetRegistered(fileURI, sss.USER_SHEET)) {
sss.loadAndRegisterSheet(fileURI, sss.USER_SHEET);
}
}
}
} catch (e) {
Components.utils.reportError(e); // [check] Show Content Messages
}
}, 10); // end of timeout
}, "browser-delayed-startup-finished", false);
You can customize browser-internal shortcuts with a script in your profile dir.
For example this is my script
‹user profile›/chrome/removeshortcuts.uc.js
var ids = ` viewBookmarksSidebarKb key_quitApplication openFileKb key_savePage printKb goBackKb2 goForwardKb2 addBookmarkAsKb bookmarkAllTabsKb manBookmarkKb viewBookmarksToolbarKb `.replace(/\s+/g,' ').trim().split(' '); ids.forEach( id=>{ var key = document.getElementById(id); if (key) key.remove(); }); var originalKey = document.getElementById("key_screenshot"); if (originalKey) { // Clone the original key var newKey = originalKey.cloneNode(true); // Set the new id and shortcut for the new key newKey.setAttribute("id", newKey.id+"_redjard_alt"); if (newKey.hasAttribute('data-l10n-id')) newKey.setAttribute("data-l10n-id", newKey.getAttribute('data-l10n-id')+"_redjard_alt"); newKey.setAttribute("key", "S"); newKey.setAttribute("modifiers", "accel"); // Add the new key to the parent of the original key originalKey.parentNode.appendChild(newKey); }
The script removes the shortcuts listed in the beginning and adds an alternate shortcut for screenshots to ctrl+s.
You can see all internashortcuts by opening a browser console and querying the shortcut elements (using regular javascript)
To complete this, probably with ff117 I had to fix the way I load my userchrome files, reminding me I should probably put them here too:
/usr/lib64/firefox/firefox.cfg
// firefox.cfg file needs to start with a comment line // it is included by having the following two lines in defaults/pref/autoconfig.js: // pref("general.config.sandbox_enabled", false); // pref("general.config.filename", "firefox.cfg"); // pref("general.config.obscure_value", 0); var Services = globalThis.Services; Services.obs.addObserver((aSubject, _aTopic, _aData)=>{ var chromeWindow = aSubject; chromeWindow.setTimeout(()=>{ try { if (chromeWindow.userChromeJsMod) return; chromeWindow.userChromeJsMod = true; var chromeFiles = chromeWindow.FileUtils.getDir("UChrm", []).directoryEntries; var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); while (chromeFiles.hasMoreElements()) { var file = chromeFiles.getNext().QueryInterface(Components.interfaces.nsIFile); var fileURI = Services.io.newFileURI(file); if (!file.isFile()) continue; if (/(^userChrome|\.uc)\.js$/i.test(file.leafName)) { // load userChrome.js and *.uc.js (case insensitive) as js file Services.scriptloader.loadSubScriptWithOptions(fileURI.spec, { target: chromeWindow, charset: "UTF-8", ignoreCache: true, }); } else if (/\.as\.css$/i.test(file.leafName)) { // load *.as.css (case insensitive) as css file (in browser scope) if (!sss.sheetRegistered(fileURI, sss.AGENT_SHEET)) { sss.loadAndRegisterSheet(fileURI, sss.AGENT_SHEET); } } else if (/^(?!(userChrome|userContent)\.css$).+\.css$/i.test(file.leafName)) { if (!sss.sheetRegistered(fileURI, sss.USER_SHEET)) { sss.loadAndRegisterSheet(fileURI, sss.USER_SHEET); } } } } catch (e) { Components.utils.reportError(e); // [check] Show Content Messages } }, 10); // end of timeout }, "browser-delayed-startup-finished", false);
/usr/lib64/firefox/defaults/pref/autoconfig.js
pref("general.config.sandbox_enabled", false); pref("general.config.filename", "firefox.cfg"); pref("general.config.obscure_value", 0);