this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

detect system-wide dark mode and use that

+126 -28
+26 -23
build.gradle.kts
··· 11 11 12 12 repositories { 13 13 mavenCentral() 14 + maven { url = uri("https://jitpack.io") } 14 15 } 15 16 16 17 plugins { ··· 28 29 29 30 dependencies { 30 31 implementation(platform("org.lwjgl:lwjgl-bom:3.3.3")) 31 - 32 + 32 33 implementation("org.lwjgl", "lwjgl") 33 34 implementation("org.lwjgl", "lwjgl-opengl") 34 35 implementation("org.lwjgl", "lwjgl-jawt") 35 36 implementation("org.lwjgl", "lwjgl-glfw") 36 37 implementation("org.lwjgl", "lwjgl-tinyfd") 37 38 implementation("org.lwjgl", "lwjgl-assimp") 38 - 39 + 39 40 runtimeOnly("org.lwjgl:lwjgl::natives-windows") 40 41 runtimeOnly("org.lwjgl:lwjgl::natives-windows-arm64") 41 42 runtimeOnly("org.lwjgl:lwjgl::natives-macos") 42 43 runtimeOnly("org.lwjgl:lwjgl::natives-macos-arm64") 43 44 runtimeOnly("org.lwjgl:lwjgl::natives-linux") 44 45 runtimeOnly("org.lwjgl:lwjgl::natives-linux-arm64") 45 - 46 + 46 47 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-windows") 47 48 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-windows-arm64") 48 49 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-macos") 49 50 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-macos-arm64") 50 51 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-linux") 51 52 runtimeOnly("org.lwjgl:lwjgl-opengl::natives-linux-arm64") 52 - 53 + 53 54 runtimeOnly("org.lwjgl:lwjgl-glfw::natives-windows") 54 55 runtimeOnly("org.lwjgl:lwjgl-glfw::natives-windows-arm64") 55 56 runtimeOnly("org.lwjgl:lwjgl-glfw::natives-macos") ··· 63 64 runtimeOnly("org.lwjgl:lwjgl-tinyfd::natives-macos-arm64") 64 65 runtimeOnly("org.lwjgl:lwjgl-tinyfd::natives-linux") 65 66 runtimeOnly("org.lwjgl:lwjgl-tinyfd::natives-linux-arm64") 66 - 67 + 67 68 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-windows") 68 69 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-windows-arm64") 69 70 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-macos") 70 71 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-macos-arm64") 71 72 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-linux") 72 73 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-linux-arm64") 73 - 74 + 74 75 implementation("org.lwjglx:lwjgl3-awt:0.2.2") { 75 76 exclude(group = "org.lwjgl") // https://github.com/LWJGLX/lwjgl3-awt/issues/74 76 77 } 77 - 78 + 78 79 implementation("commons-io:commons-io:2.16.1") 79 80 implementation("org.apache.commons:commons-text:1.12.0") 80 81 implementation("org.apache.commons:commons-lang3:3.14.0") 81 - 82 + 82 83 implementation("com.miglayout:miglayout-core:11.3") 83 84 implementation("com.miglayout:miglayout-swing:11.3") 84 - 85 + 85 86 implementation("com.alexandriasoftware.swing:jsplitbutton:1.3.1") 86 87 implementation("com.alexdupre:pngj:2.1.2.1") 87 - 88 + 88 89 implementation("com.google.code.gson:gson:2.10.1") 89 90 implementation("org.yaml:snakeyaml:2.2") 90 - 91 + 91 92 implementation("com.formdev:flatlaf:3.4.1") 92 93 implementation("com.formdev:flatlaf-intellij-themes:3.4.1") 93 94 implementation("com.formdev:flatlaf-extras:3.4.1") 94 - 95 + 96 + implementation("com.github.Dansoftowner:jSystemThemeDetector:3.6") 97 + 95 98 implementation(files("lib/org.eclipse.cdt.core-5.11.0.jar")) 96 99 implementation(files("lib/org.eclipse.equinox.common-3.6.0.jar")) 97 - 100 + 98 101 implementation("org.ahocorasick:ahocorasick:0.6.3") 99 102 } 100 103 ··· 111 114 classpath = files() // use empty classpath since there are no dependencies 112 115 options.release.set(8) 113 116 } 114 - 117 + 115 118 val jarBoot = register<Jar>("jarBoot") { 116 119 dependsOn(compileBoot) 117 120 archiveBaseName.set("boot") ··· 120 123 } 121 124 from(bootBuildDir) 122 125 } 123 - 126 + 124 127 val compileApp = register<JavaCompile>("compileApp") { 125 128 source = fileTree("src/main/java") 126 129 destinationDirectory.set(appBuildDir.get().asFile) ··· 128 131 options.release.set(17) 129 132 options.compilerArgs.add("-Xlint:deprecation") 130 133 } 131 - 134 + 132 135 val jarApp = register<Jar>("jarApp") { 133 136 dependsOn(compileApp) 134 137 archiveBaseName.set("main-app") ··· 140 143 141 144 shadowJar { 142 145 dependsOn(jarBoot, jarApp) 143 - 146 + 144 147 from(bootBuildDir, appBuildDir) 145 - 148 + 146 149 mergeServiceFiles("META-INF/spring.*") 147 150 exclude("META-INF/*.SF") 148 151 exclude("META-INF/*.DSA") 149 152 exclude("META-INF/*.RSA") 150 153 exclude("META-INF/LICENSE") 151 154 archiveFileName.set("StarRod.jar") 152 - 155 + 153 156 manifest { 154 157 attributes["Main-Class"] = bootMain 155 158 attributes["App-Version"] = appVersion ··· 162 165 163 166 register<Zip>("createReleaseZip") { 164 167 dependsOn(clean, licenseReport, shadowJar) 165 - 168 + 166 169 group = "release" 167 170 description = "Create zip file for Star Rod release" 168 171 169 172 from(shadowJar.get().outputs.files) 170 - 173 + 171 174 from(file(licenseBuildDir)) { 172 175 into("licenses") 173 176 } 174 - 177 + 175 178 from(file("exec")) { 176 179 into("") 177 180 } 178 - 181 + 179 182 val versionTag = versioning.info.tag 180 183 val commitHash = versioning.info.build 181 184
+61
gradle/verification-metadata.xml
··· 86 86 <sha256 value="091fb40ae322934d42918b62bd4b0b32be3c604fe72f86e788501d44c90a5b00" origin="Generated by Gradle"/> 87 87 </artifact> 88 88 </component> 89 + <component group="com.github.Dansoftowner" name="jSystemThemeDetector" version="3.6"> 90 + <artifact name="jSystemThemeDetector-3.6.jar"> 91 + <sha256 value="9586e40eb3c71bbadf5d2364555fe4cd25c70cf6cca48d2ca065181ce3dbabed" origin="Generated by Gradle"/> 92 + </artifact> 93 + <artifact name="jSystemThemeDetector-3.6.pom"> 94 + <sha256 value="5d462f32da4f85f14644a848de326e4098d59a0e1a59395ece8845df62941b65" origin="Generated by Gradle"/> 95 + </artifact> 96 + </component> 89 97 <component group="com.github.johnrengelman" name="shadow" version="8.1.1"> 90 98 <artifact name="shadow-8.1.1.jar"> 91 99 <sha256 value="084197555590a53bb21b59508a3330559f536ddb448eafd1ec675f5462036fcf" origin="Generated by Gradle"/> ··· 97 105 <component group="com.github.johnrengelman.shadow" name="com.github.johnrengelman.shadow.gradle.plugin" version="8.1.1"> 98 106 <artifact name="com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom"> 99 107 <sha256 value="3cb3886b97df6e066f108c316b219f262c97c3cb2df6da78927e645deb643cb0" origin="Generated by Gradle"/> 108 + </artifact> 109 + </component> 110 + <component group="com.github.oshi" name="oshi-core" version="5.7.1"> 111 + <artifact name="oshi-core-5.7.1.jar"> 112 + <sha256 value="e7303b63a03d71c8f5acc087425b60fcb9ede170f45f844d92071fd489725cdc" origin="Generated by Gradle"/> 113 + </artifact> 114 + <artifact name="oshi-core-5.7.1.pom"> 115 + <sha256 value="0c1c500c7c97a87623f926e0b2f545ae32127d388527b01b1084c935b4483a69" origin="Generated by Gradle"/> 116 + </artifact> 117 + </component> 118 + <component group="com.github.oshi" name="oshi-parent" version="5.7.1"> 119 + <artifact name="oshi-parent-5.7.1.pom"> 120 + <sha256 value="41becf5b6ff5e5dd2e30ee5a432e637795960438f3fa5df17e7414a947945c89" origin="Generated by Gradle"/> 100 121 </artifact> 101 122 </component> 102 123 <component group="com.github.weisj" name="jsvg" version="1.4.0"> ··· 271 292 <sha256 value="5777d292251c7895c04a4c57015683ec3b353a12486c9b3e7178e9b0b3c38fff" origin="Generated by Gradle"/> 272 293 </artifact> 273 294 </component> 295 + <component group="de.jangassen" name="jfa" version="1.1.9"> 296 + <artifact name="jfa-1.1.9.jar"> 297 + <sha256 value="13ce1fe7fad6917b0181a6dbfe5b02072f90a479c8f966adf4f44f547566af89" origin="Generated by Gradle"/> 298 + </artifact> 299 + <artifact name="jfa-1.1.9.pom"> 300 + <sha256 value="3db66557689b5051c69f2dceb8f917c0da7cddfb9d022fe3f4d815f0d8f25ea9" origin="Generated by Gradle"/> 301 + </artifact> 302 + </component> 274 303 <component group="de.regnis.q.sequence" name="sequence-library" version="1.0.4"> 275 304 <artifact name="sequence-library-1.0.4.jar"> 276 305 <sha256 value="53079f6e7d8ba224a77387d9b7fa3ee8b36f9f482a2f186bee235474db0cd282" origin="Generated by Gradle"/> ··· 292 321 <sha256 value="eaa03c16956568d54a6ba437d49d40cbf0dd8e93977f984318242576b650bc3b" origin="Generated by Gradle"/> 293 322 </artifact> 294 323 </component> 324 + <component group="io.github.g00fy2" name="versioncompare" version="1.4.1"> 325 + <artifact name="versioncompare-1.4.1.jar"> 326 + <sha256 value="d26827bc70e3a6e070f5b728e2f84dbf0a29139b22181af6566e0c16f08d4465" origin="Generated by Gradle"/> 327 + </artifact> 328 + <artifact name="versioncompare-1.4.1.module"> 329 + <sha256 value="ac70288786a902e17909e62f7fb772ae421c460ab10e7200b5021f58e348136c" origin="Generated by Gradle"/> 330 + </artifact> 331 + </component> 295 332 <component group="io.netty" name="netty-bom" version="4.1.86.Final"> 296 333 <artifact name="netty-bom-4.1.86.Final.pom"> 297 334 <sha256 value="12716c1fe64cf5bdaa7044d37d13aae3a88821b91d4798420c46a74769178afd" origin="Generated by Gradle"/> ··· 323 360 <sha256 value="5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608" origin="Generated by Gradle"/> 324 361 </artifact> 325 362 </component> 363 + <component group="net.java.dev.jna" name="jna" version="5.8.0"> 364 + <artifact name="jna-5.8.0.jar"> 365 + <sha256 value="930273cc1c492f25661ea62413a6da3fd7f6e01bf1c4dcc0817fc8696a7b07ac" origin="Generated by Gradle"/> 366 + </artifact> 367 + <artifact name="jna-5.8.0.pom"> 368 + <sha256 value="5e53d8e637f93b83014e2302fb7e63fd7b83ab000a7f794aa340020ffb880d4a" origin="Generated by Gradle"/> 369 + </artifact> 370 + </component> 326 371 <component group="net.java.dev.jna" name="jna-platform" version="5.6.0"> 327 372 <artifact name="jna-platform-5.6.0.jar"> 328 373 <sha256 value="9ecea8bf2b1b39963939d18b70464eef60c508fed8820f9dcaba0c35518eabf7" origin="Generated by Gradle"/> 329 374 </artifact> 330 375 <artifact name="jna-platform-5.6.0.pom"> 331 376 <sha256 value="1beb35cb4184e6c906a7e32eaebd852dd3da0a263962e99134ab945832394e28" origin="Generated by Gradle"/> 377 + </artifact> 378 + </component> 379 + <component group="net.java.dev.jna" name="jna-platform" version="5.8.0"> 380 + <artifact name="jna-platform-5.8.0.jar"> 381 + <sha256 value="ffd93fe1bc07de6f33eabf3d051c3636e01a01c17cb0da8448c53a2ac5e3bf7a" origin="Generated by Gradle"/> 382 + </artifact> 383 + <artifact name="jna-platform-5.8.0.pom"> 384 + <sha256 value="6c00fa34f1d7c19e73821b7423a5e974b63b64ce30323d15a92a6b5e734613dd" origin="Generated by Gradle"/> 332 385 </artifact> 333 386 </component> 334 387 <component group="net.java.dev.jna" name="platform" version="3.4.0"> ··· 622 675 </artifact> 623 676 <artifact name="annotations-13.0.pom"> 624 677 <sha256 value="965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" origin="Generated by Gradle"/> 678 + </artifact> 679 + </component> 680 + <component group="org.jetbrains" name="annotations" version="19.0.0"> 681 + <artifact name="annotations-19.0.0.jar"> 682 + <sha256 value="12ff01eeaf0c09c6a68f2ec024b3bf9fa4cad6e68b74b968bf62c7f759047032" origin="Generated by Gradle"/> 683 + </artifact> 684 + <artifact name="annotations-19.0.0.pom"> 685 + <sha256 value="c8bf8cf6f84cc58d2df52f337e1008a87693a9becc5da14154df73a0dbd9513d" origin="Generated by Gradle"/> 625 686 </artifact> 626 687 </component> 627 688 <component group="org.jetbrains.kotlin" name="kotlin-bom" version="1.9.22">
+39 -5
src/main/java/app/Themes.java
··· 11 11 import java.util.jar.JarFile; 12 12 13 13 import javax.swing.UIManager; 14 + import javax.swing.SwingUtilities; 14 15 15 16 import org.apache.commons.text.WordUtils; 16 17 17 18 import com.formdev.flatlaf.IntelliJTheme; 19 + 20 + import com.jthemedetecor.OsThemeDetector; 18 21 19 22 import app.input.IOUtils; 20 23 import util.CaseInsensitiveMap; ··· 154 157 155 158 public static void setThemeByKey(String themeKey) 156 159 { 157 - if (themeKey == null || themeKey.isEmpty()) 158 - themeKey = DEFAULT_THEME.key; 160 + if (themeKey == null || themeKey.isEmpty()) { 161 + setSystemTheme(); 162 + return; 163 + } 159 164 160 165 if (currentTheme != null && themeKey.equalsIgnoreCase(currentTheme.key)) 161 166 return; ··· 164 169 setTheme(newTheme); 165 170 } 166 171 172 + private static boolean isSystem = false; 173 + 174 + public static void setSystemTheme() 175 + { 176 + isSystem = true; 177 + if (OsThemeDetector.getDetector().isDark()) 178 + setThemeByKey("macOS Dark"); 179 + else 180 + setThemeByKey("macOS Light"); 181 + } 182 + 183 + public static boolean isSystemTheme() 184 + { 185 + return isSystem; 186 + } 187 + 188 + private static void registerSystemThemeListener() 189 + { 190 + final OsThemeDetector detector = OsThemeDetector.getDetector(); 191 + detector.registerListener(isDark -> { 192 + if (isSystem) { 193 + SwingUtilities.invokeLater(() -> { 194 + setSystemTheme(); 195 + }); 196 + } 197 + }); 198 + } 199 + 167 200 private static void addCustomJarTheme(File file) 168 201 { 169 202 try (JarFile jar = new JarFile(file)) { ··· 200 233 static { 201 234 if (!Environment.isCommandLine()) { 202 235 // @formatter:off 203 - DEFAULT_THEME = Theme.createBuiltIn("Flat Dark", "com.formdev.flatlaf.FlatDarkLaf"); 236 + DEFAULT_THEME = Theme.createBuiltIn("Flat Light", "com.formdev.flatlaf.FlatLightLaf"); 204 237 addTheme(DEFAULT_THEME); 205 - 206 - addTheme(Theme.createBuiltIn("Flat Light", "com.formdev.flatlaf.FlatLightLaf")); 238 + addTheme(Theme.createBuiltIn("Flat Dark", "com.formdev.flatlaf.FlatDarkLaf")); 239 + addTheme(Theme.createBuiltIn("macOS Light", "com.formdev.flatlaf.themes.FlatMacLightLaf")); 240 + addTheme(Theme.createBuiltIn("macOS Dark", "com.formdev.flatlaf.themes.FlatMacDarkLaf")); 207 241 addTheme(Theme.createBuiltIn("Arc Light", "com.formdev.flatlaf.intellijthemes.FlatArcIJTheme")); 208 242 addTheme(Theme.createBuiltIn("Arc Light Orange", "com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme")); 209 243 addTheme(Theme.createBuiltIn("Arc Dark", "com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme"));