monocoat 1.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1190) hide show
  1. monocoat-1.2.0/.github/workflows/ci.yml +86 -0
  2. monocoat-1.2.0/.github/workflows/release.yml +109 -0
  3. monocoat-1.2.0/.gitignore +47 -0
  4. monocoat-1.2.0/AGENTS.md +1 -0
  5. monocoat-1.2.0/CHANGELOG.md +2204 -0
  6. monocoat-1.2.0/CLAUDE.md +217 -0
  7. monocoat-1.2.0/CONTRIBUTING.md +216 -0
  8. monocoat-1.2.0/LICENSE +21 -0
  9. monocoat-1.2.0/PKG-INFO +386 -0
  10. monocoat-1.2.0/README.md +359 -0
  11. monocoat-1.2.0/TODO.md +700 -0
  12. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-close-hover-p0-2x.png +0 -0
  13. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-close-normal-p0-2x.png +0 -0
  14. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-close-normal-p1-2x.png +0 -0
  15. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-close-pressed-p0-2x.png +0 -0
  16. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-enter-hover-p0-2x.png +0 -0
  17. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-enter-normal-p0-2x.png +0 -0
  18. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-enter-normal-p1-2x.png +0 -0
  19. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-enter-pressed-p0-2x.png +0 -0
  20. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-exit-hover-p0-2x.png +0 -0
  21. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-exit-normal-p0-2x.png +0 -0
  22. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-exit-normal-p1-2x.png +0 -0
  23. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-fullscreen-exit-pressed-p0-2x.png +0 -0
  24. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-minimize-hover-p0-2x.png +0 -0
  25. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-minimize-normal-p0-2x.png +0 -0
  26. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-minimize-normal-p1-2x.png +0 -0
  27. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/DarkAqua-e24-size0-minimize-pressed-p0-2x.png +0 -0
  28. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/PROVENANCE.json +62 -0
  29. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/README.md +64 -0
  30. monocoat-1.2.0/assets/native-window-buttons/macos-15.5-dark/SHA256.json +66 -0
  31. monocoat-1.2.0/bin/monocoat +21 -0
  32. monocoat-1.2.0/conftest.py +6 -0
  33. monocoat-1.2.0/docs/HANDOFF.md +1153 -0
  34. monocoat-1.2.0/docs/THEME-DESIGNER-GUIDE.md +1731 -0
  35. monocoat-1.2.0/docs/acceptance/2026-10-05-checks.json +31 -0
  36. monocoat-1.2.0/docs/acceptance/2026-10-05-follow-through-packaging.json +165 -0
  37. monocoat-1.2.0/docs/acceptance/2026-10-05-follow-through.md +121 -0
  38. monocoat-1.2.0/docs/acceptance/2026-10-05-glass.md +104 -0
  39. monocoat-1.2.0/docs/acceptance/2026-10-05-installed-kitty-frame.json +638 -0
  40. monocoat-1.2.0/docs/acceptance/2026-10-05-installed-popups.json +369 -0
  41. monocoat-1.2.0/docs/acceptance/2026-10-05-installed-roundtrip.json +8770 -0
  42. monocoat-1.2.0/docs/acceptance/2026-10-05-kitty-verify.json +93 -0
  43. monocoat-1.2.0/docs/acceptance/2026-10-05-login-baseline.json +1645 -0
  44. monocoat-1.2.0/docs/acceptance/2026-10-05-login-result.json +1651 -0
  45. monocoat-1.2.0/docs/acceptance/2026-10-05-menu-notification.md +114 -0
  46. monocoat-1.2.0/docs/acceptance/2026-10-05-notification-candidate.json +76 -0
  47. monocoat-1.2.0/docs/acceptance/2026-10-05-package.json +37 -0
  48. monocoat-1.2.0/docs/acceptance/2026-10-05-popup-baseline.json +167 -0
  49. monocoat-1.2.0/docs/acceptance/2026-10-05-popup-candidate.json +162 -0
  50. monocoat-1.2.0/docs/acceptance/2026-10-05-task-notification-baseline.json +157 -0
  51. monocoat-1.2.0/docs/acceptance/2026-10-07-cathode-amber-bindings.toml +236 -0
  52. monocoat-1.2.0/docs/acceptance/2026-10-15-cathode-raster-bindings.toml +47 -0
  53. monocoat-1.2.0/docs/acceptance/2026-10-15-raster-recolour.md +161 -0
  54. monocoat-1.2.0/docs/acceptance/2026-10-18-desktop-return.md +164 -0
  55. monocoat-1.2.0/docs/acceptance/2026-10-19-mydockfinder-continuation.md +69 -0
  56. monocoat-1.2.0/docs/acceptance/2026-10-19-mydockfinder-dock-parity.md +242 -0
  57. monocoat-1.2.0/docs/acceptance/2026-10-20-dock-reveal-glass.md +75 -0
  58. monocoat-1.2.0/docs/acceptance/2026-10-20-menu-broker-hardening.md +80 -0
  59. monocoat-1.2.0/docs/acceptance/2026-10-20-qt-startup-recovery.md +54 -0
  60. monocoat-1.2.0/docs/acceptance/2026-10-20-runtime-glitches.md +66 -0
  61. monocoat-1.2.0/docs/acceptance/2026-10-20-xfdesktop-relaunch.md +88 -0
  62. monocoat-1.2.0/docs/acceptance/2026-10-21-dock-animation-timing.md +44 -0
  63. monocoat-1.2.0/docs/acceptance/2026-10-21-dock-audit-hardening.md +164 -0
  64. monocoat-1.2.0/docs/acceptance/2026-10-21-dock-palette-icons.md +70 -0
  65. monocoat-1.2.0/docs/acceptance/2026-10-21-folder-refresh-continuity.md +73 -0
  66. monocoat-1.2.0/docs/acceptance/2026-10-21-preview-glass-material.md +28 -0
  67. monocoat-1.2.0/docs/acceptance/2026-10-21-preview-title-consolidation.md +94 -0
  68. monocoat-1.2.0/docs/acceptance/2026-10-21-settings-app.md +73 -0
  69. monocoat-1.2.0/docs/acceptance/2026-10-21-settings-apps-page.md +72 -0
  70. monocoat-1.2.0/docs/acceptance/2026-10-23-animation-flash-audit.md +94 -0
  71. monocoat-1.2.0/docs/acceptance/2026-10-24-dock-reliability-and-per-item-views.md +133 -0
  72. monocoat-1.2.0/docs/acceptance/2026-10-24-dock-row-motion.md +78 -0
  73. monocoat-1.2.0/docs/acceptance/2026-10-24-mydockfinder-folder-sorting.md +107 -0
  74. monocoat-1.2.0/docs/acceptance/2026-10-25-dock-smoothness.json +1244 -0
  75. monocoat-1.2.0/docs/acceptance/2026-10-25-dock-smoothness.md +278 -0
  76. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-baseline.json +1121 -0
  77. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-baseline.md +52 -0
  78. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-flashes.png +0 -0
  79. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-publication.json +4289 -0
  80. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-publication.md +49 -0
  81. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-speed.md +62 -0
  82. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-timeline.json +2572 -0
  83. monocoat-1.2.0/docs/acceptance/2026-10-28-follow-timeline.md +128 -0
  84. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-after-fonts.png +0 -0
  85. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-after-widgets.png +0 -0
  86. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-before-fonts.png +0 -0
  87. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-before-widgets.png +0 -0
  88. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-settings-comparison.png +0 -0
  89. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-settings-difference.png +0 -0
  90. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-widgets-comparison.png +0 -0
  91. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/adaptive-widgets-difference.png +0 -0
  92. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/integrated-timings.json +2172 -0
  93. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/live-apps.json +1836 -0
  94. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/live-gtk3-after.png +0 -0
  95. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/live-gtk3-before.png +0 -0
  96. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/live-thunar-after.png +0 -0
  97. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/live-thunar-before.png +0 -0
  98. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-after-fonts.png +0 -0
  99. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-after-widgets.png +0 -0
  100. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-before-fonts.png +0 -0
  101. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-before-widgets.png +0 -0
  102. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-settings-comparison.png +0 -0
  103. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-settings-difference.png +0 -0
  104. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-widgets-comparison.png +0 -0
  105. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/mc-switch-widgets-difference.png +0 -0
  106. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-review/review.json +38 -0
  107. monocoat-1.2.0/docs/acceptance/2026-10-28-gtk3-theme-review.md +78 -0
  108. monocoat-1.2.0/docs/acceptance/2026-10-29-dock-hide.json +67 -0
  109. monocoat-1.2.0/docs/acceptance/2026-10-29-dock-hide.md +102 -0
  110. monocoat-1.2.0/docs/acceptance/2026-10-29-dock-shape-order.json +138 -0
  111. monocoat-1.2.0/docs/acceptance/2026-10-29-dock-shape-order.md +60 -0
  112. monocoat-1.2.0/docs/acceptance/2026-10-29-follow-cpu.json +4731 -0
  113. monocoat-1.2.0/docs/acceptance/2026-10-29-follow-cpu.md +85 -0
  114. monocoat-1.2.0/docs/acceptance/2026-10-29-settings-watchers.json +242 -0
  115. monocoat-1.2.0/docs/acceptance/2026-10-29-settings-watchers.md +89 -0
  116. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/amber-dot.png +0 -0
  117. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/busy-city.png +0 -0
  118. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/cathode-anchor.png +0 -0
  119. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/dark-photo.png +0 -0
  120. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/forest.png +0 -0
  121. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/mint.png +0 -0
  122. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/mostly-grey.png +0 -0
  123. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/neon.png +0 -0
  124. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/pastel.png +0 -0
  125. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/rose.png +0 -0
  126. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sea-blue.png +0 -0
  127. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sea-crop90.png +0 -0
  128. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sea-rot.png +0 -0
  129. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/subject-on-plain.png +0 -0
  130. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sunset-crop90.png +0 -0
  131. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sunset-rot.png +0 -0
  132. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/sunset.png +0 -0
  133. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/teal-warm-split.png +0 -0
  134. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/two-colour-flat.png +0 -0
  135. monocoat-1.2.0/docs/acceptance/d1-adaptive-corpus/violet.png +0 -0
  136. monocoat-1.2.0/docs/acceptance/glass-shader.md +50 -0
  137. monocoat-1.2.0/docs/acceptance/liquid-glass.md +229 -0
  138. monocoat-1.2.0/docs/acceptance/preset-switch-known.toml +10 -0
  139. monocoat-1.2.0/docs/acceptance/preset-switch.md +188 -0
  140. monocoat-1.2.0/docs/adaptive-palette.md +439 -0
  141. monocoat-1.2.0/docs/backups.md +129 -0
  142. monocoat-1.2.0/docs/bindings-manifest.md +276 -0
  143. monocoat-1.2.0/docs/cursor-refresh.md +55 -0
  144. monocoat-1.2.0/docs/internals/adaptive-watcher.md +18 -0
  145. monocoat-1.2.0/docs/internals/apply-and-doctor.md +26 -0
  146. monocoat-1.2.0/docs/internals/cli.md +82 -0
  147. monocoat-1.2.0/docs/internals/daemon-reload.md +28 -0
  148. monocoat-1.2.0/docs/internals/effects.md +25 -0
  149. monocoat-1.2.0/docs/internals/files-and-bundles.md +20 -0
  150. monocoat-1.2.0/docs/internals/settings-window.md +32 -0
  151. monocoat-1.2.0/docs/lockscreen.md +247 -0
  152. monocoat-1.2.0/docs/monocoat-daynight.service +30 -0
  153. monocoat-1.2.0/docs/monocoat-daynight.timer +43 -0
  154. monocoat-1.2.0/docs/monocoat-dock.desktop +7 -0
  155. monocoat-1.2.0/docs/monocoat-dock.service +53 -0
  156. monocoat-1.2.0/docs/monocoat-lock.service +13 -0
  157. monocoat-1.2.0/docs/monocoat-watch.desktop +7 -0
  158. monocoat-1.2.0/docs/monocoat-watch.service +26 -0
  159. monocoat-1.2.0/docs/org.monocoat.Settings.desktop +12 -0
  160. monocoat-1.2.0/docs/performance-reliability-audit.md +296 -0
  161. monocoat-1.2.0/docs/plans/2026-05-30-dpi-adaptive-font-strikes.md +410 -0
  162. monocoat-1.2.0/docs/plans/2026-10-15-glass-frames-chrome.md +726 -0
  163. monocoat-1.2.0/docs/prompts/2026-10-28-graceful-follow-2.md +254 -0
  164. monocoat-1.2.0/docs/prompts/2026-10-28-graceful-follow.md +402 -0
  165. monocoat-1.2.0/docs/rollout/c2-dotfiles.patch +94 -0
  166. monocoat-1.2.0/docs/rollout/c2.md +120 -0
  167. monocoat-1.2.0/docs/rollout/cursor.md +74 -0
  168. monocoat-1.2.0/docs/rollout/d2.md +147 -0
  169. monocoat-1.2.0/docs/rollout/glass2-dotfiles.patch +271 -0
  170. monocoat-1.2.0/docs/rollout/glass2.md +275 -0
  171. monocoat-1.2.0/docs/rollout/gtkcss-dotfiles.patch +396 -0
  172. monocoat-1.2.0/docs/rollout/gtkcss.md +150 -0
  173. monocoat-1.2.0/docs/rollout/palette-hooks-dotfiles.patch +151 -0
  174. monocoat-1.2.0/docs/rollout/palette-hooks.md +96 -0
  175. monocoat-1.2.0/docs/rollout/polybar-glass-dotfiles.patch +13 -0
  176. monocoat-1.2.0/docs/schema.md +947 -0
  177. monocoat-1.2.0/docs/specs/2026-05-30-dpi-adaptive-font-strikes-design.md +162 -0
  178. monocoat-1.2.0/docs/specs/2026-10-15-glass-frames-chrome.md +395 -0
  179. monocoat-1.2.0/docs/state-roles.md +147 -0
  180. monocoat-1.2.0/docs/superpowers/plans/2026-05-21-archstylix-v0.2.0.md +1869 -0
  181. monocoat-1.2.0/docs/superpowers/plans/2026-06-02-monocoat-plan-1-rename-and-portability.md +1957 -0
  182. monocoat-1.2.0/docs/superpowers/plans/2026-06-02-monocoat-plan-2-session-and-backends.md +3003 -0
  183. monocoat-1.2.0/docs/superpowers/plans/2026-06-02-monocoat-plan-3-diff-and-cli.md +2516 -0
  184. monocoat-1.2.0/docs/superpowers/plans/2026-06-02-monocoat-plan-4-gnome-layers-distribution.md +3620 -0
  185. monocoat-1.2.0/docs/superpowers/plans/2026-06-05-server-side-decorations.md +636 -0
  186. monocoat-1.2.0/docs/superpowers/plans/2026-08-05-doctor-style-checks.md +1148 -0
  187. monocoat-1.2.0/docs/superpowers/plans/2026-08-05-drift-remediation.md +190 -0
  188. monocoat-1.2.0/docs/superpowers/plans/2026-08-05-effects-picom-layer.md +1140 -0
  189. monocoat-1.2.0/docs/superpowers/plans/2026-08-06-font-coherence.md +543 -0
  190. monocoat-1.2.0/docs/superpowers/plans/2026-08-06-showcase-tooling.md +668 -0
  191. monocoat-1.2.0/docs/superpowers/plans/2026-10-07-asset-binding-manifest.md +227 -0
  192. monocoat-1.2.0/docs/superpowers/plans/2026-10-08-adaptive-wallpaper-palette.md +1122 -0
  193. monocoat-1.2.0/docs/superpowers/plans/2026-10-08-per-preset-asset-bundles.md +1939 -0
  194. monocoat-1.2.0/docs/superpowers/plans/2026-10-15-adaptive-d1-generator-aesthetics.md +2238 -0
  195. monocoat-1.2.0/docs/superpowers/plans/2026-10-15-adaptive-d2-automatic-mode.md +3992 -0
  196. monocoat-1.2.0/docs/superpowers/plans/2026-10-15-panel-follows-bundle.md +391 -0
  197. monocoat-1.2.0/docs/superpowers/plans/2026-10-15-raster-recolour.md +3186 -0
  198. monocoat-1.2.0/docs/superpowers/plans/2026-10-15-user-gtk-css-ownership.md +1616 -0
  199. monocoat-1.2.0/docs/superpowers/plans/2026-10-19-dock-parity.md +71 -0
  200. monocoat-1.2.0/docs/superpowers/plans/2026-10-21-settings-app.md +926 -0
  201. monocoat-1.2.0/docs/superpowers/plans/2026-10-21-settings-apps-page.md +1107 -0
  202. monocoat-1.2.0/docs/superpowers/plans/2026-10-22-settings-more-pages.md +107 -0
  203. monocoat-1.2.0/docs/superpowers/specs/2026-05-21-presets-and-tui-design.md +279 -0
  204. monocoat-1.2.0/docs/superpowers/specs/2026-06-02-monocoat-v1-design.md +814 -0
  205. monocoat-1.2.0/docs/superpowers/specs/2026-06-05-server-side-decorations-design.md +143 -0
  206. monocoat-1.2.0/docs/superpowers/specs/2026-08-05-doctor-style-checks-design.md +199 -0
  207. monocoat-1.2.0/docs/superpowers/specs/2026-08-05-drift-remediation-design.md +117 -0
  208. monocoat-1.2.0/docs/superpowers/specs/2026-08-05-effects-picom-layer-design.md +167 -0
  209. monocoat-1.2.0/docs/superpowers/specs/2026-08-06-font-coherence-design.md +154 -0
  210. monocoat-1.2.0/docs/superpowers/specs/2026-08-06-showcase-tooling-design.md +161 -0
  211. monocoat-1.2.0/docs/superpowers/specs/2026-10-07-asset-binding-manifest-design.md +184 -0
  212. monocoat-1.2.0/docs/superpowers/specs/2026-10-08-adaptive-wallpaper-palette-design.md +197 -0
  213. monocoat-1.2.0/docs/superpowers/specs/2026-10-08-per-preset-asset-bundles-design.md +235 -0
  214. monocoat-1.2.0/docs/superpowers/specs/2026-10-15-automatic-adaptive-theme-design.md +501 -0
  215. monocoat-1.2.0/docs/superpowers/specs/2026-10-15-panel-follows-bundle-design.md +127 -0
  216. monocoat-1.2.0/docs/superpowers/specs/2026-10-15-raster-recolour-design.md +411 -0
  217. monocoat-1.2.0/docs/superpowers/specs/2026-10-15-user-gtk-css-ownership-design.md +347 -0
  218. monocoat-1.2.0/docs/superpowers/specs/2026-10-19-mydockfinder-dock-parity-design.md +86 -0
  219. monocoat-1.2.0/docs/superpowers/specs/2026-10-21-settings-app-design.md +328 -0
  220. monocoat-1.2.0/docs/superpowers/specs/2026-10-21-settings-apps-page-design.md +1010 -0
  221. monocoat-1.2.0/docs/superpowers/specs/2026-10-22-settings-more-pages-design.md +788 -0
  222. monocoat-1.2.0/docs/superpowers/specs/2026-10-27-adaptive-performance-design.md +119 -0
  223. monocoat-1.2.0/docs/superpowers/specs/2026-10-27-pull-updates-design.md +377 -0
  224. monocoat-1.2.0/docs/surface-map.md +388 -0
  225. monocoat-1.2.0/docs/tray-flicker-audit-20261024.md +185 -0
  226. monocoat-1.2.0/docs/update.md +156 -0
  227. monocoat-1.2.0/examples/monocoat.toml +147 -0
  228. monocoat-1.2.0/examples/theme.toml +130 -0
  229. monocoat-1.2.0/experiments/picom-backdrop/LICENSE.picom-MPL-2.0 +373 -0
  230. monocoat-1.2.0/experiments/picom-backdrop/README.md +49 -0
  231. monocoat-1.2.0/experiments/picom-backdrop/actions.json +79 -0
  232. monocoat-1.2.0/experiments/picom-backdrop/compare_damage.py +27 -0
  233. monocoat-1.2.0/experiments/picom-backdrop/egl_probe.py +179 -0
  234. monocoat-1.2.0/experiments/picom-backdrop/glass.glsl +1 -0
  235. monocoat-1.2.0/experiments/picom-backdrop/install.py +71 -0
  236. monocoat-1.2.0/experiments/picom-backdrop/passthrough.glsl +8 -0
  237. monocoat-1.2.0/experiments/picom-backdrop/picom-v13-backdrop.patch +235 -0
  238. monocoat-1.2.0/experiments/picom-backdrop/picom-v13-csd-blur.patch +223 -0
  239. monocoat-1.2.0/experiments/picom-backdrop/present.py +35 -0
  240. monocoat-1.2.0/experiments/picom-backdrop/references.json +62 -0
  241. monocoat-1.2.0/experiments/picom-backdrop/run_probe.py +164 -0
  242. monocoat-1.2.0/experiments/picom-backdrop/scene.py +171 -0
  243. monocoat-1.2.0/experiments/picom-backdrop/setup.sh +35 -0
  244. monocoat-1.2.0/experiments/picom-backdrop/verify.py +45 -0
  245. monocoat-1.2.0/experiments/picom-backdrop/verify_gpu.py +49 -0
  246. monocoat-1.2.0/native/lockscreen/interaction.h +78 -0
  247. monocoat-1.2.0/native/lockscreen/macos.h +442 -0
  248. monocoat-1.2.0/packaging/aur/monocoat/.SRCINFO +41 -0
  249. monocoat-1.2.0/packaging/aur/monocoat/PKGBUILD +105 -0
  250. monocoat-1.2.0/packaging/aur/monocoat-git/.SRCINFO +42 -0
  251. monocoat-1.2.0/packaging/aur/monocoat-git/PKGBUILD +103 -0
  252. monocoat-1.2.0/pyproject.toml +72 -0
  253. monocoat-1.2.0/scripts/accept-kitty.py +203 -0
  254. monocoat-1.2.0/scripts/accept-login.py +116 -0
  255. monocoat-1.2.0/scripts/acceptance/preset-switch +20 -0
  256. monocoat-1.2.0/scripts/benchmark-dock-cadence.py +198 -0
  257. monocoat-1.2.0/scripts/benchmark-follow-cpu.py +66 -0
  258. monocoat-1.2.0/scripts/benchmark-genie.py +308 -0
  259. monocoat-1.2.0/scripts/benchmark-recolor.py +137 -0
  260. monocoat-1.2.0/scripts/benchmark-settings-refresh.py +61 -0
  261. monocoat-1.2.0/scripts/build-lockscreen +312 -0
  262. monocoat-1.2.0/scripts/check +21 -0
  263. monocoat-1.2.0/scripts/dock_visual_parity.py +2420 -0
  264. monocoat-1.2.0/scripts/follow-timeline.py +282 -0
  265. monocoat-1.2.0/scripts/glass-popup.py +84 -0
  266. monocoat-1.2.0/scripts/install-native-window-buttons.py +122 -0
  267. monocoat-1.2.0/scripts/raster-fringe-check.sh +78 -0
  268. monocoat-1.2.0/scripts/release-smoke +625 -0
  269. monocoat-1.2.0/scripts/schema-doc.py +21 -0
  270. monocoat-1.2.0/scripts/settings-screenshots.py +414 -0
  271. monocoat-1.2.0/scripts/setup-dev +7 -0
  272. monocoat-1.2.0/scripts/soak-dock-memory.py +227 -0
  273. monocoat-1.2.0/scripts/unihan-table.py +70 -0
  274. monocoat-1.2.0/scripts/verify-lockscreen +207 -0
  275. monocoat-1.2.0/scripts/xfwm4-raster-live-check.sh +120 -0
  276. monocoat-1.2.0/src/monocoat/__init__.py +9 -0
  277. monocoat-1.2.0/src/monocoat/__main__.py +4 -0
  278. monocoat-1.2.0/src/monocoat/acceptance/__init__.py +21 -0
  279. monocoat-1.2.0/src/monocoat/acceptance/__main__.py +51 -0
  280. monocoat-1.2.0/src/monocoat/acceptance/gtk3_review.py +204 -0
  281. monocoat-1.2.0/src/monocoat/acceptance/known_failures.py +81 -0
  282. monocoat-1.2.0/src/monocoat/acceptance/palettes.py +154 -0
  283. monocoat-1.2.0/src/monocoat/acceptance/preset_switch.py +634 -0
  284. monocoat-1.2.0/src/monocoat/acceptance/report.py +86 -0
  285. monocoat-1.2.0/src/monocoat/acceptance/safety.py +121 -0
  286. monocoat-1.2.0/src/monocoat/acceptance/shots.py +156 -0
  287. monocoat-1.2.0/src/monocoat/acceptance/surfaces.py +668 -0
  288. monocoat-1.2.0/src/monocoat/acceptance/world.py +392 -0
  289. monocoat-1.2.0/src/monocoat/appchoices.py +171 -0
  290. monocoat-1.2.0/src/monocoat/appids.py +127 -0
  291. monocoat-1.2.0/src/monocoat/appscan.py +524 -0
  292. monocoat-1.2.0/src/monocoat/appsedit.py +150 -0
  293. monocoat-1.2.0/src/monocoat/backdrop.py +3400 -0
  294. monocoat-1.2.0/src/monocoat/backup.py +1250 -0
  295. monocoat-1.2.0/src/monocoat/bundleprepare.py +90 -0
  296. monocoat-1.2.0/src/monocoat/bundles.py +554 -0
  297. monocoat-1.2.0/src/monocoat/capabilities.py +253 -0
  298. monocoat-1.2.0/src/monocoat/change.py +706 -0
  299. monocoat-1.2.0/src/monocoat/cli.py +2381 -0
  300. monocoat-1.2.0/src/monocoat/commands/__init__.py +0 -0
  301. monocoat-1.2.0/src/monocoat/commands/backup.py +145 -0
  302. monocoat-1.2.0/src/monocoat/commands/daynight.py +79 -0
  303. monocoat-1.2.0/src/monocoat/commands/demo.py +159 -0
  304. monocoat-1.2.0/src/monocoat/commands/import_mydockfinder.py +392 -0
  305. monocoat-1.2.0/src/monocoat/commands/init.py +389 -0
  306. monocoat-1.2.0/src/monocoat/commands/migrate.py +569 -0
  307. monocoat-1.2.0/src/monocoat/commands/perf.py +110 -0
  308. monocoat-1.2.0/src/monocoat/commands/update.py +30 -0
  309. monocoat-1.2.0/src/monocoat/commands/wallpaper.py +380 -0
  310. monocoat-1.2.0/src/monocoat/config.py +86 -0
  311. monocoat-1.2.0/src/monocoat/corners.py +164 -0
  312. monocoat-1.2.0/src/monocoat/cursors.py +162 -0
  313. monocoat-1.2.0/src/monocoat/cursorthemes.py +175 -0
  314. monocoat-1.2.0/src/monocoat/daemons.py +1805 -0
  315. monocoat-1.2.0/src/monocoat/data/hackneyed/ATTRIBUTION +9 -0
  316. monocoat-1.2.0/src/monocoat/data/hackneyed/LICENSE +24 -0
  317. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/X_cursor.in +1 -0
  318. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/alias.in +1 -0
  319. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/all-scroll.in +1 -0
  320. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/based_arrow_down.in +1 -0
  321. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/based_arrow_up.in +1 -0
  322. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/bottom_tee.in +1 -0
  323. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/center_ptr.in +1 -0
  324. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/closedhand.in +1 -0
  325. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/coffee_mug.in +1 -0
  326. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/color-picker.in +1 -0
  327. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/context-menu.in +1 -0
  328. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/copy.in +1 -0
  329. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/crosshair.in +1 -0
  330. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/default.in +1 -0
  331. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/dnd-move.in +1 -0
  332. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/draft.in +1 -0
  333. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/draped_box.in +1 -0
  334. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/e-resize.in +1 -0
  335. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ew-resize.in +1 -0
  336. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/exchange.in +1 -0
  337. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/help.in +1 -0
  338. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/left_tee.in +1 -0
  339. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ll_angle.in +1 -0
  340. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/lr_angle.in +1 -0
  341. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/move.in +1 -0
  342. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/n-resize.in +1 -0
  343. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ne-resize.in +1 -0
  344. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/nesw-resize.in +1 -0
  345. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/no-drop.in +1 -0
  346. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/not-allowed.in +1 -0
  347. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ns-resize.in +1 -0
  348. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/nw-resize.in +1 -0
  349. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/nwse-resize.in +1 -0
  350. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/openhand.in +1 -0
  351. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/pencil.in +1 -0
  352. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/pirate.in +1 -0
  353. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/plus.in +1 -0
  354. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/pointer.in +1 -0
  355. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/progress.in +1 -0
  356. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/right_ptr.in +1 -0
  357. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/right_tee.in +1 -0
  358. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/s-resize.in +1 -0
  359. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/sb_down_arrow.in +1 -0
  360. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/sb_left_arrow.in +1 -0
  361. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/sb_right_arrow.in +1 -0
  362. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/sb_up_arrow.in +1 -0
  363. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/se-resize.in +1 -0
  364. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/split_h.in +1 -0
  365. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/split_v.in +1 -0
  366. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/sw-resize.in +1 -0
  367. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/text.in +1 -0
  368. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/top_tee.in +1 -0
  369. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ul_angle.in +1 -0
  370. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/ur_angle.in +1 -0
  371. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/vertical-text.in +1 -0
  372. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/w-resize.in +1 -0
  373. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/wait.in +1 -0
  374. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/wayland-cursor.in +1 -0
  375. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/zoom-in.in +1 -0
  376. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/zoom-out.in +1 -0
  377. monocoat-1.2.0/src/monocoat/data/hackneyed/hotspots/zoom.in +1 -0
  378. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/X_cursor.svg +224 -0
  379. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/alias.svg +263 -0
  380. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/all-scroll.svg +235 -0
  381. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/based_arrow_down.svg +226 -0
  382. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/based_arrow_up.svg +226 -0
  383. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/bottom_tee.svg +226 -0
  384. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/center_ptr.svg +230 -0
  385. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/closedhand.svg +252 -0
  386. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/coffee_mug.svg +289 -0
  387. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/color-picker.svg +261 -0
  388. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/context-menu.svg +304 -0
  389. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/copy.svg +258 -0
  390. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/crosshair.svg +225 -0
  391. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/default.svg +252 -0
  392. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/dnd-move.svg +260 -0
  393. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/draft.svg +278 -0
  394. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/draped_box.svg +241 -0
  395. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/e-resize.svg +226 -0
  396. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ew-resize.svg +226 -0
  397. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/exchange.svg +262 -0
  398. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/help.svg +292 -0
  399. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/left_tee.svg +226 -0
  400. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ll_angle.svg +226 -0
  401. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/lr_angle.svg +226 -0
  402. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/move.svg +224 -0
  403. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/n-resize.svg +226 -0
  404. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ne-resize.svg +206 -0
  405. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/nesw-resize.svg +333 -0
  406. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/no-drop.svg +258 -0
  407. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/not-allowed.svg +230 -0
  408. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ns-resize.svg +226 -0
  409. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/nw-resize.svg +208 -0
  410. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/nwse-resize.svg +226 -0
  411. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/openhand.svg +252 -0
  412. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/pencil.svg +256 -0
  413. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/pirate.svg +252 -0
  414. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/plus.svg +223 -0
  415. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/pointer.svg +252 -0
  416. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-1.svg +282 -0
  417. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-10.svg +327 -0
  418. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-11.svg +327 -0
  419. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-12.svg +327 -0
  420. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-13.svg +327 -0
  421. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-14.svg +327 -0
  422. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-15.svg +332 -0
  423. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-16.svg +327 -0
  424. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-2.svg +283 -0
  425. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-3.svg +283 -0
  426. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-4.svg +283 -0
  427. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-5.svg +280 -0
  428. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-6.svg +281 -0
  429. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-7.svg +327 -0
  430. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-8.svg +327 -0
  431. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/progress-9.svg +327 -0
  432. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/right_ptr.svg +256 -0
  433. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/right_tee.svg +226 -0
  434. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/s-resize.svg +226 -0
  435. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/sb_down_arrow.svg +237 -0
  436. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/sb_left_arrow.svg +237 -0
  437. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/sb_right_arrow.svg +237 -0
  438. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/sb_up_arrow.svg +196 -0
  439. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/se-resize.svg +206 -0
  440. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/split_h.svg +237 -0
  441. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/split_v.svg +230 -0
  442. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/sw-resize.svg +207 -0
  443. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/text.svg +231 -0
  444. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/top_tee.svg +226 -0
  445. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ul_angle.svg +226 -0
  446. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/ur_angle.svg +226 -0
  447. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/vertical-text.svg +229 -0
  448. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/w-resize.svg +226 -0
  449. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-1.svg +289 -0
  450. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-10.svg +288 -0
  451. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-11.svg +288 -0
  452. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-12.svg +288 -0
  453. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-13.svg +288 -0
  454. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-14.svg +288 -0
  455. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-15.svg +288 -0
  456. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-16.svg +368 -0
  457. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-2.svg +288 -0
  458. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-3.svg +288 -0
  459. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-4.svg +288 -0
  460. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-5.svg +287 -0
  461. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-6.svg +288 -0
  462. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-7.svg +288 -0
  463. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-8.svg +288 -0
  464. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wait-9.svg +288 -0
  465. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/wayland-cursor.svg +244 -0
  466. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/zoom-in.svg +272 -0
  467. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/zoom-out.svg +273 -0
  468. monocoat-1.2.0/src/monocoat/data/hackneyed/svg/zoom.svg +267 -0
  469. monocoat-1.2.0/src/monocoat/data/hackneyed/symlinks +46 -0
  470. monocoat-1.2.0/src/monocoat/data/monocoat-bar-ink.glsl +47 -0
  471. monocoat-1.2.0/src/monocoat/data/monocoat-glass.glsl +106 -0
  472. monocoat-1.2.0/src/monocoat/data/monocoat-liquid-glass.glsl +110 -0
  473. monocoat-1.2.0/src/monocoat/data/monocoat-seamless.glsl +268 -0
  474. monocoat-1.2.0/src/monocoat/data/unihan/LICENSE +39 -0
  475. monocoat-1.2.0/src/monocoat/data/unihan/han-readings.txt +714 -0
  476. monocoat-1.2.0/src/monocoat/daynight.py +115 -0
  477. monocoat-1.2.0/src/monocoat/diff.py +271 -0
  478. monocoat-1.2.0/src/monocoat/dockapps.py +542 -0
  479. monocoat-1.2.0/src/monocoat/dockcatalog.py +137 -0
  480. monocoat-1.2.0/src/monocoat/dockclasses.py +35 -0
  481. monocoat-1.2.0/src/monocoat/dockconfig.py +1261 -0
  482. monocoat-1.2.0/src/monocoat/dockd.py +473 -0
  483. monocoat-1.2.0/src/monocoat/dockdraw.py +661 -0
  484. monocoat-1.2.0/src/monocoat/dockfolder.py +640 -0
  485. monocoat-1.2.0/src/monocoat/dockfoldergtk.py +1363 -0
  486. monocoat-1.2.0/src/monocoat/dockgtk.py +5746 -0
  487. monocoat-1.2.0/src/monocoat/dockhotcorners.py +811 -0
  488. monocoat-1.2.0/src/monocoat/dockipc.py +114 -0
  489. monocoat-1.2.0/src/monocoat/dockitems.py +550 -0
  490. monocoat-1.2.0/src/monocoat/dockitemsgtk.py +58 -0
  491. monocoat-1.2.0/src/monocoat/docklauncher.py +204 -0
  492. monocoat-1.2.0/src/monocoat/docklaunchhelper.py +43 -0
  493. monocoat-1.2.0/src/monocoat/docklaunchpadgtk.py +1520 -0
  494. monocoat-1.2.0/src/monocoat/docklock.py +108 -0
  495. monocoat-1.2.0/src/monocoat/dockmedia.py +746 -0
  496. monocoat-1.2.0/src/monocoat/dockmediaart.py +442 -0
  497. monocoat-1.2.0/src/monocoat/dockmediagtk.py +369 -0
  498. monocoat-1.2.0/src/monocoat/dockminimizegtk.py +1496 -0
  499. monocoat-1.2.0/src/monocoat/dockminimizex11.py +185 -0
  500. monocoat-1.2.0/src/monocoat/dockmsgtips.py +589 -0
  501. monocoat-1.2.0/src/monocoat/dockpinfile.py +285 -0
  502. monocoat-1.2.0/src/monocoat/dockpins.py +980 -0
  503. monocoat-1.2.0/src/monocoat/dockpreview.py +129 -0
  504. monocoat-1.2.0/src/monocoat/dockpreviewgtk.py +2035 -0
  505. monocoat-1.2.0/src/monocoat/dockpreviewlock.py +188 -0
  506. monocoat-1.2.0/src/monocoat/dockpreviewx11.py +372 -0
  507. monocoat-1.2.0/src/monocoat/dockscroll.py +125 -0
  508. monocoat-1.2.0/src/monocoat/docktrack.py +429 -0
  509. monocoat-1.2.0/src/monocoat/dockx11.py +842 -0
  510. monocoat-1.2.0/src/monocoat/dockxwatch.py +79 -0
  511. monocoat-1.2.0/src/monocoat/doctor.py +1986 -0
  512. monocoat-1.2.0/src/monocoat/editor.py +47 -0
  513. monocoat-1.2.0/src/monocoat/edittarget.py +151 -0
  514. monocoat-1.2.0/src/monocoat/exit_codes.py +17 -0
  515. monocoat-1.2.0/src/monocoat/fileio.py +46 -0
  516. monocoat-1.2.0/src/monocoat/firefox.py +637 -0
  517. monocoat-1.2.0/src/monocoat/follow.py +127 -0
  518. monocoat-1.2.0/src/monocoat/frame.py +159 -0
  519. monocoat-1.2.0/src/monocoat/fsbirth.py +53 -0
  520. monocoat-1.2.0/src/monocoat/glass.py +586 -0
  521. monocoat-1.2.0/src/monocoat/gtk3theme.py +125 -0
  522. monocoat-1.2.0/src/monocoat/gui/__init__.py +45 -0
  523. monocoat-1.2.0/src/monocoat/gui/app.py +56 -0
  524. monocoat-1.2.0/src/monocoat/gui/apps.py +440 -0
  525. monocoat-1.2.0/src/monocoat/gui/captions.py +227 -0
  526. monocoat-1.2.0/src/monocoat/gui/colorpicker.py +203 -0
  527. monocoat-1.2.0/src/monocoat/gui/controls.py +394 -0
  528. monocoat-1.2.0/src/monocoat/gui/engine.py +435 -0
  529. monocoat-1.2.0/src/monocoat/gui/firstrun.py +169 -0
  530. monocoat-1.2.0/src/monocoat/gui/fontpicker.py +130 -0
  531. monocoat-1.2.0/src/monocoat/gui/history.py +214 -0
  532. monocoat-1.2.0/src/monocoat/gui/looks.py +411 -0
  533. monocoat-1.2.0/src/monocoat/gui/m_backups.py +452 -0
  534. monocoat-1.2.0/src/monocoat/gui/m_colourmatch.py +215 -0
  535. monocoat-1.2.0/src/monocoat/gui/m_dock.py +916 -0
  536. monocoat-1.2.0/src/monocoat/gui/m_firstrun.py +237 -0
  537. monocoat-1.2.0/src/monocoat/gui/m_glass.py +630 -0
  538. monocoat-1.2.0/src/monocoat/gui/m_health.py +655 -0
  539. monocoat-1.2.0/src/monocoat/gui/m_notify.py +242 -0
  540. monocoat-1.2.0/src/monocoat/gui/m_pointer.py +299 -0
  541. monocoat-1.2.0/src/monocoat/gui/m_update.py +60 -0
  542. monocoat-1.2.0/src/monocoat/gui/m_wallpaper.py +517 -0
  543. monocoat-1.2.0/src/monocoat/gui/m_winstate.py +74 -0
  544. monocoat-1.2.0/src/monocoat/gui/minidesktop.py +188 -0
  545. monocoat-1.2.0/src/monocoat/gui/model.py +589 -0
  546. monocoat-1.2.0/src/monocoat/gui/page_apps.py +568 -0
  547. monocoat-1.2.0/src/monocoat/gui/page_backups.py +407 -0
  548. monocoat-1.2.0/src/monocoat/gui/page_colours.py +666 -0
  549. monocoat-1.2.0/src/monocoat/gui/page_dock.py +950 -0
  550. monocoat-1.2.0/src/monocoat/gui/page_fonts.py +259 -0
  551. monocoat-1.2.0/src/monocoat/gui/page_glass.py +371 -0
  552. monocoat-1.2.0/src/monocoat/gui/page_health.py +580 -0
  553. monocoat-1.2.0/src/monocoat/gui/page_notify.py +322 -0
  554. monocoat-1.2.0/src/monocoat/gui/page_pointer.py +584 -0
  555. monocoat-1.2.0/src/monocoat/gui/page_presets.py +762 -0
  556. monocoat-1.2.0/src/monocoat/gui/page_wallpaper.py +491 -0
  557. monocoat-1.2.0/src/monocoat/gui/pages.py +222 -0
  558. monocoat-1.2.0/src/monocoat/gui/scheduler.py +205 -0
  559. monocoat-1.2.0/src/monocoat/gui/widgets.py +914 -0
  560. monocoat-1.2.0/src/monocoat/gui/window.py +1722 -0
  561. monocoat-1.2.0/src/monocoat/iconthemes.py +296 -0
  562. monocoat-1.2.0/src/monocoat/immersive.py +570 -0
  563. monocoat-1.2.0/src/monocoat/inherit.py +93 -0
  564. monocoat-1.2.0/src/monocoat/kittyconf.py +151 -0
  565. monocoat-1.2.0/src/monocoat/lastwrites.py +254 -0
  566. monocoat-1.2.0/src/monocoat/launcherindex.py +366 -0
  567. monocoat-1.2.0/src/monocoat/layers/__init__.py +72 -0
  568. monocoat-1.2.0/src/monocoat/layers/bundle.py +161 -0
  569. monocoat-1.2.0/src/monocoat/layers/cursor.py +233 -0
  570. monocoat-1.2.0/src/monocoat/layers/deep_recolor.py +1672 -0
  571. monocoat-1.2.0/src/monocoat/layers/dock.py +106 -0
  572. monocoat-1.2.0/src/monocoat/layers/dockd.py +69 -0
  573. monocoat-1.2.0/src/monocoat/layers/effects.py +1598 -0
  574. monocoat-1.2.0/src/monocoat/layers/fonts.py +629 -0
  575. monocoat-1.2.0/src/monocoat/layers/gtk.py +230 -0
  576. monocoat-1.2.0/src/monocoat/layers/launcher.py +241 -0
  577. monocoat-1.2.0/src/monocoat/layers/libadwaita.py +148 -0
  578. monocoat-1.2.0/src/monocoat/layers/notifications.py +88 -0
  579. monocoat-1.2.0/src/monocoat/layers/palette.py +1206 -0
  580. monocoat-1.2.0/src/monocoat/layers/panel.py +88 -0
  581. monocoat-1.2.0/src/monocoat/layers/portal.py +272 -0
  582. monocoat-1.2.0/src/monocoat/layers/qt.py +343 -0
  583. monocoat-1.2.0/src/monocoat/layers/remote.py +169 -0
  584. monocoat-1.2.0/src/monocoat/layers/settings_broadcast.py +103 -0
  585. monocoat-1.2.0/src/monocoat/layers/wallpaper.py +438 -0
  586. monocoat-1.2.0/src/monocoat/layers/window_manager.py +78 -0
  587. monocoat-1.2.0/src/monocoat/liquidglass.py +578 -0
  588. monocoat-1.2.0/src/monocoat/locks.py +230 -0
  589. monocoat-1.2.0/src/monocoat/lockscreen.py +500 -0
  590. monocoat-1.2.0/src/monocoat/lookgc.py +198 -0
  591. monocoat-1.2.0/src/monocoat/manifest.py +568 -0
  592. monocoat-1.2.0/src/monocoat/notifydnd.py +47 -0
  593. monocoat-1.2.0/src/monocoat/out.py +125 -0
  594. monocoat-1.2.0/src/monocoat/paths.py +228 -0
  595. monocoat-1.2.0/src/monocoat/perfeffects.py +112 -0
  596. monocoat-1.2.0/src/monocoat/perfprobe.py +304 -0
  597. monocoat-1.2.0/src/monocoat/perftier.py +247 -0
  598. monocoat-1.2.0/src/monocoat/picom.py +1424 -0
  599. monocoat-1.2.0/src/monocoat/plank.py +125 -0
  600. monocoat-1.2.0/src/monocoat/polybarlive.py +110 -0
  601. monocoat-1.2.0/src/monocoat/presetedit.py +423 -0
  602. monocoat-1.2.0/src/monocoat/presets.py +260 -0
  603. monocoat-1.2.0/src/monocoat/procs.py +190 -0
  604. monocoat-1.2.0/src/monocoat/registry.py +313 -0
  605. monocoat-1.2.0/src/monocoat/reloaddebt.py +106 -0
  606. monocoat-1.2.0/src/monocoat/remote_display.py +100 -0
  607. monocoat-1.2.0/src/monocoat/remotesession.py +281 -0
  608. monocoat-1.2.0/src/monocoat/rendercache.py +133 -0
  609. monocoat-1.2.0/src/monocoat/schema.py +1878 -0
  610. monocoat-1.2.0/src/monocoat/schema_doc.py +817 -0
  611. monocoat-1.2.0/src/monocoat/scheme.py +197 -0
  612. monocoat-1.2.0/src/monocoat/scssgen.py +138 -0
  613. monocoat-1.2.0/src/monocoat/seamless.py +146 -0
  614. monocoat-1.2.0/src/monocoat/selfcli.py +29 -0
  615. monocoat-1.2.0/src/monocoat/session/__init__.py +340 -0
  616. monocoat-1.2.0/src/monocoat/session/backends/__init__.py +3 -0
  617. monocoat-1.2.0/src/monocoat/session/backends/keys.py +41 -0
  618. monocoat-1.2.0/src/monocoat/session/backends/notify_dunst.py +126 -0
  619. monocoat-1.2.0/src/monocoat/session/backends/notify_fdo.py +76 -0
  620. monocoat-1.2.0/src/monocoat/session/backends/notify_gnome.py +24 -0
  621. monocoat-1.2.0/src/monocoat/session/backends/notify_mako.py +88 -0
  622. monocoat-1.2.0/src/monocoat/session/backends/notify_none.py +29 -0
  623. monocoat-1.2.0/src/monocoat/session/backends/notify_plasma.py +63 -0
  624. monocoat-1.2.0/src/monocoat/session/backends/notify_xfce.py +38 -0
  625. monocoat-1.2.0/src/monocoat/session/backends/protocols.py +43 -0
  626. monocoat-1.2.0/src/monocoat/session/backends/settings_gsettings.py +39 -0
  627. monocoat-1.2.0/src/monocoat/session/backends/settings_kdeglobals.py +399 -0
  628. monocoat-1.2.0/src/monocoat/session/backends/settings_xfconf.py +92 -0
  629. monocoat-1.2.0/src/monocoat/session/backends/settings_xsettingsd.py +158 -0
  630. monocoat-1.2.0/src/monocoat/session/backends/wm_kwin.py +105 -0
  631. monocoat-1.2.0/src/monocoat/session/backends/wm_none.py +24 -0
  632. monocoat-1.2.0/src/monocoat/session/backends/wm_xfwm4.py +50 -0
  633. monocoat-1.2.0/src/monocoat/session/detect.py +445 -0
  634. monocoat-1.2.0/src/monocoat/strikes.py +139 -0
  635. monocoat-1.2.0/src/monocoat/style.py +884 -0
  636. monocoat-1.2.0/src/monocoat/surfaces/__init__.py +6 -0
  637. monocoat-1.2.0/src/monocoat/surfaces/adaptive.py +648 -0
  638. monocoat-1.2.0/src/monocoat/surfaces/appcolors.py +200 -0
  639. monocoat-1.2.0/src/monocoat/surfaces/appkind.py +281 -0
  640. monocoat-1.2.0/src/monocoat/surfaces/backuparchive.py +163 -0
  641. monocoat-1.2.0/src/monocoat/surfaces/bindings.py +125 -0
  642. monocoat-1.2.0/src/monocoat/surfaces/buttonlayout.py +60 -0
  643. monocoat-1.2.0/src/monocoat/surfaces/cssgen.py +75 -0
  644. monocoat-1.2.0/src/monocoat/surfaces/csspin.py +245 -0
  645. monocoat-1.2.0/src/monocoat/surfaces/cursorgen.py +178 -0
  646. monocoat-1.2.0/src/monocoat/surfaces/desktopfile.py +157 -0
  647. monocoat-1.2.0/src/monocoat/surfaces/dockbadge.py +178 -0
  648. monocoat-1.2.0/src/monocoat/surfaces/dockedge.py +192 -0
  649. monocoat-1.2.0/src/monocoat/surfaces/dockmath.py +842 -0
  650. monocoat-1.2.0/src/monocoat/surfaces/dockminimize.py +605 -0
  651. monocoat-1.2.0/src/monocoat/surfaces/dockmsg.py +331 -0
  652. monocoat-1.2.0/src/monocoat/surfaces/dockpin.py +84 -0
  653. monocoat-1.2.0/src/monocoat/surfaces/dockpreview.py +158 -0
  654. monocoat-1.2.0/src/monocoat/surfaces/dockvisibility.py +113 -0
  655. monocoat-1.2.0/src/monocoat/surfaces/dockwin.py +378 -0
  656. monocoat-1.2.0/src/monocoat/surfaces/firefoxprefs.py +69 -0
  657. monocoat-1.2.0/src/monocoat/surfaces/framegovernor.py +133 -0
  658. monocoat-1.2.0/src/monocoat/surfaces/geometry.py +524 -0
  659. monocoat-1.2.0/src/monocoat/surfaces/glassshape.py +60 -0
  660. monocoat-1.2.0/src/monocoat/surfaces/hotcorners.py +252 -0
  661. monocoat-1.2.0/src/monocoat/surfaces/inibind.py +70 -0
  662. monocoat-1.2.0/src/monocoat/surfaces/kvantumgeom.py +366 -0
  663. monocoat-1.2.0/src/monocoat/surfaces/launchpad.py +611 -0
  664. monocoat-1.2.0/src/monocoat/surfaces/mydockfinder.py +1584 -0
  665. monocoat-1.2.0/src/monocoat/surfaces/palettemath.py +284 -0
  666. monocoat-1.2.0/src/monocoat/surfaces/perfbudget.py +196 -0
  667. monocoat-1.2.0/src/monocoat/surfaces/pngcodec.py +186 -0
  668. monocoat-1.2.0/src/monocoat/surfaces/polybarini.py +75 -0
  669. monocoat-1.2.0/src/monocoat/surfaces/randr.py +167 -0
  670. monocoat-1.2.0/src/monocoat/surfaces/remap.py +62 -0
  671. monocoat-1.2.0/src/monocoat/surfaces/rofigrid.py +171 -0
  672. monocoat-1.2.0/src/monocoat/surfaces/terminals.py +126 -0
  673. monocoat-1.2.0/src/monocoat/surfaces/tomlarray.py +721 -0
  674. monocoat-1.2.0/src/monocoat/surfaces/translit.py +158 -0
  675. monocoat-1.2.0/src/monocoat/surfaces/usercss.py +268 -0
  676. monocoat-1.2.0/src/monocoat/surfaces/xcursor.py +191 -0
  677. monocoat-1.2.0/src/monocoat/tilemark.py +750 -0
  678. monocoat-1.2.0/src/monocoat/tomlout.py +53 -0
  679. monocoat-1.2.0/src/monocoat/trayprobe.py +162 -0
  680. monocoat-1.2.0/src/monocoat/updater.py +815 -0
  681. monocoat-1.2.0/src/monocoat/verify.py +421 -0
  682. monocoat-1.2.0/src/monocoat/wallpaper_palette.py +259 -0
  683. monocoat-1.2.0/src/monocoat/wallpaper_pipeline.py +940 -0
  684. monocoat-1.2.0/src/monocoat/watcher.py +1412 -0
  685. monocoat-1.2.0/src/monocoat/x11probe.py +596 -0
  686. monocoat-1.2.0/src/monocoat/xroot.py +112 -0
  687. monocoat-1.2.0/tests/_adaptive_metrics.py +84 -0
  688. monocoat-1.2.0/tests/_apps_engine_world.py +188 -0
  689. monocoat-1.2.0/tests/_apps_world.py +233 -0
  690. monocoat-1.2.0/tests/_cli_sandbox.py +105 -0
  691. monocoat-1.2.0/tests/_dock_delay/sitecustomize.py +41 -0
  692. monocoat-1.2.0/tests/_dock_refresh/sitecustomize.py +15 -0
  693. monocoat-1.2.0/tests/_elf.py +40 -0
  694. monocoat-1.2.0/tests/_health_world.py +135 -0
  695. monocoat-1.2.0/tests/_label_world.py +317 -0
  696. monocoat-1.2.0/tests/_preview_card_draw.py +113 -0
  697. monocoat-1.2.0/tests/_private_bus.py +122 -0
  698. monocoat-1.2.0/tests/_session_env.py +90 -0
  699. monocoat-1.2.0/tests/_settings_driver.py +454 -0
  700. monocoat-1.2.0/tests/_settings_native.py +307 -0
  701. monocoat-1.2.0/tests/_theme_world.py +142 -0
  702. monocoat-1.2.0/tests/_wallpaper_fixtures.py +118 -0
  703. monocoat-1.2.0/tests/conftest.py +256 -0
  704. monocoat-1.2.0/tests/fixtures/adaptive-corpus/README.md +21 -0
  705. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/amber-dot.json +37 -0
  706. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/busy-city.json +37 -0
  707. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/dark-photo.json +37 -0
  708. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/forest.json +37 -0
  709. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/mint.json +37 -0
  710. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/mostly-grey.json +37 -0
  711. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/neon.json +37 -0
  712. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/pastel.json +37 -0
  713. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/reference-anchor.json +37 -0
  714. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/rose.json +37 -0
  715. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sea-blue.json +37 -0
  716. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sea-crop90.json +37 -0
  717. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sea-rot.json +37 -0
  718. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/subject-on-plain.json +37 -0
  719. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sunset-crop90.json +37 -0
  720. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sunset-rot.json +37 -0
  721. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/sunset.json +37 -0
  722. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/teal-warm-split.json +37 -0
  723. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/two-colour-flat.json +37 -0
  724. monocoat-1.2.0/tests/fixtures/adaptive-corpus/goldens/violet.json +37 -0
  725. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/amber-dot.json +13 -0
  726. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/busy-city.json +101 -0
  727. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/dark-photo.json +101 -0
  728. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/forest.json +101 -0
  729. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/mint.json +101 -0
  730. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/mostly-grey.json +101 -0
  731. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/neon.json +101 -0
  732. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/pastel.json +101 -0
  733. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/reference-anchor.json +13 -0
  734. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/rose.json +101 -0
  735. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sea-blue.json +101 -0
  736. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sea-crop90.json +101 -0
  737. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sea-rot.json +101 -0
  738. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/subject-on-plain.json +41 -0
  739. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sunset-crop90.json +101 -0
  740. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sunset-rot.json +101 -0
  741. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/sunset.json +101 -0
  742. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/teal-warm-split.json +13 -0
  743. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/two-colour-flat.json +13 -0
  744. monocoat-1.2.0/tests/fixtures/adaptive-corpus/histograms/violet.json +101 -0
  745. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/amber-dot.png +0 -0
  746. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/busy-city.png +0 -0
  747. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/dark-photo.png +0 -0
  748. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/forest.png +0 -0
  749. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/mint.png +0 -0
  750. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/mostly-grey.png +0 -0
  751. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/neon.png +0 -0
  752. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/pastel.png +0 -0
  753. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/reference-anchor.png +0 -0
  754. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/rose.png +0 -0
  755. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sea-blue.png +0 -0
  756. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sea-crop90.png +0 -0
  757. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sea-rot.png +0 -0
  758. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/subject-on-plain.png +0 -0
  759. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sunset-crop90.png +0 -0
  760. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sunset-rot.png +0 -0
  761. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/sunset.png +0 -0
  762. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/teal-warm-split.png +0 -0
  763. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/two-colour-flat.png +0 -0
  764. monocoat-1.2.0/tests/fixtures/adaptive-corpus/images/violet.png +0 -0
  765. monocoat-1.2.0/tests/fixtures/adaptive-corpus/make_images.sh +26 -0
  766. monocoat-1.2.0/tests/fixtures/adaptive-corpus/rankings.toml +83 -0
  767. monocoat-1.2.0/tests/fixtures/adaptive-corpus/record.py +169 -0
  768. monocoat-1.2.0/tests/fixtures/byte_identical_cfg.toml +80 -0
  769. monocoat-1.2.0/tests/fixtures/cache/Reference-Amber-last-recolor.json +12 -0
  770. monocoat-1.2.0/tests/fixtures/glass/monocoat-glass-v1.glsl +73 -0
  771. monocoat-1.2.0/tests/fixtures/gtk-config/gtk-3.0/gtk.css +107 -0
  772. monocoat-1.2.0/tests/fixtures/gtk-config/gtk-4.0/gtk.css +104 -0
  773. monocoat-1.2.0/tests/fixtures/home/.config/Kvantum/kvantum.kvconfig +2 -0
  774. monocoat-1.2.0/tests/fixtures/home/.config/environment.d/95-xcursor.conf +6 -0
  775. monocoat-1.2.0/tests/fixtures/home/.config/gtk-3.0/settings.ini +18 -0
  776. monocoat-1.2.0/tests/fixtures/home/.config/gtk-4.0/settings.ini +15 -0
  777. monocoat-1.2.0/tests/fixtures/home/.config/monocoat/xcursor.Xresources +5 -0
  778. monocoat-1.2.0/tests/fixtures/home/.config/qt5ct/qt5ct.conf +26 -0
  779. monocoat-1.2.0/tests/fixtures/home/.config/qt6ct/qt6ct.conf +26 -0
  780. monocoat-1.2.0/tests/fixtures/home/.config/rofi/config.rasi +55 -0
  781. monocoat-1.2.0/tests/fixtures/home/.config/rofi/themes/shared/colors.rasi +12 -0
  782. monocoat-1.2.0/tests/fixtures/home/.config/rofi/themes/spotlight.rasi +8 -0
  783. monocoat-1.2.0/tests/fixtures/home/.gtkrc-2.0 +13 -0
  784. monocoat-1.2.0/tests/fixtures/home/.icons/default/index.theme +5 -0
  785. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/conky/reference-console.conf +47 -0
  786. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/kitty/reference-amber.conf +107 -0
  787. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/polybar/config.ini +259 -0
  788. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/wallpaper/cursor-blink.conky +26 -0
  789. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/xfwm4/Reference-Amber-xfwm4/xfwm4/themerc +47 -0
  790. monocoat-1.2.0/tests/fixtures/home/dotfiles/themes/Reference-Amber/xfwm4/Reference-Amber-xfwm4-hdpi/xfwm4/themerc +52 -0
  791. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/cursors/hand2 +0 -0
  792. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/cursors/left_ptr +0 -0
  793. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/cursors/pointer +1 -0
  794. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/cursors/watch +0 -0
  795. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/cursors/xterm +0 -0
  796. monocoat-1.2.0/tests/fixtures/themes/home/.icons/Pebble/index.theme +3 -0
  797. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/16x16/mimetypes/text-x-generic.png +0 -0
  798. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/16x16/places/folder.png +0 -0
  799. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/16x16/places/user-trash.png +0 -0
  800. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/32x32/places/folder.png +0 -0
  801. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/index.theme +27 -0
  802. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Base/scalable/apps/preferences-system.svg +1 -0
  803. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Child/16x16/places/folder.png +0 -0
  804. monocoat-1.2.0/tests/fixtures/themes/share/icons/Fixture-Child/index.theme +8 -0
  805. monocoat-1.2.0/tests/fixtures/themes/share/icons/Slate/cursors/hand2 +0 -0
  806. monocoat-1.2.0/tests/fixtures/themes/share/icons/Slate/cursors/left_ptr +0 -0
  807. monocoat-1.2.0/tests/fixtures/themes/share/icons/Slate/cursors/xterm +0 -0
  808. monocoat-1.2.0/tests/fixtures/themes/share/icons/default/index.theme +2 -0
  809. monocoat-1.2.0/tests/fixtures/themes/share/icons/hicolor/48x48/apps/utilities-terminal.png +0 -0
  810. monocoat-1.2.0/tests/fixtures/themes/share/icons/hicolor/index.theme +8 -0
  811. monocoat-1.2.0/tests/fixtures/themes/share/icons/monocoat-hackneyed-0123abcd/cursors/left_ptr +0 -0
  812. monocoat-1.2.0/tests/fixtures/themes/share/icons/monocoat-hackneyed-0123abcd/index.theme +2 -0
  813. monocoat-1.2.0/tests/sandbox/liquid_direction_scene.py +104 -0
  814. monocoat-1.2.0/tests/sandbox/render_bar_ink_shader.py +125 -0
  815. monocoat-1.2.0/tests/sandbox/render_csd_blur.py +203 -0
  816. monocoat-1.2.0/tests/sandbox/render_glass_shader.py +136 -0
  817. monocoat-1.2.0/tests/sandbox/render_liquid_shader.py +182 -0
  818. monocoat-1.2.0/tests/sandbox/render_picom_blur.py +114 -0
  819. monocoat-1.2.0/tests/sandbox/render_picom_corners.py +162 -0
  820. monocoat-1.2.0/tests/sandbox/render_seamless_compositor.py +150 -0
  821. monocoat-1.2.0/tests/sandbox/render_seamless_scenes.py +248 -0
  822. monocoat-1.2.0/tests/sandbox/render_seamless_shader.py +206 -0
  823. monocoat-1.2.0/tests/sandbox/verify_minimize_xfwm4.py +378 -0
  824. monocoat-1.2.0/tests/sandbox/verify_tilemark_xfwm4.py +147 -0
  825. monocoat-1.2.0/tests/sandbox/verify_watch_xfconf.py +432 -0
  826. monocoat-1.2.0/tests/sandbox/verify_xfwm4_gtk_theme_reload.py +162 -0
  827. monocoat-1.2.0/tests/test_acceptance_known_failures.py +65 -0
  828. monocoat-1.2.0/tests/test_acceptance_palettes.py +138 -0
  829. monocoat-1.2.0/tests/test_acceptance_preset_switch.py +431 -0
  830. monocoat-1.2.0/tests/test_acceptance_report.py +35 -0
  831. monocoat-1.2.0/tests/test_acceptance_safety.py +131 -0
  832. monocoat-1.2.0/tests/test_acceptance_surfaces.py +197 -0
  833. monocoat-1.2.0/tests/test_acceptance_world.py +220 -0
  834. monocoat-1.2.0/tests/test_adaptive.py +713 -0
  835. monocoat-1.2.0/tests/test_adaptive_corpus.py +178 -0
  836. monocoat-1.2.0/tests/test_app_attribution.py +95 -0
  837. monocoat-1.2.0/tests/test_app_colors.py +559 -0
  838. monocoat-1.2.0/tests/test_appchoices.py +101 -0
  839. monocoat-1.2.0/tests/test_appkind.py +141 -0
  840. monocoat-1.2.0/tests/test_apply_partial_layer.py +177 -0
  841. monocoat-1.2.0/tests/test_apps_off_firefox.py +243 -0
  842. monocoat-1.2.0/tests/test_apps_off_links.py +202 -0
  843. monocoat-1.2.0/tests/test_apps_off_vesktop_kitty.py +170 -0
  844. monocoat-1.2.0/tests/test_appscan.py +308 -0
  845. monocoat-1.2.0/tests/test_appsedit.py +184 -0
  846. monocoat-1.2.0/tests/test_backdrop_bar_ink_gate.py +252 -0
  847. monocoat-1.2.0/tests/test_backdrop_bar_state.py +324 -0
  848. monocoat-1.2.0/tests/test_backdrop_immersive.py +455 -0
  849. monocoat-1.2.0/tests/test_backdrop_pixmap.py +424 -0
  850. monocoat-1.2.0/tests/test_backdrop_settle.py +819 -0
  851. monocoat-1.2.0/tests/test_backdrop_watch.py +910 -0
  852. monocoat-1.2.0/tests/test_backdrop_xfdesktop.py +316 -0
  853. monocoat-1.2.0/tests/test_backends_gsettings.py +80 -0
  854. monocoat-1.2.0/tests/test_backends_kdeglobals.py +90 -0
  855. monocoat-1.2.0/tests/test_backends_wm_notify.py +144 -0
  856. monocoat-1.2.0/tests/test_backends_xfconf.py +132 -0
  857. monocoat-1.2.0/tests/test_backends_xsettingsd.py +102 -0
  858. monocoat-1.2.0/tests/test_backup.py +164 -0
  859. monocoat-1.2.0/tests/test_backup_archive_rules.py +109 -0
  860. monocoat-1.2.0/tests/test_bar_ink_compositor_native.py +64 -0
  861. monocoat-1.2.0/tests/test_bar_ink_shader_pixels.py +46 -0
  862. monocoat-1.2.0/tests/test_body_font_layers.py +122 -0
  863. monocoat-1.2.0/tests/test_bundle_copy.py +211 -0
  864. monocoat-1.2.0/tests/test_bundle_e2e.py +522 -0
  865. monocoat-1.2.0/tests/test_bundle_layer.py +369 -0
  866. monocoat-1.2.0/tests/test_bundleprepare.py +157 -0
  867. monocoat-1.2.0/tests/test_bundles.py +349 -0
  868. monocoat-1.2.0/tests/test_buttonlayout.py +33 -0
  869. monocoat-1.2.0/tests/test_byte_identical.py +365 -0
  870. monocoat-1.2.0/tests/test_capabilities.py +81 -0
  871. monocoat-1.2.0/tests/test_change.py +113 -0
  872. monocoat-1.2.0/tests/test_change_writers.py +424 -0
  873. monocoat-1.2.0/tests/test_check_script.py +66 -0
  874. monocoat-1.2.0/tests/test_cli_apply_json.py +406 -0
  875. monocoat-1.2.0/tests/test_cli_apps_choices.py +148 -0
  876. monocoat-1.2.0/tests/test_cli_backup.py +707 -0
  877. monocoat-1.2.0/tests/test_cli_daynight.py +101 -0
  878. monocoat-1.2.0/tests/test_cli_dock_control.py +74 -0
  879. monocoat-1.2.0/tests/test_cli_dock_pins.py +319 -0
  880. monocoat-1.2.0/tests/test_cli_exit_codes.py +226 -0
  881. monocoat-1.2.0/tests/test_cli_generate.py +275 -0
  882. monocoat-1.2.0/tests/test_cli_import_mydockfinder.py +455 -0
  883. monocoat-1.2.0/tests/test_cli_notify_test.py +81 -0
  884. monocoat-1.2.0/tests/test_cli_reload.py +454 -0
  885. monocoat-1.2.0/tests/test_cli_schema_errors.py +59 -0
  886. monocoat-1.2.0/tests/test_cli_set_pin.py +165 -0
  887. monocoat-1.2.0/tests/test_cli_settings.py +62 -0
  888. monocoat-1.2.0/tests/test_cli_startup.py +198 -0
  889. monocoat-1.2.0/tests/test_cli_status_diff.py +173 -0
  890. monocoat-1.2.0/tests/test_config.py +147 -0
  891. monocoat-1.2.0/tests/test_config_load.py +75 -0
  892. monocoat-1.2.0/tests/test_contrast.py +151 -0
  893. monocoat-1.2.0/tests/test_convergence.py +460 -0
  894. monocoat-1.2.0/tests/test_corner_firefox.py +229 -0
  895. monocoat-1.2.0/tests/test_corner_gtk_css.py +130 -0
  896. monocoat-1.2.0/tests/test_corner_libadwaita.py +37 -0
  897. monocoat-1.2.0/tests/test_corner_scss.py +130 -0
  898. monocoat-1.2.0/tests/test_corner_surfaces.py +392 -0
  899. monocoat-1.2.0/tests/test_corners_schema.py +70 -0
  900. monocoat-1.2.0/tests/test_cssgen.py +171 -0
  901. monocoat-1.2.0/tests/test_csspin.py +157 -0
  902. monocoat-1.2.0/tests/test_cursor_build.py +184 -0
  903. monocoat-1.2.0/tests/test_cursor_layer.py +301 -0
  904. monocoat-1.2.0/tests/test_cursor_schema.py +91 -0
  905. monocoat-1.2.0/tests/test_cursorgen.py +104 -0
  906. monocoat-1.2.0/tests/test_cursorthemes.py +246 -0
  907. monocoat-1.2.0/tests/test_daemons.py +2435 -0
  908. monocoat-1.2.0/tests/test_daemons_labels.py +187 -0
  909. monocoat-1.2.0/tests/test_daynight.py +119 -0
  910. monocoat-1.2.0/tests/test_daynight_units.py +59 -0
  911. monocoat-1.2.0/tests/test_decorations.py +99 -0
  912. monocoat-1.2.0/tests/test_deep_recolor_bindings.py +1147 -0
  913. monocoat-1.2.0/tests/test_deep_recolor_geometry.py +284 -0
  914. monocoat-1.2.0/tests/test_deep_recolor_layer.py +906 -0
  915. monocoat-1.2.0/tests/test_demo.py +248 -0
  916. monocoat-1.2.0/tests/test_desktop_entry.py +57 -0
  917. monocoat-1.2.0/tests/test_desktopfile.py +152 -0
  918. monocoat-1.2.0/tests/test_detect_dpi.py +206 -0
  919. monocoat-1.2.0/tests/test_diff.py +255 -0
  920. monocoat-1.2.0/tests/test_dock_activation_native.py +370 -0
  921. monocoat-1.2.0/tests/test_dock_apps.py +455 -0
  922. monocoat-1.2.0/tests/test_dock_badge.py +110 -0
  923. monocoat-1.2.0/tests/test_dock_classes.py +51 -0
  924. monocoat-1.2.0/tests/test_dock_config.py +687 -0
  925. monocoat-1.2.0/tests/test_dock_daemon.py +763 -0
  926. monocoat-1.2.0/tests/test_dock_daemon_native.py +697 -0
  927. monocoat-1.2.0/tests/test_dock_dialog_native.py +84 -0
  928. monocoat-1.2.0/tests/test_dock_folder_click_native.py +211 -0
  929. monocoat-1.2.0/tests/test_dock_folder_native.py +286 -0
  930. monocoat-1.2.0/tests/test_dock_folder_placement_native.py +85 -0
  931. monocoat-1.2.0/tests/test_dock_fullscreen_native.py +285 -0
  932. monocoat-1.2.0/tests/test_dock_geometry_native.py +37 -0
  933. monocoat-1.2.0/tests/test_dock_gtk_unit.py +5538 -0
  934. monocoat-1.2.0/tests/test_dock_hide_native.py +317 -0
  935. monocoat-1.2.0/tests/test_dock_hotcorners.py +211 -0
  936. monocoat-1.2.0/tests/test_dock_hotcorners_gtk.py +272 -0
  937. monocoat-1.2.0/tests/test_dock_hotcorners_native.py +183 -0
  938. monocoat-1.2.0/tests/test_dock_hotplug_native.py +267 -0
  939. monocoat-1.2.0/tests/test_dock_interaction_native.py +573 -0
  940. monocoat-1.2.0/tests/test_dock_items.py +607 -0
  941. monocoat-1.2.0/tests/test_dock_launcher.py +336 -0
  942. monocoat-1.2.0/tests/test_dock_layer.py +227 -0
  943. monocoat-1.2.0/tests/test_dock_logind.py +208 -0
  944. monocoat-1.2.0/tests/test_dock_look.py +201 -0
  945. monocoat-1.2.0/tests/test_dock_math.py +600 -0
  946. monocoat-1.2.0/tests/test_dock_menu_native.py +197 -0
  947. monocoat-1.2.0/tests/test_dock_minimize.py +577 -0
  948. monocoat-1.2.0/tests/test_dock_minimize_native.py +29 -0
  949. monocoat-1.2.0/tests/test_dock_motion_native.py +416 -0
  950. monocoat-1.2.0/tests/test_dock_msgtips_native.py +505 -0
  951. monocoat-1.2.0/tests/test_dock_multi_preview_native.py +596 -0
  952. monocoat-1.2.0/tests/test_dock_parity_config.py +173 -0
  953. monocoat-1.2.0/tests/test_dock_popup_lifecycle_native.py +479 -0
  954. monocoat-1.2.0/tests/test_dock_preview_card_draw.py +57 -0
  955. monocoat-1.2.0/tests/test_dock_preview_glass_native.py +269 -0
  956. monocoat-1.2.0/tests/test_dock_preview_title_native.py +159 -0
  957. monocoat-1.2.0/tests/test_dock_refresh_native.py +53 -0
  958. monocoat-1.2.0/tests/test_dock_reveal_glass_native.py +137 -0
  959. monocoat-1.2.0/tests/test_dock_row_native.py +91 -0
  960. monocoat-1.2.0/tests/test_dock_settings_reload.py +147 -0
  961. monocoat-1.2.0/tests/test_dock_shape_order_native.py +84 -0
  962. monocoat-1.2.0/tests/test_dock_slide_sync_native.py +203 -0
  963. monocoat-1.2.0/tests/test_dock_strut_native.py +274 -0
  964. monocoat-1.2.0/tests/test_dock_text.py +144 -0
  965. monocoat-1.2.0/tests/test_dock_track.py +604 -0
  966. monocoat-1.2.0/tests/test_dock_tracking_native.py +1045 -0
  967. monocoat-1.2.0/tests/test_dock_unit_file.py +34 -0
  968. monocoat-1.2.0/tests/test_dock_visibility_native.py +695 -0
  969. monocoat-1.2.0/tests/test_dock_visual_native.py +498 -0
  970. monocoat-1.2.0/tests/test_dock_visual_parity.py +272 -0
  971. monocoat-1.2.0/tests/test_dock_visual_parity_native.py +148 -0
  972. monocoat-1.2.0/tests/test_dock_win.py +264 -0
  973. monocoat-1.2.0/tests/test_dockcatalog.py +191 -0
  974. monocoat-1.2.0/tests/test_dockd_layer.py +186 -0
  975. monocoat-1.2.0/tests/test_dockedge.py +199 -0
  976. monocoat-1.2.0/tests/test_dockfolder.py +537 -0
  977. monocoat-1.2.0/tests/test_dockfolder_gtk.py +1368 -0
  978. monocoat-1.2.0/tests/test_dockipc.py +117 -0
  979. monocoat-1.2.0/tests/test_dockmedia.py +429 -0
  980. monocoat-1.2.0/tests/test_dockmedia_dbus.py +319 -0
  981. monocoat-1.2.0/tests/test_dockmedia_gtk_native.py +225 -0
  982. monocoat-1.2.0/tests/test_dockmediaart.py +376 -0
  983. monocoat-1.2.0/tests/test_dockminimizex11_native.py +173 -0
  984. monocoat-1.2.0/tests/test_dockmsg.py +433 -0
  985. monocoat-1.2.0/tests/test_dockpin_grammar.py +113 -0
  986. monocoat-1.2.0/tests/test_dockpinfile.py +231 -0
  987. monocoat-1.2.0/tests/test_dockpins.py +905 -0
  988. monocoat-1.2.0/tests/test_dockpreview.py +246 -0
  989. monocoat-1.2.0/tests/test_dockpreview_media.py +1317 -0
  990. monocoat-1.2.0/tests/test_dockpreview_native.py +1239 -0
  991. monocoat-1.2.0/tests/test_dockvisibility.py +162 -0
  992. monocoat-1.2.0/tests/test_dockxwatch.py +170 -0
  993. monocoat-1.2.0/tests/test_docs.py +51 -0
  994. monocoat-1.2.0/tests/test_doctor.py +1098 -0
  995. monocoat-1.2.0/tests/test_doctor_apps.py +125 -0
  996. monocoat-1.2.0/tests/test_doctor_people.py +541 -0
  997. monocoat-1.2.0/tests/test_doctor_probes.py +479 -0
  998. monocoat-1.2.0/tests/test_edittarget.py +323 -0
  999. monocoat-1.2.0/tests/test_effects_layer.py +2825 -0
  1000. monocoat-1.2.0/tests/test_examples.py +115 -0
  1001. monocoat-1.2.0/tests/test_fileio.py +73 -0
  1002. monocoat-1.2.0/tests/test_firefox_theme.py +222 -0
  1003. monocoat-1.2.0/tests/test_firefoxprefs.py +52 -0
  1004. monocoat-1.2.0/tests/test_follow.py +165 -0
  1005. monocoat-1.2.0/tests/test_follow_timeline.py +36 -0
  1006. monocoat-1.2.0/tests/test_fonts_layer.py +928 -0
  1007. monocoat-1.2.0/tests/test_framegovernor.py +173 -0
  1008. monocoat-1.2.0/tests/test_geometry.py +140 -0
  1009. monocoat-1.2.0/tests/test_glass.py +356 -0
  1010. monocoat-1.2.0/tests/test_glass_gtk_native.py +78 -0
  1011. monocoat-1.2.0/tests/test_glass_shader_native.py +89 -0
  1012. monocoat-1.2.0/tests/test_glass_shader_pixels.py +157 -0
  1013. monocoat-1.2.0/tests/test_glassshape.py +54 -0
  1014. monocoat-1.2.0/tests/test_gnome_end_to_end.py +448 -0
  1015. monocoat-1.2.0/tests/test_gtk3theme.py +163 -0
  1016. monocoat-1.2.0/tests/test_gtk3theme_native.py +145 -0
  1017. monocoat-1.2.0/tests/test_gtk_animations.py +130 -0
  1018. monocoat-1.2.0/tests/test_gtk_css_carried.py +44 -0
  1019. monocoat-1.2.0/tests/test_gui_a11y_native.py +139 -0
  1020. monocoat-1.2.0/tests/test_gui_apps_logic.py +377 -0
  1021. monocoat-1.2.0/tests/test_gui_apps_native.py +448 -0
  1022. monocoat-1.2.0/tests/test_gui_backups_logic.py +362 -0
  1023. monocoat-1.2.0/tests/test_gui_backups_native.py +631 -0
  1024. monocoat-1.2.0/tests/test_gui_captions.py +149 -0
  1025. monocoat-1.2.0/tests/test_gui_colourmatch.py +324 -0
  1026. monocoat-1.2.0/tests/test_gui_colours_logic.py +336 -0
  1027. monocoat-1.2.0/tests/test_gui_control_labels.py +156 -0
  1028. monocoat-1.2.0/tests/test_gui_dock_logic.py +1014 -0
  1029. monocoat-1.2.0/tests/test_gui_dock_native.py +766 -0
  1030. monocoat-1.2.0/tests/test_gui_engine.py +500 -0
  1031. monocoat-1.2.0/tests/test_gui_firstrun_logic.py +190 -0
  1032. monocoat-1.2.0/tests/test_gui_fonts_logic.py +164 -0
  1033. monocoat-1.2.0/tests/test_gui_glass_logic.py +578 -0
  1034. monocoat-1.2.0/tests/test_gui_glass_native.py +378 -0
  1035. monocoat-1.2.0/tests/test_gui_health_logic.py +568 -0
  1036. monocoat-1.2.0/tests/test_gui_health_native.py +324 -0
  1037. monocoat-1.2.0/tests/test_gui_history.py +262 -0
  1038. monocoat-1.2.0/tests/test_gui_minidesktop.py +86 -0
  1039. monocoat-1.2.0/tests/test_gui_model.py +335 -0
  1040. monocoat-1.2.0/tests/test_gui_native.py +1317 -0
  1041. monocoat-1.2.0/tests/test_gui_notify_logic.py +312 -0
  1042. monocoat-1.2.0/tests/test_gui_notify_native.py +271 -0
  1043. monocoat-1.2.0/tests/test_gui_pointer_logic.py +328 -0
  1044. monocoat-1.2.0/tests/test_gui_pointer_native.py +349 -0
  1045. monocoat-1.2.0/tests/test_gui_presets_logic.py +458 -0
  1046. monocoat-1.2.0/tests/test_gui_presets_native.py +501 -0
  1047. monocoat-1.2.0/tests/test_gui_scheduler.py +295 -0
  1048. monocoat-1.2.0/tests/test_gui_shell_logic.py +136 -0
  1049. monocoat-1.2.0/tests/test_gui_shell_native.py +956 -0
  1050. monocoat-1.2.0/tests/test_gui_update.py +69 -0
  1051. monocoat-1.2.0/tests/test_gui_update_native.py +115 -0
  1052. monocoat-1.2.0/tests/test_gui_wallpaper_logic.py +626 -0
  1053. monocoat-1.2.0/tests/test_gui_wallpaper_native.py +546 -0
  1054. monocoat-1.2.0/tests/test_gui_winstate.py +31 -0
  1055. monocoat-1.2.0/tests/test_held_xfconf_writes.py +218 -0
  1056. monocoat-1.2.0/tests/test_iconthemes.py +275 -0
  1057. monocoat-1.2.0/tests/test_immersive.py +539 -0
  1058. monocoat-1.2.0/tests/test_inherit.py +132 -0
  1059. monocoat-1.2.0/tests/test_inibind.py +77 -0
  1060. monocoat-1.2.0/tests/test_init.py +616 -0
  1061. monocoat-1.2.0/tests/test_kde_backend.py +390 -0
  1062. monocoat-1.2.0/tests/test_kitty_native.py +168 -0
  1063. monocoat-1.2.0/tests/test_kitty_ownership.py +179 -0
  1064. monocoat-1.2.0/tests/test_kvantumgeom.py +260 -0
  1065. monocoat-1.2.0/tests/test_lastwrites.py +315 -0
  1066. monocoat-1.2.0/tests/test_launcher_corners.py +301 -0
  1067. monocoat-1.2.0/tests/test_launcher_grid.py +225 -0
  1068. monocoat-1.2.0/tests/test_launcher_grid_native.py +97 -0
  1069. monocoat-1.2.0/tests/test_launcher_index.py +263 -0
  1070. monocoat-1.2.0/tests/test_launcher_index_native.py +122 -0
  1071. monocoat-1.2.0/tests/test_launcher_layer.py +162 -0
  1072. monocoat-1.2.0/tests/test_launchpad.py +351 -0
  1073. monocoat-1.2.0/tests/test_launchpad_gtk.py +909 -0
  1074. monocoat-1.2.0/tests/test_launchpad_native.py +752 -0
  1075. monocoat-1.2.0/tests/test_left_links.py +187 -0
  1076. monocoat-1.2.0/tests/test_libadwaita_layer.py +416 -0
  1077. monocoat-1.2.0/tests/test_link_plan.py +163 -0
  1078. monocoat-1.2.0/tests/test_liquid_glass.py +101 -0
  1079. monocoat-1.2.0/tests/test_liquid_glass_compositor.py +157 -0
  1080. monocoat-1.2.0/tests/test_liquid_glass_pixels.py +138 -0
  1081. monocoat-1.2.0/tests/test_liquidglass.py +636 -0
  1082. monocoat-1.2.0/tests/test_locks.py +649 -0
  1083. monocoat-1.2.0/tests/test_lockscreen.py +635 -0
  1084. monocoat-1.2.0/tests/test_lockscreen_interaction.py +613 -0
  1085. monocoat-1.2.0/tests/test_lockscreen_native.py +315 -0
  1086. monocoat-1.2.0/tests/test_lookgc.py +177 -0
  1087. monocoat-1.2.0/tests/test_manifest.py +553 -0
  1088. monocoat-1.2.0/tests/test_menu_images.py +96 -0
  1089. monocoat-1.2.0/tests/test_migrate.py +853 -0
  1090. monocoat-1.2.0/tests/test_mydockfinder_surface.py +1149 -0
  1091. monocoat-1.2.0/tests/test_no_clobber.py +525 -0
  1092. monocoat-1.2.0/tests/test_notifications_layer.py +22 -0
  1093. monocoat-1.2.0/tests/test_notify_backend_detect.py +94 -0
  1094. monocoat-1.2.0/tests/test_notify_dnd.py +67 -0
  1095. monocoat-1.2.0/tests/test_notify_fdo.py +537 -0
  1096. monocoat-1.2.0/tests/test_out.py +119 -0
  1097. monocoat-1.2.0/tests/test_packaging.py +186 -0
  1098. monocoat-1.2.0/tests/test_palette_corners.py +167 -0
  1099. monocoat-1.2.0/tests/test_palette_layer.py +1077 -0
  1100. monocoat-1.2.0/tests/test_palettemath.py +173 -0
  1101. monocoat-1.2.0/tests/test_palettemath_oklch.py +61 -0
  1102. monocoat-1.2.0/tests/test_panel_layer.py +269 -0
  1103. monocoat-1.2.0/tests/test_paths.py +210 -0
  1104. monocoat-1.2.0/tests/test_perf.py +572 -0
  1105. monocoat-1.2.0/tests/test_perf_native.py +68 -0
  1106. monocoat-1.2.0/tests/test_picom.py +615 -0
  1107. monocoat-1.2.0/tests/test_picom_bar_ink_rules.py +73 -0
  1108. monocoat-1.2.0/tests/test_picom_blur_native.py +112 -0
  1109. monocoat-1.2.0/tests/test_picom_corners.py +433 -0
  1110. monocoat-1.2.0/tests/test_picom_corners_native.py +25 -0
  1111. monocoat-1.2.0/tests/test_picom_csd_blur_native.py +32 -0
  1112. monocoat-1.2.0/tests/test_picom_dock_rules.py +259 -0
  1113. monocoat-1.2.0/tests/test_picom_minimize_rules.py +100 -0
  1114. monocoat-1.2.0/tests/test_picom_perf_rules.py +125 -0
  1115. monocoat-1.2.0/tests/test_plank.py +88 -0
  1116. monocoat-1.2.0/tests/test_pngcodec.py +179 -0
  1117. monocoat-1.2.0/tests/test_polybar_live.py +180 -0
  1118. monocoat-1.2.0/tests/test_polybarini.py +85 -0
  1119. monocoat-1.2.0/tests/test_portal_layer.py +534 -0
  1120. monocoat-1.2.0/tests/test_presetedit.py +684 -0
  1121. monocoat-1.2.0/tests/test_presets.py +673 -0
  1122. monocoat-1.2.0/tests/test_procs.py +146 -0
  1123. monocoat-1.2.0/tests/test_qt_color_scheme.py +240 -0
  1124. monocoat-1.2.0/tests/test_qt_fonts.py +79 -0
  1125. monocoat-1.2.0/tests/test_qt_layer.py +401 -0
  1126. monocoat-1.2.0/tests/test_randr_verbose.py +179 -0
  1127. monocoat-1.2.0/tests/test_raster_migration.py +170 -0
  1128. monocoat-1.2.0/tests/test_recolor_pixels.py +71 -0
  1129. monocoat-1.2.0/tests/test_refresh_trace.py +342 -0
  1130. monocoat-1.2.0/tests/test_registry.py +226 -0
  1131. monocoat-1.2.0/tests/test_registry_apps.py +61 -0
  1132. monocoat-1.2.0/tests/test_registry_matrix.py +106 -0
  1133. monocoat-1.2.0/tests/test_registry_reaches.py +67 -0
  1134. monocoat-1.2.0/tests/test_release_smoke.py +84 -0
  1135. monocoat-1.2.0/tests/test_reload_debt.py +207 -0
  1136. monocoat-1.2.0/tests/test_remap.py +44 -0
  1137. monocoat-1.2.0/tests/test_remote_display.py +74 -0
  1138. monocoat-1.2.0/tests/test_remote_layer.py +195 -0
  1139. monocoat-1.2.0/tests/test_remotesession.py +373 -0
  1140. monocoat-1.2.0/tests/test_rendercache.py +79 -0
  1141. monocoat-1.2.0/tests/test_schema.py +2408 -0
  1142. monocoat-1.2.0/tests/test_schema_doc.py +58 -0
  1143. monocoat-1.2.0/tests/test_scheme.py +175 -0
  1144. monocoat-1.2.0/tests/test_scheme_consumers.py +501 -0
  1145. monocoat-1.2.0/tests/test_scssgen.py +186 -0
  1146. monocoat-1.2.0/tests/test_seamless_frames.py +325 -0
  1147. monocoat-1.2.0/tests/test_seamless_text_span.py +122 -0
  1148. monocoat-1.2.0/tests/test_session.py +77 -0
  1149. monocoat-1.2.0/tests/test_session_detect.py +342 -0
  1150. monocoat-1.2.0/tests/test_session_per_operation.py +94 -0
  1151. monocoat-1.2.0/tests/test_settings_screenshots.py +48 -0
  1152. monocoat-1.2.0/tests/test_smoke.py +231 -0
  1153. monocoat-1.2.0/tests/test_state_roles.py +85 -0
  1154. monocoat-1.2.0/tests/test_strikes.py +91 -0
  1155. monocoat-1.2.0/tests/test_style.py +625 -0
  1156. monocoat-1.2.0/tests/test_surfaces_pure.py +134 -0
  1157. monocoat-1.2.0/tests/test_terminals.py +501 -0
  1158. monocoat-1.2.0/tests/test_theme_world.py +29 -0
  1159. monocoat-1.2.0/tests/test_tilemark.py +345 -0
  1160. monocoat-1.2.0/tests/test_tilemark_native.py +309 -0
  1161. monocoat-1.2.0/tests/test_tilemark_xfwm4_native.py +26 -0
  1162. monocoat-1.2.0/tests/test_tomlarray.py +371 -0
  1163. monocoat-1.2.0/tests/test_tomlarray_scalar.py +119 -0
  1164. monocoat-1.2.0/tests/test_tomlout.py +35 -0
  1165. monocoat-1.2.0/tests/test_translit.py +101 -0
  1166. monocoat-1.2.0/tests/test_tray_icons_native.py +60 -0
  1167. monocoat-1.2.0/tests/test_trayprobe.py +139 -0
  1168. monocoat-1.2.0/tests/test_updater.py +484 -0
  1169. monocoat-1.2.0/tests/test_usercss.py +177 -0
  1170. monocoat-1.2.0/tests/test_usercss_gtk_native.py +217 -0
  1171. monocoat-1.2.0/tests/test_verify.py +210 -0
  1172. monocoat-1.2.0/tests/test_verify_watch_isolation.py +282 -0
  1173. monocoat-1.2.0/tests/test_verify_x11.py +222 -0
  1174. monocoat-1.2.0/tests/test_wallpaper_adopt.py +247 -0
  1175. monocoat-1.2.0/tests/test_wallpaper_layer.py +964 -0
  1176. monocoat-1.2.0/tests/test_wallpaper_palette.py +350 -0
  1177. monocoat-1.2.0/tests/test_wallpaper_pipeline.py +1192 -0
  1178. monocoat-1.2.0/tests/test_wallpaper_reload.py +118 -0
  1179. monocoat-1.2.0/tests/test_wallpaper_set.py +759 -0
  1180. monocoat-1.2.0/tests/test_watch.py +2667 -0
  1181. monocoat-1.2.0/tests/test_watch_e2e.py +194 -0
  1182. monocoat-1.2.0/tests/test_watch_span_xfconfd.py +304 -0
  1183. monocoat-1.2.0/tests/test_watcher_strength.py +160 -0
  1184. monocoat-1.2.0/tests/test_window_manager_layer.py +123 -0
  1185. monocoat-1.2.0/tests/test_x11probe.py +127 -0
  1186. monocoat-1.2.0/tests/test_x11probe_native.py +256 -0
  1187. monocoat-1.2.0/tests/test_xcursor.py +195 -0
  1188. monocoat-1.2.0/tests/test_xfwm4_gtk_reload_native.py +27 -0
  1189. monocoat-1.2.0/tests/test_xroot_native.py +134 -0
  1190. monocoat-1.2.0/tests/test_xsettingsd_backend.py +160 -0
