您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
With this script you can change ChatGPT background color and even use a custom image!
// ==UserScript== // @name Change background color on ChatGPT // @name:es Cambiar color de fondo en ChatGPT // @name:en-US Change background color on ChatGPT // @name:ja ChatGPTの背景色を変更 // @name:ru Изменить цвет фона в ChatGPT // @name:ko ChatGPT 배경색 변경 // @name:it Cambia colore di sfondo su ChatGPT // @name:de Hintergrundfarbe in ChatGPT ändern // @name:fr Changer la couleur de fond sur ChatGPT // @namespace http://tampermonkey.net/ // @version 1.0 // @description With this script you can change ChatGPT background color and even use a custom image! // @description:es Con este script puedes cambiar el color de fondo de ChatGPT e incluso usar una imagen personalizada. // @description:en-US With this script you can change ChatGPT background color and even use a custom image! // @description:ja このスクリプトを使用すると、ChatGPTの背景色を変更したり、カスタム画像を使用したりできます。 // @description:ru С помощью этого скрипта вы можете изменить цвет фона ChatGPT и даже использовать собственное изображение! // @description:ko 이 스크립트를 사용하면 ChatGPT 배경색을 변경하고 사용자 지정 이미지를 사용할 수도 있습니다! // @description:it Con questo script puoi cambiare il colore di sfondo di ChatGPT e persino usare un'immagine personalizzata! // @description:de Mit diesem Skript können Sie die Hintergrundfarbe von ChatGPT ändern und sogar ein benutzerdefiniertes Bild verwenden! // @description:fr Avec ce script, vous pouvez changer la couleur de fond de ChatGPT et même utiliser une image personnalisée ! // @author Mr-Zanzibar // @match *://chatgpt.com/* // @license MIT // @grant none // ==/UserScript== (function() { // Constants & Storage const STORAGE_KEY_BACKGROUND = 'chatgptBackground'; let isDragging = false; let offsetX, offsetY; // Translations const translations = { en: { backgroundColorLabel: 'Background Color:', resetButton: 'Reset', imagePrompt: 'Set this image as background?', invalidImage: 'Please select a valid image file.', disclaimer: 'ChatGPT can make errors. Script by <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, es: { backgroundColorLabel: 'Color de fondo:', resetButton: 'Restablecer', imagePrompt: '¿Establecer esta imagen como fondo?', invalidImage: 'Por favor, seleccione un archivo de imagen válido.', disclaimer: 'ChatGPT puede cometer errores. Script por <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, ja: { backgroundColorLabel: '背景色:', resetButton: 'リセット', imagePrompt: 'この画像を背景に設定しますか?', invalidImage: '有効な画像ファイルを選択してください。', disclaimer: 'ChatGPTはエラーを起こす可能性があります。スクリプトは<a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>によるものです。' }, ru: { backgroundColorLabel: 'Цвет фона:', resetButton: 'Сбросить', imagePrompt: 'Установить это изображение в качестве фона?', invalidImage: 'Пожалуйста, выберите действительный файл изображения.', disclaimer: 'ChatGPT может допускать ошибки. Скрипт от <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, ko: { backgroundColorLabel: '배경색:', resetButton: '초기화', imagePrompt: '이 이미지를 배경으로 설정하시겠습니까?', invalidImage: '올바른 이미지 파일을 선택하십시오.', disclaimer: 'ChatGPT는 오류를 일으킬 수 있습니다. 스크립트 작성자: <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, it: { backgroundColorLabel: 'Colore di sfondo:', resetButton: 'Ripristina', imagePrompt: 'Impostare questa immagine come sfondo?', invalidImage: 'Seleziona un file immagine valido.', disclaimer: 'ChatGPT può commettere errori. Script di <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, de: { backgroundColorLabel: 'Hintergrundfarbe:', resetButton: 'Zurücksetzen', imagePrompt: 'Dieses Bild als Hintergrund festlegen?', invalidImage: 'Bitte wählen Sie eine gültige Bilddatei aus.', disclaimer: 'ChatGPT kann Fehler machen. Skript von <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' }, fr: { backgroundColorLabel: 'Couleur de fond :', resetButton: 'Réinitialiser', imagePrompt: 'Définir cette image comme arrière-plan ?', invalidImage: 'Veuillez sélectionner un fichier image valide.', disclaimer: 'ChatGPT peut faire des erreurs. Script par <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>' } }; // Get Browser Language const userLang = navigator.language || navigator.userLanguage; const lang = userLang.split('-')[0]; // Extract main language code (e.g., 'en' from 'en-US') const currentTranslations = translations[lang] || translations['en']; // Fallback to English // Background Functions function setBackground(background, type = 'color') { localStorage.setItem(STORAGE_KEY_BACKGROUND, JSON.stringify({ background, type })); document.body.style.backgroundColor = type === 'color' ? background : 'transparent'; document.body.style.backgroundImage = type === 'color' ? 'none' : `url(${background})`; } // UI Element Creation function createButton(text, onClick, style = {}) { const button = document.createElement('button'); button.textContent = text; button.onclick = onClick; Object.assign(button.style, { margin: '5px 0', padding: '8px 12px', border: 'none', borderRadius: '5px', cursor: 'pointer', fontSize: '14px', ...style }); return button; } function createColorPicker() { const container = document.createElement('div'); container.style.marginBottom = '10px'; const label = document.createElement('label'); label.textContent = currentTranslations.backgroundColorLabel; label.htmlFor = 'colorPickerInput'; container.appendChild(label); const input = document.createElement('input'); input.id = 'colorPickerInput'; input.type = 'color'; input.value = savedBackground?.type === 'color' ? savedBackground.background : '#ffffff'; input.addEventListener('input', () => setBackground(input.value, 'color')); container.appendChild(input); return container; } // Drag and Drop Functionality (Encapsulated) function handleDragStart(e) { isDragging = true; offsetX = e.clientX - container.getBoundingClientRect().left; offsetY = e.clientY - container.getBoundingClientRect().top; } function handleDrag(e) { if (isDragging) { const maxX = window.innerWidth - container.offsetWidth; const maxY = window.innerHeight - container.offsetHeight; let newX = e.clientX - offsetX; let newY = e.clientY - offsetY; container.style.left = Math.max(0, Math.min(newX, maxX)) + 'px'; container.style.top = Math.max(0, Math.min(newY, maxY)) + 'px'; } } function handleDragEnd() { isDragging = false; } function createImageInput() { const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; input.onchange = (event) => { const file = event.target.files[0]; if (!file.type.startsWith('image/')) { alert(currentTranslations.invalidImage); return; } const reader = new FileReader(); reader.onloadend = () => { const previewImg = document.createElement('img'); previewImg.src = reader.result; previewImg.style.maxWidth = '200px'; previewImg.style.maxHeight = '200px'; previewImg.style.marginBottom = '5px'; container.insertBefore(previewImg, input); if (confirm(currentTranslations.imagePrompt)) { setBackground(reader.result, 'image'); } previewImg.remove(); }; reader.readAsDataURL(file); }; return input; } // Main Container Setup const container = document.createElement('div'); container.id = 'background-options-container'; Object.assign(container.style, { position: 'fixed', top: '10px', right: '10px', zIndex: '9999', backgroundColor: 'rgba(255,255,255,0.8)', padding: '15px', borderRadius: '5px' }); container.addEventListener('mousedown', handleDragStart); document.addEventListener('mousemove', handleDrag); document.addEventListener('mouseup', handleDragEnd); // Load Saved Settings const savedBackground = JSON.parse(localStorage.getItem(STORAGE_KEY_BACKGROUND)); if (savedBackground) { setBackground(savedBackground.background, savedBackground.type); } // Disclaimer (With Link Handling) const disclaimerElement = document.querySelector('.text-center.text-xs'); if (disclaimerElement) { disclaimerElement.innerHTML = `ChatGPT can make errors. Script by <a href="https://github.com/Mr-Zanzibar" target="_blank">Mr-Zanzibar</a>`; const linkElement = disclaimerElement.querySelector('a'); linkElement.addEventListener('mouseover', () => linkElement.style.textDecoration = 'underline'); linkElement.addEventListener('mouseout', () => linkElement.style.textDecoration = 'none'); } // UI Elements container.appendChild(createColorPicker()); // Color Picker container.appendChild(createImageInput()); container.appendChild(createButton(currentTranslations.resetButton, () => { localStorage.removeItem(STORAGE_KEY_BACKGROUND); location.reload(); }, { backgroundColor: '#ff0000', color: 'white' })); // Reset Button document.body.appendChild(container); })();