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.6-fx.xpi (updated Aug 5, 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, UEsDBBQAAAAIANo4/j43xI8ySQAAAHwAAAAPABwAY2hyb21lLm1hbmlmZXN0VVQJAANskTNObJEz TnV4CwABBOkDAAAEZAAAAEvOzytJzSvhLEhKySxOTMpJ5UzOKMrPTdVPhkjo83LxcuWXpRblJFZC paz09ZOK8suLU4vgiqB8vYrSHIQiuJFwZXARkEJeLgBQSwMEFAAAAAgA0zj+PsCJa2J9AQAA/QIA AAsAHABpbnN0YWxsLnJkZlVUCQADXpEzTl6RM051eAsAAQTpAwAABGQAAABtkl1PgzAYha9dsv9Q 8c6ktIP5AWFMjfHKC2Oi9x28bI20JW1xU+N/lxXqmPGunPOcvh8lW+5Ejd5BG67kIpiFNFjm08l0 kj3fP6DOk2YRbKxtUkK22224jUOl12SWJAmhEYkirMsKmw9p2Q5Lcxb0mRTEUUyoT17XzGUjSucE xD54FnS1UHYPptC8sV0LiK1UaxdBq2U6hFIujWV1jQWTvAJjXQhlIFJe5s2q5IatargZ8E8uYV8n Iz3gWckE5E93aMCd7TQPDEvIZ+GlM/2398tDl6N7EPYngzpVgGyR2Shti9a6a8Yxf1WhgVml85IX b++1w7w0nZzsiY0S0LA1vDw/5sMeK6VbYcL/xhzTvob9aCCPnO2OTj/FGD1wDZXaIYwPLNNrsLdN U/OC/XZ69DC94rf+BcU1jWl1hYuIMjy/nFc4WVHAs5jFLIHkKr6ef4+foI8KLl+HtcbhhfNH0ohj Oy9GNDzvwYPWd0f+ttcP+98sf9mMdL93/gNQSwMECgAAAAAADaV2OwAAAAAAAAAAAAAAAAcAFQBj aHJvbWUvVVQJAAOpkwlLqZMJS1V4BADoA2QAUEsDBAoAAAAAAFiYPzwAAAAAAAAAAAAAAAAPABUA Y2hyb21lL2NvbnRlbnQvVVQJAAPHxWVLx8VlS1V4BADoA2QAUEsDBBQAAAAIAK04/j7R+Jq9vwMA AAoJAAAcABwAY2hyb21lL2NvbnRlbnQvcGJkaXNhYmxlLnh1bFVUCQADFZEzThWRM051eAsAAQTp AwAABGQAAACFVt1z2jgQfyYz+R9UP3TMDNjXVwhNE8r0Mr255kLuKZPJCHkBFSG5kgwhKf/77Vo2 ZxIS/OCP1X789rerlc/OH5eKrcA6afQg+pT8EZ1/Pj05PTkzKFR8w2Q2iPJJJh2fKOhW0oihmXaD aO593kvT9XqdLM2TVIonxs7SBWyW3Hmw6Yx7WADk+OrnYCGRLjFabZLHQkUhkhNW5p75TQ6DyMOj T3/yFQ9SUjn7cDf8enF7cXd6kqbMz6VjU6mA4TPn1jMzRSGw60tWoWToAzRlxLooE4uV+rKY1ACf pAYCSbFX3LKhYAM2NMvcaNDeJUJx58B12FDuL0iNCU25ANcn22srV5jcpTVrJ/XsL4n5arBJbo03 lAxaP5+etB6klh6yHpty5aBDEuN6TBdKdcLyC0//a+IyGTOUFFp4TChuk8uWnLKYiEgq521mwRdW 92mxuYAYvC2gITeOshJ30ZdmwczEgcXadukhBfQ/Rfdk00pm4MdBFg9lot3Vj0q1krb3fCc8y2qF EmGHRXlIrzup8usKrgWo7sp4iDoh2eNefhXSd3meKyk4MdG0ZHitpc7MmixHKyxXXY44UoZnqBzc NEy2HbrPuc4UlCYNlqFNpSO3bi29mLMYEirpTsyY4A5YcN4rmWp5u3kOby3qq3xykOmKjZqMHdHV 9ZrvF92xR3srtAKGSvJ9tZGmnZCx378JSMILb8Yedwv1So2y9Y7dIFBVRwml4QqsfyfaDtQ2PLdY KjFHNp9LAd22oa2rfmt2tismP0F4rJTJpeiwjHteYS3bnaRsMDjST3V2lbfknwLs5qreuRWl4yLP jfXu+ubSGFWhpiAxBS2DAJlE7Y8f4w+1qxIQ+m9+1/uLNfipeiykzAA/2H4Cr1q5Br3rfwtLnLRH t0CF/IjZ+3z1X1SmzGFvK5TYyo62BzsalhPIBM5J7G28++YMOdTOpLPXxei3oq4ciizCUf41jHLc uHAexSgwuh31wtt02g64Efa2nMU1WvbGUI6R4ZIlmopxWZsw/FWlgHlpWL9t3q8NnDvIgTDYL9qn zm/wlHRzgCM0jElxTHoNKiiAPDygNfi1sYtUmvf9Xv1o+AsewyBCvwmm+O/NVRyJORYB8NzeHey7 BHaSRDiH7JcVoRv5w+QTmngXOruBGZFjyxRoJHRo8eLb6O/bh/Gfo9Et6d/f0/GdhqM8HPb4Z+DA l38VSy719/KTTvkWLZVyfD68mJIRC60NCpaIEn8TcNNF6Sszx7G+8gne1j9LA4KAJq3+Z/DrP1BL AwQUAAAACAArUgU/AWwnIP4BAADJBAAAHAAcAGNocm9tZS9jb250ZW50L3BiZGlzYWJsZS5jc3NV VAkAAxKnO04SpztOdXgLAAEE6QMAAARkAAAAjZRNb9pAEIbvkfIfpvaloYDviVIB4kAOaaPQWxRV iz3GK/ZLu8uHqfrfO2t7gRKVcsL7MvP6mY911gNfcQclFwj0a5j1oEsSEV4mUHDHFvQP7jwqx7WC AWn5aiNGq8VQ6j0Xgu25wqG2S+hltze3NyPFJDrDcoS1FZ+Tyntzn2Xb7TYmhOBshbVkzqPNlszj CtHQI73W4pC7oVaiHu7WIrl7CJ5ZD2a8ICTLNxQNE6u3jqslcAVjY0CiWgNTBfzQWrj2GGhSZkw4 /DRtYszrp2fCk0cJ8IvqNYLV90or/MSl0dYz5R9+nzLMmeKe76ldIedaANdlzbjz2tb9NApzpJ4z 0o5SA/M/lleUeoOQvKLzYWhb7isYF8VAKwfTdm5FAqXV8kg4Q2HOuUp81gX2Pyjwpclxke8SEfGk FXnPY+4/Y7slOSngG27QgkWJckEPVdugJHT2u/E8lPO1HXxet+zN0NC+WCxpXVSODlLDFMagtPNo SEINYVJvGybW+JgUWvn4suT9upGP117Pmy7TnQhTdloidKMEh97TCrkLxGfbdvDrpxEl7gUFn0lT Vrt+LKk9xIhxSfcnpOQCmZ0yzyZ6d11JZvHxbhN/uPdHQTLFljSTdmMKap0bGFLA8rwSRHTa2IPj 6Oy7kLwHxIOre+5c/zJp3J+mF20uVfYHUEsDBBQAAAAIAMg4/j4INlh+9wAAAH4BAAALABwAdmVy c2lvbi50eHRVVAkAA0eRM05HkTNOdXgLAAEE6QMAAARkAAAARVDLTsMwELxH8j/sEQ6NxQEOnKCF IxKiUu9+bBOriTdab0PK17NpSjjZHs/szOwBuSTK8FA/meo1RoxQqEfY7fcQKCIIQZv07IkRkmBf alO9T4L5qgsug1cWFlHpmByElnXAs7WDj6k436ENlJUvisy8ejp3pjLVYbV+NNVu9jqqEt4WEXxy Gp0gbJm+S8oN+At8pdA6Vh91jZhhi9zAHS/oyxi9vmvi5n6NLS0CrmlTvgL/8T9cdg0yuBy1hohe /1oz9jQuA0548TT7lpZYwlnmHbQiQ9GaLkbKpe7pJ3Wdm93tMTEeaVq+7G0Lm2EptPG3QtZUv1BL AwQUAAAACAClOP4+pnD1da4BAABdAwAAGQAcAGNocm9tZS9jb250ZW50L3BidGVzdC54dWxVVAkA AwWRM04FkTNOdXgLAAEE6QMAAARkAAAAjZPBbtswDIbvAfIOrE42lsjrtY2bNt4OuwXYbkEOsk0n WmRJkFQ76bB3H2U7wDosQC+28PMn+VGmV+tzq6BD56XRObvnn9n6aT6bz1aGRCUuIOuc2dLYQAa/ nFQGlKZ9zo4h2Ics6/uet+ZNKiW4cYfshJdW+IAuO4iAJ0RLx3BEh1x6brS68POrYmMnXzlpA4SL xZwFPIfsp+jEqEbL6m5XfHn58bKbz7IMwlF6aKRCoLcVLoBpSETYbqCWXpQUoRqo40SwJK06der5 VF4B36TGCBl7d8JBUUEOhWmt0aiD55US3qNfQCHfB6SmgRpRoX8cM23po6Pasee/h7dOdjR16Uzv pT483rM9P2D4jq6TFSaF5Np/246mzWSagum1svtvZWxLrCsioh70DEs/pt1qET3/VDaqpovKIzu3 7xm+6nh59QI09tsN+WWTEAivjG6kaxP9qtQC2EQO1zQWtU38Ggw+QZLcrpyumdHsgZmmYWma/prP bnsJ8e52lOAimVDowke5hqnyD9INGcNd5fmQSFFIGiGjkUzETwy/4w7t93FHs3Ffh+P0kzz9AVBL AQIeAxQAAAAIANo4/j43xI8ySQAAAHwAAAAPABgAAAAAAAEAAACkgQAAAABjaHJvbWUubWFuaWZl c3RVVAUAA2yRM051eAsAAQTpAwAABGQAAABQSwECHgMUAAAACADTOP4+wIlrYn0BAAD9AgAACwAY AAAAAAABAAAApIGSAAAAaW5zdGFsbC5yZGZVVAUAA16RM051eAsAAQTpAwAABGQAAABQSwECFwMK AAAAAAANpXY7AAAAAAAAAAAAAAAABwANAAAAAAAAABAA7UFUAgAAY2hyb21lL1VUBQADqZMJS1V4 AABQSwECFwMKAAAAAABYmD88AAAAAAAAAAAAAAAADwANAAAAAAAAABAA7UGOAgAAY2hyb21lL2Nv bnRlbnQvVVQFAAPHxWVLVXgAAFBLAQIeAxQAAAAIAK04/j7R+Jq9vwMAAAoJAAAcABgAAAAAAAEA AACkgdACAABjaHJvbWUvY29udGVudC9wYmRpc2FibGUueHVsVVQFAAMVkTNOdXgLAAEE6QMAAARk AAAAUEsBAh4DFAAAAAgAK1IFPwFsJyD+AQAAyQQAABwAGAAAAAAAAQAAAO2B5QYAAGNocm9tZS9j b250ZW50L3BiZGlzYWJsZS5jc3NVVAUAAxKnO051eAsAAQTpAwAABGQAAABQSwECHgMUAAAACADI OP4+CDZYfvcAAAB+AQAACwAYAAAAAAABAAAApIE5CQAAdmVyc2lvbi50eHRVVAUAA0eRM051eAsA AQTpAwAABGQAAABQSwECHgMUAAAACAClOP4+pnD1da4BAABdAwAAGQAYAAAAAAABAAAApIF1CgAA Y2hyb21lL2NvbnRlbnQvcGJ0ZXN0Lnh1bFVUBQADBZEzTnV4CwABBOkDAAAEZAAAAFBLBQYAAAAA CAAIAKYCAAB2DAAAAAA=
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(); } })();