{"id":13765090,"url":"https://github.com/leinardi/gwe","last_synced_at":"2025-04-07T11:05:33.835Z","repository":{"id":46298888,"uuid":"163732932","full_name":"leinardi/gwe","owner":"leinardi","description":"WARNING: This is a mirror of the GitLab repository. Please go there to open new issues or Pull Requests.","archived":false,"fork":false,"pushed_at":"2025-03-20T23:29:43.000Z","size":1855,"stargazers_count":96,"open_issues_count":1,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T22:36:14.387Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitlab.com/leinardi/gwe","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leinardi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-01T11:50:28.000Z","updated_at":"2025-01-28T21:00:22.000Z","dependencies_parsed_at":"2024-10-26T19:31:34.824Z","dependency_job_id":"d9e829f6-7531-4e72-9cfd-82224cb324bf","html_url":"https://github.com/leinardi/gwe","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leinardi%2Fgwe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leinardi%2Fgwe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leinardi%2Fgwe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leinardi%2Fgwe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leinardi","download_url":"https://codeload.github.com/leinardi/gwe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640463,"owners_count":20971557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T16:00:33.803Z","updated_at":"2025-04-07T11:05:33.818Z","avatar_url":"https://github.com/leinardi.png","language":"Python","readme":"# GreenWithEnvy (GWE)\nGWE is a GTK system utility designed to provide information, control the fans and overclock your NVIDIA video card\nand graphics processor.\n\n# 🔴 🔴 Looking for new maintainer(s)! 🔴 🔴\nMost probably my next GPU will be an AMD and, if that happens, I won't be able to provide adequate support for this project anymore. For this reason I'm looking for new maintainer(s).\nIf you are interested and have adequate knowledge of Python, please get in touch replying to this issue:\nhttps://gitlab.com/leinardi/gwe/-/issues/195\n\n## 💡 Features\n\u003cimg src=\"/data/icons/hicolor/48x48@2x/apps/com.leinardi.gwe.png\" width=\"96\" align=\"right\" hspace=\"0\" /\u003e\n\n* Show general GPU stats (model name, driver version, gpu/memory/power usage, clocks, temps, etc)\n* GPU and Memory overclock offset profiles\n* Custom Fan curve profiles\n* Change power limit\n* Historical data graphs\n\n\u003cimg src=\"/art/screenshot-1.png\" width=\"800\" align=\"middle\"/\u003e\n\n## 📦 How to get GWE\nIf you don't like to reading manuals and/or you don't know what the Nvidia CoolBits are,\nyou can watch the following How To made by [Intelligent Gaming](https://www.youtube.com/channel/UCH4d4o0Otxa7BNYs5Z5UEjg):\n\n[![How To Overclock And Control Fans On An nVidia Graphic Card In Linux - Green With Envy / GWE](https://img.youtube.com/vi/HAKe9ladLvc/0.jpg)](https://www.youtube.com/watch?v=HAKe9ladLvc)\n\n### Install from Flathub\nThis is the preferred way to get GWE on any major distribution (Arch, Fedora, Linux Mint, openSUSE, Ubuntu, etc).\n\nIf you don't have Flatpak installed you can find step by step instructions [here](https://flatpak.org/setup/).\n\nMake sure to have the Flathub remote added to the current user:\n\n```bash\nflatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\n```\n\n#### Install\n```bash\nflatpak --user install flathub com.leinardi.gwe\nflatpak update # needed to be sure to have the latest org.freedesktop.Platform.GL.nvidia\n```\n\n#### Run\n```bash\nflatpak run com.leinardi.gwe\n```\n#### ⚠ Flatpak limitations\n##### Beta Drivers\nCurrently [Flatpak does not support Nvidia Beta drivers](https://github.com/flathub/org.freedesktop.Platform.GL.nvidia/issues/1)\nlike 396.54.09 or 415.22.05.\n\n##### Bumblebee and Optimus\nCurrently [Flatpak does not support Bumblebee](https://github.com/flatpak/flatpak/issues/869). If you want to use GWE with Bumblebee\nyou need to install it from the source code.\n\n### Distro specific packages\n#### Arch Linux\nInstall the `gwe` package from the AUR using your favourite helper, for example `yay -S gwe`.\n\n#### Fedora\nGWE avaliable in official Fedora [repos](https://src.fedoraproject.org/rpms/gwe) for F31+: `sudo dnf install gwe`\n\nFor older Fedora releases you can use [COPR package](https://copr.fedorainfracloud.org/coprs/atim/gwe/): `sudo dnf copr enable atim/gwe -y \u0026\u0026 sudo dnf install gwe`\n\n### Install from source code\n#### Build time dependencies\n| Distro                | pkg-config         | Python 3.8+   | gobject-introspection       | meson | ninja-build | appstream-util |\n| --------------------- | ------------------ | ------------- | --------------------------- | ----- | ----------- | -------------- |\n| Arch Linux            | pkg-config         | python        | gobject-introspection       | meson | ninja       | appstream-glib |\n| Fedora                | pkgconf-pkg-config | python3-devel | gobject-introspection-devel | meson | ninja-build | appstream-util |\n| OpenSUSE              | pkgconf-pkg-config | python3-devel | gobject-introspection-devel | meson | ninja-build | appstream-glib |\n| Ubuntu                | pkg-config         | python3-dev   | libgirepository1.0-dev      | meson | ninja-build | appstream-util |\n\nArch Linux:\n```bash\nsudo pacman -S pkg-config python gobject-introspection meson ninja appstream-glib\n```\nFedora:\n```bash\nsudo dnf install pkgconf-pkg-config python3-devel gobject-introspection-devel meson ninja-build appstream-util\n```\nOpenSUSE:\n```bash\nsudo zypper install pkgconf-pkg-config python3-devel gobject-introspection-devel meson ninja-build appstream-glib\n```\nUbuntu/Debian:\n```bash\nsudo apt install pkg-config python3-dev libgirepository1.0-dev meson ninja-build appstream-util\n```\n\n#### Run time dependencies\n| Distro      | Python 3.8+ | pip         | gobject-introspection       | libappindicator          | gnome-shell-extension-appindicator | libdazzle |\n|-------------| ----------- | ----------- | --------------------------- | ------------------------ | ---------------------------------- | --------- |\n| Arch Linux  | python      | python-pip  | gobject-introspection       | libappindicator3         | gnome-shell-extension-appindicator | libdazzle |\n| Fedora      | python3     | python3-pip | gobject-introspection-devel | libappindicator-gtk3     | gnome-shell-extension-appindicator | libdazzle |\n| OpenSUSE    | python3     | python3-pip | gobject-introspection       | libappindicator3-1       | gnome-shell-extension-appindicator | typelib-1_0-libdazzle-1_0 |\n| Ubuntu      | python3     | python3-pip | libgirepository1.0-dev      | gir1.2-appindicator3-0.1 | gnome-shell-extension-appindicator | libdazzle-1.0-dev |\n| Debian      | python3     | python3-pip | libgirepository1.0-dev      | gir1.2-ayatanaappindicator3-0.1  | gnome-shell-extension-appindicator | libdazzle-1.0-dev |\n[comment]: \u003c\u003e (TODO: confirm if only debian and only KDE-Plasma. Might affect more systems and Desktop Environments)\n\nArch Linux:\n```bash\nsudo pacman -S python python-pip gobject-introspection libappindicator3 gnome-shell-extension-appindicator libdazzle\n```\n\nFedora:\n```bash\nsudo dnf install python3 python3-pip gobject-introspection-devel libappindicator-gtk3 gnome-shell-extension-appindicator libdazzle\n```\nOpenSUSE:\n```bash\nsudo zypper install python3 python3-pip gobject-introspection libappindicator3-1 gnome-shell-extension-appindicator typelib-1_0-libdazzle-1_0\n```\nUbuntu:\n```bash\nsudo apt install python3 python3-pip libgirepository1.0-dev gir1.2-appindicator3-0.1 gnome-shell-extension-appindicator libdazzle-1.0-dev\n```\n\nDebian:\n```bash\nsudo apt install python3 python3-pip libgirepository1.0-dev gir1.2-ayatanaappindicator3-0.1 gnome-shell-extension-appindicator libdazzle-1.0-dev\n```\n\nplus all the Python dependencies listed in [requirements.txt](requirements.txt)\n\nFor Debian (with KDE-Plasma) we have to use `--break-system-packages`. However, this will break things. Currently only matplotlib.\nThen we have to use `sudo pip3 uninstall matplotlib` and then `sudo apt reinstall python3-matplotlib`\n#### It is recommended to use the flatpak version for Debian.\n\n#### Clone project and install\nIf you have not installed GWE yet:\n```bash\ngit clone --recurse-submodules -j4 https://gitlab.com/leinardi/gwe.git\ncd gwe\ngit checkout release\nsudo -H pip3 install -r requirements.txt\nmeson . build --prefix /usr\nninja -v -C build\nsudo ninja -v -C build install\n```\n\n#### Update old installation\nIf you installed GWE from source code previously and you want to update it:\n```bash\ncd gwe\ngit fetch\ngit checkout release\ngit reset --hard origin/release\ngit submodule init\ngit submodule update\nsudo -H pip3 install -r requirements.txt\nmeson . build --prefix /usr\nninja -v -C build\nsudo ninja -v -C build install\n```\n\n#### Run\nOnce installed, to start it you can simply execute on a terminal:\n```bash\ngwe\n```\n\n#### ⚠ Bumblebee and Optimus\nIf you want to use GWE with Bumblebee you need to start it with `optirun` and set the `--ctrl-display` parameter to `:8`:\n\n```bash\noptirun gwe --ctrl-display \":8\"\n```\n\n## ℹ️ TODO\n\n- [x] Show general GPU info\n- [x] Show power info\n- [x] Show clocks info\n- [x] Show GPU temp in both app and app indicator\n- [x] Show fan info\n- [x] Allow to hide main app window\n- [x] Add command line option to start the app hidden\n- [x] Add Refresh timeout to settings\n- [x] Add command line option to add desktop entry\n- [x] About dialog\n- [x] Distributing with PyPI\n- [x] Show chart of selected fan profile\n- [x] Allow to select and apply a fan profile\n- [x] Add/Delete/Edit multi speed fan profiles (fan curve)\n- [x] Add option to restore last applied fan profile on app startup\n- [x] Find better icons for app indicator\n- [x] Try to lower resource consumption (mostly caused by `nvidia-settings` invocations)\n- [x] Show historical data of most important values in a separate dialog (requires GTK 3.24/GNOME 3.30)\n- [x] Add overclock profiles\n- [x] Add option to restore last applied overclock profile on app startup\n- [ ] Disable unsupported preferences\n- [x] Distributing with Flatpak\n- [x] Publishing on Flathub\n- [ ] Distributing with Snap\n- [x] Check if NV-CONTROL is available and tell the user if is not\n- [ ] Add support for multi-GPU\n- [ ] Allow to select profiles from app indicator\n- [ ] Add support for i18n (internationalization and localization)\n\n\u003c!--\n## Application entry\nTo add a desktop entry for the application run the following command (not supported by Flatpak):\n```bash\ngwe --application-entry\n```\nIf you don't want to create this custom rule you can run gwe as root\n(using sudo) but we advise against this solution.\n--\u003e\n## ⌨️ Command line options\n\n  | Parameter                 | Description                               | Source | Flatpak |\n  |---------------------------|-------------------------------------------|:------:|:-------:|\n  |-v, --version              |Show the app version                       |    x   |    x    |\n  |--debug                    |Show debug messages                        |    x   |    x    |\n  |--hide-window              |Start with the main window hidden          |    x   |    x    |\n  |--ctrl-display DISPLAY     |Specify the NV-CONTROL display             |    x   |    x    |\n  |--autostart-on             |Enable automatic start of the app on login |    x   |         |\n  |--autostart-off            |Disable automatic start of the app on login|    x   |         |\n\n## 🖥️ Build, install and run with Flatpak\nIf you don't have Flatpak installed you can find step by step instructions [here](https://flatpak.org/setup/).\n\nMake sure to have the Flathub remote added to the current user:\n\n```bash\nflatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\n```\n\n### Clone the repo\n```bash\ngit clone --recurse-submodules -j4 https://gitlab.com/leinardi/gwe.git\n```\nIt is possible to build the local source or the remote one (the same that Flathub uses)\n### Local repository\n```bash\n./build.sh --flatpak-local --flatpak-install\n```\n### Remote repository\n```bash\n./build.sh --flatpak-remote --flatpak-install\n```\n### Run\n```bash\nflatpak run com.leinardi.gwe --debug\n```\n\n## ❓ FAQ\n### I see some message about CoolBits in the Overclock/Fan profile section, what's that?\nCoolbits was a Windows registry hack for Nvidia graphics cards Windows drivers, that allows\ntweaking features via the Nvidia driver control panel.\nSomething similar is available also on Linux and is the only way to enable Overclock and manual Fan control.\nTo know more about Coolbits and how to enable them click\n[here](https://wiki.archlinux.org/index.php/NVIDIA/Tips_and_tricks#Enabling_overclocking)\n(to enable both OC and Fan control you need to set it to `12`).\n\n### Can I make the power limit survive a reboot?\nGWE cannot set the power limit automatically because, to change this value, root permission is required.  \nIf your distribution is using systemd, you can easily set the power limit on boot creating a custom service.\n\nSimply create a new file `/etc/systemd/system/nvidia-tdp.timer` and paste the following text inside:\n```\n[Unit]\nDescription=Set NVIDIA power limit on boot\n\n[Timer]\nOnBootSec=5\n\n[Install]\nWantedBy=timers.target\n```\n\nThen 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):\n```\n[Unit]\nDescription=Set NVIDIA power limit\n\n[Service]\nType=oneshot\nExecStartPre=/usr/bin/nvidia-smi -pm 1\nExecStart=/usr/bin/nvidia-smi -pl XXX\n```\n\nFinally, run the following command:\n```\nsudo systemctl enable nvidia-tdp.timer\n```\n\n### The Flatpak version of GWE is not using my theme, how can I fix it?\nTo fix this issue install a Gtk theme from Flathub. This way, Flatpak applications will automatically pick the\ninstalled Gtk theme and use that instead of Adwaita.\n\nUse this command to get a list of all the available Gtk themes on Flathub:\n```bash\nflatpak --user remote-ls flathub | grep org.gtk.Gtk3theme\n```\nAnd then just install your preferred theme. For example, to install Yaru:\n```\nflatpak install flathub org.gtk.Gtk3theme.Yaru\n```\n\n### I have installed the app using Flatpak, but all the GWE fields are empty\nThis issue can be usually solved by closing GWE, executing `flatpak update` and starting GWE again.\nThis is necessary to be sure to have the latest [org.freedesktop.Platform.GL.nvidia](https://github.com/flathub/org.freedesktop.Platform.GL.nvidia).\nIf, after the update, all the fields are still empty, feel free to open a new issue on the project tracker.\n\n### Why the memory overclock offsets effectively applied does not match the one set in the Nvidia Settings app?\nBecause Memory Transfer Rate, what Nvidia Settings reports and changes,\nis different from the effective Memory Clock, what is actually being\ndisplayed by GWE. It is also what other Windows applications like MSI Afterburner show.\nThe Memory Transfer Rate is simply double the Memory Clock.\n\n### Where are the settings and profiles stored on the filesystem?\n| Installation type |                     Location                     |\n|-------------------|:------------------------------------------------:|\n| Flatpak           |        `$HOME/.var/app/com.leinardi.gwe/`        |\n| Source code       | `$XDG_CONFIG_HOME` (usually `$HOME/.config/gwe`) |\n\n### GreenWithEnvy, why using such name?\nThe name comes from the slogan of the GeForce 8 series, that was \"Green with envy\".\nNvidia is meant to be pronounced \"invidia\", which means envy in Latin (and Italian). And their logo is green so, GreenWithEnvy\n\n## 💚 How to help the project\n### Help is needed for the following topics\n - Snap (see [#18](https://gitlab.com/leinardi/gwe/issues/18))\n - Getting current GTK theme text color (see [#36](https://gitlab.com/leinardi/gwe/issues/36))\n - Making Bumblebee work with Flatpak (see [#35](https://gitlab.com/leinardi/gwe/issues/35))\n\n### Discord server\nIf 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\nJust 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.\n\n\n### Can I support this project some other way?\n\nSomething simple that everyone can do is to star it on both [GitLab](https://gitlab.com/leinardi/gwe) and [GitHub](https://github.com/leinardi/gwe).\nFeedback is always welcome: if you found a bug or would like to suggest a feature,\nfeel free to open an issue on the [issue tracker](https://gitlab.com/leinardi/gwe/issues).\n\n## ⚠ Dropped PyPI support\nDevelopment builds were previously distributed using PyPI. This way of distributing the software is simple\nbut requires the user to manually install all the non Python dependencies like cairo, glib, appindicator3, etc.\nThe current implementation of the historical data uses a new library, Dazzle, that requires Gnome 3.30 which is\navailable, using Python Object introspection, only starting from Ubuntu 18.10 making the latest Ubuntu LTS, 18.04,\nunsupported.\nA solution for all this problems is distributing the app via Flatpak, since with it all the dependencies\nwill be bundled and provided automatically, making possible to use Gnome 3.30 features also on distributions\nusing an older version of Gnome.\n\n**No new build will be published on PyPI**.\n\n### Uninstall pip version\nIf you have already installed GWE via `pip`, please make sure to uninstall it completely before moving to a newer version:\n\n```bash\npip3 uninstall gwe\nrm -rf ~/.config/gwe\n```\n\n## ℹ️ Acknowledgements\nThanks to:\n\n - GabMus and TingPing for the huge help with Flatpak\n - @999eagle for maintaining the [AUR package](https://aur.archlinux.org/packages/gwe/)\n - @tim74 for maintaining the [COPR package](https://copr.fedorainfracloud.org/coprs/atim/gwe/)\n - Lighty for moderating the [Discord](https://discord.gg/YjPdNff) server\n - fbcotter for the [py3nvml](https://github.com/fbcotter/py3nvml/) library\n - all the devs of the [python-xlib](https://github.com/python-xlib/python-xlib/) library\n - tiheum for the [Faenza](https://www.deviantart.com/tiheum/art/Faenza-Icons-173323228) icons set, from which I took the current GWE launcher icon\n - all the people that helped testing and reported bugs\n\n## 📰 Media coverage\n - [OMG! Ubuntu](https://www.omgubuntu.co.uk/2019/02/easily-overclock-nvidia-gpu-on-linux-with-this-new-app) 🇬🇧\n - [GamingOnLinux](https://www.gamingonlinux.com/articles/greenwithenvy-an-impressive-tool-for-overclocking-nvidia-gpus.13521) 🇬🇧\n - [Phoronix](https://www.phoronix.com/scan.php?page=news_item\u0026px=GreenWithEnvy-0.11-Released) 🇬🇧\n - [ComputerBase](https://www.computerbase.de/2019-02/green-envy-uebertakten-nvidia-grafikkarten-linux/) 🇩🇪\n - [lffl](https://www.lffl.org/2019/02/overclock-scheda-nvidia-linux.html) 🇮🇹\n - [osside blog](https://www.osside.net/2019/02/greenwithenvy-gwe-linux-easy-nvidia-status-overclock/) 🇮🇹\n - [Diolinux](https://www.diolinux.com.br/2019/02/greenwithenvy-uma-nova-forma-de-voce-gerenciar-gpu-nvidia.html?m=1) 🇧🇷\n - [Blog do Edivaldo](https://www.edivaldobrito.com.br/overclock-em-gpus-nvidia-no-linux/) 🇧🇷\n - [Linux Adictos](https://www.linuxadictos.com/greenwithenvy-programa-para-overclocking-en-gpus-nvidia.html) 🇪🇸\n\n\n## 📝 License\n```\nThis file is part of gwe.\n\nCopyright (c) 2019 Roberto Leinardi\n\ngwe is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\ngwe is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with gwe.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n```\n","funding_links":[],"categories":["Graphics cards"],"sub_categories":["Nvidia"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleinardi%2Fgwe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleinardi%2Fgwe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleinardi%2Fgwe/lists"}