Colorful Public/Private Labels for GitHub

Adds color to Public/Private labels of repositories on GitHub

  1. // ==UserScript==
  2. // @name Colorful Public/Private Labels for GitHub
  3. // @namespace https://foooomio.net/
  4. // @version 0.3
  5. // @description Adds color to Public/Private labels of repositories on GitHub
  6. // @author foooomio
  7. // @license MIT License
  8. // @match https://github.com/*
  9. // @run-at document-end
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_addStyle
  13. // @grant GM_registerMenuCommand
  14. // @require https://gf.qytechs.cn/scripts/7212-gm-config-eight-s-version/code/GM_config%20(eight's%20version).js?version=156587
  15. // ==/UserScript==
  16.  
  17. (() => {
  18. /* global GM_config */
  19. 'use strict';
  20.  
  21. function addStyle() {
  22. GM_addStyle(`
  23. .public:not(.archived) .Label {
  24. display: var(--colorful-labels-display-public-labels, none);
  25. color: var(--colorful-labels-public-text);
  26. border-color: var(--colorful-labels-public-border);
  27. }
  28. .private:not(.archived) .Label {
  29. color: var(--colorful-labels-private-text);
  30. border-color: var(--colorful-labels-private-border);
  31. }
  32. .public.archived .Label {
  33. color: var(--colorful-labels-public-archived-text);
  34. border-color: var(--colorful-labels-public-archived-border);
  35. }
  36. .private.archived .Label {
  37. color: var(--colorful-labels-private-archived-text);
  38. border-color: var(--colorful-labels-private-archived-border);
  39. }
  40. `);
  41. }
  42.  
  43. function setCSSVar() {
  44. const { display_public_labels, ...settings } = GM_config.get();
  45.  
  46. document.documentElement.style.setProperty(
  47. '--colorful-labels-display-public-labels',
  48. display_public_labels ? 'inline-block' : 'none'
  49. );
  50.  
  51. for (const [key, value] of Object.entries(settings)) {
  52. const prop = '--colorful-labels-' + key.replaceAll('_', '-');
  53. document.documentElement.style.setProperty(prop, value);
  54. }
  55. }
  56.  
  57. function setupConfig() {
  58. GM_config.init('Colorful Public/Private Labels settings', {
  59. public_text: {
  60. label: 'Text of public repository',
  61. type: 'text',
  62. default: 'var(--color-scale-green-5)',
  63. },
  64. public_border: {
  65. label: 'Border of public repository',
  66. type: 'text',
  67. default: 'var(--color-scale-green-4)',
  68. },
  69. private_text: {
  70. label: 'Text of private repository',
  71. type: 'text',
  72. default: 'var(--color-scale-yellow-5)',
  73. },
  74. private_border: {
  75. label: 'Border of private repository',
  76. type: 'text',
  77. default: 'var(--color-scale-yellow-4)',
  78. },
  79. public_archived_text: {
  80. label: 'Text of public archived repository',
  81. type: 'text',
  82. default: 'var(--color-scale-purple-5)',
  83. },
  84. public_archived_border: {
  85. label: 'Border of public archived repository',
  86. type: 'text',
  87. default: 'var(--color-scale-purple-4)',
  88. },
  89. private_archived_text: {
  90. label: 'Text of private archived repository',
  91. type: 'text',
  92. default: 'var(--color-scale-orange-5)',
  93. },
  94. private_archived_border: {
  95. label: 'Border of private archived repository',
  96. type: 'text',
  97. default: 'var(--color-scale-orange-4)',
  98. },
  99. display_public_labels: {
  100. label: 'Display the label of public repository',
  101. type: 'checkbox',
  102. default: true,
  103. },
  104. });
  105.  
  106. GM_registerMenuCommand('Settings...', GM_config.open);
  107.  
  108. GM_config.onload = () => {
  109. setCSSVar();
  110. };
  111. }
  112.  
  113. function setupRepoPage() {
  114. const header = document.getElementById('repository-container-header');
  115. if (!header) return;
  116.  
  117. const label = header.querySelector('h1 .Label');
  118. if (!label) return;
  119.  
  120. const text = label.textContent.trim();
  121. header.className += ' ' + text.toLowerCase().replace('archive', 'archived');
  122. }
  123.  
  124. document.addEventListener('pjax:end', setupRepoPage);
  125.  
  126. setupRepoPage();
  127. setupConfig();
  128. setCSSVar();
  129. addStyle();
  130. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址