🔧 YouTube UI Enhancer - Resize Thumbnails, Modify Layout & More!

Fixes YouTube’s oversized thumbnails with a customizable grid: Resize thumbnails, adjust the number of videos per row, and eliminate wasted space — for a more compact, efficient layout.

目前為 2025-04-25 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         🔧 YouTube UI Enhancer - Resize Thumbnails, Modify Layout & More!
// @namespace    https://greasyfork.org/users/1461079
// @version      1.7
// @description  Fixes YouTube’s oversized thumbnails with a customizable grid: Resize thumbnails, adjust the number of videos per row, and eliminate wasted space — for a more compact, efficient layout.
// @author       Michaelsoft
// @match        *://www.youtube.com/*
// @grant        GM_addStyle
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // === SETTINGS ===
    const settings = {
        videosPerRow: 6, // Change this to set videos per row (e.g. 4, 5, 6, etc.). Default value is 6.
        shortsPerRow: 12,// Change this to set shorts per row (e.g. 7, 8, 9, etc.). Default value to 12.
        disableShorts: false, // Set to true to completely hide the Shorts section. Default value is false.
        enableShowMoreFix: true, // Set to false to show only 1 row of Shorts (disables "Show More" force-expand). Default value is true.
    };

    // === Apply CSS customizations ===
    GM_addStyle(`
        ytd-rich-grid-renderer {
            --ytd-rich-grid-items-per-row: ${settings.videosPerRow} !important;
            --ytd-rich-grid-posts-per-row: ${settings.videosPerRow} !important;
            --ytd-rich-grid-slim-items-per-row: ${settings.shortsPerRow} !important;
            --ytd-rich-grid-game-cards-per-row: 7 !important;  /* Number of game cards per row (possibly redundant) */
            --ytd-rich-grid-gutter-margin: 0px !important;
        }

        ytd-rich-shelf-renderer {
            --ytd-rich-grid-items-per-row: ${settings.shortsPerRow} !important;
        }

        ytd-two-column-browse-results-renderer.grid-${settings.videosPerRow}-columns {
            width: 100% !important;
        }

        ytd-two-column-browse-results-renderer.grid:not(.grid-disabled) {
            max-width: 100% !important;
        }

        /* Hide Shorts completely if setting is enabled */
        ${settings.disableShorts ? `
            ytd-rich-section-renderer.style-scope.ytd-rich-grid-renderer {
                display: none !important;
            }
        ` : ''}
    `);

    // === "Show More" / hidden content fix ===
    if (settings.enableShowMoreFix) {
        const observer = new MutationObserver(() => {
            document.querySelectorAll('ytd-rich-item-renderer[hidden]').forEach(el => {
                el.removeAttribute('hidden');
            });

            document.querySelectorAll('ytd-rich-shelf-renderer').forEach(el => {
                el.setAttribute('is-show-more-hidden', '');
            });
        });

        observer.observe(document.documentElement, {
            childList: true,
            subtree: true
        });
    }
})();