diff --git a/recipes/atuq/branding/brand.properties b/recipes/atuq/branding/brand.properties new file mode 100644 index 00000000..7fb8af3a --- /dev/null +++ b/recipes/atuq/branding/brand.properties @@ -0,0 +1,3 @@ +brandShorterName=atuq +brandShortName=atuq +brandFullName=atuq diff --git a/recipes/atuq/branding/icons/atuq-about-300x236.png b/recipes/atuq/branding/icons/atuq-about-300x236.png new file mode 100644 index 00000000..59e52d88 Binary files /dev/null and b/recipes/atuq/branding/icons/atuq-about-300x236.png differ diff --git a/recipes/atuq/branding/icons/atuq192.png b/recipes/atuq/branding/icons/atuq192.png new file mode 100644 index 00000000..d5af06ca Binary files /dev/null and b/recipes/atuq/branding/icons/atuq192.png differ diff --git a/recipes/atuq/branding/icons/atuq384.png b/recipes/atuq/branding/icons/atuq384.png new file mode 100644 index 00000000..6b9056f3 Binary files /dev/null and b/recipes/atuq/branding/icons/atuq384.png differ diff --git a/recipes/atuq/branding/wordmark.svg b/recipes/atuq/branding/wordmark.svg new file mode 100644 index 00000000..f43484fc --- /dev/null +++ b/recipes/atuq/branding/wordmark.svg @@ -0,0 +1,10 @@ + + + atuq + diff --git a/recipes/atuq/tools/rebrand.py b/recipes/atuq/tools/rebrand.py index 61ead1f4..c53d2322 100644 --- a/recipes/atuq/tools/rebrand.py +++ b/recipes/atuq/tools/rebrand.py @@ -179,6 +179,55 @@ def escribir_iconos(): return escritos +# ── 3.bis QUÉ SE REEMPLAZA DENTRO DE browser/omni.ja ─────────────────────────────────────────── +# La v0.2 cambió sólo `brand.ftl` y el resultado se vio en pantalla: el TÍTULO de la ventana decía +# «New Tab — atuq» y la PÁGINA seguía mostrando el logo y la palabra «Nightly». La lección es que el +# branding de Gecko vive en tres sitios y sólo uno es texto FTL: +# +# · `brand.ftl` — las cadenas nuevas (título de ventana, menús). Ya estaba. +# · `brand.properties` — las cadenas VIEJAS, formato heredado. Seguía diciendo Nightly. +# · los PNG y SVG de `chrome/browser/content/branding/` — TODO lo que se ve: el favicon de las +# páginas internas (ese orbe azul en la pestaña), el logo de about:, y el «wordmark» que es una +# IMAGEN con la palabra dibujada, no un texto traducible. +# +# Cada imagen se reemplaza por otra de LAS MISMAS DIMENSIONES: son tamaños que el CSS del chrome da +# por sentados, y meter un PNG de otro tamaño descoloca la página en vez de rebrandearla. +IMAGENES = { + "chrome/browser/content/branding/icon16.png": "atuq16.png", + "chrome/browser/content/branding/icon32.png": "atuq32.png", + "chrome/browser/content/branding/icon48.png": "atuq48.png", + "chrome/browser/content/branding/icon64.png": "atuq64.png", + "chrome/browser/content/branding/icon128.png": "atuq128.png", + "chrome/browser/content/branding/about-logo.png": "atuq192.png", + "chrome/browser/content/branding/about-logo@2x.png": "atuq384.png", + # La variante «private» existe para distinguir la ventana privada. Se usa el mismo medallón a + # propósito: inventar una segunda marca para un modo del navegador es ruido, y el modo ya se + # distingue por su propio chrome. + "chrome/browser/content/branding/about-logo-private.png": "atuq192.png", + "chrome/browser/content/branding/about-logo-private@2x.png": "atuq384.png", + "chrome/browser/content/branding/about.png": "atuq-about-300x236.png", +} + + +def reemplazos_branding(): + r = {} + for destino, fuente in IMAGENES.items(): + ruta = os.path.join(OVERLAY, "branding", "icons", fuente) + if not os.path.isfile(ruta) or os.path.getsize(ruta) == 0: + fatal(f"falta o está vacío el asset {ruta}") + with open(ruta, "rb") as fh: + r[destino] = fh.read() + for destino, fuente in ( + ("localization/en-US/branding/brand.ftl", "brand.ftl"), + ("chrome/en-US/locale/branding/brand.properties", "brand.properties"), + ("chrome/browser/content/branding/about-wordmark.svg", "wordmark.svg"), + ("chrome/browser/content/branding/firefox-wordmark.svg", "wordmark.svg"), + ): + with open(os.path.join(OVERLAY, "branding", fuente), "rb") as fh: + r[destino] = fh.read() + return r + + # ── 4.bis La extensión de sistema: página de inicio y pestaña nueva ──────────────────────────── # POR QUÉ UNA EXTENSIÓN Y NO UNA PREF. `browser.startup.homepage` acepta una URL, pero la pestaña # NUEVA no se puede redirigir con una pref desde hace años: el único mecanismo soportado es @@ -280,12 +329,7 @@ def main(): huella = huella_overlay() bid = build_id(huella) claves = rebrandear_application_ini(bid) - with open(os.path.join(OVERLAY, "branding", "brand.ftl"), "rb") as fh: - brand = fh.read() - n = repack_omni( - os.path.join(APPDIR, "browser", "omni.ja"), - {"localization/en-US/branding/brand.ftl": brand}, - ) + n = repack_omni(os.path.join(APPDIR, "browser", "omni.ja"), reemplazos_branding()) iconos = escribir_iconos() binarios = renombrar_binarios() # Después del renombrado: los ficheros ya se llaman atuq/atuq-bin. @@ -295,6 +339,7 @@ def main(): print(f"rebrand: overlay {huella[:16]}… ⇒ BuildID {bid}") print(f"rebrand: application.ini {sorted(claves)}") print(f"rebrand: browser/omni.ja re-empacado, {n} entradas, orden y STORED preservados") + print(f"rebrand: branding dentro del zip — {len(IMAGENES)} imágenes + brand.ftl + brand.properties + 2 wordmarks") print(f"rebrand: {len(iconos)} iconos escritos ({', '.join(str(s) for s in TAMANOS)} px)") print(f"rebrand: binarios {', '.join(binarios)} (+ symlink firefox → {MARCA})") for l in parches: