Roberto Leinardi / GreenWithEnvy · GitLab

GreenWithEnvy

GreenWithEnvy Archived

Project ID: 10152670

Project information

System utility designed to provide information, control the fans and overclock your NVIDIA card

Created on

December 31, 2018

Select Git revision

  • Selected
  • release default protected
  • Branches 6
  • master protected
  • mr-origin-80
  • leinardi-release-patch-18488
  • feature/#120-power-monitoring
  • feature/#45-multi-gpu-support
  • feature/snap
  • Tags 20
  • 0.15.9
  • 0.15.8
  • 0.15.7
  • 0.15.6
  • 0.15.5
  • 0.15.4
  • 0.15.3
  • 0.15.2
  • 0.15.1
  • 0.15.0
  • 0.14.1
  • 0.14.0
  • 0.13.3
  • 0.13.0
  • 0.12.3
  • 0.12.2
  • 0.12.1
  • 0.12.0
  • 0.11.0
  • 0.10.3

27 results

  1. gwe
    • Clone with SSH
    • Clone with HTTPS
  • Open with

  • Download source code

  • Your workspaces
    A workspace is a virtual sandbox environment for your code in GitLab.
    No agents available to create workspaces. Please consult Workspaces documentation for troubleshooting.

Roberto Leinardi's avatar

Roberto Leinardi authored 1 month ago

5caee799

Roberto Leinardi's avatar5caee799 1 month ago

Name Last commit Last update
.gitlab/issue_templates Fixed wrong branch on app data 5 years ago
.idea Added nix-shell development support and started docker support 1 year ago
.pycharm Fix #34: Graph max sample based on refresh interval 6 years ago
art Release 0.11.0 6 years ago
bin Added nix-shell development support and started docker support 1 year ago
data Prepare for release 0.15.9 1 year ago
gwe Prepare for release 0.15.9 1 year ago
scripts Improved build script 6 years ago
flatpak @ 7eba6134 Update flatpak submodule 1 month ago
.gitignore Updated dependencies 5 years ago
.gitmodules Removing python-xlib submodule 5 years ago
CHANGELOG.md Prepare for release 0.15.9 1 year ago
CODE_OF_CONDUCT.md Initial commit 6 years ago
CONTRIBUTING.md Mark GWE as unmaintained (EOL) 1 month ago
COPYING.txt Initial commit 6 years ago
Dockerfile Added nix-shell development support and started docker support 1 year ago
README.md Mark GWE as unmaintained (EOL) 1 month ago
RELEASING.md Prepare for release 0.15.5 3 years ago
build.sh Added nix-shell development support and started docker support 1 year ago
flatpak_run.sh Added nix-shell development support and started docker support 1 year ago
meson.build Removed unnecessary meson dependency check 5 years ago
mypy.ini Initial commit 6 years ago
pylintrc Fixed several PyLint and Mypy issues 6 years ago
requirements.txt Prepare for release 0.15.7 1 year ago
run.sh Added nix-shell development support and started docker support 1 year ago
shell.nix Added nix-shell development support and started docker support 1 year ago

GreenWithEnvy (GWE)archived

⚠️ Archived / Unmaintained

GreenWithEnvy (GWE) is no longer actively maintained.

  • I can't run or test GWE anymore after switching my GPU from NVIDIA to AMD.
  • Due to limited free time, I'm unable to review, test, or merge contributions in good faith.

If you'd like to continue development:

  1. Fork this repository and publish your own maintained version.
  2. Use a new identifier that doesn't reference me personally:
    • Git hosting: publish under your namespace or a dedicated organization (not under leinardi).
    • Flatpak / Flathub: use a new App ID (e.g., io.github.<yourname>.GWE or an org-owned ID), not com.leinardi.gwe.

I'll keep this repository archived/read-only for historical reference. Thank you to everyone who used, tested, or contributed to GWE over the years. 💚


About (historical)GWE is/was a GTK system utility designed to provide information, control the fans and overclock your NVIDIA video card and graphics processor.

Note: The information below is preserved for reference. It may be outdated and is not supported.

💡 Features

  • Show general GPU stats (model name, driver version, gpu/memory/power usage, clocks, temps, etc)
  • GPU and Memory overclock offset profiles
  • Custom Fan curve profiles
  • Change power limit
  • Historical data graphs

📦 How to get GWEIf you don't like to reading manuals and/or you don't know what the Nvidia CoolBits are, you can watch the following How To made by Intelligent Gaming:

How To Overclock And Control Fans On An nVidia Graphic Card In Linux - Green With Envy / GWE

Install from FlathubThis is the preferred way to get GWE 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.gwe
flatpak update # needed to be sure to have the latest org.freedesktop.Platform.GL.nvidia


#### Run```
flatpak run com.leinardi.gwe

