Greasy Fork is available in English.

Google Photos dark theme

A darker look

// ==UserScript==
// @name         Google Photos dark theme
// @namespace    http://tampermonkey.net/
// @version      0.9.5
// @description  A darker look
// @author       https://greasyfork.org/en/users/810921-guywmustang
// @match        https://photos.google.com/*
// @icon         https://www.google.com/s2/favicons?domain=google.com
// @grant        GM_addStyle
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    function addInitialStyle() {
        console.log("addInitialStyle");

        GM_addStyle(`
            /* top bar */
            .fXq1Rc .QtDoYb, .QtDoYb {
            background-color: black;
            }

            /* Settings page */
            .P0eWkf, .rvEjke, .IGdgBf {
              color: var(--white-text);
            }

            /* background for main page & side bar */
            body, .wDSX5e, .RSjvib, .yDSiEe.uGCjIb.zcLWac.eejsDc.TWmIyd {
              background-color: var(--darkgray);
            }

            /* album page background */
            .B6Rt6d {
            background-color: #252525;
            }

            /* album page text color and background */
            textarea.ajQY2.v3oaBb {
            background-color: #252525;
            color: #dddddd;
            }

            /* Search bar coloring */
            /*.Aul2T, .Aul2T.qs41qe, .cI2tlc .tWfTvb .jBmls {
                background: #444444;
            }*/

            /* Side bar icon color */
            .oUj9s .v1262d {
            color: rgb(167 167 167);
            }

        `);
    }

    function addStyle() {

        console.log("addStyle() called");

        GM_addStyle(`
            :root {
                --darkgray: #252525;
                --white-text: #dddddd;
                --sub-text: #888888;
                --hover-color: #F1F3F4;
                --light-gray: #dfdfdf;
                --dark-popout: #101010;
            }

            /* top bar */
            .fXq1Rc .QtDoYb, .QtDoYb {
              background-color: var(--darkgray);
            }

            /* Settings page */
            .P0eWkf, .rvEjke, .IGdgBf {
              color: var(--white-text);
            }

            /* background for main page & side bar */
            body, .wDSX5e, .RSjvib, .yDSiEe.uGCjIb.zcLWac.eejsDc.TWmIyd {
                background-color: var(--dark-popout);
            }

            /* top bar border bottom color */
            .fXq1Rc .QtDoYb {
              border-bottom: 1px solid rgb(66,66,66);
            }

            /* "Photos" text color */
            .EIug8e {
              color: var(--light-gray);
            }

            /* background color for the "popout" color */
            .HnzzId, .uGCjIb {
              background-color: var(--darkgray);
            }

            /* Search bar coloring */
            /*.Aul2T, .Aul2T.qs41qe, .cI2tlc .tWfTvb .jBmls, .LAL5ie .ZAGvjd {
                background: #444444;
                color: var(--white-text);
            }*/
            /* End search bar coloring */

            /* Side & top bar icon coloring */
            .oUj9s .v1262d, .G6iPcb .v1262d, .gb_qa.gb_Ka svg {
              color: rgb(167 167 167);
              fill: rgb(167, 167, 167);
            }

            /* Side bar storage sub-text color */
            .nXkqdd {
              color: var(--sub-text);
            }

            /* Side bar "Get more storage" button */
            .z3RRjd:not(:disabled) {
              color: var(--sub-text);
            }

            .z3RRjd:not(:disabled):hover {
              color: var(--white-text);
            }

            /* Main page font color */
            .xA0gfb, .G7ubtf, .RLo1Hf, .HksvWb, .xA0gfb {
              color: var(--white-text);
            }

            /* Main page location font color */
            .LzExud, .LzExud:visited, .LzExud.aJDEse {
              color: var(--sub-text);
            }

            .LzExud:hover {
              color: var(--white-text);
            }

            /* background color on search page */
            c-wiz.B6Rt6d.zcLWac.eejsDc.G9Yhnf, div.eReC4e.FbgB9 {
              background-color: var(--darkgray);
            }

            /* font color on search page */
            div.ZEmz6b, h2.ZEmz6b, .OgirMe, .hsohWb, div.hsohWb, .ApP0z, div.dykGZb, div.avzd9e, div.R1QzSc.ecU3Ec > div, div.HEHjMc {
              color: var(--white-text);
            }

            /* Side bar text color */
            .RSjvib .ylKyWb {
            color: var(--white-text);
            }

            /* explore page - bottom links formatting */
            .QkA5Vc:not(:disabled) {
              color: var(--white-text);
            }
            .QkA5Vc:not(:disabled):hover {
              color: var(--hover-color);
              background: rgba(52,52,52,.31);
            }

            /* Info page popout - start */
            .fzyONc.QtVoBc .Q77Pt,
            /* Info text label */
            .IMbeAf,
            /* Info page - details */
            .R9U8ab,
            /* Info page - category labels */
            .wiOkb,
            .AJM7gb {
              color: var(--white-text);
              background-color: var(--darkgray);
            }

            /* Info page - sub text */
            .oBMhZb, .nAfFgf {
              color: var(--sub-text);
            }

            /* Info page popout - end */

            /* album name colors */
            .RSjvib .oUj9s > * {
              color: var(--white-text);
            }

            /* selected 'tab' colors non-hover */
            .uprWmb .v1262d, .uprWmb .HksvWb {
              color: var(--white-text);
              /*background: rgba(79,79,79,.56);*/
            }
            /* selected main 'tab' icon color on hover */
            .uprWmb:hover .v1262d, .uprWmb:hover .HksvWb {
              color: var(--white-text);
            }

            /* Promo bar styling start */
            .oKzLoc {
              background-color: rgb(79, 79, 79);
              color: var(--white-text);
            }
            /* Promo bar styling end */

            /* Memory left/right buttons */
            .yhB1zd {
              background-color: var(--darkgray);
              color: var(--white-text);
            }
            .yhB1zd:hover {
              background-color: rgb(150, 150, 150);
              color: var(--hover-color);
            }

            /* album name hover colors */
            div.eXOZff:hover, .oUj9s:hover .HksvWb,
            .HksvWb:hover, .QnmYd:hover .HEHjMc {
              color: var(--white-text);
            }

            /* album name hover background */
            .RSjvib .uprWmb,
            .RSjvib .oUj9s:hover {
              background: rgba(79,79,79,.56);
            }

            /* View all link on search page */
            div.dykGZb span {
                color: var(--light-gray);
            }

            /* Text color on sharing page */
            div.I7yCae, div.DNAsC.A1fzDc.bSAKfb a {
                color: var(--light-gray);
            }

            a.DOAbib:hover {
                background-color: yellow;
            }

            /* Album page styles */
            div.gN5aAe {
                background-color: var(--darkgray);
            }

            /* Album name style */
            .kmqzh .tL9Q4c {
              color: var(--white-text);
              background-color: var(--darkgray);
            }

            div.mfQCMe, div.UV4Xae {
            color: var(--white-text);
            }

            /* album page background */
            .B6Rt6d {
            background-color: var(--darkgray);
            }

            /* album page text color and background */
            textarea.ajQY2.v3oaBb {
            background-color: var(--darkgray);
            color: var(--white-text);
            }

            /* album page date text */
            .WMnOad {
              color: var(--white-text);
            }

            /* sharing page for a contact */
            div.wqSOMc, div.ZLAKfe, div.RSjvib.eejsDc {
              background-color: var(--darkgray);
              color: var(--white-text);
            }

            /* photo sharing page title */
            .cL5NYb {
              color: var(--white-text);
            }

            /* sharing action buttons */
            .LjDxcd:hover:not(:disabled) {
              color: var(--light-gray);
            }

            .cb51zc .NXvGIf, div.jvwUve, div.QtDoYb.MJvped.K7sKBc {
              color: var(--white-text);
            }

            /* favorites - order photos button text */
            .sYyz6c {
              color: var(--white-text);
            }
            .sYyz6c:hover {
              color: var(--hover-color);
            }
        ` );
    }

    var oldHref = document.location.href;

    window.onload = function() {
        console.log("window loaded");

        var
             bodyList = document.querySelector("body")

            ,observer = new MutationObserver(function(mutations) {

                mutations.forEach(function(mutation) {

                    if (oldHref != document.location.href) {

                        oldHref = document.location.href;

                        /* Changed ! your code here */
                        setTimeout(addStyle, 250);

                    }

                });

            });

        var config = {
            childList: true,
            subtree: true
        };

        observer.observe(bodyList, config);

    };

    // Attach initial background colors to get a dark mode at initial load
    addInitialStyle();

    // finally once the page is loaded, apply the full dark style
    window.onload = function() { addStyle(); }

})();