b38bb24948aa1949164845c15eef002bef66f229
   1After Google changed the new tab page of Chrome to an ugly array of circular icons (around mid 2016), I looked around for a better new tab page extension. This project started as a fork of a fork: it is based off [Start Clean](https://startclean.github.io/) with the addition of favicons by [shadowfacts](https://github.com/shadowfacts/Chrome-Extension).
   2
   3Compared to the original version, there is much more flexibility in managing links and categories, and the UI is much improved. Here is a summary of the changes I've made:
   4
   5* Links open in the current tab
   6* Background, foreground and hover colours are configurable
   7* Removed ueslesss search bar and apps sections (all I want is links to common sites)
   8* You can now have as many columns of links as you like, and reorder them with drag and drop
   9* Added new "edit mode" where you can rearrange/add/remove/rename columns
  10* Added basic keyboard shortcuts & tab indices
  11- Uses browser-default sans serif font rather than locally packaged font
  12- Improved settings UI
  13- Use the more secure `XMLHttpRequest` method for retrieving favicon blobs
  14- Reduced permission requirements on installation
  15- Much cleaner code (well, as much as possible - it is Javascript after all)
  16
  17The sorting of links is managed by [SortableJS](https://github.com/SortableJS/Sortable). If I was writing this from scratch again I would use native HTML5 drag and drop, but I guess if it ain't broke don't fix it. I did end up implementing HTML5 drag and drop for the movement of columns though.
  18
  19Favicons for websites are obtained from Google's S2 API. One day I might upgrade to [Favicon Kit](https://faviconkit.com/) which is less centralised. This is the only external object loaded, but it triggers a scary warning in Chrome which says it can "change data on www.google.com".
  20
  21![](../plain/newtab.png)
  22![](../plain/newtab-2.png)
  23
  24## Installation
  25
  26Unfortunately installation is a little protracted because Google wants all extensions to be distributed through the Chrome Web Store. Apparently this is enforced to increase security, but I have to pay to upload an extension (nice bait Google) so I see no reason to upload it.
  27
  28You can still install it as a local extension in developer mode:
  29
  301. Go to <chrome://extensions> and turn on developer mode (top right)
  312. Download <a href="../plain/build/newtab.crx" download>build/newtab.crx</a> ("Save link as...", don't install it straight away - see below)
  323. Drag the file onto the extensions page to install it
  33
  34Opening the crx file using Chrome's default file handler causes a "CRX_REQUIRED_PROOF_MISSING" error because Chrome now only allows extensions obtained from their store. However, you can drag and drop it onto the extensions page and that seems to bypass the verification. More info [here](https://support.google.com/chrome/thread/3125155?hl=en).
  35
  36## Building
  37
  38For the time being you can run the extension as a local "unpacked" extension, but if you make modifications you may like to make a distributible crx file. You can do this with the included build script - just run `make all` in the root directory. You'll need your own private key in newtab.pem in the root directory (Chrome can generate this from the Extensions page).