On recent versions of Google Chrome for Windows and macOS, the Gemini button is built directly into the top tab strip. On Linux, the button is missing and the artificial intelligence section in chrome://settings/ai does not appear.
Toggling flags inside chrome://flags does not resolve this. The omission is caused by compile-time rules in the Chromium source code alongside Google's geographical restrictions.
Why Gemini is disabled on Linux
Gemini integration (internally referred to as Glic) is restricted on Linux by four barriers:
- Platform compile flag: in
chrome_features.cc, thekGlicfeature is compiled as enabled by default (FEATURE_ENABLED_BY_DEFAULT) on Windows, macOS, and ChromeOS. On Linux, the compilation macro defaults to disabled. - Geographical restrictions: in
glic_enabling.cc, Google maintains an allowlist of supported countries. European Union nations are excluded due to regulatory compliance. If Google's variations service detects an unsupported region, the interface is disabled. - Staged rollout gating: eligibility is tied to a per-account rollout flag.
- Tab strip anchoring: visual rendering of the button (
TabStripGlicButton) requirespinned_to_tabstripto be explicitly set to true in the profile preferences.
Step-by-step activation guide
To bypass all four restrictions without recompiling the browser, configure startup arguments and patch profile preferences.
1. Add startup flags
Close Google Chrome completely before proceeding.
On Linux, persistent launch arguments are managed via chrome-flags.conf:
bashmkdir -p ~/.config cat << 'EOF' >> ~/.config/chrome-flags.conf --enable-features=Glic,GlicLiveMode,GlicRollout,GlicActor,GlicSidePanel,PromptAPIForGeminiNano,OptimizationGuideOnDeviceModel --disable-features=GlicCountryFiltering --variations-override-country=us --glic-dev EOF
What each flag does:
--enable-features=...: initializes Glic modules that are disabled in the Linux binary build.--disable-features=GlicCountryFiltering: disables region checking.--variations-override-country=us: overrides the location sent to Google's variations service to the United States.--glic-dev: bypasses account rollout checks.
2. Update Chrome profile preferences
Chrome stores configuration state in ~/.config/google-chrome/. Run this Python script to update the required parameters across all profiles:
bashpython3 - << 'EOF' import json, os, glob base_dir = os.path.expanduser("~/.config/google-chrome") local_state_path = os.path.join(base_dir, "Local State") # 1. Update global Local State if os.path.exists(local_state_path): with open(local_state_path, "r", encoding="utf-8") as f: state = json.load(f) state["is_glic_eligible"] = True if "variations_country" in state: state["variations_country"] = "us" if "variations_permanent_consistency_country" in state: state["variations_permanent_consistency_country"] = ["us"] with open(local_state_path, "w", encoding="utf-8") as f: json.dump(state, f, indent=2) # 2. Enable button in profile preferences pref_files = glob.glob(os.path.join(base_dir, "Default", "Preferences")) + \ glob.glob(os.path.join(base_dir, "Profile *", "Preferences")) for pref_path in pref_files: with open(pref_path, "r", encoding="utf-8") as f: prefs = json.load(f) prefs.setdefault("glic", {}) prefs["glic"]["pinned_to_tabstrip"] = True prefs["glic"]["launcher_enabled"] = True prefs["glic"]["previously_not_allowed"] = False prefs["glic"]["completed_fre"] = True prefs["glic"]["tab_context_enabled"] = True prefs["glic"]["profile_enablement"] = {"last_ready_state": 1} with open(pref_path, "w", encoding="utf-8") as f: json.dump(prefs, f, indent=2) print("Chrome preferences updated.") EOF
3. Launch and verify
Launch Google Chrome from the terminal or your application launcher:
bashgoogle-chrome-stable
The Gemini icon will appear in the top-right corner of the tab strip next to the window controls. Clicking it opens the side panel with page context inspection enabled.