[SOLVED] Chrome recent folder dropdown list limitation

Sat, 4 Jul 2015 (tags:linux, chrome, features)

 

Warning

Disclaimer this solution is done for chromium (not chrome) under Debian 8.1 GNU / Linux. If you use something else you will have to probably do changes to this process. If you hesitate to switch to chromium, then give it try. It's not bad, it's not annoying me to sign in into google account on each open tab, in past build in pdf viewer was compensated with pdf.js extension but now the pdf viewer is bundled. And the build in chrome flash player in html5 age doesn't matter anyway.

Binary download

If you are lazy and want to risk downloading binary files from strangers, then by my guest and here is the finished package of chromium v43 amd64. And probably then you don't need to read rest of the article. If you want different version I compiled these as well:

Chrome 43

Chrome 46

Chrome 47

Chrome 52

Chrome 56

Features

Introduction / rant

The solution is to give up on forums and switch from chrome to chromium and recompile it from source yourself. It sounds like last resort, but time after time the google proved the chrome is catering the mainstream users, not power users. Did somebody remember google proved the chrome is catering the mainstream users, not power users. Did somebody remember --enable-vertical-tabs startup argument? Because you needed multiple rows of tabs and you got answer, you aren't meant to have so many tabs opened anyway? Instead of having multiple rows there was just workaround to position the tabs vertically, it got the job done (sort of) and people were happy. That option got disabled after while and you had option to leave to different browser or accept the reality and try to some session extension which will get you productive again. Then there was the new padding in all menus designed for touch devices, which probably is lovely for them, but if you are not using computer from a couch across the living room, but you are sitting properly at the desk and you have your bookmark folders filled exactly to full size of your screen, bookmarks which fit the screen perfectly now have to be scrolled or reorganized, there is --disable-new-menu-style . Fast forward to new bookmark manager and chrome://flags/#enhanced-bookmarks-experiment and thanks the hate it got https://productforums.google.com/forum/#!topic/chrome/hM2B8UmF2rI forced google to disable it, just proves the trend how bad it can get and google will still enforce it on all unless there is not overwhelming disapproval. This mean that features which just minority of power users need will be ignored. Instead of complaining in forums https://productforums.google.com/forum/#!topic/chrome/33LM0lBJXgw and wait for years to be ignored just give up, and do it yourself, it's so much easier. Only thing I regret about this that I waited for so long before I did it.

TL;DR

What I actually did, got the build dependencies so I have all libraries needed to build it. If you are building for the first time something from source, maybe you will need to install build-essentail package and maybe some others as well. 

sudo apt-get build-dep chromium-browser
apt-get source chromium
The i edited  this file:  
chromium-browser-43.0.2357.65/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.cc
 
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
 
#include "chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h"
 
#include "chrome/grit/generated_resources.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "content/public/browser/user_metrics.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/models/combobox_model_observer.h"
 
using bookmarks::BookmarkModel;
using bookmarks::BookmarkNode;
 
namespace {
 
// Max number of most recently used folders.
const size_t kMaxMRUFolders = 5;
 
}  // namespace
 
Right at the beginning of the file is the desired variable value hard coded into the source const size_t kMaxMRUFolders = 5; change it to something you desire, I'm pretty happy with 18. You can run dch -i to give new revision so it will not be exactly the same, it's more fore package manager than for the compilation itself. I made sure I have about 15GB of free HDD space and machine which I can leave compiling for "few" hours.Then I compiled all the sources and build the packages with just one command:
 
cd chromium-browser-43.0.2357.65
dpkg-buildpackage -rfakeroot -b -nc -uc
 
-rfakeroot means that at the moment it will require to have root access to build it, it will go to fakeroot (if desired there are few other options as well). -b means it builds binary package only (no source packages needed). -nc means that it will not clean source files, for repeated recompilation you will have to clean it anyway and start from scratch :(. But if you will run out of space in linking stage this was you could make more space and rerun same command to continue, which could save you lot of time. -uc means unsigned change files (so you will not try to sign the changes file, which for local install is not needed anyway) and it will not give you warrnings messages when it would try to sign the changelog. Went to sleep, next day I had all the packages done and ready to be installed. On 5 year old dual core laptop cpu it can take good while, but even on recent desktop i7 it is not fast task, so either way, be ready to go and do something else in mean time.
 
cd ../
sudo dpkg -i chromium_43.0.2357.65-1~deb8u1_amd64.deb
And I can enjoy my bookmarks the way I wanted to have them for long time. Just after few years complaining on forums and almost 20 000 compiled files and it's done, funny how little is enough to my happiness :-)