# `fancontrol-gui`
A GUI for `fancontrol` which is part of `lm_sensors` https://github.com/lm-sensors/lm-sensors. It uses the KAuth module of KDE Frameworks 5 to write the generated config file. Furthermore, it communicates with SystemD via DBus to control the `fancontrol` service.
KAuth currently doesn't support install prefixes other than where KAuth itself was installed. If you want to use another install prefix, you have to run the application as root or another user with the necessary privileges to avoid the KAuth helper.
If you want to avoid authorizing yourself when using the helper you can set the option `-DINSTALL_POLKIT=true`. This will install a Polkit rules file allowing members of the group '`fancontrol`' to edit the config file and manipulate the SystemD service. You can change the group name with the `-DPOLKIT_GROUP_NAME` option. Service name and config file can be set with the options `-DSTANDARD_SERVICE_NAME` and `-DSTANDARD_CONFIG_FILE`.
If you want to compile without SystemD support set the option `-DNO_SYSTEMD=true`.
If your distro looks for QML plugins in `/usr/lib/qt/qml` instead of `/usr/lib/qml` you need to set the option `-DKDE_INSTALL_USE_QT_SYS_PATHS=true`.
To compile the additional KCM set the CMake option `-DBUILD_KCM=on`. The KCM is only built, if the `-DNO_SYSTEMD` option is unset or set to false.
To compile the additional KDE Plasma plasmoid set the CMake option `-DBUILD_PLASMOID=on`.
# Screenshots
>    
# Build Requirements
Qt5
Base/Core
Widgets
Gui
QML
KF5
I18n
Auth
Config
Package
Declarative
CoreAddons
DBusAddons
Extra-Cmake-Modules
Notifications
Other
C++ compiler
Gettext
CMake
## Additional Runtime Requirements
Qt5
BQuick 2.6
QuickControls2 2.1
QuickLayouts 1.2
QuickDialogs 1.2
KF5
Kirigami2 2.3
## Additional Requirements for KCM
KF5
KCMUtils
## Additional Requirements for Plasmoid
KF5
Plasma
## Commands to Install Requirements
### Debian/Ubuntu Command to Install the Compilation Requirements
```sh
sudo apt-get install ca-certificates git build-essential cmake gcc g++ libkf5config-dev libkf5auth-dev libkf5package-dev libkf5declarative-dev libkf5coreaddons-dev libkf5dbusaddons-dev libkf5kcmutils-dev libkf5i18n-dev libkf5plasma-dev libqt5core5a libqt5widgets5 libqt5gui5 libqt5qml5 extra-cmake-modules qtbase5-dev libkf5notifications-dev qml-module-org-kde-kirigami2 qml-module-qtquick-dialogs qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel gettext
```
> [!NOTE]
> This was tested on `Ubuntu 20.04.1 LTS`, `Ubuntu 24.04 LTS` and `Debian 10`.
### Fedora
```sh
sudo dnf install git gcc g++ cmake kf5-ki18n-devel kf5-kauth-devel kf5-kconfig-devel kf5-kpackage-devel kf5-kcoreaddons-devel kf5-kdbusaddons-devel extra-cmake-modules kf5-knotifications-devel qt5-qtquickcontrols2-devel kf5-kconfigwidgets-devel kf5-kcmutils-devel kf5-plasma-devel cmake gettext qt5-qtbase-devel gcc-c++ kf5-kdeclarative-devel qt5-qtquickcontrols qt5-qtquickcontrols2
```
> [!NOTE]
> This was tested on `Fedora 33`.
### Nix
This repository offers a nix flake:
```sh
nix develop
nix build
```
# Installation
```sh
git clone https://github.com/Maldela/fancontrol-gui.git
cd fancontrol-gui
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_KCM=on -DBUILD_PLASMOID=on
make -j
sudo make install
```
## Nix
This repository offers a home-manager module or alternatively the package itself.
Add this repository to your inputs.
```nix
fancontrol-gui.url = "github:Maldela/fancontrol-gui";
```
Enable the home-manager module.
```nix
inputs.fancontrol-gui.homeManagerModules.default
```
And add fancontrol-gui to your enabled programs.
```nix
programs.fancontrol-gui.enable = true;
```
# Uninstallation
```sh
cd fancontrol-gui/build
sudo make uninstall
```