Git-SCM Background Color Changer

Dynamically replace the background color of Git-SCM pages based on the system theme

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

You will need to install an extension such as Tampermonkey to install this script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         Git-SCM Background Color Changer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Dynamically replace the background color of Git-SCM pages based on the system theme
// @author       mcwindy
// @match        https://git-scm.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
  'use strict';

  const darkModeBg = '#1B1B1B'; // for dark mode
  const lightModeBg = '#fff'; // for light mode

  // Detection system theme
  const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;

  const bgColor = isDarkMode ? darkModeBg : lightModeBg;

  const bodyElement = document.querySelector('body');
  if (bodyElement) {
    bodyElement.style.background = bgColor;
  }

  // Replace the background attribute in all style sheets
  const styleSheets = document.styleSheets;
  for (let i = 0; i < styleSheets.length; i++) {
    const styleSheet = styleSheets[i];
    try {
      const cssRules = styleSheet.cssRules || styleSheet.rules;
      for (let j = 0; j < cssRules.length; j++) {
        const rule = cssRules[j];
        if (rule.selectorText === 'body' && rule.style.background) {
          rule.style.background = bgColor;
        }
      }
    } catch (e) {
      // Cross-domain style sheet cannot be accessed, ignored
    }
  }
})();