LinuxDo VScode style

Make LinuxDo Looklike VScode

安装此脚本?
作者推荐脚本

您可能也喜欢LinuxDo自定义🛠️

安装此脚本
  1. // ==UserScript==
  2. // @name LinuxDo VScode style
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2.2
  5. // @description Make LinuxDo Looklike VScode
  6. // @author Yearly
  7. // @match https://linux.do/*
  8. // @icon data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTExLjcgMTguNy02LjkgNS4yLTIuOC0xTDkgMTYgMiA5LjFsMi44LS45IDYuOSA1LjJMMjMuMSAyLjEgMzAgNC45djIyLjJMMjMuMiAzMFptMy42LTIuNyA3LjkgNS45VjEwLjFaIiBzdHlsZT0iZmlsbDojMDA3YWNjIi8+PC9zdmc+
  9. // @license MIT
  10. // @run-at document-start
  11. // @grant GM_addStyle
  12. // @noframes
  13. // ==/UserScript==
  14.  
  15. (function() {
  16.  
  17. // thin header
  18. GM_addStyle(`
  19. header.d-header {
  20. height: 2.6em !important;
  21. }
  22. header.d-header .extra-info-wrapper .title-wrapper {
  23. display: flex;
  24. flex-direction: row;
  25. }
  26. header.d-header div.title-wrapper > h1.header-title {
  27. width: auto;
  28. font-size: large;
  29. }
  30. header.d-header #site-logo {
  31. height: 2em !important;
  32. }
  33. header.d-header .d-header-icons .icon img.avatar,
  34. header.d-header a > svg,
  35. header.d-header button > svg,
  36. header.d-header a > div.chat-channel-unread-indicator {
  37. transform: scale(0.85, 0.85);
  38. }
  39. `);
  40.  
  41. // code font
  42. GM_addStyle(`
  43. body {
  44. font-family: 'Consolas', 'Courier New', monospace;
  45. }
  46.  
  47. .d-header {
  48. background-color: #222 !important;
  49. }
  50.  
  51.  
  52. .topic-list .topic-list-item {
  53. border-bottom: 1px solid #3c3c3c !important;
  54. }
  55.  
  56. .topic-list .topic-list-item:hover {
  57. background-color: #2a2d2e !important;
  58. }
  59.  
  60. #d-sidebar > div.sidebar-footer-wrapper > div.sidebar-footer-container{
  61. padding: 0em 0.5em;
  62. background: #0374c7;
  63. }
  64.  
  65. #d-sidebar > div.sidebar-footer-wrapper > div.sidebar-footer-container button.btn svg{
  66. --primary: #eee;
  67. color: #eee;
  68. }
  69.  
  70. #reply-control {
  71. background-color: #252526 !important;
  72. }
  73.  
  74. .d-editor-textarea-wrapper {
  75. background-color: #1e1e1e !important;
  76. }
  77.  
  78. .d-editor-preview-wrapper {
  79. background-color: #252526 !important;
  80. border-left: 1px solid #3c3c3c !important;
  81. }
  82.  
  83. .sidebar-wrapper > #d-sidebar > div.sidebar-footer-wrapper .sidebar-footer-container:before {
  84. border-bottom: solid 1px #8888;
  85. background:none;
  86. }
  87.  
  88. #main-outlet-wrapper > div.sidebar-wrapper > #d-sidebar{
  89. border-right: 1px solid #8888;
  90. }
  91. `);
  92.  
  93. /*
  94. GM_addStyle(`
  95. html,
  96. body,
  97. #main,
  98. #ember3,
  99. #main-outlet-wrapper{
  100. max-height:100%;
  101. height:100%;
  102. }
  103. #main-outlet{
  104. height:calc(100% - 2em);
  105.  
  106. overflow-x: visible;
  107. overflow-y: auto;
  108. }
  109. `);
  110. */
  111.  
  112. GM_addStyle(`
  113. html,
  114. body {
  115. font-family: 'Consolas', 'Courier New', 'Lucida Console', 'Monaco', 'Source Code Pro', 'Fira Code', 'Ubuntu Mono', 'Menlo', 'DejaVu Sans Mono', monospace !important;
  116. --d-font-family--monospace: 'Consolas', 'Courier New', 'Lucida Console', 'Monaco', 'Source Code Pro', 'Fira Code', 'Ubuntu Mono', 'Menlo', 'DejaVu Sans Mono', monospace !important;
  117. --heading-font-family: 'Consolas', 'Courier New', 'Lucida Console', 'Monaco', 'Source Code Pro', 'Fira Code', 'Ubuntu Mono', 'Menlo', 'DejaVu Sans Mono', monospace !important;
  118. --font-family: 'Consolas', 'Courier New', 'Lucida Console', 'Monaco', 'Source Code Pro', 'Fira Code', 'Ubuntu Mono', 'Menlo', 'DejaVu Sans Mono', monospace !important;
  119. }
  120.  
  121. :root {
  122. --secondary: #000 !important;
  123. --tertiary: #99d6ff !important;
  124. --tertiary-med-or-tertiary: #0e639c !important;
  125. --tertiary-low-or-tertiary-high: #0e639c !important;
  126. --tertiary-low: #0e639c !important;
  127. --love: #0e639c !important;
  128. --success: #0e639c !important;
  129. --quaternary: #0e639c !important;
  130. --tertiary-hover: #0e639c !important;
  131. --primary-low: #333 !important;
  132. --primary: #eee !important;
  133. --d-max-width: 100% !important;
  134. }
  135.  
  136. #main-outlet-wrapper {
  137. font-size: 14px;
  138. }
  139.  
  140. #main-outlet {
  141. --primary-low: #000;
  142. }
  143.  
  144. table.topic-list .topic-excerpt {
  145. color: #bb7;
  146. }
  147.  
  148. table.topic-list a.title.raw-link.raw-topic-link {
  149. color: #39f;
  150. }
  151.  
  152. table.topic-list tr.topic-list-item {
  153. border-bottom: none !important;
  154. }
  155.  
  156. .topic-list td.topic-list-data.posters {
  157. height: auto;
  158. padding: 0.33em;
  159. width: 110px;
  160. opacity: 0.2;
  161. }
  162.  
  163. .topic-list td.topic-list-data.posters:hover {
  164. opacity: 1;
  165. }
  166.  
  167. body > #d-splash > img.preloader-image {
  168. filter: invert(75%);
  169. }
  170.  
  171. ul>li {
  172. margin-left: 2em;
  173. }
  174.  
  175. #main-outlet-wrapper {
  176. max-width: 100% !important;
  177. }
  178.  
  179. body.has-sidebar-page header.d-header>div.wrap {
  180. max-width: 100% !important;
  181. }
  182.  
  183. .topic-body {
  184. width: 100% !important;
  185. }
  186.  
  187. article .topic-map.--op {
  188. max-width: 100%;
  189. }
  190.  
  191. @media screen and (min-width: 925px) {
  192. #main-outlet .container.posts {
  193. grid-template-columns: auto 120px;
  194. }
  195. }
  196. `);
  197.  
  198. var settings = {
  199. icon_vscode_main: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im0yOS4wMSA1LjAzLTUuNzY2LTIuNzc2YTEuNzQgMS43NCAwIDAgMC0xLjk4OS4zMzhMMi4zOCAxOS44YTEuMTY2IDEuMTY2IDAgMCAwLS4wOCAxLjY0N3EuMDM3LjA0LjA3Ny4wNzdsMS41NDEgMS40YTEuMTY1IDEuMTY1IDAgMCAwIDEuNDg5LjA2NkwyOC4xNDIgNS43NUExLjE1OCAxLjE1OCAwIDAgMSAzMCA2LjY3MnYtLjA2N2ExLjc1IDEuNzUgMCAwIDAtLjk5LTEuNTc1IiBzdHlsZT0iZmlsbDojMDA2NWE5Ii8+PHBhdGggZD0ibTI5LjAxIDI2Ljk3LTUuNzY2IDIuNzc3YTEuNzQ1IDEuNzQ1IDAgMCAxLTEuOTg5LS4zMzhMMi4zOCAxMi4yYTEuMTY2IDEuMTY2IDAgMCAxLS4wOC0xLjY0N3EuMDM3LS4wNC4wNzctLjA3N2wxLjU0MS0xLjRBMS4xNjUgMS4xNjUgMCAwIDEgNS40MSA5LjAxbDIyLjczMiAxNy4yNEExLjE1OCAxLjE1OCAwIDAgMCAzMCAyNS4zMjh2LjA3MmExLjc1IDEuNzUgMCAwIDEtLjk5IDEuNTciIHN0eWxlPSJmaWxsOiMwMDdhY2MiLz48cGF0aCBkPSJNMjMuMjQ0IDI5Ljc0N2ExLjc0NSAxLjc0NSAwIDAgMS0xLjk4OS0uMzM4QTEuMDI1IDEuMDI1IDAgMCAwIDIzIDI4LjY4NFYzLjMxNmExLjAyNCAxLjAyNCAwIDAgMC0xLjc0OS0uNzI0IDEuNzQgMS43NCAwIDAgMSAxLjk4OS0uMzM5bDUuNzY1IDIuNzcyQTEuNzUgMS43NSAwIDAgMSAzMCA2LjZ2MTguOGExLjc1IDEuNzUgMCAwIDEtLjk5MSAxLjU3NloiIHN0eWxlPSJmaWxsOiMxZjljZjAiLz48L3N2Zz4=',
  200.  
  201. icon_vscode_wide: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTEiIGhlaWdodD0iMzciIHZpZXdCb3g9IjEgLTEgMTAwIDMyIj48dGV4dCB4PSIzNiIgeT0iMjIuNSIgZm9udC1zaXplPSIxNSIgZmlsbD0iI0FBQSIgZm9udC13ZWlnaHQ9IjU1NSI+VlMgQ29kZTwvdGV4dD48cGF0aCBkPSJtMjkgNS01LjgtMi44YTEuNyAxLjcgMCAwIDAtMiAuM0wyLjQgMTkuOGExLjIgMS4yIDAgMCAwLS4xIDEuNmwuMS4xIDEuNSAxLjRhMS4yIDEuMiAwIDAgMCAxLjUuMUwyOC4xIDUuOGExLjIgMS4yIDAgMCAxIDEuOS45di0uMUExLjggMS44IDAgMCAwIDI5IDUiIHN0eWxlPSJmaWxsOiMwNmEiLz48cGF0aCBkPSJtMjkgMjctNS44IDIuOGExLjcgMS43IDAgMCAxLTItLjNMMi40IDEyLjJhMS4yIDEuMiAwIDAgMS0uMS0xLjZsLjEtLjEgMS41LTEuNEExLjIgMS4yIDAgMCAxIDUuNCA5bDIyLjcgMTcuMmExLjIgMS4yIDAgMCAwIDEuOS0uOXYuMWExLjggMS44IDAgMCAxLTEgMS42IiBzdHlsZT0iZmlsbDojMDdjIi8+PHBhdGggZD0iTTIzLjIgMjkuN2ExLjcgMS43IDAgMCAxLTItLjMgMSAxIDAgMCAwIDEuOC0uN1YzLjNhMSAxIDAgMCAwLTEuNy0uNyAxLjcgMS43IDAgMCAxIDItLjNsNS44IDIuOGExLjggMS44IDAgMCAxIC45IDEuNXYxOC44YTEuOCAxLjggMCAwIDEtMSAxLjZaIiBzdHlsZT0iZmlsbDojMTlmIi8+PC9zdmc+',
  202.  
  203. icon_excel:' data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNC40OTQiIHkxPSItMjA5Mi4wODYiIHgyPSIxMy44MzIiIHkyPSItMjA3NS45MTQiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAyMTAwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzE4NCIvPjxzdG9wIG9mZnNldD0iLjUiIHN0b3AtY29sb3I9IiMxNzQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwNjMiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBkPSJNMTkuNiAxNS4zIDguNSAxMy40djE0LjRBMS4yIDEuMiAwIDAgMCA5LjcgMjloMTkuMWExLjIgMS4yIDAgMCAwIDEuMi0xLjJ2LTUuM1oiIHN0eWxlPSJmaWxsOiMxNTMiLz48cGF0aCBkPSJNMTkuNiAzSDkuN2ExLjIgMS4yIDAgMCAwLTEuMiAxLjJ2NS4zTDE5LjYgMTZsNiAxLjlMMzAgMTZWOS41WiIgc3R5bGU9ImZpbGw6IzJhNiIvPjxwYXRoIGQ9Ik04LjUgOS41aDExVjE2aC0xMVoiIHN0eWxlPSJmaWxsOiMxNzQiLz48cGF0aCBkPSJNMTYuNCA4LjJIOC41djE2LjNoOGExLjIgMS4yIDAgMCAwIDEuMi0xLjJWOS40YTEuMiAxLjIgMCAwIDAtMS4zLTEuMiIgc3R5bGU9Im9wYWNpdHk6LjEwMDAwMDAwMTQ5MDExNjEyO2lzb2xhdGlvbjppc29sYXRlIi8+PHBhdGggZD0iTTE1LjggOC44SDguNXYxNi4zaDcuM2ExLjIgMS4yIDAgMCAwIDEuMi0xLjJWMTBhMS4yIDEuMiAwIDAgMC0xLjItMS4yIiBzdHlsZT0ib3BhY2l0eTouMjAwMDAwMDAyOTgwMjMyMjQ7aXNvbGF0aW9uOmlzb2xhdGUiLz48cGF0aCBkPSJNMTUuOCA4LjhIOC41djE1aDcuM2ExLjIgMS4yIDAgMCAwIDEuMi0xLjJWMTBhMS4yIDEuMiAwIDAgMC0xLjItMS4yIiBzdHlsZT0ib3BhY2l0eTouMjAwMDAwMDAyOTgwMjMyMjQ7aXNvbGF0aW9uOmlzb2xhdGUiLz48cGF0aCBkPSJNMTUgOC44SDguNHYxNUgxNWExLjIgMS4yIDAgMCAwIDEuMi0xLjJWMTBBMS4yIDEuMiAwIDAgMCAxNSA4LjgiIHN0eWxlPSJvcGFjaXR5Oi4yMDAwMDAwMDI5ODAyMzIyNDtpc29sYXRpb246aXNvbGF0ZSIvPjxwYXRoIGQ9Ik0zLjIgOC44aDEyYTEuMiAxLjIgMCAwIDEgMS4yIDEuMnYxMmExLjIgMS4yIDAgMCAxLTEuMiAxLjJoLTEyQTEuMiAxLjIgMCAwIDEgMiAyMlYxMGExLjIgMS4yIDAgMCAxIDEuMi0xLjIiIHN0eWxlPSJmaWxsOnVybCgjYSkiLz48cGF0aCBkPSJNNS43IDE5LjkgOC4yIDE2bC0yLjMtMy45aDEuOEw5IDE0LjZjLjEuMi4yLjQuMi41cS4xLS4zLjMtLjVsMS4zLTIuNGgxLjdMMTAuMSAxNmwyLjQgMy45aC0xLjhsLTEuNC0yLjdhMi40IDIuNCAwIDAgMS0uMS0uNCAxLjcgMS43IDAgMCAxLS4yLjRsLTEuNSAyLjdaIiBzdHlsZT0iZmlsbDojZmZmIi8+PHBhdGggZD0iTTI4LjggM2gtOS4ydjYuNUgzMFY0LjJBMS4yIDEuMiAwIDAgMCAyOC44IDMiIHN0eWxlPSJmaWxsOiMzYzgiLz48cGF0aCBkPSJNMTkuNiAxNkgzMHY2LjVIMTkuNloiIHN0eWxlPSJmaWxsOiMxNzQiLz48L3N2Zz4='
  204. };
  205.  
  206. GM_addStyle(`
  207. #site-logo {
  208. object-fit: scale-down;
  209. object-position: -999vw;
  210. background-size: cover;
  211. background-repeat: no-repeat;
  212. background-image: url('${settings.icon_vscode_main}');
  213. opacity: 1;
  214. transition: opacity 0.5s ease;
  215. }
  216. #site-logo.logo-big {
  217. background-image: url('${settings.icon_vscode_wide}');
  218. }
  219. #site-logo.logo-mobile {
  220. background-image: url('${settings.icon_vscode_wide}');
  221. }
  222. #site-logo:hover {
  223. object-position: unset;
  224. background-image: none;
  225. }
  226. `);
  227.  
  228. function replaceIcon() {
  229. document.querySelector('link[rel="icon"]').href = settings.icon_vscode_main;
  230. if(!document.title.startsWith("VSCode")){
  231. document.title = "VSCode | " + document.title;
  232. }
  233.  
  234. }
  235. const observer = new MutationObserver(replaceIcon);
  236. observer.observe(document.head, { childList: true, subtree: true });
  237. replaceIcon();
  238.  
  239. document.title = "VSCode | " + document.title;
  240.  
  241.  
  242. function getUsername() {
  243. const currentUserElement = document.querySelector('#current-user button > img[src]');
  244. if(!currentUserElement) {
  245. return null;
  246. }
  247. const srcString = currentUserElement.getAttribute('src');
  248. if(!srcString) {
  249. return null;
  250. }
  251. const regex = /\/user_avatar\/linux\.do\/([^\/]+)\/\d+\//;
  252. const match = srcString.match(regex);
  253.  
  254. if (match && match[1]) {
  255. return match[1];
  256. } else {
  257. return null;
  258. }
  259. }
  260.  
  261. function createFooter() {
  262. const footer = document.createElement('div');
  263. footer.style=`
  264. position: sticky;
  265. bottom: -2px;
  266. right: 0px;
  267. background: #333;
  268. color: #eee;
  269. padding: 4px 1.4em 2.42px;
  270. overflow: hidden;
  271. font-size: 12.5px;
  272. z-index: 350;
  273. display: flex;
  274. justify-content: space-between;
  275. align-items: center;
  276. height: 1.8em;
  277. line-height: 1;
  278. width: 100%;
  279. max-width: var(--d-max-width);
  280. border-top: solid 1px #8888;
  281. border-left: solid 2px #333;
  282. margin-top: 50%;
  283. margin-bottom: 0;
  284. margin-left: -2.4em;
  285. margin-right: 0;
  286. user-select: none;
  287. `
  288.  
  289. const leftDiv = document.createElement('div');
  290. const rightDiv = document.createElement('div');
  291.  
  292. footer.appendChild(leftDiv);
  293. footer.appendChild(rightDiv);
  294.  
  295. rightDiv.style = "text-align: right; color: #ddd; fill: #ddd; display: flex; justify-content: space-around; align-items: center; flex-direction: row; flex-wrap: nowrap; gap:1em;";
  296.  
  297. const windowWidth = window.innerWidth;
  298. const windowHeight = window.innerHeight;
  299. const encoding = document.characterSet;
  300. const lines = document.body.textContent.split('\n').length;
  301. const uname = getUsername();
  302.  
  303. rightDiv.innerHTML = `
  304. <span>Lines: ${lines}</span>
  305. <span>${windowWidth} x ${windowHeight}</span>
  306. <span>${encoding}</span>
  307. <span>CRLF</span>
  308. <span>HTML</span>
  309. <style>
  310. a.btn-with-svg[href] {
  311. color: #ddd;
  312. fill: #ddd;
  313. display: flex;
  314. justify-content: center;
  315. align-items: center;
  316. gap:0.3em;
  317. }
  318. a.btn-with-svg[href]:hover {
  319. background: #111;
  320. box-shadow: 0 0 0 3px #111;
  321. border-radius: 4px;
  322. }
  323. </style>
  324. <a class="btn-with-svg" style="padding: 0 5px;" href="/u/${uname}/summary">
  325. ${uname}
  326. </a>
  327. <a class="btn-with-svg" href="/u/${uname}/notifications">
  328. <svg width="1.2em" height="1.2em" fill='#ddd' viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M10 3.2a2 2 0 0 1 3.7 0A7 7 0 0 1 19 10v4.7l1.8 2.7A1 1 0 0 1 20 19h-4.5a3.5 3.5 0 0 1-7 0H4a1 1 0 0 1-.8-1.6L5 14.7V10c0-3.2 2.2-6 5-6.8m.6 15.8a1.5 1.5 0 0 0 2.8 0zM12 5a5 5 0 0 0-5 5v5a1 1 0 0 1-.2.6L6 17h12.1l-1-1.4a1 1 0 0 1-.1-.6v-5a5 5 0 0 0-5-5"/></svg>
  329. </a>
  330. `;
  331.  
  332. leftDiv.style = "color: #ddd; fill: #ddd; display: flex; justify-content: space-around; align-items: center; flex-direction: row; flex-wrap: nowrap; gap:0.3em; ";
  333.  
  334. leftDiv.innerHTML = `
  335. <span></span><span></span>
  336. <a class="btn-with-svg" href="/">
  337. <svg width="1.2em" height="1.2em" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><circle cx="188" cy="67.998" r="28" opacity=".2"/><path d="M224 67.998a36 36 0 1 0-44 35.092v.908a16.02 16.02 0 0 1-15.999 16L92 120a31.8 31.8 0 0 0-16 4.294V103.09a36 36 0 1 0-16 0v49.817a36 36 0 1 0 16 0V152a16.02 16.02 0 0 1 16-16l72.001-.002a32.036 32.036 0 0 0 31.999-32v-.908a36.055 36.055 0 0 0 28-35.092m-176 0a20 20 0 1 1 20 20 20.023 20.023 0 0 1-20-20M88 188a20 20 0 1 1-20-20 20.023 20.023 0 0 1 20 20M188 87.998a20 20 0 1 1 20-20 20.023 20.023 0 0 1-20 20"/></svg>
  338. <span>main</span>
  339. </a>
  340. <span></span>
  341. <a class="btn-with-svg" href="" onclick="location.reload();">
  342. <svg width="1.2em" height="1.2em" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.006 8.267.78 9.5 0 8.73l2.09-2.07.76.01 2.09 2.12-.76.76-1.167-1.18a5 5 0 0 0 9.4 1.983l.813.597a6 6 0 0 1-11.22-2.683m10.99-.466L11.76 6.55l-.76.76 2.09 2.11.76.01 2.09-2.07-.75-.76-1.194 1.18a6 6 0 0 0-11.11-2.92l.81.594a5 5 0 0 1 9.3 2.346z"/></svg>
  343. </a>
  344. <span></span><span></span>
  345. <svg width="1.2em" height="1.2em" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.6 1c1.6.1 3.1.9 4.2 2 1.3 1.4 2 3.1 2 5.1 0 1.6-.6 3.1-1.6 4.4-1 1.2-2.4 2.1-4 2.4s-3.2.1-4.6-.7-2.5-2-3.1-3.5S.8 7.5 1.3 6c.5-1.6 1.4-2.9 2.8-3.8C5.4 1.3 7 .9 8.6 1m.5 12.9c1.3-.3 2.5-1 3.4-2.1.8-1.1 1.3-2.4 1.2-3.8 0-1.6-.6-3.2-1.7-4.3-1-1-2.2-1.6-3.6-1.7-1.3-.1-2.7.2-3.8 1S2.7 4.9 2.3 6.3c-.4 1.3-.4 2.7.2 4q.9 1.95 2.7 3c1.2.7 2.6.9 3.9.6M7.9 7.5 10.3 5l.7.7-2.4 2.5 2.4 2.5-.7.7-2.4-2.5-2.4 2.5-.7-.7 2.4-2.5-2.4-2.5.7-.7z"/></svg>
  346. <span>0</span>
  347. <span></span><span></span>
  348. <svg width="1.2em" height="1.2em" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26zM8 2.28 2.28 13H13.7zM8.625 12v-1h-1.25v1zm-1.25-2V6h1.25v4z"/></svg>
  349. <span>0</span>
  350. <span></span><span></span>
  351. `;
  352.  
  353. return footer;
  354. }
  355.  
  356. function updateFooter() {
  357. if(!document.querySelector("#main-outlet")) {
  358. setTimeout(updateFooter, 1000);
  359. return;
  360. }
  361.  
  362. const footer = createFooter();
  363.  
  364. const windowWidth = window.innerWidth;
  365. const windowHeight = window.innerHeight;
  366. const encoding = document.characterSet;
  367.  
  368. const lines = document.body.textContent.split('\n').length;
  369.  
  370. document.querySelector("#main-outlet").appendChild(footer);
  371.  
  372. document.querySelector("#main-outlet-wrapper > div.sidebar-wrapper").style.zIndex=366;
  373.  
  374. document.querySelector("#main-outlet-wrapper").style.overflowX = 'clip';
  375.  
  376. }
  377. updateFooter();
  378.  
  379.  
  380. })();