X (twitter) responsive + customizations

X (twitter) website is more suitable for wide screens.

As of 2024-06-29. See the latest version.

  1. /* ==UserStyle==
  2. @name X (twitter) responsive + customizations
  3. @version 1.0.6
  4. @description X (twitter) website is more suitable for wide screens.
  5. @author BreatFR (https://breat.fr)
  6. @namespace https://gitlab.com/breatfr
  7. @homepageURL https://gitlab.com/breatfr/x-twitter
  8. @supportURL https://discord.gg/Q8KSHzdBxs
  9. @license AGPL-3.0-or-later; https://www.gnu.org/licenses/agpl-3.0.txt
  10. @preprocessor stylus
  11.  
  12. @var checkbox hidemessages "Hide messages" 0
  13. @var checkbox hidepremium "Hide premium" 1
  14. @var checkbox hidesidebarleft "Hide sidebar on left" 0
  15. @var checkbox hidesidebarright "Hide sidebar on right" 0
  16. @var checkbox logocentred "Logo centred" 1
  17. @var select previewtype "Preview type" {
  18. "Contain + Blur": "previewtypecontainblur",
  19. "Contain": "previewtypecontain",
  20. "Cover": "previewtypecover"
  21. }
  22. @var checkbox oldlogo "Old logo" 0
  23. @var checkbox widemode "Wide mode" 1
  24. ==/UserStyle== */
  25.  
  26. /* === Credits ===
  27. Website https://breat.fr
  28. facebook https://www.facebook.com/breatfroff
  29. mastodon https://mastodon.social/@breat_fr
  30. telegram https://t.me/breatfr
  31. vk https://vk.com/breatfroff
  32. X (twitter) https://x.com/breatfroff
  33. === Credits === */
  34.  
  35. @-moz-document domain("x.com") {
  36. /* ===================================================================================================================================
  37. Version
  38. =================================================================================================================================== */
  39. :root {
  40. --themeversion: 'Theme v1.0.6';
  41. --author: 'by BreatFR';
  42. --link: ' gitlab.com/breatfr/x-twitter ';
  43. }
  44.  
  45. header > div > div > div > div.css-175oi2r.r-1habvwh::after {
  46. background: linear-gradient(88.55deg, rgb(139, 109, 255) 22.43%, rgb(254, 132, 132) 92.28%);
  47. background-clip: text;
  48. -webkit-background-clip: text;
  49. color: transparent;
  50. content: var(--themeversion) ' · ' var(--author) '\A' url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHN0eWxlPSJ0cmFuc2Zvcm06IHNjYWxlWSgtMSk7Ij48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjQgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZmlsbD0iI2NiY2JjYiIgZD0iTTMwNyAzNC44Yy0xMS41IDUuMS0xOSAxNi42LTE5IDI5LjJ2NjRIMTc2Qzc4LjggMTI4IDAgMjA2LjggMCAzMDRDMCA0MTcuMyA4MS41IDQ2Ny45IDEwMC4yIDQ3OC4xYzIuNSAxLjQgNS4zIDEuOSA4LjEgMS45YzEwLjkgMCAxOS43LTguOSAxOS43LTE5LjdjMC03LjUtNC4zLTE0LjQtOS44LTE5LjVDMTA4LjggNDMxLjkgOTYgNDE0LjQgOTYgMzg0YzAtNTMgNDMtOTYgOTYtOTZoOTZ2NjRjMCAxMi42IDcuNCAyNC4xIDE5IDI5LjJzMjUgMyAzNC40LTUuNGwxNjAtMTQ0YzYuNy02LjEgMTAuNi0xNC43IDEwLjYtMjMuOHMtMy44LTE3LjctMTAuNi0yMy44bC0xNjAtMTQ0Yy05LjQtOC41LTIyLjktMTAuNi0zNC40LTUuNHoiLz48L3N2Zz4=") var(--link) url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHRyYW5zZm9ybT0icm90YXRlKDE4MCkiPjwhLS0hRm9udCBBd2Vzb21lIEZyZWUgNi41LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSBDb3B5cmlnaHQgMjAyNCBGb250aWNvbnMsIEluYy4tLT48cGF0aCBmaWxsPSIjY2JjYmNiIiBkPSJNMzA3IDM0LjhjLTExLjUgNS4xLTE5IDE2LjYtMTkgMjkuMnY2NEgxNzZDNzguOCAxMjggMCAyMDYuOCAwIDMwNEMwIDQxNy4zIDgxLjUgNDY3LjkgMTAwLjIgNDc4LjFjMi41IDEuNCA1LjMgMS45IDguMSAxLjljMTAuOSAwIDE5LjctOC45IDE5LjctMTkuN2MwLTcuNS00LjMtMTQuNC05LjgtMTkuNUMxMDguOCA0MzEuOSA5NiA0MTQuNCA5NiAzODRjMC01MyA0My05NiA5Ni05Nmg5NnY2NGMwIDEyLjYgNy40IDI0LjEgMTkgMjkuMnMyNSAzIDM0LjQtNS40bDE2MC0xNDRjNi43LTYuMSAxMC42LTE0LjcgMTAuNi0yMy44cy0zLjgtMTcuNy0xMC42LTIzLjhsLTE2MC0xNDRjLTkuNC04LjUtMjIuOS0xMC42LTM0LjQtNS40eiIvPjwvc3ZnPg==") ;
  51. bottom: -15%;
  52. display: flex;
  53. flex-direction: column;
  54. font-size: 18px;
  55. left: 0;
  56. position: absolute;
  57. text-align: center;
  58. width: max-content;
  59. white-space: pre-line;
  60. }
  61. /* ===================================================================================================================================
  62. Hide scrollbars
  63. =================================================================================================================================== */
  64. .css-1lbk8wf,
  65. :root ::-webkit-scrollbar {
  66. scrollbar-width: none !important;
  67. -ms-overflow-style: none !important;
  68. -moz-overflow-style: none !important;
  69. -webkit-overflow-style: none !important;
  70. width: 0px;
  71. }
  72. ::-webkit-scrollbar {
  73. display: none;
  74. width: 0px;
  75. }
  76. /* ===================================================================================================================================
  77. Header
  78. =================================================================================================================================== */
  79. header {
  80. align-items: flex-start !important;
  81. flex-grow: 0 !important;
  82. margin-left: -3% !important;
  83. max-width: 335px !important;
  84. -webkit-box-align: start !important;
  85. }
  86. /* Logo */
  87. if logocentred {
  88. #react-root > div > div > div.css-175oi2r.r-1f2l425.r-13qz1uu.r-417010.r-18u37iz > header > div > div > div > div.css-175oi2r.r-1habvwh > div.css-175oi2r.r-dnmrzs.r-1559e4e {
  89. transform: translateX(195%);
  90. }
  91. }
  92. if oldlogo {
  93. div[data-testid=interstitialGraphic] svg.r-13v1u17,
  94. h1 > a[href="/home"] svg,
  95. svg[aria-label="Twitter"],
  96. #placeholder svg {
  97. background-color: rgb(29, 155, 240);
  98. fill: none;
  99. mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGNsYXNzPSJyLTEzdjF1MTcgci00cXRxcDkgci15eXl5b28gci0xNnkydW94IHItOGt6MGdrIHItZG5tcnpzIHItYm53cWltIHItMXBsY3J1aSByLWxydmliciByLWxyc2xscCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Zz48cGF0aCBkPSJNMjMuNjQzIDQuOTM3Yy0uODM1LjM3LTEuNzMyLjYyLTIuNjc1LjczM2E0LjY3IDQuNjcgMCAwIDAgMi4wNDgtMi41NzggOS4zIDkuMyAwIDAgMS0yLjk1OCAxLjEzIDQuNjYgNC42NiAwIDAgMC03LjkzOCA0LjI1IDEzLjIyOSAxMy4yMjkgMCAwIDEtOS42MDItNC44NjhjLS40LjY5LS42MyAxLjQ5LS42MyAyLjM0MkE0LjY2IDQuNjYgMCAwIDAgMy45NiA5LjgyNGE0LjY0NyA0LjY0NyAwIDAgMS0yLjExLS41ODN2LjA2YTQuNjYgNC42NiAwIDAgMCAzLjczNyA0LjU2OCA0LjY5MiA0LjY5MiAwIDAgMS0yLjEwNC4wOCA0LjY2MSA0LjY2MSAwIDAgMCA0LjM1MiAzLjIzNCA5LjM0OCA5LjM0OCAwIDAgMS01Ljc4NiAxLjk5NSA5LjUgOS41IDAgMCAxLTEuMTEyLS4wNjUgMTMuMTc1IDEzLjE3NSAwIDAgMCA3LjE0IDIuMDkzYzguNTcgMCAxMy4yNTUtNy4wOTggMTMuMjU1LTEzLjI1NCAwLS4yLS4wMDUtLjQwMi0uMDE0LS42MDJhOS40NyA5LjQ3IDAgMCAwIDIuMzIzLTIuNDF6Ii8+PC9nPjwvc3ZnPg==');
  100. -webkit-mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGNsYXNzPSJyLTEzdjF1MTcgci00cXRxcDkgci15eXl5b28gci0xNnkydW94IHItOGt6MGdrIHItZG5tcnpzIHItYm53cWltIHItMXBsY3J1aSByLWxydmliciByLWxyc2xscCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Zz48cGF0aCBkPSJNMjMuNjQzIDQuOTM3Yy0uODM1LjM3LTEuNzMyLjYyLTIuNjc1LjczM2E0LjY3IDQuNjcgMCAwIDAgMi4wNDgtMi41NzggOS4zIDkuMyAwIDAgMS0yLjk1OCAxLjEzIDQuNjYgNC42NiAwIDAgMC03LjkzOCA0LjI1IDEzLjIyOSAxMy4yMjkgMCAwIDEtOS42MDItNC44NjhjLS40LjY5LS42MyAxLjQ5LS42MyAyLjM0MkE0LjY2IDQuNjYgMCAwIDAgMy45NiA5LjgyNGE0LjY0NyA0LjY0NyAwIDAgMS0yLjExLS41ODN2LjA2YTQuNjYgNC42NiAwIDAgMCAzLjczNyA0LjU2OCA0LjY5MiA0LjY5MiAwIDAgMS0yLjEwNC4wOCA0LjY2MSA0LjY2MSAwIDAgMCA0LjM1MiAzLjIzNCA5LjM0OCA5LjM0OCAwIDAgMS01Ljc4NiAxLjk5NSA5LjUgOS41IDAgMCAxLTEuMTEyLS4wNjUgMTMuMTc1IDEzLjE3NSAwIDAgMCA3LjE0IDIuMDkzYzguNTcgMCAxMy4yNTUtNy4wOTggMTMuMjU1LTEzLjI1NCAwLS4yLS4wMDUtLjQwMi0uMDE0LS42MDJhOS40NyA5LjQ3IDAgMCAwIDIuMzIzLTIuNDF6Ii8+PC9nPjwvc3ZnPg==');
  101. mask-position: center;
  102. mask-repeat: no-repeat;
  103. -webkit-mask-position: center;
  104. -webkit-mask-repeat: no-repeat;
  105. }
  106. }
  107. /* ===================================================================================================================================
  108. Wide mode
  109. =================================================================================================================================== */
  110. if widemode {
  111. main > div {
  112. width: 100% !important;
  113. }
  114. [data-testid="primaryColumn"] {
  115. max-width: calc(100% - 370px) !important;
  116. }
  117. [data-testid="sidebarColumn"] {
  118. margin-right: 10px !important;
  119. max-width: 350px;
  120. }
  121. }
  122.  
  123. /* ===================================================================================================================================
  124. Photos/Videos
  125. =================================================================================================================================== */
  126. [data-testid="cellInnerDiv"] {
  127. .css-175oi2r.r-1adg3ll.r-1udh08x {
  128. height: auto !important;
  129. width: 100% !important;
  130. }
  131. a[href*="https://pbs.twimg.com/media/"] > div {
  132. align-items: center !important;
  133. height: 100% !important;
  134. min-width: 100% !important;
  135. }
  136. .r-k200y {
  137. align-self: unset;
  138. }
  139. }
  140. .r-1ye8kvj {
  141. max-width: 100%;
  142. }
  143.  
  144. /* ===================================================================================================================================
  145. Preview type
  146. =================================================================================================================================== */
  147. if (previewtype=="previewtypecontainblur") {
  148. img.css-9pa8cd {
  149. backdrop-filter: blur(100px);
  150. -o-backdrop-filter: blur(100px);
  151. -moz-backdrop-filter: blur(100px);
  152. -ms-backdrop-filter: blur(100px);
  153. -webkit-backdrop-filter: blur(100px);
  154. object-fit: contain;
  155. opacity: 1;
  156. }
  157. }
  158. if (previewtype=="previewtypecontain") {
  159. img.css-9pa8cd {
  160. object-fit: contain;
  161. opacity: 1;
  162. }
  163. .r-vvn4in {
  164. background: none !important;
  165. }
  166. }
  167. if (previewtype=="previewtypecover") {
  168. img.css-9pa8cd {
  169. object-fit: cover;
  170. opacity: 1;
  171. }
  172. }
  173. /* Make images/videos start under avatar */
  174. .css-175oi2r.r-9aw3ui.r-1s2bzr4 {
  175. margin-left: -50px;
  176. }
  177. /* ===================================================================================================================================
  178. Hide messages
  179. =================================================================================================================================== */
  180. if hidemessages {
  181. [style="position: absolute; bottom: 0px; width: 100%; transition: transform 300ms ease 0s; transform: translateY(0px);"] {
  182. display: none;
  183. }
  184. }
  185. /* ===================================================================================================================================
  186. Hide premium
  187. =================================================================================================================================== */
  188. if hidepremium {
  189. [aria-label="Premium"],
  190. a[href="/i/premium_sign_up"],
  191. a[href="/i/verified-choose"],
  192. a[href="/i/verified-orgs-signup"],
  193. .css-175oi2r.r-1hycxz.r-gtdqiz > div > div > div > div:nth-child(3),
  194. .r-uaa2di {
  195. display: none !important;
  196. }
  197. }
  198.  
  199. /* ===================================================================================================================================
  200. Hide sidebar on left
  201. =================================================================================================================================== */
  202. if hidesidebarleft {
  203. header[role="banner"] {
  204. display: none;
  205. }
  206. }
  207.  
  208. /* ===================================================================================================================================
  209. Hide sidebar on right
  210. =================================================================================================================================== */
  211. if hidesidebarright {
  212. [data-testid="sidebarColumn"] {
  213. display: none;
  214. }
  215. [data-testid="primaryColumn"] {
  216. max-width: 100% !important;
  217. }
  218. [data-testid="cellInnerDiv"] {
  219. .css-175oi2r.r-1adg3ll.r-1udh08x {
  220. height: auto !important;
  221. width: 100% !important;
  222. }
  223. a[href*="https://pbs.twimg.com/media/"] > div {
  224. height: 100% !important;
  225. min-width: 100% !important;
  226. }
  227. .r-k200y {
  228. align-self: unset;
  229. }
  230. }
  231. }
  232. }
  233.  
  234. @-moz-document url-prefix("https://x.com/i/communities/suggested") {
  235. /* ===================================================================================================================================
  236. Fix suggested communities view
  237. =================================================================================================================================== */
  238. .css-175oi2r.r-1q9bdsx.r-1b7u577.r-1udh08x.r-7bouqp,
  239. .css-175oi2r.r-1adg3ll.r-1udh08x {
  240. height: 96px !important;
  241. width: 96.95px !important;
  242. }
  243. img.css-9pa8cd {
  244. min-height: 96px !important;
  245. max-width: 96.95px !important;
  246. }
  247. }
  248.  
  249. @-moz-document url-prefix("https://x.com/settings/account") {
  250. /* ===================================================================================================================================
  251. Fix account view
  252. =================================================================================================================================== */
  253. .r-1ye8kvj {
  254. max-width: 75% !important;
  255. }
  256. }
  257.  
  258.  
  259. @-moz-document url-prefix("https://devcommunity.x.com/") {
  260. .menu-panel.drop-down {
  261. left: 0% !important;
  262. }
  263. }