Skip to content

Actual Theater Mode for YT by TheCarrotCR

Screenshot of Actual Theater Mode for YT

Details

AuthorTheCarrotCR

LicenseNo License

Categoryyoutube.com

Created

Updated

Code size5.0 kB

Code checksumdf08e0d

Statistics

Learn how we calculate statistics in the FAQ.

Failed to fetch stats.

Description

Twitch-like fullscreen video with chat and/or comments on the right

Notes

I was tired of YT's so-called "theater mode" bs and made this CSS for myself, so you can use it if you want.
Don't mind purple bar on screenshot as it's just other styling for myself which is not present for this style.

UPD v1.1.0:

  • fixed video title never being shown as it's not needed for Theater Mode in original YT design. Now title acts like it does for Fullscreen mode, it's hidden when cursor leaves video frame or not moving and visible when cursor moving over video or it's paused;
  • added a new feature that displays comments on the right chat-alike if chat is not present or hidden.
    Kinda amazed about how much could be done easily without even any javascript.

UPD v.1.1.1:

  • couple of small fixes: extra bottom padding for comments so the last comment wouldn't be hidden under "write a comment" block, an attempt to fix comments block having a horizontal scroll (not sure if it will work on Chromium browsers).

Source code

/* ==UserStyle==
@name           Actual Theater Mode for YT
@namespace      youtube.com
@version        1.1.1
@description    Twitch-like fullscreen video and chat
@author         TheCarrotCR
==/UserStyle== */

@-moz-document domain("youtube.com") {
    
    /* remove topbar and make video frame full-size in theater mode */
    
    ytd-watch-flexy[full-bleed-player] #full-bleed-container.ytd-watch-flexy {
      max-height: calc(100vh - 1px);
    }
    
    ytd-masthead[theater] {
      display: none !important;
    }

    ytd-page-manager:has(ytd-watch-flexy[theater]) {
      --ytd-toolbar-height: 0px;
      --ytd-masthead-height: 0px;
    }
    
    /* chat fix */

    ytd-live-chat-frame#chat:not(#secondary *> #chat) {
      top: 0 !important;
      border-radius: 0;
    }
    
    /* fix to display video title fullscreen-like */
    
    ytd-page-manager:has(ytd-watch-flexy[theater]) .ytp-chrome-top {
        height: auto !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]) .ytp-title {
        display: -webkit-box !important;
        display: -webkit-flex !important;
        display: flex !important;
    }
    
    /* comments on the right side when there's no chat */
    
    html {
        --video-size-theater-custom: 80%; /* for my 21:9 display I've set 80/20 video to comments proportion so you can tweak it here */
        --chat-size-theater-custom: calc(100% - var(--video-size-theater-custom));
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] {
        display: flex !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #full-bleed-container.ytd-watch-flexy:not(ytd-live-chat-frame .ytd-watch-flexy) {
        min-width: var(--video-size-theater-custom) !important;
        max-width: 100% !important;
        max-height: calc(100vh - 1px) !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #single-column-container {
        display: none !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns {
        border-left: 1px solid rgba(255,255,255,0.2);
        display: flex !important;
        max-width: var(--chat-size-theater-custom) !important;
        max-height: calc(100vh - 1px) !important;
        overflow: scroll;
        margin: 0 !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary {
        max-width: calc(100% - 30px) !important;
        margin-left: 14px !important;
        min-width: calc(100% - 30px) !important;
        margin-right: 14px !important;
        padding: 0 !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary #title {
        display: none !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary ytd-video-owner-renderer #upload-info {
        display: none !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary #comments {
        max-height: calc(100vh - 1px) !important;
        padding-bottom: 256px !important;
    }
    
    #columns #primary #above-the-fold #description {
        min-width: -webkit-fill-available !important;
        min-width: -moz-available !important;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary #comments #header.ytd-item-section-renderer {
        position: fixed;
        bottom: 0;
        background: var(--yt-live-chat-action-panel-background-color);
        z-index: 10;
        width: calc(var(--chat-size-theater-custom) - 28px);
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #primary #comments #contents {
        overflow: scroll;
    }
    
    ytd-page-manager:has(ytd-watch-flexy[theater]):not(ytd-page-manager:has(ytd-live-chat-frame#chat:not(#secondary *> #chat))) ytd-watch-flexy[theater] #columns #secondary {
        display: none !important;
    }
}

Reviews

No reviews yet.