Gemini Logo Replacement with Dropdown
// ==UserScript==
// @name Gemini Start Menu
// @namespace https://greasyfork.org
// @version 1.0.1
// @description Gemini Logo Replacement with Dropdown
// @description.zh-CN 将 Gemini 界面左上角的 Logo 替换为一个自定义的下拉菜单。
// @author Wesley King
// @match *://gemini.google.com/*
// @grant none
// @run-at document-idle
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 1. 定位器:精确定位 "Gemini" 文本所在的元素
const LOGO_SELECTOR = '[data-test-id="bard-text"]';
// 2. 自定义下拉菜单的选项配置
const menuOptions = [
{ label: '🇺🇸 🖼️📄Google AI Std', url: 'https://aistudio.google.com/prompts/new_chat' },
{ label: '🇺🇸 🖼️📄ChatGPT', url: 'https://chatgpt.com/' },
{ label: '🇺🇸 🖼️📄MS Copilot', url: 'https://copilot.microsoft.com/' },
{ label: '🇺🇸 🖼️📄Grok', url: 'https://x.com/i/grok/' },
{ label: '🇨🇳 📄Deepseek', url: 'https://chat.deepseek.com/' },
{ label: '🇨🇳 📄Kimi', url: 'https://www.kimi.com/' },
{ label: '🇨🇳 🖼️📄Qwen(WW)', url: 'https://chat.qwen.ai/' },
{ label: '🇨🇳 🖼️📄Qwen(CN)', url: 'https://www.tongyi.com/qianwen/' },
{ label: '🇨🇳 📽️🖼️📄Doubao AI', url: 'https://www.doubao.com' },
{ label: '🇨🇳 📽️🖼️Hailuo AI(WW)', url: 'https://hailuoai.video/' },
{ label: '🇨🇳 📽️🖼️Hailuo AI(CN)', url: 'https://hailuoai.com/' },
{ label: '🇨🇳 📽️🖼️Jimeng AI', url: 'https://jimeng.jianying.com/ai-tool/home' },
{ label: '🇨🇳 📽️🖼️Kaipai AI', url: 'https://www.kaipai.com/home' }
];
/**
* 创建自定义下拉菜单的HTML元素
* @returns {HTMLElement} 下拉菜单的DOM元素
*/
function createCustomDropdown() {
const select = document.createElement('select');
select.id = 'custom-gemini-menu';
// 基础样式:确保它融入原界面
select.style.padding = '0 8px';
select.style.cursor = 'pointer';
select.style.border = 'none';
// 关键主题自适应:背景透明以继承父元素颜色
select.style.backgroundColor = 'transparent';
// 关键主题自适应:使用 Gemini 界面的文本颜色变量
// 这个变量会随着主题切换而改变其对应的值
select.style.color = 'var(--gm-fill-color-dark-on-surface)';
select.style.fontWeight = 'bold';
select.style.height = '100%';
select.style.appearance = 'none';
select.style.direction = 'rtl';
// 字体要求
select.style.fontSize = '20px';
select.style.fontFamily = 'Google Sans Flex, Google Sans, Helvetica Neue, sans-serif';
// 定义用于下拉菜单选项的颜色变量(这些变量会随着主题切换)
const optionTextColor = 'var(--gm-fill-color-dark-on-surface)';
const optionBackgroundColor = 'var(--gm-surface-background-color)';
// 辅助函数:创建选项元素并应用主题样式
const createOption = (label, value, isDefault = false) => {
const option = document.createElement('option');
option.textContent = label;
option.value = value;
if (isDefault) {
option.disabled = true;
option.selected = true;
}
// 为选项设置适应主题的背景和文字颜色
option.style.backgroundColor = optionBackgroundColor;
option.style.color = optionTextColor;
// 选项字体样式(通常略小)
option.style.fontSize = '16px';
option.style.fontFamily = 'Google Sans Flex, Google Sans, Helvetica Neue, sans-serif';
return option;
};
// 添加默认选项(不跳转,只作标题)
select.appendChild(createOption('Gemini', '#', true));
// 添加配置的选项
menuOptions.forEach(config => {
select.appendChild(createOption(config.label, config.url));
});
// 监听下拉菜单的改变事件
select.addEventListener('change', (event) => {
const selectedUrl = event.target.value;
if (selectedUrl && selectedUrl !== '#') {
window.open(selectedUrl, '_blank');
event.target.value = '#'; // 重置选择
}
});
return select;
}
/**
* 查找并替换Logo元素
*/
function replaceLogoWithDropdown() {
const logoElement = document.querySelector(LOGO_SELECTOR);
if (logoElement) {
console.log("找到Gemini文本元素,开始替换...");
const dropdown = createCustomDropdown();
// 清空原有 "Gemini" 文本
logoElement.innerHTML = '';
// 插入自定义下拉菜单
logoElement.appendChild(dropdown);
} else {
console.warn("未找到Gemini文本元素,请检查选择器是否正确:", LOGO_SELECTOR);
}
}
// 使用 MutationObserver 来确保元素加载后立即执行替换
const observer = new MutationObserver((mutationsList, observer) => {
const logoElement = document.querySelector(LOGO_SELECTOR);
if (logoElement) {
observer.disconnect();
replaceLogoWithDropdown();
}
});
// 开始观察整个文档的子元素变化
observer.observe(document.body, { childList: true, subtree: true });
// 增加一个安全网
if (document.querySelector(LOGO_SELECTOR)) {
replaceLogoWithDropdown();
}
})();