User:Dickvl/Private Browsing disable
Here is a simple extension to disable the "Tools -> Start Private Browsing" menu entry and the "Tools > Clear Recent History" menu entry in Firefox 3.5/6.
The extension hides these menu entries and also disables their shortcut keys and should prevent Firefox from entering Private Browsing mode. The CSS code (chrome://pbdisable/content/pbdisable.css) in the extension also hides "Tools -> Options -> Privacy -> Automatically start Firefox in a private browsing session" and the History setting. You can copy that code to userChrome.css if you want these entries hidden if the extension is disabled. Current Firefox versions still process code in userChrome.css if started in Safe_mode. Keep in mind that removing or disabling "Private Browsing" will not make it impossible to delete private data like visited websites (history) or cache. It is possible to clear the cache via "Tools -> Options -> Advanced -> Network" and to clear history in the Library and History sidebar. See also [1]
Private Browsing toggle test
You can copy and paste this code in the "Tools > Error Console" to test if it is possible to toggle Private Browsing mode before and after you have installed the extension. It should not be possible, but what Firefox shows can be deceiving as it looks a bit buggy to me. You can check if new history is still kept.
var Cc = Components.classes, Ci = Components.interfaces; var pbs = Cc["@mozilla.org/privatebrowsing;1"].getService(Ci.nsIPrivateBrowsingService); var prs = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService); var oldPB = pbs.privateBrowsingEnabled, newPB; if (prs.confirm(null, "Private Browsing", "PB is "+((pbs.privateBrowsingEnabled)?"on":"off"))) { pbs.privateBrowsingEnabled = !pbs.privateBrowsingEnabled; prs.alert(null, "Private Browsing", "PB is " + ((newPB=pbs.privateBrowsingEnabled)?"on":"off") + ((oldPB==newPB)?' (failed)':'')); }
Lock prefs with mozilla.cfg
You can lock some history prefs and reset pref browser.privatebrowsing.autostart to false with this version of the file mozilla.cfg.
Copy and paste the full DATA code in the location bar and press the Enter key. Save the file as mozilla.cfg (updated Feb 23, 2010) and copy the file to the Firefox program folder.
data:application/octet-stream;base64, PDwaF31/cnM1L29/fISAcn87fX92g26Bcm9/fISAdnt0O26CgXyAgW5/gS85LXNueYByNkgaF3l8 cHhdf3JzNS9vf3yEgHJ/O3V2gIF8f4ZscoV9dn9ybHFuhoAvOS0+RT02SBoXeXxweF1/cnM1L29/ fISAcn87dXaAgXx/hmxyhX12f3JscW6GgGx6dnsvLTlGPTZIGhd5fHB4XX9yczUvfXlucHKAO3V2 gIF8f4Y7cntub3lycS85LYF/gnI2SBoXeXxweF1/cnM1L31/doNucIY7cHlybn9ce2B1goFxfIR7 O3V2gIF8f4YvOS1zbnmAcjZIGhd5fHB4XX9yczUvfX92g25whjtwfXE7dXaAgXx/hi85LXNueYBy NkgaF3l8cHhdf3JzNS99f3aDbnCGO4Bue3aBdodyO4Bue3aBdodyXHtgdYKBcXyEey85LXNueYBy NkgaFw==
You need to create a file local-settings.js with this line:
pref("general.config.filename", "mozilla.cfg");
Copy the file local-settings.js to the grefprefs folder or the defaults\pref folder in the Firefox program folder.
Prefs that are locked show as italic with Status is Locked on the about:config page and can't be changed.
For full instructions, see Locking_preferences
Extension code for pbdisable
Copy and paste the full DATA code in the location bar and press the Enter key. Save the file as pbdisable-1.5-fx.xpi (updated Jul 24, 2011)
You can install the extension via "File > Open File" or by dragging the file in a Firefox window.
You can move the extensions folder (pbdisable@mozillazine.org) from the extensions folder in the Profile Folder to the %AppData%\Mozilla\extensions\{ec8030f7-c20a-464f-9b0e-13a3a9e97384} folder or to the extensions folder in the Firefox program folder to make the extension work in all Firefox profiles. If you do that then you can't uninstall, but you can disable the extension. You can also drop the XPI file in that folder and the extension will be installed on the next start of Firefox. You may have to rename the extension to pbdisable@mozillazine.org.xpi to make that work [2].
data:application/octet-stream;base64, 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
Byte Shift JavaScript
You can use this JavaScript program to encode mozila.cfg.txt to mozilla.cfg and decode mozila.cfg to mozilla.cfg.txt.
/* * Paste this file into Firefox's JavaScript console and click the Evaluate button to run the script - dickvl@kb.mozillazine.org * use a byte shift of 13 to encode the file mozilla.cfg.txt to mozilla.cfg * use a byte shift of -13 to decode mozilla.cfg to mozilla.cfg.txt */ (function(){ var Cc = Components.classes; var Ci = Components.interfaces; var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); var streamIO = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); var input,output='',i,s,sV=13; fp.init(window, "", fp.modeOpen); fp.appendFilter("", "*.txt; *.cfg"); if (fp.show() == fp.returnCancel) return; stream.init(fp.file, 0x01, 0444, null); streamIO.init(stream); input = streamIO.read(stream.available()); streamIO.close(); stream.close(); if((s=prompt('Byte Shift value (13 to encode and -13 to decode):','13'))!=null){ sV=parseInt(s,10); for(i=0;i<input.length;i++){output+=String.fromCharCode(input.charCodeAt(i)+sV)} fp.init(window,"",Ci.nsIFilePicker.modeSave); fp.defaultString="mozilla.cfg"; if (fp.show() == fp.returnCancel) return; var stream=Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); stream.init(fp.file,0x04|0x08,0644,0); stream.write(output,output.length); stream.close(); } })();