⚠️ Flatpak limitations##### Beta DriversCurrently Flatpak does not support Nvidia Beta drivers like 396.54.09 or 415.22.05.

Bumblebee and OptimusCurrently Flatpak does not support Bumblebee. If you want to use GWE with Bumblebee you need to install it from the source code.

Distro specific packages#### Arch LinuxInstall the gwe package from the AUR using your favourite helper, for example yay -S gwe.

FedoraGWE avaliable in official Fedora repos for F31+: sudo dnf install gwe

For older Fedora releases you can use COPR package: sudo dnf copr enable atim/gwe -y && sudo dnf install gwe

Install from source code#### Build time dependencies| Distro | pkg-config | Python 3.6+ | gobject-introspection | meson | ninja-build | appstream-util |

| --- | --- | --- | --- | --- | --- | --- |
| Arch Linux | pkg-config | python | gobject-introspection | meson | ninja | appstream-glib |
| Fedora | pkgconf-pkg-config | python3-devel | gobject-introspection-devel | meson | ninja-build | appstream-util |
| OpenSUSE | pkgconf-pkg-config | python3-devel | gobject-introspection-devel | meson | ninja-build | appstream-glib |
| Ubuntu | pkg-config | python3-dev | libgirepository1.0-dev | meson | ninja-build | appstream-util |

Arch Linux:

sudo pacman -S pkg-config python gobject-introspection meson ninja appstream-glib

Fedora:

sudo dnf install pkgconf-pkg-config python3-devel gobject-introspection-devel meson ninja-build appstream-util

OpenSUSE:

sudo zypper install pkgconf-pkg-config python3-devel gobject-introspection-devel meson ninja-build appstream-glib

Ubuntu/Debian:

sudo apt install pkg-config python3-dev libgirepository1.0-dev meson ninja-build appstream-util

Run time dependencies| Distro | Python 3.6+ | pip | gobject-introspection | libappindicator | gnome-shell-extension-appindicator | libdazzle |

| --- | --- | --- | --- | --- | --- | --- |
| Arch Linux | python | python-pip | gobject-introspection | libappindicator3 | gnome-shell-extension-appindicator | libdazzle |
| Fedora | python3 | python3-pip | gobject-introspection-devel | libappindicator-gtk3 | gnome-shell-extension-appindicator | libdazzle |
| OpenSUSE | python3 | python3-pip | gobject-introspection | libappindicator3-1 | gnome-shell-extension-appindicator | typelib-1_0-libdazzle-1_0 |
| Ubuntu | python3 | python3-pip | libgirepository1.0-dev | gir1.2-appindicator3-0.1 | gnome-shell-extension-appindicator | libdazzle-1.0-dev |
| Debian | python3 | python3-pip | libgirepository1.0-dev | gir1.2-ayatanaappindicator3-0.1 | gnome-shell-extension-appindicator | libdazzle-1.0-dev |
| [comment]: <> (TODO: confirm if only debian and only KDE-Plasma. Might affect more systems and Desktop Environments) | | | | | | |

Arch Linux:

sudo pacman -S python python-pip gobject-introspection libappindicator3 gnome-shell-extension-appindicator libdazzle

Fedora:

sudo dnf install python3 python3-pip gobject-introspection-devel libappindicator-gtk3 gnome-shell-extension-appindicator libdazzle

OpenSUSE:

sudo zypper install python3 python3-pip gobject-introspection libappindicator3-1 gnome-shell-extension-appindicator typelib-1_0-libdazzle-1_0

Ubuntu:

sudo apt install python3 python3-pip libgirepository1.0-dev gir1.2-appindicator3-0.1 gnome-shell-extension-appindicator libdazzle-1.0-dev

Debian:

sudo apt install python3 python3-pip libgirepository1.0-dev gir1.2-ayatanaappindicator3-0.1 gnome-shell-extension-appindicator libdazzle-1.0-dev

plus all the Python dependencies listed in requirements.txt

For Debian (with KDE-Plasma) we have to use --break-system-packages. However, this will break things. Currently only matplotlib. Then we have to use sudo pip3 uninstall matplotlib and then sudo apt reinstall python3-matplotlib

git clone --recurse-submodules -j4 https://gitlab.com/leinardi/gwe.git
cd gwe
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 installationIf you installed GWE from source code previously and you want to update it:

cd gwe
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

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

gwe

⚠️ Bumblebee and OptimusIf you want to use GWE with Bumblebee you need to start it with optirun and set the --ctrl-display parameter to :8:

optirun gwe --ctrl-display ":8"

