Twitter fixes

Display whole images, display whole tweets, and various enhancements here and there

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

/* ==UserStyle==
@name           Twitter fixes
@namespace      zezombye.dev
@version        1.0.2
@description    Display whole images, display whole tweets, and various enhancements here and there
@author         Zezombye
@license        MIT
==/UserStyle== */

@-moz-document domain("x.com") {
    
    /*Display the whole images*/
    
    .r-4gszlv {
        background-size: contain;
    }
    
    /* Remove image border radius */
    
    article[data-testid="tweet"] > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > div:nth-child(3) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) {
        border-radius: 0;
    }
    article[data-testid="tweet"] > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) {
        border-radius: 0;
    }
    
    /* Remove image useless padding on tweets with 2+ images */
    
    /*article[data-testid="tweet"] > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) div[data-testid="tweetPhoto"] > img,
    article[data-testid="tweet"] > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) div[data-testid="tweetPhoto"] > div {
        position: relative;
    }
    
    article[data-testid="tweet"] div[style="padding-bottom: 56.25%;"] {
        padding-bottom: 0 !important;
    }
    article[data-testid="tweet"] div[style="padding-bottom: 56.25%;"] + div,
    article[data-testid="tweet"] div[style="padding-bottom: 56.25%;"] + div a,
    article[data-testid="tweet"] div[style="padding-bottom: 56.25%;"] + div div {
        position: relative;
    }*/
    
    /* Remove quote tweet border radius */
    
    article[data-testid="tweet"] > div:nth-child(1) > div:nth-child(1) > div > div:nth-child(2) > div > div > div[tabindex="0"][role="link"] {
        border-radius: 0;
    }
    
    /* Hide "subscribe to premium"*/
    
    div[aria-label="Trending"] div:has(> aside[aria-label="Subscribe to Premium"]),
    div[aria-label="Trending"] div:has(> div > div[data-testid="super-upsell-UpsellCardRenderProperties"]),
    div[aria-label="Trending"] div:has(> div > div[data-testid="super-upsell-UpsellButtonRenderProperties"]) {
        display: none;
    }
    div[aria-label="Trending"] div:has(> div > aside[aria-label="Subscribe to Premium to write your own longer posts"]) {
        display: none;
    }
    
    /* Hide "who to follow" */
        
    div[aria-label="Trending"] div:has(> div > aside[aria-label="Who to follow"]) {
        display: none;
    }
    
    /* Hide "suggested videos" */
    
    div[aria-label="Trending"] div:has(> div > div > div > div[data-testid^="suggested-video-card-"]) {
        display: none;
    }
    
    /* Hide trending tab */
    
    div[aria-label="Trending"] div:has(> section > div[aria-label="Timeline: Trending now"]) {
        display: none;
    }
    div[aria-label="Trending"] div:has(> div > div > div[aria-label="Loading timeline"]) {
        display: none;
    }
    
    /* Hide "today's news" tab */
    
    div[aria-label="Trending"] div:has(> div[data-testid="news_sidebar"]) {
        display: none;
    }
    
    /* Hide tos, privacy policy, etc */
    
    div[aria-label="Trending"] div:has(> nav[aria-label="Footer"]) {
        display: none;
    }
    
    /* Hide "new tweets" thing */
    
    div[aria-label="New posts are available. Push the period key to go to the them."] {
        display: none;
    }
    
    /* Hide "unread items" home icon */
    
    nav[role="navigation"] > a[data-testid="AppTabBar_Home_Link"] div[aria-label="undefined unread items"] {
        display: none;
    }
    
    /* Remove line clamp on long tweets */
    
    div[data-testid="tweetText"] {
        -webkit-line-clamp: unset !important;
    }
    
    /* Remove "show more" link */
    
    div[data-testid="tweet-text-show-more-link"], a[data-testid="tweet-text-show-more-link"], button[data-testid="tweet-text-show-more-link"]  {
        display: none;
    }
    
    /* Unstick "for you/following" */
    
    div[aria-label="Home timeline"] > div:nth-child(1) {
        position: unset;
    }
    
    /* Remove post prompt on home timeline */
    
    div[aria-label="Home timeline"] > div:nth-child(3) > div:has(div[data-testid="tweetTextarea_0_label"]) {
        display: none;
    }
    
    /* Remove "push notifications" prompt */
    
    div[aria-label="Timeline: Your Home Timeline"] > div > div:has(>div > div > div > div[data-testid="inlinePrompt"] > div[data-testid="inlinePrompt-primaryAction"]) {
        display: none;
    }
    
    /* Remove "verified accounts can reply" */
    
    div:has(> div[aria-live="polite"][role="status"] > div > div > a[href="/i/premium_sign_up"]) {
        display: none;
    }
    
    /* Remove jobs on profile */
    
    div[data-testid="jobs"] {
        display: none;
    }
    
    /* Remove useless stuff on profile */
    
    button[aria-label="Send a tip"] {
        display: none;
    }
    
    button[aria-label^="Subscribe to @"] {
        display: none;
    }
    
    /* Remove useless stuff from the sidebar */
    
    nav[aria-label="Primary"] > a[data-testid="AppTabBar_Explore_Link"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[data-testid="AppTabBar_Follow_Link"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[data-testid="jobs-tab-item"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[data-testid="premium-business-signup-tab"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[data-testid="premium-signup-tab"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[data-testid="vo-signup-tab"] {
        display: none;
    }
    nav[aria-label="Primary"] > a[aria-label="Creator Studio"] {
        display: none;
    }
    
    
    /* Remove grok suggestions on tweets */
    
    article[data-testid="tweet"] div:has(> nav[role="navigation"] > div > div[data-testid="ScrollSnap-SwipeableList"]) {
        display: none;
    }
    
    /* Remove grok buttons */
    
    /*article[data-testid="tweet"] button[aria-label="Grok actions"] {
        display: none;
    }*/
    
    /*div[data-testid="GrokDrawer"] {
        display: none;
    }*/
    
    /* Remove annoying glow on grok + msg drawer */
    
    div[data-testid="GrokDrawer"] > div, div[data-testid="chat-drawer-main"] {
        box-shadow: none;
    }
    div[data-testid="GrokDrawer"] > div {
        border: 1px solid hsl(var(--color-gray-400));
    }
    
    /* Remove "Discover more" */
    
    div[aria-label="Timeline: Conversation"] > div > div:has(> div > div > div > h2[role="heading"]):has(> div > div > div > div > span) {
        display: none;
        & ~ div {
            display: none;
        }
    }
    
    
    /* ----- Mobile stuff ----- */
    
    /* Unstick navbar */
    div#layers div:has(div[data-testid="TopNavBar"]):has([data-testid="DashButton_ProfileIcon_Link"]) {
        position: relative;
    }
    /* Stick navbar when it has the back button (eg when viewing a post)*/
    div[data-testid="TopNavBar"] {
        
        transform: none !important;
        backdrop-filter: none;
        background-color: black;
        &:has([data-testid="app-bar-back"]) {
            border-bottom: 1px solid rgb(47, 51, 54);
        }
    }
    /* Remove the "new posts" blue bubble */
    div[data-testid="TopNavBar"] ~ div {
        display: none;
    }
    
        
    
    
}