NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name PlayStation Web Store Enhancer // @namespace http://tampermonkey.net/ // @version 1.0 // @description Enhance the PlayStation web store experience with a dark mode and visible titles under game tiles. // @author nascent & naveedgol // @match https://store.playstation.com/* // @updateURL https://openuserjs.org/meta/nascent/PlayStation_Web_Store_Enhancer.meta.js // @downloadURL https://openuserjs.org/install/nascent/PlayStation_Web_Store_Enhancer.user.js // @icon https://www.google.com/s2/favicons?sz=64&domain=playstation.com // @copyright nascent & naveedgol // @license MIT // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @grant GM_registerMenuCommand // ==/UserScript== // Based on PlayStation Web Store Enhancer by naveedgol, with text contrast fix (function() { 'use strict'; // Get stored settings (defaulting to "true" if they don't exist) const showTitles = GM_getValue("show-titles", true); const darkModeEnabled = GM_getValue("dark-mode", true); // MutationObserver to add game titles from telemetry data when "Show Titles" is enabled. if (showTitles) { const observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { const games = document.getElementsByClassName("ems-sdk-product-tile-link"); for (const game of games) { // If the title has already been added, skip this element. if (game.childNodes.length > 2) continue; // Ensure telemetry metadata exists before processing. if (!game.dataset.telemetryMeta) continue; let name = ""; try { name = JSON.parse(game.dataset.telemetryMeta).name; } catch(e) { console.error("Error parsing telemetryMeta JSON:", e); continue; } // Create a new DIV element to display the title. const node = document.createElement("DIV"); node.className = "price"; node.style.marginTop = "5px"; node.textContent = name; // Insert the new element before the second child. game.insertBefore(node, game.childNodes[1]); } }); }); // Start observing the document. observer.observe(document, { attributes: true, subtree: true }); } // If "Dark Mode" is enabled, inject the dark mode CSS. if (darkModeEnabled) { GM_addStyle(` /* Dark Mode Styles */ body, .psw-root body, .tertiary-tabs { color: white !important; background-color: #000 !important; padding: 0 !important; } /* Price Title */ .price, .product-detail, .ems-sdk-product-tile .price, .search-results h1, .search-results h1 em { color: white !important; } /* Main Store Top Nav Bar */ #jetstream-tertiary-nav { background-color: black !important; fill: black !important; } #jetstream-tertiary-nav .tertiary-menu-cta, #jetstream-tertiary-nav .tertiary-tab__link, #jetstream-tertiary-nav .tertiary-tab__link:focus, #jetstream-tertiary-nav .tertiary-tab__link:hover, #jetstream-tertiary-nav .tertiary-tab__link:visited { color: white !important; background-color: black !important; fill: black !important; } [dir] #jetstream-tertiary-nav .tertiary-container:not(.tertiary-container--overflow) .tertiary-tab__link, [dir] #jetstream-tertiary-nav .tertiary-container:not(.tertiary-container--overflow) .tertiary-tab__link:hover, [dir] #jetstream-tertiary-nav .tertiary-container:not(.tertiary-container--overflow) .tertiary-tab__link:focus, [dir] #jetstream-tertiary-nav .tertiary-container:not(.tertiary-container--overflow) .tertiary-tab__link:visited, [dir] #jetstream-tertiary-nav .tertiary-container:not(.tertiary-container--overflow) .tertiary-tab__link.tertiary-tab__link--active { color: white !important; background-color: black !important; fill: black !important; } #jetstream-tertiary-nav { fill: white !important; } /* Search Bar */ .search-text-box__input { background-color: black !important; } /* Fix for .psw-root .psw-c-t-1 to show white text */ .psw-root .psw-c-t-1 { color: white !important; } `); } // Add menu command for toggling "Show Titles". GM_registerMenuCommand("Toggle Show Titles", () => { let current = GM_getValue("show-titles", true); GM_setValue("show-titles", !current); alert("Show Titles is now " + (!current) + ". Please refresh the page to apply changes."); }); // Add menu command for toggling "Dark Mode". GM_registerMenuCommand("Toggle Dark Mode", () => { let current = GM_getValue("dark-mode", true); GM_setValue("dark-mode", !current); alert("Dark Mode is now " + (!current) + ". Please refresh the page to apply changes."); }); })();