diff --git a/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch b/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch index c2ade630..20fddec8 100644 --- a/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch +++ b/helpers/DATA/firefox/patch_changes/002-Remove_moreFromMozilla_Focus_and_Klar.patch @@ -460,7 +460,7 @@ index b5ff592..22cdf39 100644 id: "PB_NEWTAB_VPN_PROMO", template: "pb_newtab", diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn -index bd094a48..ac07e826 100644 +index b2d65603..b44a1525 100644 --- a/browser/components/preferences/jar.mn +++ b/browser/components/preferences/jar.mn @@ -19,8 +19,6 @@ browser.jar: diff --git a/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch b/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch index 88677ac9..d015201f 100644 --- a/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch +++ b/helpers/DATA/firefox/patch_changes/003-disable_sponsored_topsites_and_keep_weather_widget_static.patch @@ -24,8 +24,8 @@ index 217ed280..d91cde94 100644 // Do not enable the preonboarding experience on Linux #ifdef XP_LINUX -@@ -1879,28 +1879,28 @@ pref("browser.newtabpage.activity-stream.search.useHandoffComponent", true); - pref("browser.newtabpage.activity-stream.externalComponents.enabled", true); +@@ -1886,24 +1886,24 @@ pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-b", false); + pref("browser.newtabpage.activity-stream.mobileDownloadModal.variant-c", false); // Mozilla Ad Routing Service (MARS) unified ads service -pref("browser.newtabpage.activity-stream.unifiedAds.tiles.enabled", true); @@ -35,18 +35,14 @@ index 217ed280..d91cde94 100644 +pref("browser.newtabpage.activity-stream.unifiedAds.spocs.enabled", false); +pref("browser.newtabpage.activity-stream.unifiedAds.endpoint", ""); pref("browser.newtabpage.activity-stream.unifiedAds.adsFeed.enabled", false); - #ifdef NIGHTLY_BUILD -pref("browser.newtabpage.activity-stream.unifiedAds.ohttp.enabled", true); +pref("browser.newtabpage.activity-stream.unifiedAds.ohttp.enabled", false); - #else - pref("browser.newtabpage.activity-stream.unifiedAds.ohttp.enabled", false); - #endif // Weather widget for newtab -pref("browser.newtabpage.activity-stream.showWeather", true); +pref("browser.newtabpage.activity-stream.showWeather", false); pref("browser.newtabpage.activity-stream.weather.query", ""); - pref("browser.newtabpage.activity-stream.weather.display", "simple"); + pref("browser.newtabpage.activity-stream.weather.display", "detailed"); pref("browser.newtabpage.activity-stream.images.smart", true); diff --git a/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch b/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch new file mode 100644 index 00000000..5be58ff7 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/016-set_custom_cargo_1.91.patch @@ -0,0 +1,28 @@ +diff --git a/debian/control.in b/debian/control.in +index 758352f8..26383a38 100644 +--- a/debian/control.in ++++ b/debian/control.in +@@ -43,8 +43,8 @@ Build-Depends: cdbs, + libclang-22-dev | libclang-21-dev | libclang-20-dev | libclang-19-dev | libclang-18-dev, + llvm-22-dev | llvm-21-dev | llvm-20-dev | llvm-19-dev | llvm-18-dev, + lld-22 | lld-21 | lld-20 | lld-19 | lld-18, +- cargo-1.90, +- rustc-1.90, ++ cargo-1.91 | cargo-1.90, ++ rustc-1.91 | rustc-1.90, + nodejs (>= 12.22.12) + Standards-Version: 3.9.1 + +diff --git a/debian/build/rules.mk b/debian/build/rules.mk +index 896150e7..413e34fc 100644 +--- a/debian/build/rules.mk ++++ b/debian/build/rules.mk +@@ -109,7 +109,7 @@ LLVM_VERSIONS = 22 21 20 19 18 + DEB_LLVM_VERSION = $(firstword $(foreach llvm_version, $(LLVM_VERSIONS), \ + $(if $(shell which clang-$(llvm_version)), $(llvm_version)))) + +-RUSTC_VERSIONS = 1.90 ++RUSTC_VERSIONS = 1.91 1.90 + DEB_RUSTC_VERSION = $(firstword $(foreach rustc_version, $(RUSTC_VERSIONS), \ + $(if $(shell which rustc-$(rustc_version)), $(rustc_version)))) + diff --git a/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch b/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch new file mode 100644 index 00000000..8dfee481 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/017-modify_sidebar_pins_promo_icons.patch @@ -0,0 +1,38 @@ +diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn +index 3a12a7a3..ac1245a9 100644 +--- a/browser/themes/shared/jar.inc.mn ++++ b/browser/themes/shared/jar.inc.mn +@@ -266,10 +266,10 @@ + skin/classic/browser/search-indicator-badge-add.svg (../shared/search/search-indicator-badge-add.svg) + skin/classic/browser/searchbar.css (../shared/search/searchbar.css) + +- skin/classic/browser/sidebar/firefox.svg (../shared/sidebar/firefox.svg) +- skin/classic/browser/sidebar/foxy.svg (../shared/sidebar/foxy.svg) +- skin/classic/browser/sidebar/gmail.svg (../shared/sidebar/gmail.svg) +- skin/classic/browser/sidebar/slack.svg (../shared/sidebar/slack.svg) ++ skin/classic/browser/sidebar/trisquel.svg (../shared/sidebar/trisquel.svg) ++ skin/classic/browser/sidebar/fsf.svg (../shared/sidebar/fsf.svg) ++ skin/classic/browser/sidebar/wikipedia.svg (../shared/sidebar/wikipedia.svg) ++ skin/classic/browser/sidebar/liberachat.svg (../shared/sidebar/liberachat.svg) + + skin/classic/browser/tabbrowser/content-area.css (../shared/tabbrowser/content-area.css) + skin/classic/browser/tabbrowser/crashed.svg (../shared/tabbrowser/crashed.svg) +diff --git a/browser/components/sidebar/sidebar-pins-promo.mjs b/browser/components/sidebar/sidebar-pins-promo.mjs +index beac7ea4..538ae9aa 100644 +--- a/browser/components/sidebar/sidebar-pins-promo.mjs ++++ b/browser/components/sidebar/sidebar-pins-promo.mjs +@@ -56,10 +56,10 @@ export default class SidebarPinsPromo extends MozLitElement { + this.launcherObserver = new MutationObserver(() => this.requestUpdate()); + } + #icons = [ +- { name: "firefox", src: "chrome://browser/skin/sidebar/firefox.svg" }, +- { name: "slack", src: "chrome://browser/skin/sidebar/slack.svg" }, +- { name: "foxy", src: "chrome://browser/skin/sidebar/foxy.svg" }, +- { name: "gmail", src: "chrome://browser/skin/sidebar/gmail.svg" }, ++ { name: "trisquel", src: "chrome://browser/skin/sidebar/trisquel.svg" }, ++ { name: "liberachat", src: "chrome://browser/skin/sidebar/liberachat.svg" }, ++ { name: "fsf", src: "chrome://browser/skin/sidebar/fsf.svg" }, ++ { name: "wikipedia", src: "chrome://browser/skin/sidebar/wikipedia.svg" }, + ]; + + connectedCallback() { diff --git a/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch b/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch new file mode 100644 index 00000000..d582d489 --- /dev/null +++ b/helpers/DATA/firefox/patch_changes/018-adjust_wallpapers_abrowser.patch @@ -0,0 +1,28 @@ +diff --git a/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs b/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs +index 72df22b3..24f2f807 100644 +--- a/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs ++++ b/browser/extensions/newtab/lib/Wallpapers/WallpaperFeed.sys.mjs +@@ -156,7 +156,9 @@ export class WallpaperFeed { + ...record, + ...(record.attachment + ? { +- wallpaperUrl: `${baseAttachmentURL}${record.attachment.location}`, ++ wallpaperUrl: record.attachment.location.includes("trisquel") ++ ? `https://trisquel.cmxsl.org/newtab/${record.attachment.filename.replace(".avif", ".webp")}` ++ : `${baseAttachmentURL}${record.attachment.location}`, + } + : {}), + background_position: record.background_position || "center", +diff --git a/services/settings/remote-settings.sys.mjs b/services/settings/remote-settings.sys.mjs +index 2330fb01..2c4062d1 100644 +--- a/services/settings/remote-settings.sys.mjs ++++ b/services/settings/remote-settings.sys.mjs +@@ -301,7 +301,7 @@ function remoteSettingsFunction() { + bucketName: bucket, + signerName, + }); +- if (client.verifySignature) { ++ if (client.verifySignature && collection!== "newtab-wallpapers-v2") { + lazy.console.debug( + `${identifier}: Verify signature of bundled changeset` + ); diff --git a/helpers/DATA/firefox/ui_branding/build.json b/helpers/DATA/firefox/ui_branding/build.json new file mode 100644 index 00000000..d51c79df --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/build.json @@ -0,0 +1,72 @@ +{ + "1d43f5a1-64bd-4ad4-b825-88a89878662f": { + "title": "trisquel-abe-01", + "theme": "dark", + "attachment": { + "hash": "962073af456fd63c6fc9b11dadbef724a56b223e04a7136f87e9b670f2b9283d", + "size": 62524, + "filename": "trisquel-abe-01.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-01.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "2bf99683-cde8-438b-9f8e-a1222dc7f59c": { + "title": "trisquel-abe-02", + "theme": "light", + "attachment": { + "hash": "e3363cf5554c98e1243434ee047de9c31ddc3060355a55ce7b3cecd977f379ab", + "size": 72574, + "filename": "trisquel-abe-02.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-02.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "2e468f89-ac6a-474f-a789-5de0be601887": { + "title": "trisquel-abe-03", + "theme": "dark", + "attachment": { + "hash": "3d6687928a6eeee6bd9f52ef2fae115ddfdcf974a832cce2286b37c642c0ede7", + "size": 48020, + "filename": "trisquel-abe-03.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-03.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "429c288c-8d92-4baa-aefb-a04719882454": { + "title": "trisquel-abe-04", + "theme": "light", + "attachment": { + "hash": "f6b225b3f091dd556040028e758d143cbcb4d52d4e43ede3a2a367f44505993f", + "size": 25226, + "filename": "trisquel-abe-04.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-abe-04.avif", + "mimetype": "image/avif" + }, + "background_position": "bottom right" + }, + "451090be-cdf1-49fc-b1f3-bd2f3b4ac34d": { + "title": "trisquel-aramo", + "theme": "dark", + "attachment": { + "hash": "8c9ae9eb2063b763c737cd795af0f7b8883b43b2519d455b4097462ba6f4ad70", + "size": 196288, + "filename": "trisquel-aramo.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-aramo.avif", + "mimetype": "image/avif" + } + }, + "62aa72d9-b9f3-4f29-88f5-5120ee004e7c": { + "title": "trisquel-ecne", + "theme": "dark", + "attachment": { + "hash": "6a233237277c7cdc3a1078f250f1ae21576ceedec9d0abbe33be9f93add25355", + "size": 110186, + "filename": "trisquel-ecne.avif", + "location": "main-workspace/newtab-wallpapers-v2/trisquel-ecne.avif", + "mimetype": "image/avif" + } + } +} \ No newline at end of file diff --git a/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg b/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg new file mode 100644 index 00000000..b4ba9bcf --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/assets/puzzle-fox.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png b/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png new file mode 100644 index 00000000..d6e08c71 Binary files /dev/null and b/helpers/DATA/firefox/ui_branding/debranding/assets/trisquel_qr.png differ diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg b/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg new file mode 100644 index 00000000..1c18635f --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/history-empty.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg new file mode 100644 index 00000000..9ba72654 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-empty.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg new file mode 100644 index 00000000..501befcf --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/debranding/content/synced-tabs-error.svg @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg b/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg new file mode 100644 index 00000000..3f3bc136 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/fsf.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg b/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg new file mode 100644 index 00000000..c76567fd --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/liberachat.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg b/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg new file mode 100644 index 00000000..43b8b1cc --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/trisquel.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg b/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg new file mode 100644 index 00000000..cdfca18f --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/sidebar/wikipedia.svg @@ -0,0 +1,3 @@ + + + diff --git a/helpers/DATA/firefox/ui_branding/wallpaper-replace.py b/helpers/DATA/firefox/ui_branding/wallpaper-replace.py new file mode 100644 index 00000000..95942438 --- /dev/null +++ b/helpers/DATA/firefox/ui_branding/wallpaper-replace.py @@ -0,0 +1,163 @@ +# Copyright (C) 2026 Luis Guzman +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +import json +import hashlib +import os +import time +import argparse +import sys + +def calculate_sha256_hash(file_path): + """ + Calculates the SHA-256 hash of a physical file. + """ + sha256_hash = hashlib.sha256() + with open(file_path, "rb") as f: + for byte_block in iter(lambda: f.read(4096), b""): + sha256_hash.update(byte_block) + return sha256_hash.hexdigest() + +def build_step(config_path, output_path): + """ + Step 1: Reads config.json, processes the data, and creates build.json. + """ + print(f"--- Step 1: Building standalone artifact ---") + + if not os.path.exists(config_path): + print(f"ERROR: Configuration file '{config_path}' not found.") + sys.exit(1) + + with open(config_path, 'r', encoding='utf-8') as f: + config = json.load(f) + + build_data = {} + + for item in config.get('replacements',): + item_id = item.get('id_to_replace') + image_path = item.get('local_image_path') + theme = item.get('theme', '').strip() + + if not image_path or not os.path.exists(image_path): + print(f"WARNING: Local image not found at '{image_path}' for ID {item_id}. Skipping.") + continue + + file_size_bytes = os.path.getsize(image_path) + sha256_hash = calculate_sha256_hash(image_path) + + # Get the real file name (e.g., 'trisquel-aramo.webp') + real_file_name = os.path.basename(image_path) + + # Create the "disguised" file name to bypass Mozilla's strict schema validation + disguised_file_name = real_file_name.replace('.webp', '.avif') + + # Create a 100% schema-compliant entry masking the webp as an avif + build_data[item_id] = { + "title": real_file_name.replace('.webp', ''), + "theme": theme, + "attachment": { + "hash": sha256_hash, + "size": file_size_bytes, + "filename": disguised_file_name, + "location": f"main-workspace/newtab-wallpapers-v2/{disguised_file_name}", + "mimetype": "image/avif" # Masking the mime type for the validator + } + } + + # Check if the wallpaper is an "abe" one, to position logo accordingly + if "abe" in real_file_name.lower(): + build_data[item_id]["background_position"] = "bottom right" + + # Make sure dark theme is used on trisquel-ecne & trisquel-aramo images + if "trisquel-ecne" in real_file_name.lower() or "trisquel-aramo" in real_file_name.lower(): + build_data[item_id]["theme"] = "dark" + + print(f"Processed: {real_file_name} -> Masked as: {disguised_file_name} -> ID: {item_id}") + + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(build_data, f, indent=2, ensure_ascii=False) + + print(f"\nSUCCESS: Generated standalone artifact at '{output_path}'.") + +def replace_step(source_path, target_path): + """ + Step 2: Injects the build.json data into the target Firefox JSON database. + """ + print(f"\n--- Step 2: Injecting into target JSON ---") + + if not os.path.exists(source_path): + print(f"ERROR: Build source file '{source_path}' not found.") + sys.exit(1) + + if not os.path.exists(target_path): + print(f"ERROR: Target JSON file '{target_path}' not found.") + sys.exit(1) + + with open(source_path, 'r', encoding='utf-8') as f: + build_data = json.load(f) + + with open(target_path, 'r', encoding='utf-8') as f: + target_db = json.load(f) + + current_timestamp = int(time.time() * 1000) + modified_count = 0 + + for item in target_db.get('data',): + item_id = item.get('id') + + if item_id in build_data: + new_data = build_data[item_id] + + # Wipe old custom keys if they exist from previous tests + item.pop('wallpaperUrl', None) + + # Apply schema-compliant data + item['attachment'] = new_data['attachment'] + item['title'] = new_data['title'] + item['schema'] = current_timestamp + item['last_modified'] = current_timestamp + + if new_data.get('theme'): + item['theme'] = new_data['theme'] + + # Apply background_position if it exists in build_data + if new_data.get('background_position'): + item['background_position'] = new_data['background_position'] + + print(f"Updated ID: {item_id} with file '{new_data['attachment']['filename']}'") + modified_count += 1 + + if modified_count > 0: + target_db['timestamp'] = current_timestamp + with open(target_path, 'w', encoding='utf-8') as f: + json.dump(target_db, f, indent=2, ensure_ascii=False) + print(f"\nSUCCESS: Modified {modified_count} entries in '{target_path}'.") + else: + print("\nWARNING: No matching IDs found in the target JSON to replace.") + +def main(): + parser = argparse.ArgumentParser(description="Firefox Newtab Wallpaper Injection Tool") + parser.add_argument('--config', type=str, nargs='?', const='./config.json', help="Step 1: Path to config.json.") + parser.add_argument('--replace', type=str, help="Step 2: Path to target Firefox JSON file to be modified.") + parser.add_argument('--source', type=str, default='./build.json', help="Step 2: Path to the standalone build.json.") + + args = parser.parse_args() + + if not args.config and not args.replace: + parser.print_help() + sys.exit(1) + + if args.config: build_step(args.config, './build.json') + if args.replace: replace_step(args.source, args.replace) + +if __name__ == "__main__": + main() diff --git a/helpers/make-firefox b/helpers/make-firefox index b1a8b456..6440b799 100644 --- a/helpers/make-firefox +++ b/helpers/make-firefox @@ -19,7 +19,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=131 +VERSION=132 EXTERNAL='deb-src http://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $UPSTREAM main' REPOKEY=AEBDF4819BE21867 @@ -275,6 +275,26 @@ do /bin/sed -i 's|= Firefox |= |' $i done +# Replace sidebar icons +rm -rf browser/themes/shared/sidebar +cp -R $DATA/ui_branding/sidebar browser/themes/shared/ + +python3 $DATA/ui_branding/wallpaper-replace.py --source $DATA/ui_branding/build.json \ + --replace services/settings/dumps/main/newtab-wallpapers-v2.json + +# Graphic Debranding +cp $DATA/ui_branding/debranding/assets/puzzle-fox.svg browser/extensions/newtab/data/content/assets/puzzle-fox.svg +## replace multiple firefox qr codes. +for qr in download-qr-code-var-a.png download-qr-code-var-b.png download-qr-code-var-c.png +do + cp $DATA/ui_branding/debranding/assets/trisquel_qr.png browser/extensions/newtab/data/content/assets/$qr +done +## Remove mascot +for graph in history-empty.svg synced-tabs-empty.svg synced-tabs-error.svg +do + cp $DATA/ui_branding/debranding/content/$graph browser/components/firefoxview/content/$graph +done + # Disable preprocessor sed 's/_PP//' -i browser/branding/branding-common.mozbuild #Prevent duplicated values. @@ -328,7 +348,7 @@ sed 's/Firefox/Abrowser/' -i debian/control.in \ # Useful when trying to catch patch issues faster. [ "$MAIN_REBRANDING_ENABLED" = 1 ] && main_rebranding -sed s/ubuntu/trisquel/g debian/distribution.ini -i +sed "s/ubuntu/trisquel/g" -i debian/distribution.ini sed "s/ubuntu_version/trisquel_version/; s/Ubuntu 10.10/Trisquel $REVISION/; s/1010/40/" -i debian/firefox.postinst.in # Delete stuff we don't use and that may contain trademaked logos