Code Monkey home page Code Monkey logo

gkraken's Introduction

⚠ Project deprecated

This project is now deprecated in favor of Coolero. If you are still using GKraken, you are strongly advised to migrate to Coolero.
No new development is planned for GKraken and I do not own a Kraken device anymore, so I won't be able to provide even bug fixes.

GKraken

GKraken is a GTK application that allows you to control the following AIO liquid coolers:

Device Pump Fan Lighting
NZXT Kraken X40, X60, X31, X41, X51, X61 ✔️L ✔️L ✔️L
NZXT Kraken X42, X52, X62, X72
NZXT Kraken X53, X63, X73
NZXT Kraken Z53, Z63, Z73

L Limited functionality offered by legacy Kraken models

Table of contents

Screenshots

Video

Click here to see a short video of the application.

📦 How to get GKraken

Install from Flathub

This is the preferred way to get GKraken on any major distribution (Arch, Fedora, Linux Mint, openSUSE, Ubuntu, etc).

If you don't have Flatpak installed you can find step by step instructions here.

Make sure to have the Flathub remote added to the current user:

flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Install

flatpak --user install flathub com.leinardi.gkraken

Run

flatpak run com.leinardi.gkraken

Install from source code

Build time dependencies

Distro pkg-config Python 3.6+ gobject-introspection meson ninja-build appstream-util libusb-1.0-0 libudev
Arch Linux pkg-config python gobject-introspection meson ninja appstream-glib libusb libudev0
Fedora pkgconf-pkg-config python3 gobject-introspection-devel meson ninja-build appstream-util libusbx-devel libudev-devel
Ubuntu pkg-config python3 libgirepository1.0-dev meson ninja-build appstream-util libusb-1.0-0-dev libudev-dev

Run time dependencies

Distro Python 3.6+ pip gobject-introspection libappindicator gnome-shell-extension-appindicator
Arch Linux python python-pip gobject-introspection libappindicator3 gnome-shell-extension-appindicator
Fedora python3 python3-pip gobject-introspection-devel libappindicator-gtk3 gnome-shell-extension-appindicator
Ubuntu python3 python3-pip libgirepository1.0-dev gir1.2-appindicator3-0.1 gnome-shell-extension-appindicator

plus all the Python dependencies listed in requirements.txt

Clone project and install

If you have not installed GKraken yet:

git clone --recurse-submodules -j4 https://gitlab.com/leinardi/gkraken.git
cd gkraken
git checkout release
sudo -H pip3 install -r requirements.txt
meson . build --prefix /usr
ninja -v -C build
sudo ninja -v -C build install

Update old installation

If you installed GKraken from source code previously and you want to update it:

cd gkraken
git fetch
git checkout release
git reset --hard origin/release
git submodule init
git submodule update
sudo -H pip3 install -r requirements.txt
meson . build --prefix /usr
ninja -v -C build
sudo ninja -v -C build install

Run

Once installed, to start it you can simply execute on a terminal:

gkraken

Running the app

You can run the app from the desktop launcher or use the terminal:
Run the command gkraken if installed from source, or if installed with flatpak flatpak run com.leinardi.gkraken.

The app needs to access the USB interface of the Kraken that, normally, is not available to unprivileged users.

To allow normal users to access the Kraken's USB interface you can create a custom udev rule

Adding Udev rule

Using GKraken

Simply run:

gkraken --add-udev-rule

or with flatpak:

flatpak run com.leinardi.gkraken --add-udev-rule

It will automatically refresh also the udev rules. In some cases though, you may need to restart for the changes to take effect

Manually

Create a new file in /lib/udev/rules.d/60-gkraken.rules containing this text:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1e71", ATTRS{idProduct}=="170e", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1e71", ATTRS{idProduct}=="2007", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1e71", ATTRS{idProduct}=="3008", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2433", ATTRS{idProduct}=="b200", MODE="0666"

After that, run the following commands

sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=usb --attr-match=idVendor=1e71 --action=add
sudo udevadm trigger --subsystem-match=usb --attr-match=idVendor=2433 --action=add

Command line options

Parameter Description Source Flatpak
-v, --version Show the app version x x
--debug Show debug messages x x
--hide-window Start with the main window hidden x x
--add-udev-rule Add udev rule to allow execution without root permission x x
--remove-udev-rule Remove udev rule that allow execution without root permission x x
--autostart-on Enable automatic start of the app on login x
--autostart-off Disable automatic start of the app on login x

🖥 Building Flatpak

If you don't have Flatpak installed you can find step by step instructions here.

Make sure to have the Flathub remote added to the current user:

flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Clone the repo

git clone --recurse-submodules -j4 https://gitlab.com/leinardi/gkraken.git

It is possible to build the local source or the remote one (the same that Flathub uses)

Local repository

./build.sh --flatpak-local --flatpak-install

Remote repository

./build.sh --flatpak-remote --flatpak-install

Run

flatpak run com.leinardi.gkraken --debug

Testing

To run the tests install the test dependencies:

pip install -r test-requirements.txt

and run from the project directory:

pytest

To check the Linters run from the project directory:

mypy gkraken
pylint gkraken

❓ FAQ

The Flatpak version of GKraken is not using my theme, how can I fix it?

To fix this issue install a Gtk theme from Flathub. This way, Flatpak applications will automatically pick the installed Gtk theme and use that instead of Adwaita.

Use this command to get a list of all the available Gtk themes on Flathub:

flatpak --user remote-ls flathub | grep org.gtk.Gtk3theme

And then just install your preferred theme. For example, to install Yaru:

flatpak install flathub org.gtk.Gtk3theme.Yaru

Where are the settings and profiles stored on the filesystem?

Installation type Location
Flatpak $HOME/.var/app/com.leinardi.gkraken/
Source code $XDG_CONFIG_HOME (usually $HOME/.config/gkraken)

⚠ Dropped PyPI support

Production builds were previously distributed using PyPI. This way of distributing the software is simple but requires the user to manually install all the non Python dependencies like cairo, glib, appindicator3, etc.
A solution for all this problems is distributing the app via Flatpak, since with it all the dependencies will be bundled and provided automatically, making possible to use new GTK features also on distributions using an older version of Gnome.

No new build will be published on PyPI.

Uninstall pip version

If you have already installed GKraken via pip, please make sure to uninstall it completely before moving to a newer version:

pip3 uninstall gkraken
rm -rf ~/.config/gkraken

💚 How to help the project

Discord server

If you want to help testing or developing it would be easier to get in touch using the Discord server of the project: https://discord.gg/Q33n3UC
Just write a message on the general channel saying how you want to help (test, dev, etc) and quoting @leinardi. If you don't use discor but still want to help just open a new issue here.

Can I support this project some other way?

Something simple that everyone can do is to star it on both GitLab and GitHub. Feedback is always welcome: if you found a bug or would like to suggest a feature, feel free to open an issue on the issue tracker.

ℹ️ Acknowledgements

Thanks to:

  • Jonas Malaco for the liquidctl CLI library
  • @codifryed for adding support of many new Kraken devices!

License

This file is part of gkraken.

Copyright (c) 2021 Roberto Leinardi and Guy Boldon

gkraken is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

gkraken is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with gkraken.  If not, see <http://www.gnu.org/licenses/>.

gkraken's People

Contributors

codifryed avatar cogitri avatar colinharrington avatar leinardi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.