diff --git a/helpers/DATA/firefox/patch_changes/Remove_moreFromMozilla_Focus_and_Klar.patch b/helpers/DATA/firefox/patch_changes/Remove_moreFromMozilla_Focus_and_Klar.patch index 4e47879..72ecd3b 100644 --- a/helpers/DATA/firefox/patch_changes/Remove_moreFromMozilla_Focus_and_Klar.patch +++ b/helpers/DATA/firefox/patch_changes/Remove_moreFromMozilla_Focus_and_Klar.patch @@ -6,20 +6,20 @@ Based on https://git.parabola.nu/abslibre.git/diff/libre/iceweasel/9004-FSDG-mis diff -Nru a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js --- a/browser/app/profile/firefox.js 2022-05-22 09:35:55.500675021 +0000 +++ b/browser/app/profile/firefox.js 2022-05-22 21:54:34.961904349 +0000 -@@ -1007,11 +1007,11 @@ - // Toggling Search bar on and off in about:preferences - pref("browser.preferences.search", true); - #if defined(NIGHTLY_BUILD) +@@ -1233,11 +1233,11 @@ pref("accessibility.typeaheadfind.linksonly", false); + pref("accessibility.typeaheadfind.flashBar", 1); + + // Whether we can show the "Firefox Labs" section. -pref("browser.preferences.experimental", true); +pref("browser.preferences.experimental", false); - #else - pref("browser.preferences.experimental", false); - #endif + // Whether we had to hide the "Firefox Labs" section because it would be empty. + pref("browser.preferences.experimental.hidden", false); + // Whether we show the "More from Mozilla" section. -pref("browser.preferences.moreFromMozilla", true); +pref("browser.preferences.moreFromMozilla", false); - pref("browser.preferences.experimental.hidden", false); - pref("browser.preferences.defaultPerformanceSettings.enabled", true); + // Used by settings to track whether the user customized advanced + // performance settings. Not used directly elsewhere. @@ -1907,7 +1907,7 @@ pref("browser.promo.focus.disallowed_regions", "cn"); diff --git a/helpers/DATA/firefox/process-json-files.py b/helpers/DATA/firefox/process-json-files.py index aa7e832..992cb45 100644 --- a/helpers/DATA/firefox/process-json-files.py +++ b/helpers/DATA/firefox/process-json-files.py @@ -1,6 +1,9 @@ #! /usr/bin/python3 - -# Copyright (C) 2020, 2021 grizzlyuser +# Copyright (C) 2024 Luis Guzmán +# Copyright (C) 2020, 2021, 2022, 2023, 2024 grizzlyuser +# Based on: https://gitlab.trisquel.org/trisquel/wrapage-helpers/-/blob/81881d89b2bf7d502dd14fcccdb471fec6f6b206/helpers/DATA/firefox/reprocess-search-config.py +# Below is the notice from the original author: +# # Copyright (C) 2020, 2021 Ruben Rodriguez # # This program is free software; you can redistribute it and/or modify @@ -23,6 +26,7 @@ import time import copy import argparse import pathlib +import logging from collections import namedtuple from jsonschema import validate @@ -41,12 +45,42 @@ parser.add_argument( type=int, default=2, help='indent for pretty printing of output files') +parser.add_argument( + '-l', + '--loglevel', + choices=logging._nameToLevel.keys(), + default=logging.INFO, + help='logging level') arguments = parser.parse_args() +logging.basicConfig(level=arguments.loglevel) +logger = logging.getLogger(str(pathlib.Path(__file__).name)) + File = namedtuple('File', ['path', 'content']) -class RemoteSettings: +class JsonProcessor: + @classmethod + def process(cls): + parsed_jsons = [] + for json_path in cls.JSON_PATHS: + logger.info('Reading input: ' + str(json_path) + '...') + with json_path.open(encoding='utf-8') as file: + parsed_jsons.append(File(json_path, json.load(file))) + + parsed_schema = None + if hasattr(cls, "SCHEMA_PATH"): + logger.info('Reading schema: ' + str(json_path) + '...') + with cls.SCHEMA_PATH.open() as file: + parsed_schema = json.load(file) + + processed = cls.process_parsed(parsed_jsons, parsed_schema) + with processed.path.open('w') as file: + json.dump(processed.content, file, indent=arguments.indent) + logger.info('Wrote: ' + str(processed.path)) + + +class RemoteSettings(JsonProcessor): DUMPS_PATH_RELATIVE = 'services/settings/dumps' DUMPS_PATH_ABSOLUTE = arguments.MAIN_PATH / DUMPS_PATH_RELATIVE @@ -75,11 +109,12 @@ class RemoteSettings: @classmethod def now(cls): - return int(round(time.time() / 10 ** 6)) + return int(round(time.time() * 1000)) @classmethod def process_raw(cls, unwrapped_jsons, parsed_schema): timestamps, result = [], [] + for collection in unwrapped_jsons: should_modify_collection = cls.should_modify_collection(collection) for record in collection.content: @@ -110,13 +145,23 @@ class RemoteSettings: return File(cls.OUTPUT_PATH, result) @classmethod - def process(cls, parsed_jsons, parsed_schema): + def process_parsed(cls, parsed_jsons, parsed_schema): return cls.wrap( cls.process_raw( cls.unwrap(parsed_jsons), parsed_schema)) +class EmptyRemoteSettings(RemoteSettings): + @classmethod + def should_drop_record(cls, search_engine): + return True + + @classmethod + def process_record(cls, record): + return record + + class Changes(RemoteSettings): JSON_PATHS = tuple(RemoteSettings.DUMPS_PATH_ABSOLUTE.glob('*/*.json')) OUTPUT_PATH = RemoteSettings.DUMPS_PATH_ABSOLUTE / 'monitor/changes' @@ -132,7 +177,7 @@ class Changes(RemoteSettings): changes = [] for collection in unwrapped_jsons: - if collection.path not in (RemoteSettings.DUMPS_PATH_ABSOLUTE / 'main/example.json', RemoteSettings.DUMPS_PATH_ABSOLUTE / 'main/search-config-v2.json'): + if collection.path != RemoteSettings.DUMPS_PATH_ABSOLUTE / 'main/example.json': latest_change = {} latest_change[cls._LAST_MODIFIED_KEY_NAME] = cls.get_collection_timestamp( collection) @@ -145,53 +190,108 @@ class Changes(RemoteSettings): return File(cls.OUTPUT_PATH, changes) -class SearchConfig(RemoteSettings): +class SearchConfigV2(RemoteSettings): JSON_PATHS = ( RemoteSettings.DUMPS_PATH_ABSOLUTE / - 'main/search-config.json', + 'main/search-config-v2.json', ) SCHEMA_PATH = arguments.MAIN_PATH / \ - 'toolkit/components/search/schema/search-config-schema.json' + 'toolkit/components/search/schema/search-config-v2-schema.json' OUTPUT_PATH = JSON_PATHS[0] - _DUCKDUCKGO_SEARCH_ENGINE_ID = 'ddg@search.mozilla.org' + _DUCKDUCKGO_SEARCH_ENGINE_IDENTIFIER = 'ddg' @classmethod - def should_drop_record(cls, search_engine): - return search_engine['webExtension']['id'] not in ( - cls._DUCKDUCKGO_SEARCH_ENGINE_ID, 'wikipedia@search.mozilla.org', - 'trisquel@search.mozilla.org', 'trisquel-packages@@search.mozilla.org', - 'qwant@search.mozilla.org', 'ecosia@search.mozilla.org') + def should_drop_record(cls, record): + if record['recordType'] != 'engine': + return False + + identifier = record['identifier'] + excluded_identifiers = ['ecosia', 'qwant', 'trisquel', 'trisquel-packages'] + + return ( + identifier != cls._DUCKDUCKGO_SEARCH_ENGINE_IDENTIFIER and + not (identifier.startswith('wikipedia') or identifier in excluded_identifiers) + ) @classmethod - def process_record(cls, search_engine): - [search_engine.pop(key, None) - for key in ['extraParams', 'telemetryId']] + def process_record(cls, record): + if record['recordType'] == 'defaultEngines': + return cls.process_default_engines(record) + elif record['recordType'] == 'engine': + return cls.process_engine(record) + elif record['recordType'] == 'engineOrders': + return cls.process_engine_orders(record) + else: + return record - general_specifier = {} - for specifier in search_engine['appliesTo'].copy(): - if 'application' in specifier: - if 'distributions' in specifier['application']: - search_engine['appliesTo'].remove(specifier) - continue - specifier['application'].pop('extraParams', None) + @classmethod + def process_default_engines(cls, default_engines): + default_engines['globalDefault'] = cls._DUCKDUCKGO_SEARCH_ENGINE_IDENTIFIER + default_engines['specificDefaults'] = [] + return default_engines - if 'included' in specifier and 'everywhere' in specifier[ - 'included'] and specifier['included']['everywhere']: - if search_engine['webExtension']['id'] == cls._DUCKDUCKGO_SEARCH_ENGINE_ID: - specifier['default'] = 'yes' - general_specifier = specifier + @classmethod + def process_engine(cls, engine): + engine['base'].pop('partnerCode', None) + engine['base']['urls']['search'].pop('params', None) - if not general_specifier: - general_specifier = {'included': {'everywhere': True}} - search_engine['appliesTo'].insert(0, general_specifier) - if search_engine['webExtension']['id'] == cls._DUCKDUCKGO_SEARCH_ENGINE_ID: - general_specifier['default'] = 'yes' + if engine['identifier'] == cls._DUCKDUCKGO_SEARCH_ENGINE_IDENTIFIER: + engine['base']['name'] += ' HTML' + engine['base']['urls']['search']['base'] = 'https://html.duckduckgo.com/html' - return search_engine + allRegions_prefixes = ['ecosia', 'qwant', 'trisquel'] + + if any(engine['identifier'].startswith(prefix) for prefix in allRegions_prefixes) or \ + engine['identifier'] == cls._DUCKDUCKGO_SEARCH_ENGINE_IDENTIFIER: + engine['variants'] = [{'environment': {'allRegionsAndLocales': True}}] + + return engine + + @classmethod + def process_engine_orders(cls, engine_orders): + engine_orders['orders'] = [] + return engine_orders + +class SearchConfigOverridesV2(EmptyRemoteSettings): + JSON_PATHS = ( + RemoteSettings.DUMPS_PATH_ABSOLUTE / + 'main/search-config-overrides-v2.json', + ) + SCHEMA_PATH = arguments.MAIN_PATH / \ + 'toolkit/components/search/schema/search-config-overrides-v2-schema.json' + OUTPUT_PATH = JSON_PATHS[0] -class TippyTopSites: +class SearchDefaultOverrideAllowlist(EmptyRemoteSettings): + JSON_PATHS = ( + RemoteSettings.DUMPS_PATH_ABSOLUTE / + 'main/search-default-override-allowlist.json', + ) + SCHEMA_PATH = arguments.MAIN_PATH / \ + 'toolkit/components/search/schema/search-default-override-allowlist-schema.json' + OUTPUT_PATH = JSON_PATHS[0] + + +class SearchTelemetryV2(EmptyRemoteSettings): + JSON_PATHS = ( + RemoteSettings.DUMPS_PATH_ABSOLUTE / + 'main/search-telemetry-v2.json', + ) + SCHEMA_PATH = arguments.MAIN_PATH / \ + 'browser/components/search/schema/search-telemetry-v2-schema.json' + OUTPUT_PATH = JSON_PATHS[0] + + +class UrlClassifierSkipUrls(EmptyRemoteSettings): + JSON_PATHS = ( + RemoteSettings.DUMPS_PATH_ABSOLUTE / + 'main/url-classifier-skip-urls.json', + ) + OUTPUT_PATH = JSON_PATHS[0] + + +class TippyTopSites(JsonProcessor): JSON_PATHS = ( arguments.MAIN_PATH / 'browser/components/newtab/data/content/tippytop/top_sites.json', @@ -199,7 +299,7 @@ class TippyTopSites: 'tippytop/top_sites.json') @classmethod - def process(cls, parsed_jsons, parsed_schema): + def process_parsed(cls, parsed_jsons, parsed_schema): tippy_top_sites_main = parsed_jsons[0] tippy_top_sites_branding = parsed_jsons[1] result = tippy_top_sites_branding.content + \ @@ -234,19 +334,15 @@ class TopSites(RemoteSettings): # To reflect the latest timestamps, Changes class should always come after # all other RemoteSettings subclasses -processors = (SearchConfig, Changes) +processors = ( + SearchConfigV2, + SearchConfigOverridesV2, + SearchDefaultOverrideAllowlist, + SearchTelemetryV2, + UrlClassifierSkipUrls, + TopSites, + Changes, + TippyTopSites) for processor in processors: - parsed_jsons = [] - for json_path in processor.JSON_PATHS: - with json_path.open(encoding='utf-8') as file: - parsed_jsons.append(File(json_path, json.load(file))) - - parsed_schema = None - if hasattr(processor, "SCHEMA_PATH"): - with processor.SCHEMA_PATH.open() as file: - parsed_schema = json.load(file) - - processed = processor.process(parsed_jsons, parsed_schema) - with processed.path.open('w') as file: - json.dump(processed.content, file, indent=arguments.indent) + processor.process() diff --git a/helpers/DATA/firefox/search-custom/services/settings/dumps/main/top-sites.json b/helpers/DATA/firefox/search-custom/services/settings/dumps/main/top-sites.json new file mode 100644 index 0000000..3f8d0ff --- /dev/null +++ b/helpers/DATA/firefox/search-custom/services/settings/dumps/main/top-sites.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "url": "https://trisquel.info/", + "order": 0, + "title": "Trisquel", + "id": "ec7f4843-6be5-5e86-870a-1c8383500a4b", + "last_modified": 1715345084783 + }, + { + "url": "https://packages.trisquel.org/", + "order": 1, + "title": "Trisquel Packages", + "id": "27a9b035-0b8b-4472-97cb-b1866aba0740", + "last_modified": 1715345084786 + }, + { + "url": "https://www.gnu.org/", + "order": 2, + "title": "GNU", + "id": "1baee931-751c-5993-b6fe-d86fbf78f9b0", + "last_modified": 1715345084789 + }, + { + "url": "https://www.fsf.org/", + "order": 3, + "title": "FSF", + "id": "fcc60dd8-4d97-5aca-8e5d-784652c75818", + "last_modified": 1715345084792 + }, + { + "url": "https://directory.fsf.org/", + "order": 4, + "title": "FSF Directory", + "id": "abe5bfb2-9487-5697-9f27-e0b782dfe006", + "last_modified": 1715345084796 + }, + { + "url": "https://libreplanet.org/", + "order": 5, + "title": "LibrePlanet", + "id": "e3d2cf88-a4dc-5d2e-9f9a-f3ea241d17d8", + "last_modified": 1715345084800 + }, + { + "url": "https://www.wikipedia.org/", + "order": 6, + "title": "Wikipedia", + "id": "02c295f5-54a8-5d29-8d1f-b619216b20c0", + "last_modified": 1715345084803 + }, + { + "url": "https://h-node.org/", + "order": 7, + "title": "h-node", + "id": "c426481f-8c3f-53b8-b23a-431a91a1c7b4", + "last_modified": 1715345084807 + } + ], + "timestamp": 1715345084810 +} diff --git a/helpers/DATA/firefox/search-custom/tippytop/top_sites.json b/helpers/DATA/firefox/search-custom/tippytop/top_sites.json new file mode 100644 index 0000000..68433f9 --- /dev/null +++ b/helpers/DATA/firefox/search-custom/tippytop/top_sites.json @@ -0,0 +1,52 @@ +[ + { + "domains": ["duckduckgo.com"], + "image_url": "images/duckduckgo-com@2x.svg", + "favicon_url": "favicons/duckduckgo-com.ico" + }, + { + "domains": ["trisquel.info"], + "image_url": "images/trisquel.png", + "favicon_url": "favicons/trisquel.ico" + }, + { + "domains": ["packages.trisquel.org"], + "image_url": "images/trisquel-packages.png", + "favicon_url": "favicons/trisquel-packages.ico" + }, + { + "domains": ["gnu.org"], + "image_url": "images/gnu.png", + "favicon_url": "favicons/gnu.ico" + }, + { + "domains": ["fsf.org"], + "image_url": "images/fsf.png", + "favicon_url": "favicons/fsf.ico" + }, + { + "domains": ["directory.fsf.org"], + "image_url": "images/directory.png", + "favicon_url": "favicons/fsf.ico" + }, + { + "domains": ["libreplanet.org"], + "image_url": "images/libreplanet.png", + "favicon_url": "favicons/libreplanet.ico" + }, + { + "domains": ["fsfe.org"], + "image_url": "images/fsfe.png", + "favicon_url": "favicons/fsfe.ico" + }, + { + "domains": ["wikipedia.org"], + "image_url": "images/wikipedia.png", + "favicon_url": "favicons/wikipedia.ico" + }, + { + "domains": ["h-node.org"], + "image_url": "images/hnode.png", + "favicon_url": "favicons/hnode.ico" + } +] diff --git a/helpers/DATA/firefox/searchplugins/trisquel-packages-v2.json b/helpers/DATA/firefox/searchplugins/trisquel-packages-v2.json new file mode 100644 index 0000000..bdfbe63 --- /dev/null +++ b/helpers/DATA/firefox/searchplugins/trisquel-packages-v2.json @@ -0,0 +1,30 @@ + { + "base": { + "aliases": [ + "packages", + "p" + ], + "classification": "unknown", + "name": "Trisquel Packages", + "urls": { + "search": { + "base": "https://packages.trisquel.org/search", + "params": [], + "searchTermParamName": "keywords" + } + } + }, + "id": "b5fd21a8-e369-477f-a3f2-b47a370f9030", + "identifier": "trisquel-packages", + "last_modified": 1678, + "recordType": "engine", + "schema": "defaultEngines", + "variants": [ + { + "environment": { + "allRegionsAndLocales": true + }, + "optional": false + } + ] + }, diff --git a/helpers/DATA/firefox/searchplugins/trisquel-packages.json b/helpers/DATA/firefox/searchplugins/trisquel-packages.json deleted file mode 100644 index c52066d..0000000 --- a/helpers/DATA/firefox/searchplugins/trisquel-packages.json +++ /dev/null @@ -1,15 +0,0 @@ - { - "schema": 1674147734592, - "appliesTo": [ - { - "included": { - "everywhere": true - } - } - ], - "webExtension": { - "id": "trisquel-packages@search.mozilla.org" - }, - "id": "b5fd21a8-e369-477f-a3f2-b47a370f9030", - "last_modified": 1678 - }, diff --git a/helpers/DATA/firefox/searchplugins/trisquel-v2.json b/helpers/DATA/firefox/searchplugins/trisquel-v2.json new file mode 100644 index 0000000..dffbbd5 --- /dev/null +++ b/helpers/DATA/firefox/searchplugins/trisquel-v2.json @@ -0,0 +1,30 @@ + { + "base": { + "aliases": [ + "trisquel", + "t" + ], + "classification": "unknown", + "name": "Trisquel", + "urls": { + "search": { + "base": "https://trisquel.info/search/node", + "params": [], + "searchTermParamName": "q" + } + } + }, + "id": "b99ed276-9557-4492-8bbb-d59826381893", + "identifier": "trisquel", + "last_modified": 1678, + "recordType": "engine", + "schema": "defaultEngines", + "variants": [ + { + "environment": { + "allRegionsAndLocales": true + }, + "optional": false + } + ] + }, diff --git a/helpers/DATA/firefox/searchplugins/trisquel.json b/helpers/DATA/firefox/searchplugins/trisquel.json deleted file mode 100644 index 5f093ba..0000000 --- a/helpers/DATA/firefox/searchplugins/trisquel.json +++ /dev/null @@ -1,15 +0,0 @@ - { - "schema": 1674147734535, - "appliesTo": [ - { - "included": { - "everywhere": true - } - } - ], - "webExtension": { - "id": "trisquel@search.mozilla.org" - }, - "id": "b99ed276-9557-4492-8bbb-d59826381893", - "last_modified": 1678 - }, diff --git a/helpers/DATA/firefox/settings.js b/helpers/DATA/firefox/settings.js index e621609..4514a4d 100644 --- a/helpers/DATA/firefox/settings.js +++ b/helpers/DATA/firefox/settings.js @@ -294,3 +294,10 @@ defaultPref("browser.search.serpEventTelemetry.enabled",false); // Disable Privacy-Preserving Attribution submition pref("dom.private-attribution.submission.enabled", false); + +// Disable Machine Learning +defaultPref("browser.ml.enabled", false); +defaultPref("browser.ml.chat.enabled", false); +// Hide from UI +defaultPref("browser.ml.chat.hideFromLabs", true); +defaultPref("browser.ml.chat.hideLabsShortcuts", true); diff --git a/helpers/DATA/firefox/tmp_favicons/ddg-html.ico b/helpers/DATA/firefox/tmp_favicons/ddg-html.ico deleted file mode 100644 index 3ad2082..0000000 Binary files a/helpers/DATA/firefox/tmp_favicons/ddg-html.ico and /dev/null differ diff --git a/helpers/DATA/firefox/tmp_favicons/ddg.ico b/helpers/DATA/firefox/tmp_favicons/ddg.ico deleted file mode 100644 index 3ad2082..0000000 Binary files a/helpers/DATA/firefox/tmp_favicons/ddg.ico and /dev/null differ diff --git a/helpers/DATA/firefox/tmp_favicons/ecosia.ico b/helpers/DATA/firefox/tmp_favicons/ecosia.ico deleted file mode 100644 index cc72d09..0000000 Binary files a/helpers/DATA/firefox/tmp_favicons/ecosia.ico and /dev/null differ diff --git a/helpers/DATA/firefox/tmp_favicons/qwant.ico b/helpers/DATA/firefox/tmp_favicons/qwant.ico deleted file mode 100644 index d43d1d5..0000000 Binary files a/helpers/DATA/firefox/tmp_favicons/qwant.ico and /dev/null differ diff --git a/helpers/DATA/firefox/tmp_favicons/wikipedia.ico b/helpers/DATA/firefox/tmp_favicons/wikipedia.ico deleted file mode 100644 index 4314071..0000000 Binary files a/helpers/DATA/firefox/tmp_favicons/wikipedia.ico and /dev/null differ diff --git a/helpers/DATA/firefox/tmp_restore_favicons_on_old_search-engine_bar.patch b/helpers/DATA/firefox/tmp_restore_favicons_on_old_search-engine_bar.patch deleted file mode 100644 index cf5f9fe..0000000 --- a/helpers/DATA/firefox/tmp_restore_favicons_on_old_search-engine_bar.patch +++ /dev/null @@ -1,153 +0,0 @@ -diff --git a/browser/components/search/extensions/ddg/manifest.json b/browser/components/search/extensions/ddg/manifest.json -index 104eee64..62c546b4 100644 ---- a/browser/components/search/extensions/ddg/manifest.json -+++ b/browser/components/search/extensions/ddg/manifest.json -@@ -2,19 +2,24 @@ - "name": "DuckDuckGo", - "description": "Search DuckDuckGo", - "manifest_version": 2, -- "version": "1.5", -+ "version": "1.4", - "browser_specific_settings": { - "gecko": { - "id": "ddg@search.mozilla.org" - } - }, - "hidden": true, -+ "icons": { -+ "16": "favicon.ico" -+ }, -+ "web_accessible_resources": ["favicon.ico"], - "chrome_settings_overrides": { - "search_provider": { - "keyword": ["@duckduckgo", "@ddg"], - "name": "DuckDuckGo", - "search_url": "https://duckduckgo.com/", -- "search_url_get_params": "t=ffab&q={searchTerms}", -+ "search_form": "https://duckduckgo.com/", -+ "search_url_get_params": "q={searchTerms}", - "suggest_url": "https://ac.duckduckgo.com/ac/", - "suggest_url_get_params": "q={searchTerms}&type=list" - } -diff --git a/browser/components/search/extensions/ddg-html/manifest.json b/browser/components/search/extensions/ddg-html/manifest.json -index b2deff22..0639b068 100644 ---- a/browser/components/search/extensions/ddg-html/manifest.json -+++ b/browser/components/search/extensions/ddg-html/manifest.json -@@ -2,19 +2,24 @@ - "name": "DuckDuckGo (HTML)", - "description": "Search DuckDuckGo (HTML)", - "manifest_version": 2, -- "version": "1.5", -+ "version": "1.4", - "browser_specific_settings": { - "gecko": { - "id": "ddg-html@search.mozilla.org" - } - }, - "hidden": true, -+ "icons": { -+ "16": "favicon.ico" -+ }, -+ "web_accessible_resources": ["favicon.ico"], - "chrome_settings_overrides": { - "search_provider": { - "keyword": ["@duckduckgo", "@ddg"], - "name": "DuckDuckGo (HTML)", - "search_url": "https://html.duckduckgo.com/html/", -- "search_url_get_params": "t=ffab&q={searchTerms}", -+ "search_form": "https://html.duckduckgo.com/html/", -+ "search_url_get_params": "q={searchTerms}", - "suggest_url": "https://ac.duckduckgo.com/ac/", - "suggest_url_get_params": "q={searchTerms}&type=list" - } -diff --git a/browser/components/search/extensions/ecosia/manifest.json b/browser/components/search/extensions/ecosia/manifest.json -index b5312409..74fc9aff 100644 ---- a/browser/components/search/extensions/ecosia/manifest.json -+++ b/browser/components/search/extensions/ecosia/manifest.json -@@ -2,17 +2,22 @@ - "name": "Ecosia", - "description": "Search Ecosia", - "manifest_version": 2, -- "version": "1.3", -+ "version": "1.2", - "browser_specific_settings": { - "gecko": { - "id": "ecosia@search.mozilla.org" - } - }, - "hidden": true, -+ "icons": { -+ "16": "favicon.ico" -+ }, -+ "web_accessible_resources": ["favicon.ico"], - "chrome_settings_overrides": { - "search_provider": { - "name": "Ecosia", - "search_url": "https://www.ecosia.org/search", -+ "search_form": "https://www.ecosia.org/", - "search_url_get_params": "tt=mzl&q={searchTerms}", - "suggest_url": "https://ac.ecosia.org/autocomplete", - "suggest_url_get_params": "type=list&q={searchTerms}" -diff --git a/browser/components/search/extensions/qwant/manifest.json b/browser/components/search/extensions/qwant/manifest.json -index 66338257..cceb5994 100644 ---- a/browser/components/search/extensions/qwant/manifest.json -+++ b/browser/components/search/extensions/qwant/manifest.json -@@ -1,13 +1,17 @@ - { - "name": "Qwant", - "manifest_version": 2, -- "version": "1.5", -+ "version": "1.4", - "browser_specific_settings": { - "gecko": { - "id": "qwant@search.mozilla.org" - } - }, - "hidden": true, -+ "icons": { -+ "16": "favicon.ico" -+ }, -+ "web_accessible_resources": ["favicon.ico"], - "chrome_settings_overrides": { - "search_provider": { - "keyword": "@qwant", -@@ -15,7 +19,8 @@ - "search_url": "https://www.qwant.com/", - "search_url_get_params": "client=brz-moz&q={searchTerms}", - "suggest_url": "https://api.qwant.com/api/suggest/", -- "suggest_url_get_params": "client=opensearch&q={searchTerms}" -+ "suggest_url_get_params": "client=opensearch&q={searchTerms}", -+ "search_form": "https://www.qwant.com/" - } - } - } -diff --git a/browser/components/search/extensions/wikipedia/manifest.json b/browser/components/search/extensions/wikipedia/manifest.json -index 03e00b69..696d98fa 100644 ---- a/browser/components/search/extensions/wikipedia/manifest.json -+++ b/browser/components/search/extensions/wikipedia/manifest.json -@@ -2,7 +2,7 @@ - "name": "__MSG_extensionName__", - "description": "__MSG_extensionDescription__", - "manifest_version": 2, -- "version": "1.4", -+ "version": "1.3", - "browser_specific_settings": { - "gecko": { - "id": "wikipedia@search.mozilla.org" -@@ -10,11 +10,16 @@ - }, - "hidden": true, - "default_locale": "en", -+ "icons": { -+ "16": "favicon.ico" -+ }, -+ "web_accessible_resources": ["favicon.ico"], - "chrome_settings_overrides": { - "search_provider": { - "keyword": "@wikipedia", - "name": "__MSG_extensionName__", - "search_url": "__MSG_searchUrl__", -+ "search_form": "__MSG_searchForm__", - "suggest_url": "__MSG_suggestUrl__", - "search_url_get_params": "__MSG_searchUrlGetParams__" - } diff --git a/helpers/make-firefox b/helpers/make-firefox index 2b3d2cd..fdf11b8 100644 --- a/helpers/make-firefox +++ b/helpers/make-firefox @@ -19,14 +19,17 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=113 +VERSION=114 EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main' REPOKEY=9BDB3D89CE49EC21 . ./config -#SHA HASHES UPDATES +# SHA256 HASHES UPDATES GLEAN_CONF_RS_INITIAL=$(sha256sum third_party/rust/glean/src/configuration.rs|awk '{print$1}') +# GNUZILLA ADDON REPLACEMENT +OLD_WEB_DEV_URL="https://addons.mozilla.org/firefox/collections/mozilla/webdeveloper/" +WEB_DEV_URL="https://gnuzilla.gnu.org/mozzarella/category.php?id=web-development" rm debian/control @@ -37,6 +40,7 @@ sed '/async download.*/areturn;' -i services/settings/RemoteSettingsClient.sys.m # Disable activity-stream antifeatures. # These are not condensed into a single sed script to make it fail on individual commands that didn't change the source ActivityStream=browser/components/newtab/lib/ActivityStream.sys.mjs +BAP_FirefoxJs=browser/app/profile/firefox.js sed '/^const DEFAULT_SITES/,/^])\;/c const DEFAULT_SITES = new Map\([[""]]\);' -i browser/components/newtab/lib/DefaultSites.sys.mjs sed '/"showSponsored"/,/value/s/value: true/value: false/' -i $ActivityStream sed '/"telemetry"/,/value/s/value: true/value: false/' -i $ActivityStream @@ -51,29 +55,29 @@ sed 's/preffedRegions.includes.geo. .. ..locales .. locales.includes.locale./fal #echo "#header-asrouter-container{display: none!important;}" >> browser/components/newtab/css/activity-stream-linux.css #Disable «Sponsored tiles on the New Tab page» - firefox 92+94 sed '/"showSponsoredTopSites"/,/value/s/value: true/value: false/' -i $ActivityStream -sed -i '/activity-stream.showSponsored/s|true|false|g' browser/app/profile/firefox.js +sed -i '/activity-stream.showSponsored/s|true|false|g' $BAP_FirefoxJs #Disable «Mozilla VPN» - firefox 94 -sed '/"browser.privatebrowsing.vpnpromourl"/s/https.*"/"/' -i browser/app/profile/firefox.js +sed '/"browser.privatebrowsing.vpnpromourl"/s/https.*"/"/' -i $BAP_FirefoxJs grep -rl browser.vpn_promo.enabled | xargs -r sed -i '/browser.vpn_promo.enabled/s|true|false|' sed '/network.connectivity-service.IPv/s/http.*success.txt?ipv[46]//' -i modules/libpref/init/all.js sed 's/accounts-static.cdn.mozilla.net.*sync.services.mozilla.com//' -i modules/libpref/init/all.js # Disable 106 firefox-view and other firefox-branded popups -sed -i '/browser.urlbar.quicksuggest.shouldShowOnboardingDialog/s|true|false|' browser/app/profile/firefox.js -sed -i '/services.sync.prefs.sync.browser.firefox-view.feature-tour/s|true|false|' browser/app/profile/firefox.js +sed -i '/browser.urlbar.quicksuggest.shouldShowOnboardingDialog/s|true|false|' $BAP_FirefoxJs +sed -i '/services.sync.prefs.sync.browser.firefox-view.feature-tour/s|true|false|' $BAP_FirefoxJs ##disable firefox-view ##sed -i '/"browser.tabs.firefox-view"/s|true|false|' browser/app/profile/firefox.js #deprecated -v127 ##disable ui tour -sed -i '/browser.uitour.enabled/s|true|false|' browser/app/profile/firefox.js +sed -i '/browser.uitour.enabled/s|true|false|' $BAP_FirefoxJs ##disable colorways closet -sed -i '/browser.theme.colorway-closet/s|true|false|' browser/app/profile/firefox.js +sed -i '/browser.theme.colorway-closet/s|true|false|' $BAP_FirefoxJs ##disable newtab intro - check adjustment for versions greater than 106 #grep -rl browser.newtabpage.introShown |xargs -r sed -i '/browser.newtabpage.introShown/s|true|false|' ##Remove mailto handlers. 110 sed -i '/kHandlerList = {/,/^ };/{/^ /d}' uriloader/exthandler/HandlerList.sys.mjs # keep contectRelevancy disabled (first appearence is false thus using /bin/sed) -/bin/sed -i '/"toolkit.contentRelevancy.ingestEnabled"/s|,.*)|, false)|' browser/app/profile/firefox.js +/bin/sed -i '/"toolkit.contentRelevancy.ingestEnabled"/s|,.*)|, false)|' $BAP_FirefoxJs # Replace ubufox recommendation sed 's/xul-ext-ubufox/xul-ext-youtube-html5-video-player/' -i debian/control.in @@ -109,12 +113,14 @@ grep -rl toolkit.telemetry.bhrPing.enabled | xargs -r sed -i '/toolkit.telemetr grep -rl security.certerrors.recordEventTelemetry | xargs -r sed -i '/security.certerrors.recordEventTelemetry/s|true|false|' grep -rl services.sync.telemetry.maxPayloadCount modules/ | xargs -r sed -i '/services.sync.telemetry.maxPayloadCount/s|500|-1|' grep -rl services.sync.telemetry.submissionInterval modules/ | xargs -r sed -i '/services.sync.telemetry.submissionInterval/s|43200|-1|' -echo 'pref("dom.security.unexpected_system_load_telemetry_enabled", false);' | tee -a browser/app/profile/firefox.js -echo 'pref("toolkit.telemetry.hybridContent.enabled", false);' | tee -a browser/app/profile/firefox.js +echo 'pref("dom.security.unexpected_system_load_telemetry_enabled", false);' | tee -a $BAP_FirefoxJs +echo 'pref("toolkit.telemetry.hybridContent.enabled", false);' | tee -a $BAP_FirefoxJs # GPC opt-out entry added on 120 (not enabled yet). -echo '//pref("privacy.globalprivacycontrol.enabled", true);' | tee -a browser/app/profile/firefox.js +echo '//pref("privacy.globalprivacycontrol.enabled", true);' | tee -a $BAP_FirefoxJs # Disable translataion popup grep -rl browser.translations.automaticallyPopup modules/ | xargs -r sed -i '/browser.translations.automaticallyPopup/s|true|false|' +# Disable Firefox Relay +sed -i '/signon.firefoxRelay.feature/c pref("signon.firefoxRelay.feature", "disabled");' $BAP_FirefoxJs # Update third_party/rust/glean/src/configuration.rs sha256sum at third_party/rust/glean/.cargo-checksum.json GLEAN_CONF_RS_MODIFIED=$(sha256sum third_party/rust/glean/src/configuration.rs|awk '{print$1}') @@ -125,6 +131,9 @@ sed_csum $GLEAN_CONF_RS_INITIAL \ sed '/Google API/,/google-api-keyfile/ d' debian/config/mozconfig.in -i sed '/"geo.provider.network.url"/s|https.*"|"|' -i modules/libpref/init/all.js +# Disable save password in browser suggestion. +#grep -lr '^pref("signon.rememberSignons"'| xargs sed -i "/^pref(\"signon.rememberSignons\"/s|true|false|" modules/libpref/init/all.js + # Org branding sed 's/com.ubuntu/org.trisquel/' -i debian/config/mozconfig.in @@ -157,123 +166,7 @@ sed "s/iceweasel,/iceweasel, firefox,/" -i debian/control.in sed -i /ubuntu-bookmarks/d debian/patches/series rm debian/patches/ubuntu-bookmarks* -# Custom newtab images -sed '/^]$/d' -i browser/components/newtab/data/content/tippytop/top_sites.json -sed 's/}$/},/' -i browser/components/newtab/data/content/tippytop/top_sites.json - -cat << EOF >> browser/components/newtab/data/content/tippytop/top_sites.json - { - "domains": ["trisquel.info"], - "image_url": "images/trisquel.png", - "favicon_url": "favicons/trisquel.ico" - }, - { - "domains": ["packages.trisquel.org"], - "image_url": "images/trisquel-packages.png", - "favicon_url": "favicons/trisquel-packages.ico" - }, - { - "domains": ["gnu.org"], - "image_url": "images/gnu.png", - "favicon_url": "favicons/gnu.ico" - }, - { - "domains": ["fsf.org"], - "image_url": "images/fsf.png", - "favicon_url": "favicons/fsf.ico" - }, - { - "domains": ["directory.fsf.org"], - "image_url": "images/directory.png", - "favicon_url": "favicons/fsf.ico" - }, - { - "domains": ["libreplanet.org"], - "image_url": "images/libreplanet.png", - "favicon_url": "favicons/libreplanet.ico" - }, - { - "domains": ["fsfe.org"], - "image_url": "images/fsfe.png", - "favicon_url": "favicons/fsfe.ico" - }, - { - "domains": ["wikipedia.org"], - "image_url": "images/wikipedia.png", - "favicon_url": "favicons/wikipedia.ico" - }, - { - "domains": ["h-node.org"], - "image_url": "images/hnode.png", - "favicon_url": "favicons/hnode.ico" - } -] -EOF - -#uuidgen --sha1 --namespace @dns --name "trisquel.info" -cat << TOP_JSON > services/settings/dumps/main/top-sites.json -{ - "data": [ - { - "url": "https://trisquel.info/", - "order": 0, - "title": "Trisquel", - "id": "ec7f4843-6be5-5e86-870a-1c8383500a4b", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://packages.trisquel.org/", - "order": 1, - "title": "Trisquel Packages", - "id": "27a9b035-0b8b-4472-97cb-b1866aba0740", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://www.gnu.org/", - "order": 2, - "title": "GNU", - "id": "1baee931-751c-5993-b6fe-d86fbf78f9b0", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://www.fsf.org/", - "order": 3, - "title": "FSF", - "id": "fcc60dd8-4d97-5aca-8e5d-784652c75818", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://directory.fsf.org/", - "order": 4, - "title": "FSF Directory", - "id": "abe5bfb2-9487-5697-9f27-e0b782dfe006", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://libreplanet.org/", - "order": 5, - "title": "LibrePlanet", - "id": "e3d2cf88-a4dc-5d2e-9f9a-f3ea241d17d8", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://www.wikipedia.org/", - "order": 6, - "title": "Wikipedia", - "id": "02c295f5-54a8-5d29-8d1f-b619216b20c0", - "last_modified": $(date +%s%N | cut -b1-13) - }, - { - "url": "https://h-node.org/", - "order": 7, - "title": "h-node", - "id": "c426481f-8c3f-53b8-b23a-431a91a1c7b4", - "last_modified": $(date +%s%N | cut -b1-13) - } - ], - "timestamp": $(date +%s%N | cut -b1-13) -} -TOP_JSON +# Custom newtab images at DATA/firefox/search-custom/ cp $DATA/newtab/*.ico browser/components/newtab/data/content/tippytop/favicons/ cp $DATA/newtab/*.png browser/components/newtab/data/content/tippytop/images/ @@ -288,21 +181,12 @@ sed 's|ddg@|ddg-html@|' -i browser/components/search/extensions/ddg-html/manifes #Trisquel custom search engines cp -a $DATA/searchplugins/* browser/components/search/extensions/ -/bin/sed "/\"data\": \[/ r $DATA/searchplugins/trisquel.json" -i ./services/settings/dumps/main/search-config.json -/bin/sed "/\"data\": \[/ r $DATA/searchplugins/trisquel-packages.json" -i ./services/settings/dumps/main/search-config.json +/bin/sed "/\"data\": \[/ r $DATA/searchplugins/trisquel-v2.json" -i ./services/settings/dumps/main/search-config-v2.json +/bin/sed "/\"data\": \[/ r $DATA/searchplugins/trisquel-packages-v2.json" -i ./services/settings/dumps/main/search-config-v2.json echo "Customizing search engines..." # Reprocess search preconfiguration dump -python3 $DATA/process-json-files.py . browser/components/extensions/schemas/ -# Disable new search config 'til new one gets figured out (ref: https://hg.mozilla.org/mozilla-central/rev/bad743156b30) -patch_Rp1 $DATA/firefox_permanently_enable_new_search_engine_config.patch -# Restore favicons on old search config. -patch_p1 $DATA/tmp_restore_favicons_on_old_search-engine_bar.patch -for i in ddg-html ddg ecosia qwant wikipedia -do - echo "> tmp restore of $i favicon" - cp $DATA/tmp_favicons/$i.ico browser/components/search/extensions/$i/favicon.ico -done +python3 $DATA/process-json-files.py . $DATA/search-custom/ cat << EOF > debian/distribution.ini [Global] @@ -330,6 +214,13 @@ cp -a $DATA/branding/* browser/branding/unofficial cp -a $DATA/branding/* browser/branding/nightly cp -a $DATA/branding/* browser/branding/aurora +# Replace/remove brand name on used view(s) to avoid branding issues. +for i in $(find . -name brandings.ftl) +do + /bin/sed -i '/firefoxview-brand-name/s|Firefox View|Abrowser View|' $i + sed -i 's|= Firefox |= |' $i +done + sed '/about-wordmark.svg/d' -i browser/base/content/aboutDialog.css echo '#warningDesc, #communityExperimentalDesc, #communityDesc, #contributeDesc {display:none!important}' >> browser/base/content/aboutDialog.css # Disable preprocessor @@ -479,13 +370,7 @@ find browser/branding/ -name about-logo-private@2x.png | xargs -n1 cp $DATA/debu find browser/branding/ -name PrivateBrowsing_70.png | xargs -n1 cp $DATA/debug_brand/PrivateBrowsing_70.png find browser/branding/ -name PrivateBrowsing_150.png | xargs -n1 cp $DATA/debug_brand/PrivateBrowsing_150.png -# Replace/remove brand name on used view(s) to avoid branding issues. -sed -i '/firefoxview-brand-name/s|Firefox View|Abrowser View|' toolkit/locales/en-US/toolkit/branding/brandings.ftl -sed -i 's|= Firefox |= |' toolkit/locales/en-US/toolkit/branding/brandings.ftl - # Replace addons placeholder for the gnuzilla mozzarella. -OLD_WEB_DEV_URL="https://addons.mozilla.org/firefox/collections/mozilla/webdeveloper/" -WEB_DEV_URL="https://gnuzilla.gnu.org/mozzarella/category.php?id=web-development" find l10n/ -name aboutAddons.ftl | xargs -r sed -i '/.placeholder/s|addons.mozilla.org|gnuzilla.gnu.org|g' sed -i "s|$OLD_WEB_DEV_URL|$WEB_DEV_URL|" devtools/client/menus.js @@ -508,7 +393,7 @@ do [ -d $HOMEDIR/.mozilla/firefox ] || continue echo Linking $HOMEDIR/.mozilla/firefox into $HOMEDIR/.mozilla/abrowser ln -s $HOMEDIR/.mozilla/firefox $HOMEDIR/.mozilla/abrowser -done +done fi exit 0 ' >> debian/abrowser.postinst.in