├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Revolt Tweaks 2 | This is a repo containing useful tweaks for revolt.chat. 3 | 4 | To apply them, **paste them in Settings -> Appearance -> Custom CSS.** 5 | 6 | ## Wider scrollbar (Firefox) 7 | ```css 8 | /* -- Wider scrollbar (Firefox) -- */ 9 | * { 10 | scrollbar-width: initial; 11 | } 12 | ``` 13 | 14 | ## Wider scrollbar (Desktop/Chrome/Edge/etc) 15 | ```css 16 | /* -- Wider scrollbar (Desktop/Chrome/Edge/etc) -- */ 17 | *::-webkit-scrollbar { 18 | width: 15px; 19 | } 20 | 21 | *::-webkit-scrollbar-track { 22 | background: var(--primary-background); /* color of the tracking area */ 23 | } 24 | 25 | *::-webkit-scrollbar-thumb { 26 | background-color: var(--accent); /* color of the scroll thumb */ 27 | border-radius: 20px; /* roundness of the scroll thumb */ 28 | } 29 | ``` 30 | 31 | ## Hide homescreen actions 32 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/d4af37b7-0e52-4aeb-b494-fda2920b1d74) 33 | 34 | ```css 35 | /* -- Hide homescreen actions -- */ 36 | [class^="_home_"] [class^="_homeScreen_"] [class^="_actions_"] { 37 | display: none; 38 | } 39 | ``` 40 | 41 | ## Remove modal animations 42 | ```css 43 | /* -- Remove modal animations -- */ 44 | [class^="Container-sc-"], [class^="Base-sc-"], [class^="_settings_"] { 45 | animation: none !important; 46 | transition: none !important; 47 | } 48 | ``` 49 | 50 | ## Square user avatars 51 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/26941050/65e74c33-5fcc-486a-b965-44ecdfb615c4) 52 | 53 | ```css 54 | /* -- Square user avatars -- */ 55 | /* !! :root should be moved at the top of the theme !! */ 56 | :root { 57 | --border-radius-user-icon: 3px; 58 | } 59 | [class^="TypingIndicator__Base-sc-"] > div > [class^="avatars"] > img { 60 | border-radius: 3px; 61 | } 62 | [data-item-index="0"] [class^="ItemContainer-sc-176t3v5-0"] foreignObject :is(div, img) { 63 | border-radius: 3px !important; 64 | } 65 | ``` 66 | 67 | ## Square server icons (and more) 68 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/7acd9aff-5d0e-43df-9325-487b53c0e6af) 69 | 70 | ```css 71 | /* -- Square server icons (and more) -- */ 72 | [class^="Image-sc-"], 73 | [class^="IconBase__ImageIconBase-sc-"] { 74 | border-radius: 3px; 75 | } 76 | ``` 77 | 78 | ## Wide emoji 79 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/f8820fae-5599-4ada-a72d-973c225db9e8) 80 | 81 | **Credit:** amycatgirl 82 | ```css 83 | /* -- Wide emoji -- */ 84 | .emoji { 85 | width: unset !important; 86 | max-width: 100%; 87 | } 88 | ``` 89 | 90 | ## Rounded message highlight 91 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/115636509/ee7aa5b5-f4c4-4c86-bb13-6cf6b365c810) 92 | ```css 93 | /* -- Rounded message highlight -- */ 94 | [class^="MessageBase"] { 95 | border-radius: 8px; 96 | margin-left: .3rem; 97 | margin-right: .3rem; 98 | } 99 | ``` 100 | 101 | ## Blurred server sidebar 102 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/f4c3ab99-3694-4ffd-bf0a-aa63824a37ed) 103 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/835da04f-6437-411e-81c3-b47b92258e30) 104 | 105 | ```css 106 | /* -- Blurred server sidebar -- */ 107 | [class^="SidebarBase-sc-"] > [class^="Base-sc-"] { 108 | filter: blur(7px); 109 | transition: 1s cubic-bezier(0.33, 1, 0.68, 1); 110 | } 111 | 112 | [class^="SidebarBase-sc-"] > [class^="Base-sc-"]:hover { 113 | filter: blur(0px); 114 | transition: 0.4s cubic-bezier(0.33, 1, 0.68, 1); 115 | } 116 | ``` 117 | 118 | ## Alternative active server indicator 119 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/881afbf7-f275-4ca1-88c5-10e3b8ce7d85) 120 | > [!NOTE] 121 | > Incompatible with Square server icons 122 | ```css 123 | /* -- Alternative active server indicator -- */ 124 | [class^="SwooshWrapper-sc-"] > svg > path:not(:first-child), 125 | [class^="SwooshWrapper-sc-"] > svg > rect { 126 | display: none; 127 | } 128 | 129 | [class^="SwooshWrapper-sc-"] > svg > path:first-child { 130 | fill: var(--accent); 131 | /* Fix uneven bubble around the server icon */ 132 | transform: translateX(.8px) scale(.9); 133 | transform-origin: center; 134 | } 135 | ``` 136 | 137 | ## Consistent server header side 138 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/f0b78985-355a-4ad9-a662-bcdf26421a60) 139 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/0d7b7525-c8d5-4b88-90ba-7835e720e684) 140 | 141 | ```css 142 | /* -- Consistent server header side -- */ 143 | [class^="ServerHeader__ServerBanner-sc-"] { 144 | height: 48px; 145 | } 146 | ``` 147 | 148 | ## Auto-hiding channels list 149 | Automatically hides the channels sidebar until hovered over. 150 | ```css 151 | /* -- Auto-hiding channels list -- */ 152 | [class^="ServerSidebar__ServerBase-sc-"]:hover { 153 | width: 232px; 154 | transition: 0.4s cubic-bezier(0.33, 1, 0.68, 1); 155 | } 156 | 157 | [class^="ServerSidebar__ServerBase"] { 158 | width: 50px; 159 | transition: 0.4s cubic-bezier(0.65, 0, 0.35, 1); 160 | } 161 | ``` 162 | 163 | ## Auto-hiding members list 164 | Automatically hides the members sidebar until hovered over. 165 | ```css 166 | /* -- Auto-hiding members list -- */ 167 | [class^="SidebarBase-sc-"]:nth-child(2):hover { 168 | width: 232px; 169 | transition: 0.4s cubic-bezier(0.33, 1, 0.68, 1); 170 | } 171 | 172 | [class^="SidebarBase-sc-"]:nth-child(2) { 173 | width: 54px; 174 | transition: 0.4s cubic-bezier(0.65, 0, 0.35, 1); 175 | } 176 | ``` 177 | 178 | ## Hide channel icons 179 | ```css 180 | /* -- Hide channel icons -- */ 181 | div[class^="_item_"] > div[class^="_avatar_"] { 182 | display: none; 183 | } 184 | ``` 185 | 186 | ## Discord style messagebar 187 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/ef35b964-b943-4be9-b491-ff399a02ab0d) 188 | 189 | ```css 190 | /* -- Discord style messagebar -- */ 191 | [class^="MessageBox__Base-sc-"] { 192 | margin: 0 1rem 1.4rem 1rem; 193 | border-radius: 11px; 194 | } 195 | [class^="FilePreview__Container-sc-"], 196 | [class^="TypingIndicator__Base-sc-"], 197 | [class^="AutoComplete__Base-sc-"], 198 | [class^="JumpToBottom__Bar-sc-"] { 199 | margin: 0 1rem; 200 | border-radius: 11px; 201 | } 202 | 203 | [class^="AutoComplete__Base-sc-"] > div{ 204 | border-radius: 11px; 205 | } 206 | ``` 207 | 208 | ## Message bubbles 209 | Displays messages in a bubble. 210 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/16deeba2-83a1-4267-972e-41d4d38a4254) 211 | 212 | ```css 213 | /* -- Message bubbles -- */ 214 | [class^="MessageBase__MessageContent-sc-"] { 215 | background-color: var(--tertiary-background); 216 | border-radius: 18px; 217 | padding: 10px 13px 10px 13px; 218 | flex-grow: 0; 219 | } 220 | ``` 221 | 222 | ## Hide blocked messages 223 | ```css 224 | /* -- Hide blocked messages -- */ 225 | [class^="MessageRenderer__BlockedMessage-sc-"] { 226 | display: none; 227 | } 228 | ``` 229 | 230 | ## Permanent spoiler 231 | Hide all images and videos by displaying a css spoiler. Hover over it to see it. 232 | On mobile, long press to preview the image, press to view it. 233 | 234 | > [!NOTE] 235 | If you start a video and then stop hovering, the spoiler is going to show regardless and the video keeps playing. 236 | 237 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/6fc47ed8-af2d-4201-8177-5d7e07829183) 238 | 239 | ```css 240 | /* -- Permanent spoiler -- */ 241 | [class^="Grid-sc-"] { 242 | position: relative !important; 243 | } 244 | 245 | [class^="Grid-sc-"]::before { 246 | content: "Hidden"; 247 | display: flex; 248 | align-items: center; 249 | justify-content: center; 250 | width: 100%; 251 | height: 100%; 252 | position: absolute; 253 | top: 0; 254 | left: 0; 255 | background: var(--secondary-background); 256 | font-size: larger; 257 | transition: .1s; 258 | } 259 | 260 | [class^="Grid-sc-"]:hover::before { 261 | opacity: 0; 262 | pointer-events: none; 263 | } 264 | ``` 265 | 266 | ### Permanent spoiler (Blur) 267 | This is applied only on images. 268 | 269 | ![image](https://github.com/lo-kiss/revolt-css-snippets/assets/115636509/142832e7-efc8-40c9-a3bc-bc8567c10b17) 270 | 271 | ```css 272 | /* -- Permanent spoiler (Blur) -- */ 273 | [class^="Grid-sc-"] > img[class^="_image_"] { 274 | filter: blur(40px); 275 | transition: .2s; 276 | } 277 | 278 | [class^="Grid-sc-"] > img[class^="_image_"]:hover { 279 | filter: blur(0px); 280 | } 281 | ``` 282 | 283 | ## Alternative user popup (Flawed) 284 | **Note:** This effects every popup, including images, warnings, errors, etc. 285 | ![image](https://github.com/lo-kiss/revolt-tweaks/assets/60184397/b1945041-d7fb-4ec7-837b-f9df12813dda) 286 | 287 | ```css 288 | /* -- Alternative user popup (Flawed) -- */ 289 | [class^="Base-sc-1d"] { 290 | background: rgba(0, 0, 0, 0.4); 291 | } 292 | 293 | [class^="Container-sc-1d"] { 294 | position: fixed; 295 | bottom: -1.5rem; 296 | } 297 | ``` 298 | 299 | ## Use foreground colour on server unread indicator 300 | 301 | ```css 302 | a[href^="/server/"] svg > circle { 303 | fill: var(--foreground) !important; 304 | } 305 | ``` 306 | 307 | ## No emote gaps 308 | ![image](https://github.com/lo2dev/revolt-tweaks/assets/76877633/a5e3dfdd-0854-41b9-a22f-f8416b59751f) 309 | 310 | ```css 311 | .emoji { 312 | vertical-align: -0.3em; 313 | object-fit: fill; 314 | margin: 0px; 315 | } 316 | ``` 317 | 318 | # License 319 | [![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/) 320 | 321 | --------------------------------------------------------------------------------