@@ -0,0 +1,86 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ci-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ lint:
17
+ name: ruff check
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.13"
24
+ # ruff is pinned (here and in the `dev` extra) so a new release promoting
25
+ # rules into E/F/I/UP/B cannot turn main red; bump it on purpose.
26
+ - run: python -m pip install --upgrade pip "ruff==0.16.10"
27
+ # Lint only: no repo-wide `ruff format` gate (owner ruling).
28
+ - run: ruff check src tests
29
+
30
+ test:
31
+ name: pytest (py${{ matrix.python-version }})
32
+ runs-on: ubuntu-latest
33
+ strategy:
34
+ fail-fast: false
35
+ matrix:
36
+ python-version: ["3.11", "3.12", "3.13"]
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+ - uses: actions/setup-python@v5
40
+ with:
41
+ python-version: ${{ matrix.python-version }}
42
+ - run: python -m pip install --upgrade pip
43
+ - run: python -m pip install -e ".[dev]"
44
+ # sassc lets the real-compiler SCSS tests run instead of skipping.
45
+ - run: sudo apt-get update && sudo apt-get install -y sassc
46
+ - name: pytest (sandboxed HOME/XDG so nothing touches the runner's desktop)
47
+ run: |
48
+ sandbox="$(mktemp -d)"
49
+ export HOME="$sandbox" XDG_CONFIG_HOME="$sandbox/.config" \
50
+ XDG_CACHE_HOME="$sandbox/.cache" XDG_DATA_HOME="$sandbox/.local/share"
51
+ python -m pytest -q
52
+
53
+ wheel-smoke:
54
+ name: build + clean-venv wheel smoke
55
+ runs-on: ubuntu-latest
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ - uses: actions/setup-python@v5
59
+ with:
60
+ python-version: "3.13"
61
+ - run: python -m pip install --upgrade pip build twine
62
+ - run: python -m build
63
+ - run: python -m twine check --strict dist/*
64
+ - name: Install the wheel with no extras into a clean venv
65
+ run: |
66
+ python -m venv /tmp/smoke
67
+ /tmp/smoke/bin/pip install dist/*.whl
68
+ - name: Core runs without any third-party deps
69
+ run: |
70
+ sandbox="$(mktemp -d)"
71
+ export HOME="$sandbox" XDG_CONFIG_HOME="$sandbox/.config" \
72
+ XDG_CACHE_HOME="$sandbox/.cache" XDG_DATA_HOME="$sandbox/.local/share"
73
+ /tmp/smoke/bin/monocoat --version
74
+ /tmp/smoke/bin/monocoat doctor --json || true
75
+ # The zero-dep promise: rich/textual must NOT have been pulled in.
76
+ if /tmp/smoke/bin/python -c "import rich" 2>/dev/null; then
77
+ echo "::error::rich is importable in a no-extras install"; exit 1
78
+ fi
79
+ if /tmp/smoke/bin/python -c "import textual" 2>/dev/null; then
80
+ echo "::error::textual is importable in a no-extras install"; exit 1
81
+ fi
82
+ - uses: actions/upload-artifact@v4
83
+ with:
84
+ name: dist
85
+ path: dist/
86
+ retention-days: 7
@@ -0,0 +1,109 @@
1
+ name: Release
2
+
3
+ # Cut by pushing a vX.Y.Z tag whose number matches monocoat.__version__.
4
+ # Publishing uses PyPI Trusted Publishing (OIDC): no API token is stored.
5
+ # One-time setup on pypi.org: add a trusted publisher for
6
+ # owner=blakebratcher repo=monocoat workflow=release.yml environment=pypi
7
+
8
+ on:
9
+ push:
10
+ tags: ["v*.*.*"]
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ guard:
17
+ name: tag == __version__, CHANGELOG has the section
18
+ runs-on: ubuntu-latest
19
+ outputs:
20
+ version: ${{ steps.check.outputs.version }}
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.13"
26
+ - id: check
27
+ env:
28
+ TAG: ${{ github.ref_name }}
29
+ run: |
30
+ version="$(python - <<'PY'
31
+ import re, pathlib
32
+ src = pathlib.Path("src/monocoat/__init__.py").read_text()
33
+ print(re.search(r'^__version__\s*=\s*"([^"]+)"', src, re.M).group(1))
34
+ PY
35
+ )"
36
+ if [ "$TAG" != "v$version" ]; then
37
+ echo "::error::tag $TAG does not match monocoat.__version__ $version"
38
+ exit 1
39
+ fi
40
+ if ! grep -qE "^## \[$version\]" CHANGELOG.md; then
41
+ echo "::error::CHANGELOG.md has no '## [$version]' section"
42
+ exit 1
43
+ fi
44
+ echo "version=$version" >> "$GITHUB_OUTPUT"
45
+
46
+ build:
47
+ needs: guard
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+ - uses: actions/setup-python@v5
52
+ with:
53
+ python-version: "3.13"
54
+ - run: python -m pip install --upgrade pip build twine
55
+ - run: python -m build
56
+ - run: python -m twine check --strict dist/*
57
+ - name: Wheel smoke (no extras, clean venv)
58
+ run: |
59
+ python -m venv /tmp/smoke
60
+ /tmp/smoke/bin/pip install dist/*.whl
61
+ test "$(/tmp/smoke/bin/monocoat --version)" = "monocoat ${{ needs.guard.outputs.version }}"
62
+ - uses: actions/upload-artifact@v4
63
+ with:
64
+ name: dist
65
+ path: dist/
66
+
67
+ publish-pypi:
68
+ needs: build
69
+ runs-on: ubuntu-latest
70
+ environment:
71
+ name: pypi
72
+ url: https://pypi.org/project/monocoat/
73
+ permissions:
74
+ id-token: write
75
+ steps:
76
+ - uses: actions/download-artifact@v4
77
+ with:
78
+ name: dist
79
+ path: dist/
80
+ - uses: pypa/gh-action-pypi-publish@release/v1
81
+
82
+ github-release:
83
+ needs: [guard, publish-pypi]
84
+ runs-on: ubuntu-latest
85
+ permissions:
86
+ contents: write
87
+ steps:
88
+ - uses: actions/checkout@v4
89
+ - uses: actions/download-artifact@v4
90
+ with:
91
+ name: dist
92
+ path: dist/
93
+ - name: Extract this version's CHANGELOG section
94
+ env:
95
+ VERSION: ${{ needs.guard.outputs.version }}
96
+ run: |
97
+ python - <<'PY' > notes.md
98
+ import os, re, pathlib
99
+ version = re.escape(os.environ["VERSION"])
100
+ text = pathlib.Path("CHANGELOG.md").read_text()
101
+ m = re.search(rf"^## \[{version}\][^\n]*\n(.*?)(?=^## \[|\Z)", text, re.M | re.S)
102
+ print(m.group(1).strip())
103
+ PY
104
+ test -s notes.md
105
+ - name: Create the GitHub release
106
+ env:
107
+ GH_TOKEN: ${{ github.token }}
108
+ TAG: ${{ github.ref_name }}
109
+ run: gh release create "$TAG" dist/* --title "monocoat $TAG" --notes-file notes.md --verify-tag
@@ -0,0 +1,47 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .venv/
9
+
10
+ # Testing
11
+ .pytest_cache/
12
+ .coverage
13
+ .coverage.*
14
+ htmlcov/
15
+
16
+ # Type checking / linting
17
+ .mypy_cache/
18
+ .ruff_cache/
19
+
20
+ # IDE
21
+ .vscode/
22
+ .idea/
23
+ *.swp
24
+ *.swo
25
+ *~
26
+
27
+ # Claude Code local overrides
28
+ .claude.local.md
29
+ .claude/settings.local.json
30
+
31
+ # Logs
32
+ *.log
33
+
34
+ # OS
35
+ Thumbs.db
36
+ Desktop.ini
37
+ .DS_Store
38
+
39
+ # makepkg output when building the AUR recipes in place
40
+ packaging/aur/*/src/
41
+ packaging/aur/*/pkg/
42
+ packaging/aur/*/*.tar.*
43
+ packaging/aur/*/monocoat/
44
+
45
+ # Agent scratch: git worktrees and SDD plan workspaces
46
+ .worktrees/
47
+ .superpowers/
@@ -0,0 +1 @@
1
+ CLAUDE.md