atuq v0.4: el branding que se VE estaba en las imágenes del zip, no en el texto
Capturé la pantalla con `grim` y por fin miré lo que el usuario miraba. El diagnóstico cambió
entero: la ventana SÍ estaba —el título decía «New Tab — atuq» y el icono del lanzador era el
zorro— pero la PÁGINA mostraba el logo y la palabra «Nightly».
O sea que la v0.2 rebrandeó lo que se lee y no lo que se ve. 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, y nadie lo
habría notado leyendo la receta: son 71 bytes en otra ruta del mismo zip.
· las imágenes de `chrome/browser/content/branding/` — TODO lo visible: 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.
Se reemplazan 10 imágenes + las dos tablas de cadenas + los dos wordmarks. Cada imagen va con LAS
MISMAS DIMENSIONES que la que sustituye (192, 384, 300x236, 16/32/48/64/128): son tamaños que el CSS
del chrome da por sentados, y meter otro tamaño descoloca la página en vez de rebrandearla. El
`about.png` (300x236, no cuadrado) lleva el medallón ENCAJADO y centrado, no estirado.
El wordmark conserva el `viewBox` exacto del original (0 0 372 99) y `fill="context-fill"`, que es
la convención de Gecko para que el color lo ponga quien lo usa — así sigue el tema claro/oscuro solo
en vez de imponer un color.
La variante «private» usa el mismo medallón a propósito: inventar una segunda marca para un modo del
navegador es ruido, y ese modo ya se distingue por su propio chrome.
MÉTODO, que es lo que más vale de esta vuelta: `grim` está en el corpus (incoming-wlr), se hidrata
en el mismo rootfs y captura la pantalla real desde dentro de la jaula. Dejé de decir «mirá tu
pantalla» y pasé a mirarla yo.
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
brandShorterName=atuq
|
||||
brandShortName=atuq
|
||||
brandFullName=atuq
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 189 KiB |
@@ -0,0 +1,10 @@
|
||||
<!-- Reemplaza a `about-wordmark.svg` y `firefox-wordmark.svg` dentro de browser/omni.ja.
|
||||
- El `viewBox` se conserva EXACTO (0 0 372 99): es el del original, y cambiarlo descolocaría
|
||||
- todo lo que lo posiciona desde CSS.
|
||||
- `fill="context-fill"` es la convención de Gecko para que el color lo ponga quien lo usa —
|
||||
- así el wordmark sigue el tema claro/oscuro solo, en vez de imponer un color. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 372 99">
|
||||
<text x="186" y="76" text-anchor="middle" fill="context-fill"
|
||||
font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"
|
||||
font-size="82" font-weight="600" letter-spacing="2">atuq</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 697 B |
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user