@@ -51,7 +51,6 @@ import androidx.compose.animation.shrinkVertically
|
|||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import shirkneko.zako.sukisu.ui.theme.CardConfig
|
import shirkneko.zako.sukisu.ui.theme.CardConfig
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import shirkneko.zako.sukisu.ui.util.KernelConfigUtils.isKpmEnabled
|
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Destination<RootGraph>(start = true)
|
@Destination<RootGraph>(start = true)
|
||||||
@@ -156,11 +155,10 @@ fun HomeScreen(navigator: DestinationsNavigator) {
|
|||||||
}
|
}
|
||||||
InfoCard()
|
InfoCard()
|
||||||
if (!isSimpleMode) {
|
if (!isSimpleMode) {
|
||||||
|
ContributionCard()
|
||||||
DonateCard()
|
DonateCard()
|
||||||
LearnMoreCard()
|
LearnMoreCard()
|
||||||
ContributionCard()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(Modifier)
|
Spacer(Modifier)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -351,7 +349,6 @@ private fun StatusCard(
|
|||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(4.dp))
|
Spacer(modifier = Modifier.height(4.dp))
|
||||||
|
|
||||||
if (isKpmEnabled()) {
|
|
||||||
val kpmVersion = getKpmVersion()
|
val kpmVersion = getKpmVersion()
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.home_kpm_version, kpmVersion),
|
text = stringResource(R.string.home_kpm_version, kpmVersion),
|
||||||
@@ -359,7 +356,6 @@ private fun StatusCard(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
kernelVersion.isGKI() -> {
|
kernelVersion.isGKI() -> {
|
||||||
Icon(Icons.Outlined.Warning, stringResource(R.string.home_not_installed))
|
Icon(Icons.Outlined.Warning, stringResource(R.string.home_not_installed))
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package shirkneko.zako.sukisu.ui.util
|
|
||||||
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
object KernelConfigUtils {
|
|
||||||
|
|
||||||
fun isKpmEnabled(): Boolean {
|
|
||||||
return try {
|
|
||||||
val config = File("/proc/config.gz").readText()
|
|
||||||
config.contains("CONFIG_KPM=y")
|
|
||||||
} catch (e: Exception) {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -70,6 +70,9 @@ int main(int argc, char *argv[]) {
|
|||||||
if (strcmp(argv[1], "load") == 0 && argc >= 3) {
|
if (strcmp(argv[1], "load") == 0 && argc >= 3) {
|
||||||
// 加载 KPM 模块
|
// 加载 KPM 模块
|
||||||
ret = prctl(KSU_OPTIONS, CONTROL_CODE(SUKISU_KPM_LOAD), argv[2], (argc > 3 ? argv[3] : NULL), &out);
|
ret = prctl(KSU_OPTIONS, CONTROL_CODE(SUKISU_KPM_LOAD), argv[2], (argc > 3 ? argv[3] : NULL), &out);
|
||||||
|
if(out == 0) {
|
||||||
|
printf("Success");
|
||||||
|
}
|
||||||
} else if (strcmp(argv[1], "unload") == 0 && argc >= 3) {
|
} else if (strcmp(argv[1], "unload") == 0 && argc >= 3) {
|
||||||
// 卸载 KPM 模块
|
// 卸载 KPM 模块
|
||||||
ret = prctl(KSU_OPTIONS, CONTROL_CODE(SUKISU_KPM_UNLOAD), argv[2], NULL, &out);
|
ret = prctl(KSU_OPTIONS, CONTROL_CODE(SUKISU_KPM_UNLOAD), argv[2], NULL, &out);
|
||||||
|
|||||||
Reference in New Issue
Block a user