Automatically select default model (thinking). You can choose default model in my userscript.
// ==UserScript==
// @name Gemini Auto Model Selector
// @namespace http://greasyfork.org/
// @version 1.6
// @description Automatically select default model (thinking). You can choose default model in my userscript.
// @author Bui Quoc Dung
// @match https://gemini.google.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
if (window.self !== window.top) return;
// ==================== MODEL MAPPING ====================
const MODEL_MAP = {
0: { keywords: ["Fast", "Nhanh"] },
1: { keywords: ["Thinking", "Tư duy"] },
2: { keywords: ["Pro"] }
};
// ==================== SITE CONFIG ====================
const siteConfig = {
selectedModelIndex: 1,
selectors: {
pickerButton: 'button[data-test-id="bard-mode-menu-button"]',
menuButtons: 'button[role="menuitemradio"]'
},
timings: {
menuOpenDelay: 500,
cooldown: 2000
}
};
let isSwitching = false;
function checkAndSwitch() {
if (isSwitching) return;
const pickerBtn = document.querySelector(siteConfig.selectors.pickerButton);
if (!pickerBtn) return;
const targetModel = MODEL_MAP[siteConfig.selectedModelIndex];
const currentLabel = pickerBtn.innerText.trim();
const isCorrect = targetModel.keywords.some(k => currentLabel.includes(k));
if (isCorrect) return;
isSwitching = true;
pickerBtn.click();
setTimeout(() => {
const buttons = document.querySelectorAll(siteConfig.selectors.menuButtons);
const targetBtn = buttons[siteConfig.selectedModelIndex];
if (targetBtn) {
targetBtn.click();
} else {
document.body.click();
}
setTimeout(() => { isSwitching = false; }, siteConfig.timings.cooldown);
}, siteConfig.timings.menuOpenDelay);
}
const observer = new MutationObserver(() => checkAndSwitch());
observer.observe(document.body, { childList: true, subtree: true });
checkAndSwitch();
})();