Freezing dragon

in browser •  8 years ago  (edited)

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:  

  1. Display a close button on the active tab only. (Same behavior of Firefox 31 and later)
  2. Display close button on all tabs. (Default of Firefox 30 and earlier)
  3. Don't display any close buttons.
  4. 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! 

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!