Gemini - Force Specific Account (e.g., Pro)

Forces Gemini to always use a specific Google Account, perfect for ensuring you're always on your profile with a subscription (e.g., Gemini Advanced) when logged into multiple accounts. This script REQUIRES configuration to work.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Gemini - Force Specific Account (e.g., Pro)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Forces Gemini to always use a specific Google Account, perfect for ensuring you're always on your profile with a subscription (e.g., Gemini Advanced) when logged into multiple accounts. This script REQUIRES configuration to work.
// @author       PeterDevCoding
// @match        https://gemini.google.com/*
// @grant        none
// @run-at       document-start
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // --- REQUIRED CONFIGURATION ---
    // You MUST set your desired Google Account here for the script to work.
    // Enter the authuser number (e.g., '0' for your default account, '1' for the second, typically from 0-9)
    // or your full email address.
    const REQUIRED_AUTH_USER = ''; // IMPORTANT: SET YOUR VALUE HERE, e.g., '[email protected]' or '1'
    // ------------------------------


    // --- How it Works & Why ---
    // The main goal of this script is to solve the common issue of Google defaulting to the wrong
    // account when you have multiple accounts logged in. By setting your "Pro" or main account above,
    // you ensure you always land on your desired profile with its active subscription.
    //
    // While built for Gemini, this logic could theoretically be adapted for other Google products
    // that use the `?authuser=` parameter for account switching.
    // --------------------------


    // Stop immediately if the user has not configured the script.
    if (!REQUIRED_AUTH_USER) {
        console.error('Gemini Force Account Script: Please edit the script and set your REQUIRED_AUTH_USER variable.');
        return;
    }

    const redirectAttemptedKey = 'geminiForceAccountRedirectAttempted';
    const currentPath = window.location.pathname;
    const currentParams = new URLSearchParams(window.location.search);

    // Check if we are already on the correct user account. If so, do nothing.
    if (currentParams.get('authuser') === REQUIRED_AUTH_USER.toString()) {
         sessionStorage.removeItem(redirectAttemptedKey); // Clear flag if we land on the correct URL
         return;
    }

    // STEP 1: Extract the chat ID from the current URL, if it exists
    let chatId = '';
    const appIndex = currentPath.indexOf('/app/');
    if (appIndex !== -1) {
        chatId = currentPath.substring(appIndex + 5).replace(/\/$/, ''); // Get ID and remove trailing slash
    }

    // STEP 2: Construct the ideal URL path
    let idealPath;
    if (chatId) {
        idealPath = `/app/${chatId}`;
    } else if (currentPath.includes('/app') || currentPath === '/') {
        // Redirect to the main app page if we are on any /app URL or the root.
        idealPath = '/app';
    } else {
        return; // Do not act on unknown pages
    }

    // STEP 3: Build the final URL with the FORCED user
    const idealUrl = `https://gemini.google.com${idealPath}?authuser=${REQUIRED_AUTH_USER}`;

    // STEP 4: Compare and decide whether to redirect
    if (window.location.href === idealUrl) {
        return;
    }

    if (sessionStorage.getItem(redirectAttemptedKey)) {
        console.warn('Gemini Force Account Script: Redirect already attempted. Halting to prevent a loop.');
        return;
    }

    console.log(`Gemini Script: Forcing account "${REQUIRED_AUTH_USER}"...`);
    console.log(`Redirecting from: ${window.location.href}`);
    console.log(`Redirecting to:   ${idealUrl}`);

    sessionStorage.setItem(redirectAttemptedKey, 'true');
    window.location.href = idealUrl;

})();