IGoliath Envious FX, the successor to the abandoned GoliathOUFX, has (finally) been released. This new and improved Linux Nvidia OC utility features 47 unique GPU data points(“attributes”) ranging from utilization, clock speed, overclocking offsets, performance limiters, power, and more as well better performance, a much more responsive design, user experience improvements, and more.
Goliath Envious FX — Overclocking In Linux Made Easy… Again
The goal behind GoliathOUFX was always to make overclocking in Linux simple and easy. Before it, only a few overclocking utilities existed which didn’t offer voltage and/or power limit control and you had to either make or edit a Xorg config file to set the coolbits(enables overclocking) value, which has no documentation on the various possible value combinations which unlocked the functionality you wanted, making something that Windows users could do easily and safely but was difficult and dangerous under Linux(first world problems, right?). Even more, once you did manage to get coolbits set, the memory transfer rate was twice what it was in Windows for no apparent good reason.
Like a lot of things in Linux, it was needlessly complicated and not very use friendly.
Since GoliathOUFX, many overclocking utilities where made that both looked nicer than GoliathOUFX and had better compatibility(thanks to using actual APIs) among other improvements such as Green With Envy, a GTK Flatpak application, and TuxClocker, a QT application. GoliathOUFX fell behind both in UI attractiveness and in functionality and wasn’t expandable due to poor UI design. Eventually I abandoned it.
Goliath Envious FX is a continuation of that goal of that more in the way of user experience improvements and less in new features. The list of actual improvements include:
- Tiles have been added where appropriate above controllable GPU data UI components giving you easy to see information related to the underlying data. Tiles are also used to show groups of related data, such as utilization and performance limiters, instead of hard to read tables. Making use of JavaFX’s property bindings, these don’t just show the value of some related UI component but reflect the actual corresponding GPU data values. Tiles representing GPU data can be clicked on to reveal more information about that data(mostly pointless except with memory offset).
- Responsive design that makes way more use of screen space. Sliders will expand the “subcontent” area making it much easier to get the value you want. The Textbox next to will show the spinner’s value and either UI component will update and react to the other as well as outside application changes(as long a smionly isn’t set anyway). Tiles showing information will also expand & create new rows if there isn’t enough space.
- Switching between application content is done via a TreeView. This not only allows for infinitely more content but the ability to easily support multiple Nvidia GPUs. Clicking on “Overview”, “NvGPU”, and “NvFan” leafs will set the content to a scrollable “Section” pane that includes all Nvidia GPUs listed by their ordinal(GPU-0, GPU-1, GPU-2, etc). Children leafs under these allow you to focus the content on just one Nvidia GPU or Fan instead improving the user experience when multiple Nvidia GPUs are installed. If you do have multiple installed, these will be auto expanded(visible) and if not they will be closed. Clicking on the childen leaf with only one GPU is the same as clicking on “NvGPU” itself since there is only one GPU.
- Flat & Simple CSS themeing and UI. No fancy obnoxious “gamery” tailoring. It’s clean, it’s simple, it’s usable. Only UI components that need highlighted are green. Everything else is white, grayish or black in color. With the exception of slider thumbs and scrollbars rounded corners are removed. UI design is consistent and easy to use and learn.
- Lower CPU usage and latency. Goliath Envious FX now uses nvidia-smi for over half of its data allowing for the update thread to be slowed down and more up-to-date information with less gaming impact when running. It still isn’t ideal but it is significantly better. nvidia-smi is also cross platform meaning that Goliath Envious FX could be made to run on Windows or any other OS running an Nvidia GPU. That still requires a bunch of work though.
- NvReaction feature. This feature (currently) allows you to set your GPUs fan speed or logo brightness to equal your GPUs temperature using an optional offset. This means that if your GPUs temperature is 60 and offset is 5 your fan speed when enabled will be 65. If the speed is over or under the allowed controller values then it will be set to the highest or lowest possible values instead. Since most GPU fans top out at about 55% or so this feature can allow for much better cooling at not terrible noise levels. This is an advanced feature and like everything else YOU are responsible for any damage that you cause to your own hardware.
- Even more data is viewable than GoliathOUFX such as performance state(pstate), each individual performance limiters(if supported), and VBIOS version.
In addition, old GoliathOUFX features like creating an Xorg config file with a coolbits value and the On Screen Display are also in Goliath Envious FX.
Goliath Envious FX now uses the system JDK instead of a jLink JDK bundle. If too many people complain about it(or the bloated memory usage) i’ll add a jLink distribution. I swear it isn’t an Electron application in disguise!
UI Bugs And Linux Fragmentation Ahoy!
…But not everything is great. For a long time I had been demotivated to work on Goliath Envious FX. Goliath Envious FX is plagued with problems that are outside of my control(without switching languages/frontends anyway). Why?
Yes, the very UI API that this application uses is the primary cause. JavaFX, especially under Linux, is a buggy minefield. Resize a JavaFX application you get buffer glitching vomit. ScrollPane doesn’t handle TilePane’s height correctly. TableView’s scrollbars appear when resizing even when there is plenty of room for the cell data. You reduce the width of a JavaFX application from the left side that doesn’t specify a min width/height and the application will fly off the right hand side of the screen(out of screen bounds).
That last one? Yeah it applies to Scene Builder, an application formerly made and developed by Oracle themselves. Ironic?
All the while i’m told on JavaFX’s mailing list that its something i’m doing wrong… despite many issues applying to every JavaFX applications under Linux. So yeah, fixes for many if any aren’t coming anytime soon.
That isn’t even close to all of them. All known issues(JavaFX, Linux, etc related) with Goliath Envious FX are listed on the github page. If those issues are too much of a bother you can try using Green With Envy or Tuxclocker. Goliath Envious FX disables resizing by default to hide as much UI glitching as possible. The divider is also glitched on the far left despite being told to be at 15%.
And then there is Linux. Before with GoliathOUFX I had said that in order to use it you just needed the Nvidia GPU driver and everything will work(besides any GPU compatibility issues).
Apparently packaging core driver utils with the driver they depend on is too easy and simple.
Different Linux distros have amazingly different ideas on how to package and name things and will split core Nvidia driver libraries up into there own packages without automatically installing them with the driver. Fedora for example splits all into their own package but installs the virtual-depends nvidia-settings package. Arch has a different optional package for nvidia-settings for some reason which can cause conflicts with AUR beta drivers that do provide it in some cases.
So yeah, i’m not doing that anymore. Java 11, nvidia-smi, nvidia-settings, and nvidia-xconfig are all requirements to run Goliath Envious FX as stated on the Github page. Pop!_OS with the Nvidia installer has everything you need already except Java. That’s all I’ll say since I tested it along with Fedora. You are on your own on figuring out what packages are needed. Play a game of package roulette and you’l find them eventually. Probably.
P.S. Overclocking is currently busted only on Fedora 30. Not even Nvidia’s own nvidia-settings utility works properly. Goliath Envious FX will launch, be able to create an Xorg config file, but will fail to set any core/memory/voltage offsets. Everything else(fan control, powermizer, etc) works fine.