diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..74e64b4 --- /dev/null +++ b/README.MD @@ -0,0 +1,119 @@ + +### Intro + +Fedora Kernel Manager is a rust written libadwaita app that allows installing/uninstalling kernel packages from "Kernel Branch Providers" + +These kernel branches are json files in ```/usr/lib/fedora-kernel-manager/kernel_branches/``` + +## Example of Kernel Branch + +```xpath +/usr/lib/fedora-kernel-manager/kernel_branches/kernel-cachyos.json +``` +```json +{ + "name": "kernel-cachyos", + "db_url": "https://raw.githubusercontent.com/sirlucjan/copr-linux-cachyos/master/sources/cachyos-fkm-config/db_kernel_cachy.json", + "init_script": "pkexec /usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh" +} +``` + +`name` obviously refers to branch name shown to users + +`db_url` the url to this branch DB that gets downloaded at run time when users open the app + +`init_script` a command to run upon reading the branch json usually this has a repo check and repo addition with policykit rule to not ask for a password + +See: + +```xpath +/usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh +``` +```bash +#!/bin/bash + +YUM_CHANGED=false +KERNEL_CACHYOS_REPO_FILE='/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos.repo' +KERNEL_CACHYOS_ADDONS_REPO_FILE='/etc/yum.repos.d/_copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos-addons.repo' + +if [ ! -f $KERNEL_CACHYOS_REPO_FILE ] +then + wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-fedora-$(rpm -E %fedora).repo -O $KERNEL_CACHYOS_REPO_FILE + YUM_CHANGED=true +fi + +if [ ! -f $KERNEL_CACHYOS_ADDONS_REPO_FILE ] +then + wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo -O $KERNEL_CACHYOS_ADDONS_REPO_FILE + YUM_CHANGED=true +fi +if [ YUM_CHANGED == true ] +then + dnf repoquery +fi +``` + +### Kernel Branch DB +This is the json file the db_url references, it is not to be packaged only hosted and maintained by the kernel branch providers + +## Example of Kernel Branch DB + +```xpath +https://raw.githubusercontent.com/sirlucjan/copr-linux-cachyos/master/sources/cachyos-fkm-config/db_kernel_cachy.json +``` +```json +{ + "latest_kernel_version_deter_pkg": "kernel-cachyos", + "kernels": [ + { + "name": "CachyOS Default Kernel", + "main_package": "kernel-cachyos", + "packages": "kernel-cachyos kernel-cachyos-devel-matched", + "min_x86_march": "3" + }, + { + "name": "CachyOS LTS Kernel", + "main_package": "kernel-cachyos-lts", + "packages": "kernel-cachyos-lts kernel-cachyos-lts-devel-matched", + "min_x86_march": "2" + }, + { + "name": "Sched EXT SCX", + "main_package": "sched-ext-scx", + "packages": "sched-ext-scx", + "min_x86_march": "1" + }, + { + "name": "UKSMD Daemon", + "main_package": "uksmd", + "packages": "uksmd", + "min_x86_march": "1" + }, + { + "name": "CachyOS-Settings", + "main_package": "cachyos-settings", + "packages": "cachyos-settings", + "min_x86_march": "1" + }, + { + "name": "Ananicy-CPP", + "main_package": "ananicy-cpp", + "packages": "ananicy-cpp", + "min_x86_march": "1" + } + ] +} +``` + + +`latest_kernel_version_deter_pkg` The kernel manager informs the user of what is the latest version hosted by their selected branch. +This is done by reading the version of the rpm package set in this json value. + +`kernels` The array where the branch provider input all the "Kernels"/Packages to be shown to the user each should have the following values: + +* `name` The Pretty name of the package. +* `main_package` The primary package (only 1) of entry it is used to get the description and version of the entry. +* `packages` One or more package, it refers to what actually gets installed and removed. +* `min_x86_march` The minimum x86 micro-architecture needed, if the user has `x86-64-v3` and this value is set to `4` the entry will not be displayed to the user. + +### GUI \ No newline at end of file diff --git a/assets/branch_select.png b/assets/branch_select.png new file mode 100644 index 0000000..8c3b8e6 Binary files /dev/null and b/assets/branch_select.png differ diff --git a/assets/kernel_install.png b/assets/kernel_install.png new file mode 100644 index 0000000..f8d93db Binary files /dev/null and b/assets/kernel_install.png differ diff --git a/assets/main_page.png b/assets/main_page.png new file mode 100644 index 0000000..1022da4 Binary files /dev/null and b/assets/main_page.png differ diff --git a/assets/scx_select.png b/assets/scx_select.png new file mode 100644 index 0000000..ba39bcb Binary files /dev/null and b/assets/scx_select.png differ