From b91180a80875740e486016f3625545ac53fe256d Mon Sep 17 00:00:00 2001 From: Helmut Januschka Date: Tue, 25 Aug 2026 14:48:44 +0200 Subject: [PATCH 1/3] Skip Chromium EULA on first run --- bin/omarchy-upgrade-to-quattro | 2 +- install/config/theme-system.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/omarchy-upgrade-to-quattro b/bin/omarchy-upgrade-to-quattro index e28da697..fd8151ba 100755 --- a/bin/omarchy-upgrade-to-quattro +++ b/bin/omarchy-upgrade-to-quattro @@ -1314,7 +1314,7 @@ apply_system_transition() { as_root install -d -m 0777 /etc/chromium/policies/managed as_root install -d -m 0755 /usr/lib/chromium - printf '%s\n' '{"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' | \ + printf '%s\n' '{"distribution":{"require_eula":false},"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' | \ as_root tee /usr/lib/chromium/initial_preferences >/dev/null # Deliberately do NOT add the user to the docker group. That group is diff --git a/install/config/theme-system.sh b/install/config/theme-system.sh index 2902e1cd..c8272486 100644 --- a/install/config/theme-system.sh +++ b/install/config/theme-system.sh @@ -10,7 +10,7 @@ gtk-update-icon-cache /usr/share/icons/Yaru &>/dev/null || true mkdir -p /etc/chromium/policies/managed chmod a+rw /etc/chromium/policies/managed -# Default Chromium to follow system appearance ("device") instead of dark +# Set Chromium first-run defaults mkdir -p /usr/lib/chromium -echo '{"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' > \ +echo '{"distribution":{"require_eula":false},"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' > \ /usr/lib/chromium/initial_preferences From eb76684c60331905870cb231dff4cf3b8d2eb5d6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 29 Aug 2026 17:13:06 +0200 Subject: [PATCH 2/3] Retrofit the Chromium first-run EULA opt-out onto existing installs Chromium 151 flipped MasterPrefs::eula_required from false to true, so a first run with no seed now stops on a blank terms-of-service dialog before the browser opens. The opt-out is written in two places that each run exactly once: the install leaf that runs during ISO finalization, and the one-time 3.x upgrade. A machine already on Quattro runs neither again, so it keeps the old seed and still meets the dialog the first time anyone launches Chromium, including from every user account created after the install. The migration writes the same seed those two paths write. It compares before writing so the second user on a shared machine no-ops rather than repeating a machine-wide repair, and the literal is duplicated rather than sourced because a migration repairs the state of its own moment and must not drift when the seed later changes. Co-Authored-By: Codex XHigh --- migrations/1787691200.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 migrations/1787691200.sh diff --git a/migrations/1787691200.sh b/migrations/1787691200.sh new file mode 100644 index 00000000..71c163e5 --- /dev/null +++ b/migrations/1787691200.sh @@ -0,0 +1,18 @@ +echo "Skip Chromium's new first-run EULA on machines already on Quattro" + +# Chromium 151 flipped MasterPrefs::eula_required from false to true, so an +# unconfigured first run now stops on a blank terms-of-service dialog before the +# browser opens. Omarchy answers that in the seed it writes next to the Chromium +# binary, but that seed is only laid down by a fresh install and by the one-time +# 3.x upgrade, so machines already on Quattro never receive it. Retrofit it here. +# +# The literal is deliberately duplicated rather than sourced: a migration repairs +# the state of its own moment, and must not drift when the seed later changes. + +chromium_prefs="/usr/lib/chromium/initial_preferences" +chromium_seed='{"distribution":{"require_eula":false},"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' + +if [[ $(cat "$chromium_prefs" 2>/dev/null) != "$chromium_seed" ]]; then + sudo mkdir -p "$(dirname "$chromium_prefs")" + echo "$chromium_seed" | sudo tee "$chromium_prefs" >/dev/null +fi From e9ba17e52ee6c2904289ad4e5a76f588ce0dd662 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 29 Aug 2026 17:13:06 +0200 Subject: [PATCH 3/3] Keep the explanation for the Chromium color scheme defaults The comment above the seed was the only thing recording that color_scheme and color_scheme2 are both zero in order to follow system appearance rather than force dark. Generalizing it to "first-run defaults" left two magic numbers with nothing to explain them, so the next person touching an unrelated first-run setting has no way to tell that changing them regresses theme following. Name both things the seed does. Co-Authored-By: Codex XHigh --- install/config/theme-system.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/config/theme-system.sh b/install/config/theme-system.sh index c8272486..a8963439 100644 --- a/install/config/theme-system.sh +++ b/install/config/theme-system.sh @@ -10,7 +10,8 @@ gtk-update-icon-cache /usr/share/icons/Yaru &>/dev/null || true mkdir -p /etc/chromium/policies/managed chmod a+rw /etc/chromium/policies/managed -# Set Chromium first-run defaults +# Seed Chromium's first run: follow system appearance ("device") instead of dark, +# and skip the terms-of-service dialog Chromium 151 turned on by default. mkdir -p /usr/lib/chromium echo '{"distribution":{"require_eula":false},"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' > \ /usr/lib/chromium/initial_preferences