Introduction
Four years ago I, as many, had switched from Firefox to chromium-based browser Comodo Dragon. Now, after all these years, it's time to switch back. However, I had to do it even earlier. Fortunately, Comodo offer alternate solution - Comodo IceDragon based on Mozilla Firefox. In this article I tell you how to migrate by most painless way, and also why I finally decided to do it. You can easily change in mind all references Dragon/IceDragon to Chrome/Firefox, all the below applies to them like to any fork. Someone probably wondering why use a third-party solution from Comodo, when there is actual Chrome, because Comodo updates their browser with appreciable delay. The answer is simple: I don't like privacy policy of original Chrome, too many thing need to watch and unsuccessfully anyway. Even more, considering all extensions, >1,5Gb RAM occupied at the start. It's a bit much for browser, even by my standards. In recent months the situation has worsened. At the time of writing this article, Comodo Dragon has 48 kernel version, and Chrome - 50. And some sites have already determined Dragon as outdated browser, although this doesn't affect the functionality. It forced me to write user-scripts to disable overlay notifications. But all of this was still not enough for migration to another browser. The last straw was suddenly formed problem with Gmail and its extensions. I use WiseStamp addon for Gmail. So far it worked well, but now Gmail completely freeze while composing a new message, if signature is loaded in it. By experiment, I found that in Firefox this is not the problem, even when addition WiseStamp is active. And that means that problem somewhere in Dragon browser. In addition, I long had difficulties with videohive.net site, videos there is stubbornly refused to be loaded with any security settings.
Main goals
So, we have clearly decided to migrate to Comodo IceDragon! What inconvenience are waiting for us? Below I gave a list of what has become an inseparable part of my daily work with browser, and what I would like to get as soon as possible:
Immediately should to say that paths, given in the article, may differ slightly for different chromium- и fx-based browsers.
Cookies Exceptions List.
Go to profile folder of your chromium-based browser:
For Windows users: [SYSTEM_DRIVE]:\Users\[USERNAME]\AppData\Local\Comodo\Dragon\User Data\[PROFILE_FOLDER]
For MAC OS X users: ~/Library/Google/Chrome/[PROFILE_FOLDER]
For Linux users: ~/.config/google-chrome/[PROFILE_FOLDER]
There you will find Preferences
, this file contain all preferences in JSON format. Fine there line "cookies": {
, you will see that all your exceptions written there, and looks like:
"[*.]adobe.tt.omtrdc.net,*": {
"setting": 1 //May receive values 1/2/8 - allowed/disallowed/allowed for session.
}
Select all necessary lines and copy to your favorite text editor where batch reformatting each value to MySQL format will be friendly:
INSERT INTO `moz_perms`(`id`,`origin`,`type`,`permission`,`expireType`,`expireTime`,`modificationTime`) VALUES (NULL,"[URL_WITHOUT_ASTERISKS_OR_BRACKETS]","cookie",[SETTING_VALUE],0,0,[ANY_UNIX_TIME]);
Now open profile folder of IceDragon:
For Windows users: [SYSTEM_DRIVE]:\Users\[USERNAME]\AppData\Roaming\Comodo\IceDragon\Profiles\[PROFILE_FOLDER]
For MAC OS X users: ~/Library/Mozilla/Firefox/Profiles/[PROFILE_FOLDER]
For Linux users: ~/.mozilla/firefox/[PROFILE_FOLDER]
There you will find file permissions.sqlite, for work with it we need any DB editor with SQLite support. I personally use DB Browser for SQLite.
As we can see, target values stored in the table moz_perms
, switch to Execute SQL
tab and paste our reformatted strings, than press F5
, save the base. If everything is successful, the lines were added, then you will see exclusion rules in settings of browser.
But still too early to end. Unfortunately, IceDragon has no policy “block all Cookies except allowed”. Precisely, this setting applies only for third-party Cookies. Obviously, it suits most of users, but not us. This problem is solved by expansion Self-Destructing Cookies. It works very simply, by default cookies of any site not listed in the allowed list automatically removed when closing a tab. You may choose two another behaviors: remove Cookies after closing the browser / never delete. It will creates the appropriate exception rules. The only thing I missed, is the ability to force block Cookies. Even if it not necessary now, no one knows when this list may be useful. Because we have learned to move the data between the browsers and seen that not all of them provide the same security policy. Therefore, I would like to have not only a list of permissions, but also list of blocking. Install extension Cookie Monster, which not only gives us a desired opportunity to add an exceptions, but also provide a user-friendly menu for multi-level exception management. And last in this subject, extension CookieExFilter, which add search field in exceptions dialog box. If we will want to make some revisions. On this minor note I finish the Cookies subject, and will move forward.
Proxy Switching List
Historically, in the Dragon I have used extension Proxy SwitchyOmega.
In your case scheme may by slightly different, but gist the same. SwitchyOmega allows you to export auto-switching profile in PAC format. Use it! We will transfer our list to popular extension FoxyProxy Standard. So, export our list from SwitchyOmega, and we see that all sites have a format:
if (/(?:^|\.)domain\.com$/.test(host)) return "+Tor";
For each proxy we need to create separated file for import. Acting same way as for cookies, bring format of each line to next form:
{
"enabled": true,
"name": "[SITE_NAME]",
"pattern": "*://[DOMAIN_NAME]/*",
"isRegEx": false,
"caseSensitive": false,
"blackList": false,
"multiLine": false
} // Don't forget to put a commas
In some cases, you may need specific parameters, but generally it's suitable. When all lines will be reformatted create new file, name it Tor_Proxy_List.json
, and copy data to patterns
node:
{
"patterns": [
//Nodes of our list here
]
}
Now open FoxyProxy's settings and import the resulting file. Repeat the operation for each proxy, if you have several of them.
Speed Dial
At various times, I've used a variety of extensions for Speed Dial. There were good, quick or just powerful variants for both browsers. But I didn't meet a good, comfortable and bug-free versions supported by both browsers. Maybe just bad luck. Therefore, for the last migration I chose the service start.me. It doesn't store page thumbnails, but I don't need it in the long run. But it supports a variety of widgets and batch add links. It was enough to close issue of cross-browser speed dial solution.
Also there is Speed Dial [FVD], which allow to synchronize speed dial link between browsers and devices, but I found bug in version for Firefox - instead the Facebook auth page. Well, in general, its aesthetic component is not good. Nimbus Web make good extensions for syncing bookmarks and speed dial, but Speed Dial extension itself is bad.
Search Engines List
Here we are getting to the most controversial subject - the transfer of search engines. There are several options, and all are equally uncomfortable. I'll start from the most complex.
Manual editing search engines
Starting with version 44 Firefox Foundtation changed the format of data file. Made it, slightly, very peculiar. In work with it, we need a few things:
I keep a copy of Python 2+ in the system for backward compatibility with some applications, but works with 3+. So I used the version for Python 3.4. However, I was faced with certain difficulties during installation LZ4 library on Windows, from me stubbornly required Visual C ++ 10.0. So I used an unofficial package WHL which you can find of this site. For installation on Windows run command:
$ pip install [PATH_TO_YOUR_WHL_FILE]
For other, most progressive OS, run:
$ pip install lz4
Copy file mozlz4a.py to our profile folder and run:
$ mozlz4a.py -d search.json.mozlz4 search.json
New file search.json
will appear in folder. Now export our search engines from Dragon. To do it enter Dragon's profile folder and open file Web Data
with SQLite DB Editor, like as we did it for cookies in the IceDragon. Call the Export dialog box File > Export > Table(s) as CSV file...
. We are interested in a table keywords
. At the output we get a set of strings like this:
[ID],[TITLE],[KEYWORD],[FAVICON_URL],[URL]... //The rest of the parameters we are not interested, I didn't bring them here.
Now open the file search.json
which we had get early, and start to add our search engines. Records in the IceDragon may have different format, I really don't understand why complicate, if it can be written with single line, what can be found even in some addons. Therefore, we will write our engines in simpler form:
{
"_name": "[TITLE]",
"_shortName": "[KEYWORD]",
"_loadPath": "",
"description": "[DESCRIPTION]",
"__searchForm": "[SEARCH_FORM_URL]",
"_iconURL": "data:image/x-icon;base64,[BASE64_CODE]"
},
"_metaData": {
"order": [ID], //ID must be different from Dragon, but may coincide.
"alias": "[KEYWORD]"
},
"_urls": [{
"template": "[URL]", // Like the Dragon, it is used query tag {searchTerms}.
"resultDomain": "[DOMAIN]"
}],
"queryCharset": "[CHARSET]",
"_readOnly": false
} //Don't forget to put a commas
For encoding icons to base64 format you can use GIMP with the script, or any online encoder, dozens of them can be found in Google. When all changes are made save our file and run command:
$ mozlz4a.py search.json search.json.mozlz4
In fact the method is not complete, I don't pretend to be objective, because doesn't tested all possible cases. I recommend to use this method only for correction of existing search engines or cloning. For example, I create several search words with different parameters on Google Images. Therefore, we will consider other, more direct options.
Download from online-libraries
Most "direct" method - downloading engines from Mozilla addons library. There's many, but not everything. Second, often recommended method - downloading engines from open repository Mycroft Project. There is already a wide range of choices, because users can generate engines themselves. There is available a convenient form to generate. However, if the required engine isn't represented here, you will be forced to do routine operation for manually writing parameters, as in the first case.
Usage Addon for generate Search Engines
And finally, the way that I chose - Add to Search Bar extension. This addon makes it easy to generate a valid engine from the context menu of the search bar of almost any site. Of course, there are some white spots. For example, in my case, search query from AJAX-based sites saved incorrectly. Addon can't determin place for {searchTerms} tag. I had to manually fix it by the first method. And closing the topic of search engines in IceDragon, I want to note that there no best options. Therefore, the return procedure of your search engines my take more time then planned. Personally, I've had since. I used the Firefox even at a time when no lz4 archives with custom header was not in sight, everything stored in XML format. Why they decided to change the type of storage, I don't know. Perhaps, lz4 chosen to reduce disk space and keep ability to write changes in real-time. But I have no information to assert, but that isn't important in the context of this article. It's aaccomplished fact, we live with what we have.
Bookmarks
And since we're talking about Nimbus Web, move on to their expansion to synchronize EverSync. Previously, I used Xmarks, but noticeable disadvantage is extension for mobile platforms available by subscription only. EverSync is devoid of this disadvantage, it limit bookmarks (15k) for free accounts instead, and makes it impossible to synchronize backups in the cloud (someone is probably needed). Generally, it provides what Xmark produces only for money, and vice versa. There is nothing to tell.If you've worked with Xmarks, then you already imagine how it all works. Install extension, create an account, select the type of synchronization: merge, overwrite server data, overwrite locale data.
Other must-have extensions
Unfortunately, many, even basic Dragon functions impossible back into the IceDragon with no extensions. Therefore, here I'll tell about all the addons that allow us to be "at home" and even better.
«X» button on each tab
Probably one of the first inconveniences that catches the eye is «X» button only on active tab. This is not useful when multiple tabs opened, but they are not loaded into memory, switching each just to close, take a long time. Fortunately, we have the solution: Tabs closebutton restored" extension» not only returns the familiar behavior of us, but still allows you to set one of four modes:
- Display a close button on the active tab only. (Same behavior of Firefox 31 and later)
- Display close button on all tabs. (Default of Firefox 30 and earlier)
- Don't display any close buttons.
- Display a Tabstrip close button.
However, the extension does not work exactly as expected. For it to work you need to create your own low-level option. You can use default about:config
interface, but I will edit config file. Open prefs.js
file and to add string:
user_pref("browser.tabs.closeButtons", 1);
Quick toggle Bookmarks Toolbar
By default IceDragon have two shortcuts for working with bookmarks. One opens the library, and the other - the side panel. Surprisingly, for the operation to "hide / show bookmarks bar" does not provide any combination. In Dragon I used to do this by pressing Ctrl+Shift+B. What to do? Unfortunately, we need two extensions for this purpose: Hide BookmarksBar and Keybinder. Hide BookmarksBar adds ability for opening bookmarks bar in various ways, including shortcuts. It would have been enough and, but then arises another problem. Ctrl+Shift+B combination, by default, binded for library, so ironic. And in this case Keybinder coming to aid, and allow us to redefine any shortcuts. There will be a new command View Bookmarks Toolbar
, created by Hide BookmarksBar. Make a small reshuffling, assign Ctrl+Alt+L (default shortcut in Hide BookmarksBar) shortcut for the Library, but Ctrl+Shift+B for Bookmars Toolbar. Rejoice to habitual behavior of browser.
Developer tools.
Perhaps the biggest loss, which is waiting for us while migration is a developer tools panel . The analogue in IceDragon looks stylish, but it works quite unusual. We solve this by setting the common Firebug.
Hightlighting of all founded words on the scroll bar.
One of the Dragon features to which get used quickly is highlighting all found words right the scroll bar. It is very convenient. For IceDragon we need to install extension Scrollbar Search Highlighter. It works not so nice, new strip appears right of the scrollbar, but nevertheless - works.
Flush DNS.
For clearing DNS cache in Dragon we need to open the page chrome://net-internals/#dns
and press Clear host cache
. In IceDragon, procedure even more awkward, you need to reset the advanced setting for DNS cache cleaning time to zero, and then return it to old value.
user_pref("network.dnsCacheExpiration", 0);
Neither one nor the other was not convenient. For IceDragon there is extension DNS Flusher, which simplify this operation to one click. Why is it important? Some countries, with regressive politic,practicing blocking sites. Well, we use proxy, but whole traffic proxying rather nontrivial task, it's slow/expenisve. We use FoxyProxy, but what to do when one of requested site had come to blocking. Usually it's unjustifiably. We adds domain to proxy-switching list, refresh page, but anyway come to a operators' placeholder page. It happening because redirected request stored in DNS cache. Flushing DNS allows browser refer to the site again, but in this time through our proxy, just in one click. Interestingly, when I tried to find something like this in Google Extension Store, I have failed.
Optimization
Not all features in IceDragon aimed to minimization and convenience, but much can be fixed. Here I will give a list of parameters which I consider critical. All settings will be written in file prefs.js
or on the about:config
page.
Slow scrolling by mouse wheel
By default Firefox has rather slow scrolling. I don't sure why is is, maybe optimal speed for 95%, but will change. Find parameter mousewheel.default.delta_multiplier_y
and set a wished value. I chose 600 for me. But it also depends from system preferences - experiment. Here handy change the value through about:config
, for immediate testing.
Disable Thumbnail Cache
Since I don't use the default blank page or addons which uses this feature, I don't need stored pages thumbnails in browser. To disable them just change the fallowing parameters:
user_pref("browser.pagethumbnails.capturing_disabled", true);
user_pref("pageThumbs.enabled", false);
Recent tabs and windows history
Modern browsers stores excessive, as I think, information about tabs. From my observations, I concluded that “there is only two kinds of people”: who open hundreds tabs, and searches for tools to effective management, and those who structured information outside browser. I belong to the second type. So, will reduce excess of stored history:
user_pref("browser.sessionstore.max_tabs_undo", 3); //Numbers of recent tabs.
user_pref("browser.sessionstore.max_windows_undo", 0); //Numbers of recent windows.
I have set the optimal values for me, you may have other preferences.
Spellchecking in string fields
By default spellchecking works only for textarea blocks, logically, but will not good always . It can be fixed:
user_pref("layout.spellcheckDefault", 2);
Tabs Preview while switching by Ctrl+Tab
There is a dozen of addons for tab management, fortunately , such a simple thing as quick preview while switching can be reached out-of-box:
user_pref("browser.ctrlTab.previews", true);
Search requests in new tab
As often during the day we using searchbar? For me this number can reach dozens or even hundreds per day. More often I’m looking for additional information and don't want to open search queries in current tab. Course, you may create new tab, but why the extra movements, write:
user_pref("browser.search.openintab", true);
Disable SSL certificate varification
By default IceDragon blocks sites without valid digital certificate. It's good, but sometime problems appears even with popular sites, for example, during maintenance. In this case will be handy temporary disabling such a validation.
user_pref("xpiinstall.signatures.required", false);
Don't forget switch all back when problem will be resolved.
Epilogue
Today that is all. I hope this information will help you to decide to migrations, if you had any doubts, like me in recent past. In any case, writing of this article helped me memorize everything and structurize what have done. I do not want my words to be perceived like criticism of Chromium, everyone can choose what will be convenient to him. I just wanted to tell about the problems which began to appear in this browser under my usage pattern. I'm sure that many of you meets with same issues everyday, but always doesn't have enough time to deal with this issue closely. Please, I'll be glad, if you leave feedback and suggestions in the comments to this article.
All you have a nice day, and thank you for being with us!