tuxclocker/README.md

158 lines
4.9 KiB
Markdown
Raw Normal View History

2023-09-25 15:00:49 -05:00
# About
TuxClocker is a hardware controlling and monitoring program. TuxClocker consists of a DBus daemon and a Qt GUI that uses the daemon.
2023-09-26 07:20:02 -05:00
## Chat
If you have any questions or suggestions, you can join the chat on [Matrix](https://matrix.to/#/#tuxclocker:matrix.org) or [IRC](https://webchat.oftc.net/?nick=&channels=%23tuxclocker&uio=d4)
You can use IRC if you don't want to create an account. Both chats are bridged between each other.
2023-09-25 15:00:49 -05:00
## Features
- Supports any number of devices at once
- Read and write device properties (Click on a selected node to edit)
- Connect any writable property to any readable property, for more possibilities than just fan curves. Currently only possible with range-based writable properties (Right click on a node)
- Reset writable properties to default (Right click on a node)
- Profiles
- Option to apply profile settings on startup/profile change
### Currently missing from earlier releases
These are missing from the 1.0.0 release, but present in the 0.1.1 release.
Refer to the [0.1.1 release readme](https://github.com/Lurkki14/tuxclocker/tree/76369ef24283364b4111c5970797062432044cbc) if you wish to use these.
- AMD GPU support
- Minimize to tray
- Graphs for properties
## Currently supported devices and features
### Nvidia GPUs
#### 600 -series and above
- Support for multiple fans on one GPU
- Fan mode
- Fan speed
- Core and memory clocks
- Power limit
- Temperatures
- Utilizations
- Voltage reading
#### 600 to 900 -series
- Voltage setting
## Possible future improvements
- Support for more devices
- Support for more platforms than Linux
- Easier to discover UI
- CLI interface
2020-04-04 12:58:09 -05:00
# Installation
2023-09-26 03:02:32 -05:00
## Prerequisites
NVIDIA GPUs require [Coolbits](https://wiki.archlinux.org/index.php/NVIDIA/Tips_and_tricks#Enabling_overclocking) set to enable editing of most writable properties (31 for all functionality)
2020-04-04 12:58:09 -05:00
## Dependencies
`qt (charts, base, dbus), boost-system, boost-filesystem, libnvml (cuda), libxnvctrl, xlib, libdrm, meson`
Note that these packages are likely called something different on each distribution.
2020-04-04 12:58:09 -05:00
2023-09-25 10:32:33 -05:00
#### For Nix
`nix-shell release.nix`
2023-09-25 10:29:44 -05:00
#### For Ubuntu (possibly outdated)
```
sudo apt install --yes --quiet --quiet \
libqt5x11extras5-dev \
qtbase5-dev \
libqt5x11extras5 \
libdrm-amdgpu1 \
libdrm-common \
libdrm-dev \
nvidia-utils-440-server \
nvidia-settings \
libxnvctrl-dev
```
2023-09-25 14:10:43 -05:00
## Compiling
#### Meson options
2020-04-04 12:58:09 -05:00
```
--prefix=<path> (install location prefix, usually '/usr')
-Dplugins=<true/false>
-Ddaemon=<true/false> (builds and installs 'tuxclockerd' binary/daemon)
```
2023-09-25 14:10:43 -05:00
#### Clone, build and install
2020-04-04 12:58:09 -05:00
```
git clone https://github.com/Lurkki14/tuxclocker
cd tuxclocker
git checkout cpplib
git submodule init
git submodule update
meson build <meson options>
cd build
ninja && sudo ninja install
```
2023-07-24 10:54:05 -05:00
2023-09-26 02:50:35 -05:00
#### Running
Once you have installed everything into a proper location, TuxClocker is available with `tuxclocker-qt` from the terminal. There is currently no desktop entry so TuxClocker won't come up in any launcher.
If TuxClocker shows up with no items, there may be a problem with connecting to the DBus daemon. Refer to your system documentation on where DBus system service entries should be located. Alternatively, you can launch the needed components manually as explained in the Developing/Scripts section of the README.
2023-08-25 02:36:09 -05:00
# Screenshots
### Main view
![Main view](screenshots/mainview.png)
### Editing an item
![Editing an item](screenshots/itemedit.png)
2023-09-06 11:42:12 -05:00
### Parametrizing an item
![Parametrizing an item](screenshots/paramEditor.png)
2023-09-06 11:42:53 -05:00
### Showing pending changes
![Showing pending changes](screenshots/stateChange.png)
2023-09-16 08:30:09 -05:00
### Settings
![Settings](screenshots/settings.png)
2023-07-24 10:54:05 -05:00
# Developing
2023-08-25 02:36:09 -05:00
### Formatting
TuxClocker uses `clang-format`. Code should be formatted with the provided `clangFormat.sh` script.
NOTE: to get designated initializers formatted like so:
``` cpp
auto Foo = Foo{
.bar = 1,
.baz = 2,
};
```
a trailing comma should be used after the last member (`clang-format` weirdness).
### Scripts
2023-07-24 10:54:05 -05:00
There are a few scripts in `dev/` for development convenience, mainly to deal with DBus. A separate DBus instance and custom config file is used, so the TuxClocker daemon is able to be registered without installing service files into the system.
Note: the following scripts assume TuxClocker is installed to `inst/`, so `meson` should be called as follows:
`meson build --prefix=$(pwd)/inst`
The scripts should be used in this order (they all have to be running simultaneously, so probably best to run in separate terminals):
`dev/dbus-start.sh` Starts a separate DBus instance.
`dev/tuxclockerd-start.sh` Launches `tuxclockerd` making it connect to our separate DBus instance and LD_LIBRARY_PATH set to find the built `libtuxclocker`.
`dev/gui-start.sh` Launches the TuxClocker GUI making it connect to our separate DBus instance, so it can find the TuxClocker DBus service.
You can also use a program like `d-feet` if you are only making changes to the daemon. (To be documented)