- // ==UserScript==
- // @name DeepSeek Redesign
- // @namespace https://chat.deepseek.com/
- // @version 2025-02-04
- // @description Makes DeepSeek's UI more modern and pretty!
- // @author q16
- // @match https://chat.deepseek.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=deepseek.com
- // @license MIT
- // @grant none
- // ==/UserScript==
-
- (function() {
- 'use strict';
-
- // Helper function to replace $
- function $(selector) {
- return document.querySelector(selector);
- }
-
- // Helper function to replace $$
- function $$(selector) {
- return document.querySelectorAll(selector);
- }
-
- function applyStyles() {
- // changing colors
- document.body.style.setProperty("--dsr-bg", "#000");
- document.body.style.setProperty("--dsr-input-bg", "#000");
- document.body.style.setProperty("--dsr-side-bg", "#000");
- try {
- $(".f6d670.bcc55ca1").style.backgroundColor = "rgb(38, 38, 38)";
- } catch { }
- try {
- $(".f6d670.bcc55ca1").style.color = "#b7b7b7";
- } catch { }
- // removing white "gradient" at the top of the page
- $(".b480065b").style.background = "linear-gradient(rgba(0, 0, 0, 0.8) 0%,rgba(41,42,45,0) 100%)";
- // logo change
- try {
- $(".e066abb8 > svg:nth-child(1)").remove();
- var logoDiv = $(".e066abb8");
- logoDiv.innerText = "DeepSeek";
- logoDiv.style.fontSize = "30px";
- logoDiv.style.fontWeight = "600";
- } catch { }
- $$(".ds-icon").forEach(
- (icon) => (icon.style.filter = "saturate(0%) brightness(2)")
- );
- // removing mobile app ad
- try {
- $(".a1e75851").remove();
- } catch { }
- // inter font
- var gaLink = document.createElement("link");
- gaLink.setAttribute("rel", "preconnect");
- gaLink.href = "https://fonts.googleapis.com";
- var gsLink = document.createElement("link");
- gsLink.setAttribute("rel", "preconnect");
- gsLink.href = "https://fonts.gstatic.com";
- gsLink.crossorigin = true;
- var fontLink = document.createElement("link");
- fontLink.href =
- "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";
- fontLink.setAttribute("rel", "stylesheet");
- document.head.appendChild(gaLink);
- document.head.appendChild(gsLink);
- document.head.appendChild(fontLink);
- // new chat button
- try {
- $(".a8ac7a80").style.backgroundColor = "#000";
- $(".a8ac7a80").style.border = "1px solid white";
- $(".a8ac7a80").style.setProperty(
- "--local-button-hover",
- "var(--dsr-side-hover-bg)"
- );
- } catch { }
- // fix chat textarea shadow
- $(".dd442025").style.boxShadow = "0 0 0 .5px rgba(0, 0, 0, 0.3)";
-
- // bold "DeepSeek" in "Hi, I'm DeepSeek."
- try {
- $(".c7e7df4d").childNodes[1].remove();
- var spanA = document.createElement("span");
- spanA.textContent = "Hi, I'm ";
- $(".c7e7df4d").appendChild(spanA);
- var spanB = document.createElement("span");
- spanB.textContent = "DeepSeek";
- spanB.style.fontWeight = "800";
- spanA.appendChild(spanB);
- spanA.appendChild(document.createTextNode("."));
- } catch { }
-
- // prevent js from overriding new colors when resizing the window
- window.addEventListener("resize", () => {
- document.body.style.setProperty("--dsr-bg", "#000");
- document.body.style.setProperty("--dsr-input-bg", "#000");
- document.body.style.setProperty("--dsr-side-bg", "#000");
- });
-
- // remove mobile app ad in collapsed menu
- try {
- $(".b91228e4").remove();
- } catch { }
-
- $$(".fbb737a4").forEach((msg) => (msg.style.backgroundColor = "#000"));
- }
-
- function patchDropdown() {
- try {
- $(".ds-dropdown-menu").style.setProperty(
- "--ds-dropdown-menu-color",
- "#000"
- );
- $(".ds-dropdown-menu").style.setProperty(
- "--ds-dropdown-menu-option-color-hover",
- "#202020"
- );
- $(".ds-dropdown-menu").style.setProperty(
- "--ds-dropdown-menu-color",
- "#000"
- );
- } catch {}
- }
-
- function patchModal() {
- try {
- $(".ds-modal-content").style.setProperty(
- "--ds-modal-content-color",
- "#000"
- );
- $(".ds-segmented").style.setProperty("--ds-segmented-color", "#1C1C1C");
- $(".ds-segmented").style.setProperty(
- "--ds-segmented-selected-color",
- "#393939"
- );
- } catch {}
- $$(".ds-native-select__select").forEach(
- (s) => (s.style.backgroundColor = "#1c1c1c")
- );
- }
-
- function debounce(func, wait) {
- let timeout;
- return function(...args) {
- clearTimeout(timeout);
- timeout = setTimeout(() => func.apply(this, args), wait);
- };
- }
-
- function init() {
- applyStyles();
- patchDropdown();
- patchModal();
-
- const toListen = ["b480065b", "a1e75851", "b91228e4", "fbb737a4", "d8ed659a"];
- const globalObserver = new MutationObserver((mutationsList) => {
- for (const mutation of mutationsList) {
- if (mutation.type === 'childList') {
- mutation.addedNodes.forEach((node) => {
- if (node.classList) {
- if (node.classList.contains("ds-modal-wrapper") || node.classList.contains("ds-segmented-separator")) {
- patchModal();
- }
- if (node.classList.contains("ds-floating-position-wrapper")) {
- patchDropdown();
- }
- }
- toListen.forEach((cls) => {
- if (node.nodeType === 1 && (node.classList.contains(cls) || node.querySelector(`.${cls}`))) {
- applyStyles();
- }
- });
- });
- }
- }
- });
-
- globalObserver.observe(document.body, {
- childList: true,
- subtree: true,
- });
-
- window.addEventListener('resize', debounce(() => {
- document.body.style.setProperty("--dsr-bg", "#000");
- document.body.style.setProperty("--dsr-input-bg", "#000");
- document.body.style.setProperty("--dsr-side-bg", "#000");
- }, 100));
- }
-
- document.addEventListener('DOMContentLoaded', init);
- })();