ℹ️ TODO- [x] Show general GPU info

  • Show power info
  • Show clocks info
  • Show GPU temp in both app and app indicator
  • Show fan info
  • Allow to hide main app window
  • Add command line option to start the app hidden
  • Add Refresh timeout to settings
  • Add command line option to add desktop entry
  • About dialog
  • Distributing with PyPI
  • Show chart of selected fan profile
  • Allow to select and apply a fan profile
  • Add/Delete/Edit multi speed fan profiles (fan curve)
  • Add option to restore last applied fan profile on app startup
  • Find better icons for app indicator
  • Try to lower resource consumption (mostly caused by nvidia-settings invocations)
  • Show historical data of most important values in a separate dialog (requires GTK 3.24/GNOME 3.30)
  • Add overclock profiles
  • Add option to restore last applied overclock profile on app startup
  • Disable unsupported preferences
  • Distributing with Flatpak
  • Publishing on Flathub
  • Distributing with Snap
  • Check if NV-CONTROL is available and tell the user if is not
  • Add support for multi-GPU
  • Allow to select profiles from app indicator
  • Add support for i18n (internationalization and localization)

⌨️ 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 |
| --ctrl-display DISPLAY | Specify the NV-CONTROL display | x | x |
| --autostart-on | Enable automatic start of the app on login | x | |
| --autostart-off | Disable automatic start of the app on login | x | |

🖥️ Build, install and run with FlatpakIf 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/gwe.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.gwe --debug

❓ FAQ### I see some message about CoolBits in the Overclock/Fan profile section, what's that?Coolbits was a Windows registry hack for Nvidia graphics cards Windows drivers, that allows tweaking features via the Nvidia driver control panel. Something similar is available also on Linux and is the only way to enable Overclock and manual Fan control. To know more about Coolbits and how to enable them click here (to enable both OC and Fan control you need to set it to 12).

Can I make the power limit survive a reboot?GWE cannot set the power limit automatically because, to change this value, root permission is required.

If your distribution is using systemd, you can easily set the power limit on boot creating a custom service.

Simply create a new file /etc/systemd/system/nvidia-tdp.timer and paste the following text inside:

[Unit]
Description=Set NVIDIA power limit on boot

[Timer]
OnBootSec=5

[Install]
WantedBy=timers.target

Then create another file /etc/systemd/system/nvidia-tdp.service and paste the following text inside (replace XXX with the power limit value you want to set):

[Unit]
Description=Set NVIDIA power limit

[Service]
Type=oneshot
ExecStartPre=/usr/bin/nvidia-smi -pm 1
ExecStart=/usr/bin/nvidia-smi -pl XXX

Finally, run the following command:

sudo systemctl enable nvidia-tdp.timer

The Flatpak version of GWE 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

I have installed the app using Flatpak, but all the GWE fields are emptyThis issue can be usually solved by closing GWE, executing flatpak update and starting GWE again. This is necessary to be sure to have the latest org.freedesktop.Platform.GL.nvidia. If, after the update, all the fields are still empty, feel free to open a new issue on the project tracker.

Why the memory overclock offsets effectively applied does not match the one set in the Nvidia Settings app?Because Memory Transfer Rate, what Nvidia Settings reports and changes, is different from the effective Memory Clock, what is actually being displayed by GWE. It is also what other Windows applications like MSI Afterburner show. The Memory Transfer Rate is simply double the Memory Clock.

Where are the settings and profiles stored on the filesystem?| Installation type | Location |

| --- | --- |
| Flatpak | $HOME/.var/app/com.leinardi.gwe/ |
| Source code | $XDG_CONFIG_HOME (usually $HOME/.config/gwe) |

GreenWithEnvy, why using such name?The name comes from the slogan of the GeForce 8 series, that was "Green with envy". Nvidia is meant to be pronounced "invidia", which means envy in Latin (and Italian). And their logo is green so, GreenWithEnvy

💚 How to help the project### Help is needed for the following topics- Snap (see #18)

  • Getting current GTK theme text color (see #36)
  • Making Bumblebee work with Flatpak (see #35 (closed))

Discord serverIf 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/xBybdRt 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.

⚠️ Dropped PyPI supportDevelopment 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. The current implementation of the historical data uses a new library, Dazzle, that requires Gnome 3.30 which is available, using Python Object introspection, only starting from Ubuntu 18.10 making the latest Ubuntu LTS, 18.04, unsupported. 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 Gnome 3.30 features also on distributions using an older version of Gnome.

No new build will be published on PyPI.

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

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

ℹ️ AcknowledgementsThanks to:

  • GabMus and TingPing for the huge help with Flatpak
  • @999eagle for maintaining the AUR package
  • @tim74 for maintaining the COPR package
  • Lighty for moderating the Discord server
  • fbcotter for the py3nvml library
  • all the devs of the python-xlib library
  • tiheum for the Faenza icons set, from which I took the current GWE launcher icon
  • all the people that helped testing and reported bugs

📰 Media coverage- OMG! Ubuntu 🇬🇧

📝 License```

This file is part of gwe.

Copyright (c) 2019 Roberto Leinardi

gwe 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.

gwe 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 gwe. If not, see http://www.gnu.org/licenses/.