// settings to make firefox a little more comfy for me
// many tips taken from https://www.reddit.com/r/firefox/comments/17hlkhp/what_are_your_must_have_changes_in_aboutconfig/

//
//
// better ui

// use system titlebar
user_pref("browser.tabs.inTitlebar", 0);

// big square scrollbar that doesn't disappear, in lieu of native them
user_pref("widget.non-native-theme.scrollbar.style", 4);
user_pref("widget.non-native-theme.scrollbar.size.orverride", 24);
user_pref("widget.gtk.overlay-scrollbars.enabled", false);

// make the buttons smaller
user_pref("browser.uidensity", 1);

// make websites use the colours i choose
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", true);
user_pref("browser.display.background_color", "#ffffe8");

// don't let websites set their own fonts
user_pref("browser.display.use_document_fonts", 0);

// always enable cursor key navigation
// user_pref("accessibility.browsewithcaret", true);

// nicer settings in view source
user_pref("view_source.wrap_long_lines", true);
user_pref("view_source.syntax_highlight", false);
user_pref("view_source.tab_size", 8);
//user_pref("view_source.editor.external", true);
//user_pref("view_source.editor.path", "emacs");
//user_pref("view_source.tab", false);  // open source view in new window

// disable user interface elements
user_pref("browser.toolbars.bookmarks.visibility", "never");

// clean new tab page
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topsites", false);
user_pref("browser.newtabpage.activity-stream.showSearch", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.enabled", false);
// TODO: still shows top sites.  Unsure how to get rid.

// boring url bar: show protocol, don't grey bits out, don't "pop it out"
user_pref("browser.urlbar.formatting.enabled", false);
user_pref("browser.urlbar.trimURLs", false);
user_pref("browser.urlbar.openViewOnFocus", false);

// disable url bar suggestions
// user_pref("browser.urlbar.maxRichResults", -1);

// use text in the toolbar, not icons
//user_pref("browser.chrome.toolbar_style", 1);

// don't pop up menu on alt
user_pref("ui.key.menuAccessKeyFocuses", false);

// default to empty headers when printing
user_pref("print.print_footerleft", "");
user_pref("print.print_footerright", "");
user_pref("print.print_headerleft", "");
user_pref("print.print_headerright", "");

// don't show a disclaimer for about:config
user_pref("browser.aboutConfig.showWarning", false);

// backspace to go back
user_pref("browser.backspace_action", 0);

//
//
// Disable unused features

// disable firefox view
user_pref("browser.tabs.firefox-view", false);

// disable pocket
user_pref("extensions.pocket.enabled", false);
user_pref("extensions.pocket.showHome", false);
user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false);
user_pref("browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled", false);
user_pref("browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled", false);

// disable reader view
user_pref("reader.parse-on-load.enabled", false);

// disable telemetry
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("datareporting.healthreport.service.enabled", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionPolicyAcceptedVersion", 2);
user_pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "1450604664862");
user_pref("datareporting.policy.firstRunTime", "1450604654097");

// disable https only.
user_pref("dom.security.https_only_mode_ever_enabled", false);
user_pref("dom.security.https_only_mode", false);

// disable experiments
user_pref("experiments.enabled", false);
user_pref("experiments.supported", false);

// don't save passwords
user_pref("signon.rememberSignons", false);

// disable firefox accounts
user_pref("identity.fxaccounts.enabled", false);

// disable picture-in-picture video
user_pref("media.videocontrols.picture-in-picture.video-toggle.enabled", false);

// disable safe browsing
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.enabled", false);
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);

//
//
// Enable used features

// enable userchrome
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);

// always prompt me for download location
user_pref("browser.download.useDownloadDir", false);

//
//
// Window oriented behaviour

// Middle clock opens in a new window
user_pref("browser.tabs.opentabfor.middleclick", false);
user_pref("middlemouse.openNewWindow", true);

// open links in the current tab (1), even if the website says otherwise (0)
user_pref("browser.link.open_newwindow", 1);
user_pref("browser.link.open_newwindow.restriction", 0);

// Closing the last tab closes the browser
// user_pref("browser.tabs.closeWindowWithLastTab", false);

//
//
// speed related things
user_pref("nglayout.initialpaint.delay", 0);

//
//
// Settings to increase caches etc, which ostensibly speed firefox up but that many people recommend against

// dont save browsing session to disk so often
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.memory.enable", true);

// Lower cache size as we are now storing it in memory not on disk
user_pref("media.cache_size", 102400);
user_pref("media.memory_caches_combined_limit_kb", 102400);
user_pref("image.mem.surfacecache.max_size_kb", 102400);

// Only save the session once per day
user_pref("browser.sessionstore.interval", 86400000);
// Don't store recently parsed recent pages in memory
user_pref("browser.sessionhistory.max_total_viewers", 0);

// Increase the defaults for a bunch of settings related to http requests.
user_pref("network.buffer.cache.size", 524288);
user_pref("network.buffer.cache.count", 128);
user_pref("network.http.max-connections", 1800);
user_pref("network.http.max-persistent-connections-per-server", 12);
user_pref("network.http.max-urgent-start-excessive-connections-per-host", 10); user_pref("network.http.pacing.requests.burst", 32);
user_pref("network.http.pacing.requests.min-parallelism", 10);
user_pref("network.websocket.max-connections", 400);
user_pref("network.ssl_tokens_cache_capacity", 32768);
// also see "security.pki.crlite_mode" and "browser.cache.memory.capacity"



/* misc stuff */
//user_pref("browser.fixup.dns_first_for_single_words", true);
//user_pref("browser.reader.detectedFirstArticle", true);
//user_pref("browser.search.suggest.enabled", false);
//user_pref("browser.search.update", false);
//user_pref("browser.sessionstore.restore_on_demand", false);
//user_pref("browser.sessionstore.resume_from_crash", false);

//user_pref("browser.tabs.animate", false);
//
//user_pref("browser.tabs.warnOnClose", false);
//user_pref("browser.warnOnQuit", false);
//user_pref("browser.warnOnQuitShortcut", false);
//

//

//user_pref("general.smoothScroll", false);
//user_pref("keyword.enabled", false);
//user_pref("layout.spellcheckDefault", 0);
//user_pref("mousewheel.system_scroll_override.enabled", false);
//user_pref("network.allow-experiments", false);
//user_pref("network.captive-portal-service.enabled", false);
//user_pref("pdfjs.disabled", true);
//user_pref("security.webauth.u2f", true);