mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-01-22 17:33:19 +01:00
Provide extra help tips. Update manual
This commit is contained in:
106
MANUAL.md
106
MANUAL.md
@@ -16,57 +16,15 @@ but can also be used with non-asus laptops with reduced features.
|
|||||||
|
|
||||||
The functionality that `asusd` exposes is:
|
The functionality that `asusd` exposes is:
|
||||||
|
|
||||||
- graphics switching
|
|
||||||
- anime control
|
- anime control
|
||||||
- led keyboard control (aura)
|
- led keyboard control (aura)
|
||||||
- charge limiting
|
- charge limiting
|
||||||
- bios/efivar control
|
- bios/efivar control
|
||||||
- profiles (fan/cpu)
|
- power profile switching
|
||||||
|
- fan curves (if supported, this is auto-detected)
|
||||||
|
|
||||||
each of these will be detailed in sections.
|
each of these will be detailed in sections.
|
||||||
|
|
||||||
### Graphics switching
|
|
||||||
|
|
||||||
`asusd` can switch graphics modes between:
|
|
||||||
- `integrated`, uses the iGPU only and force-disables the dGPU
|
|
||||||
- `compute`, enables Nvidia without Xorg. Useful for ML/Cuda
|
|
||||||
- `hybrid`, enables Nvidia prime-offload mode
|
|
||||||
- `nvidia`, uses the Nvidia gpu only
|
|
||||||
- `vfio`, binds the Nvidia gpu to vfio for VM pass-through
|
|
||||||
|
|
||||||
Switching to/from Hybrid and Nvidia modes requires a logout only (no reboot). Switching between integrated/compute/vfio does not require a logout and is instant.
|
|
||||||
|
|
||||||
#### Required actions in distro
|
|
||||||
|
|
||||||
**Rebootless note:** You must edit `/etc/default/grub` to remove `nvidia-drm.modeset=1`
|
|
||||||
from the line `GRUB_CMDLINE_LINUX=` and then recreate your grub config. In fedora
|
|
||||||
you can do this with `sudo grub2-mkconfig -o /etc/grub2.cfg` - other distro may be
|
|
||||||
similar but with a different config location. It's possible that graphics driver updates
|
|
||||||
may change this.
|
|
||||||
|
|
||||||
This switcher conflicts with other gpu switchers like optimus-manager, suse-prime
|
|
||||||
or ubuntu-prime, system76-power, and bbswitch. If you have issues with `asusd`
|
|
||||||
always defaulting to `integrated` mode on boot then you will need to check for
|
|
||||||
stray configs blocking nvidia modules from loading in:
|
|
||||||
- `/etc/modprobe.d/`
|
|
||||||
- `/usr/lib/modprope.d/`
|
|
||||||
|
|
||||||
#### Config options
|
|
||||||
|
|
||||||
1. `"gfx_mode": "<MODE>",`: MODE can be <Integrated, Hybrid, Compute, Nvidia, vfio>
|
|
||||||
2. `"gfx_last_mode": "Nvidia",`: currently unused
|
|
||||||
3. `"gfx_managed": true,`: enable or disable graphics switching controller
|
|
||||||
4. `"gfx_vfio_enable": false,`: enable vfio switching for Nvidia GPU passthrough
|
|
||||||
5. `"gfx_save_compute_vfio": false,`: wether or not to save the vfio state (so it sticks between boots)
|
|
||||||
|
|
||||||
#### Graphics switching notes
|
|
||||||
|
|
||||||
**G-Sync note:** Some laptops are capable of using the dGPU as the sole GPU in the system which is generally to enable g-sync on the laptop display panel. This is controlled by the bios/efivar control and will be covered in that section.
|
|
||||||
|
|
||||||
**vfio note:** The vfio modules *must not* be compiled into the kernel, they need
|
|
||||||
to be separate modules. If you don't plan to use vfio mode then you can ignore this
|
|
||||||
otherwise you may need a custom built kernel.
|
|
||||||
|
|
||||||
### AniMe control
|
### AniMe control
|
||||||
|
|
||||||
Controller for the fancy AniMe matrix display on the lid of some machines. This controller is a work in progress.
|
Controller for the fancy AniMe matrix display on the lid of some machines. This controller is a work in progress.
|
||||||
@@ -139,55 +97,27 @@ These options are not written to the config file as they are stored in efivars.
|
|||||||
|
|
||||||
### Profiles
|
### Profiles
|
||||||
|
|
||||||
Profiles provide a method setting up various basic CPU and fan settings in profile blocks which can then be switched between or cycled through. The CPU controls so far are:
|
asusctl can support setting a power profile via platform_profile drivers. This requires [power-profiles-daemon](https://gitlab.freedesktop.org/hadess/power-profiles-daemon) v0.9.0 minimum. It also requires the kernel patch for platform_profile support to be applied form [here](https://lkml.org/lkml/2021/8/18/1022) - this patch is included in the "rog" kernels we build for fedora and arch, and will hit kernel 5.15 upstream.
|
||||||
|
|
||||||
- Min/Max percentage of CPU frequency (Intel only for now)
|
A common use of asusctl is to bind the `fn+f5` (fan) key to `asusctl profile -n` to cycle through the 3 profiles:
|
||||||
- CPU turbo boost enable or disable
|
1. Balanced
|
||||||
- Fan presets. These are 0: Normal, 1: Boost, 2: Silent.
|
2. Performance
|
||||||
- Fan curves, override fan-preset. AMD only.
|
3. Quiet
|
||||||
|
|
||||||
#### Config options
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```json
|
|
||||||
"toggle_profiles": [
|
|
||||||
"normal",
|
|
||||||
"boost",
|
|
||||||
"silent"
|
|
||||||
],
|
|
||||||
"power_profiles": {
|
|
||||||
"boost": {
|
|
||||||
"min_percentage": 0,
|
|
||||||
"max_percentage": 100,
|
|
||||||
"turbo": true,
|
|
||||||
"fan_preset": 1,
|
|
||||||
"fan_curve": null
|
|
||||||
},
|
|
||||||
"normal": {
|
|
||||||
"min_percentage": 0,
|
|
||||||
"max_percentage": 100,
|
|
||||||
"turbo": true,
|
|
||||||
"fan_preset": 0,
|
|
||||||
"fan_curve": null
|
|
||||||
},
|
|
||||||
"silent": {
|
|
||||||
"min_percentage": 0,
|
|
||||||
"max_percentage": 100,
|
|
||||||
"turbo": true,
|
|
||||||
"fan_preset": 2,
|
|
||||||
"fan_curve": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
1. `"toggle_profiles": [],`: these are the profile names that will be cycled through when using a provided next/prev dbus method.
|
|
||||||
2. `"power_profiles": {}`: all the available profiles.
|
|
||||||
|
|
||||||
#### Fan curves
|
#### Fan curves
|
||||||
|
|
||||||
**fan_curve note:** This is a WIP. Currently it relies on `acpi_call` kernel module which is ancient and hacky, not intended for this purpose. A proper kernel driver is in progress.
|
Fan curve support requires a laptop that supports it (this is detected automatically) and the kernel patch from [here](https://lkml.org/lkml/2021/8/29/50) which is still in review as of 29/09/21. As with Profiles, this is included in the kernels we build, and will hit 5.15 kernel upstream.
|
||||||
|
|
||||||
See [this document](https://github.com/cronosun/atrofac/blob/master/ADVANCED.md#limits) for details on the string format required, e.g, `"fan_curve": "30c:0%,40c:5%,50c:10%,60c:20%,70c:35%,80c:55%,90c:65%,100c:65%"`.
|
The fan curve format can be of varying formats:
|
||||||
|
|
||||||
|
- `30c:0%,40c:5%,50c:10%,60c:20%,70c:35%,80c:55%,90c:65%,100c:65%"`
|
||||||
|
- `30:0,40:5,50:10,60:20,70:35,80:55,90:65,100:65"`
|
||||||
|
- `30 0,40 5,50 10,60 20,70 35,80 55,90 65,100 65"`
|
||||||
|
- `30 0 40 5 50 10 60 20 70 35 80 55 90 65 100 65"`
|
||||||
|
|
||||||
|
the order must always be the same "temperature:percentage", lowest from left to rigth being highest.
|
||||||
|
|
||||||
|
The config file is located at `/etc/asusd/profile.conf` and is self-descriptive. On first run it is populated with the system EC defaults.
|
||||||
|
|
||||||
### Support controller
|
### Support controller
|
||||||
|
|
||||||
|
|||||||
102
asusctl/src/cli_opts.rs
Normal file
102
asusctl/src/cli_opts.rs
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
use crate::{
|
||||||
|
anime_cli::AnimeCommand,
|
||||||
|
aura_cli::{LedBrightness, SetAuraBuiltin},
|
||||||
|
profiles_cli::ProfileCommand,
|
||||||
|
};
|
||||||
|
use gumdrop::Options;
|
||||||
|
use supergfxctl::gfx_vendors::GfxVendors;
|
||||||
|
|
||||||
|
#[derive(Default, Options)]
|
||||||
|
pub struct CliStart {
|
||||||
|
#[options(help_flag, help = "print help message")]
|
||||||
|
pub help: bool,
|
||||||
|
#[options(help = "show program version number")]
|
||||||
|
pub version: bool,
|
||||||
|
#[options(help = "show supported functions of this laptop")]
|
||||||
|
pub show_supported: bool,
|
||||||
|
#[options(meta = "", help = "<off, low, med, high>")]
|
||||||
|
pub kbd_bright: Option<LedBrightness>,
|
||||||
|
#[options(help = "Toggle to next keyboard brightness")]
|
||||||
|
pub next_kbd_bright: bool,
|
||||||
|
#[options(help = "Toggle to previous keyboard brightness")]
|
||||||
|
pub prev_kbd_bright: bool,
|
||||||
|
#[options(meta = "", help = "<20-100>")]
|
||||||
|
pub chg_limit: Option<u8>,
|
||||||
|
#[options(command)]
|
||||||
|
pub command: Option<CliCommand>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Options)]
|
||||||
|
pub enum CliCommand {
|
||||||
|
#[options(help = "Set the keyboard lighting from built-in modes")]
|
||||||
|
LedMode(LedModeCommand),
|
||||||
|
#[options(help = "Create and configure profiles")]
|
||||||
|
Profile(ProfileCommand),
|
||||||
|
#[options(help = "Set the graphics mode")]
|
||||||
|
Graphics(GraphicsCommand),
|
||||||
|
#[options(name = "anime", help = "Manage AniMe Matrix")]
|
||||||
|
Anime(AnimeCommand),
|
||||||
|
#[options(help = "Change bios settings")]
|
||||||
|
Bios(BiosCommand),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Options)]
|
||||||
|
pub struct LedModeCommand {
|
||||||
|
#[options(help = "print help message")]
|
||||||
|
pub help: bool,
|
||||||
|
#[options(help = "switch to next aura mode")]
|
||||||
|
pub next_mode: bool,
|
||||||
|
#[options(help = "switch to previous aura mode")]
|
||||||
|
pub prev_mode: bool,
|
||||||
|
#[options(
|
||||||
|
meta = "",
|
||||||
|
help = "set the keyboard LED to enabled while the device is awake"
|
||||||
|
)]
|
||||||
|
pub awake_enable: Option<bool>,
|
||||||
|
#[options(
|
||||||
|
meta = "",
|
||||||
|
help = "set the keyboard LED suspend animation to enabled while the device is suspended"
|
||||||
|
)]
|
||||||
|
pub sleep_enable: Option<bool>,
|
||||||
|
#[options(command)]
|
||||||
|
pub command: Option<SetAuraBuiltin>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Options)]
|
||||||
|
pub struct GraphicsCommand {
|
||||||
|
#[options(help = "print help message")]
|
||||||
|
pub help: bool,
|
||||||
|
#[options(
|
||||||
|
meta = "",
|
||||||
|
help = "Set graphics mode: <nvidia, hybrid, compute, integrated>"
|
||||||
|
)]
|
||||||
|
pub mode: Option<GfxVendors>,
|
||||||
|
#[options(help = "Get the current mode")]
|
||||||
|
pub get: bool,
|
||||||
|
#[options(help = "Get the current power status")]
|
||||||
|
pub pow: bool,
|
||||||
|
#[options(help = "Do not ask for confirmation")]
|
||||||
|
pub force: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Options, Debug)]
|
||||||
|
pub struct BiosCommand {
|
||||||
|
#[options(help = "print help message")]
|
||||||
|
pub help: bool,
|
||||||
|
#[options(
|
||||||
|
meta = "",
|
||||||
|
no_long,
|
||||||
|
help = "set bios POST sound: asusctl -p <true/false>"
|
||||||
|
)]
|
||||||
|
pub post_sound_set: Option<bool>,
|
||||||
|
#[options(no_long, help = "read bios POST sound")]
|
||||||
|
pub post_sound_get: bool,
|
||||||
|
#[options(
|
||||||
|
meta = "",
|
||||||
|
no_long,
|
||||||
|
help = "activate dGPU dedicated/G-Sync: asusctl -d <true/false>, reboot required"
|
||||||
|
)]
|
||||||
|
pub dedicated_gfx_set: Option<bool>,
|
||||||
|
#[options(no_long, help = "get GPU mode")]
|
||||||
|
pub dedicated_gfx_get: bool,
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
mod anime_cli;
|
mod anime_cli;
|
||||||
mod aura_cli;
|
mod aura_cli;
|
||||||
|
mod cli_opts;
|
||||||
mod profiles_cli;
|
mod profiles_cli;
|
||||||
|
|
||||||
use crate::aura_cli::{LedBrightness, SetAuraBuiltin};
|
use crate::aura_cli::{LedBrightness, SetAuraBuiltin};
|
||||||
|
use crate::cli_opts::*;
|
||||||
use anime_cli::{AnimeActions, AnimeCommand};
|
use anime_cli::{AnimeActions, AnimeCommand};
|
||||||
use gumdrop::{Opt, Options};
|
use gumdrop::{Opt, Options};
|
||||||
use profiles_cli::ProfileCommand;
|
use profiles_cli::ProfileCommand;
|
||||||
@@ -16,106 +18,15 @@ use rog_supported::{
|
|||||||
};
|
};
|
||||||
use std::{env::args, path::Path, sync::mpsc::channel};
|
use std::{env::args, path::Path, sync::mpsc::channel};
|
||||||
use supergfxctl::{
|
use supergfxctl::{
|
||||||
gfx_vendors::{GfxRequiredUserAction, GfxVendors},
|
gfx_vendors::GfxRequiredUserAction,
|
||||||
special::{get_asus_gsync_gfx_mode, has_asus_gsync_gfx_mode},
|
special::{get_asus_gsync_gfx_mode, has_asus_gsync_gfx_mode},
|
||||||
zbus_proxy::GfxProxy,
|
zbus_proxy::GfxProxy,
|
||||||
};
|
};
|
||||||
use zbus::Connection;
|
use zbus::Connection;
|
||||||
|
|
||||||
#[derive(Default, Options)]
|
const PLEASE: &str =
|
||||||
struct CliStart {
|
"Please use `systemctl status asusd` and `journalctl -b -u asusd` for more information";
|
||||||
#[options(help_flag, help = "print help message")]
|
const CONFIG_ADVICE: &str = "A config file need to be removed so a new one can be generated";
|
||||||
help: bool,
|
|
||||||
#[options(help = "show program version number")]
|
|
||||||
version: bool,
|
|
||||||
#[options(help = "show supported functions of this laptop")]
|
|
||||||
show_supported: bool,
|
|
||||||
#[options(meta = "", help = "<off, low, med, high>")]
|
|
||||||
kbd_bright: Option<LedBrightness>,
|
|
||||||
#[options(help = "Toggle to next keyboard brightness")]
|
|
||||||
next_kbd_bright: bool,
|
|
||||||
#[options(help = "Toggle to previous keyboard brightness")]
|
|
||||||
prev_kbd_bright: bool,
|
|
||||||
#[options(meta = "", help = "<20-100>")]
|
|
||||||
chg_limit: Option<u8>,
|
|
||||||
#[options(command)]
|
|
||||||
command: Option<CliCommand>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Options)]
|
|
||||||
enum CliCommand {
|
|
||||||
#[options(help = "Set the keyboard lighting from built-in modes")]
|
|
||||||
LedMode(LedModeCommand),
|
|
||||||
#[options(help = "Create and configure profiles")]
|
|
||||||
Profile(ProfileCommand),
|
|
||||||
#[options(help = "Set the graphics mode")]
|
|
||||||
Graphics(GraphicsCommand),
|
|
||||||
#[options(name = "anime", help = "Manage AniMe Matrix")]
|
|
||||||
Anime(AnimeCommand),
|
|
||||||
#[options(help = "Change bios settings")]
|
|
||||||
Bios(BiosCommand),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Options)]
|
|
||||||
struct LedModeCommand {
|
|
||||||
#[options(help = "print help message")]
|
|
||||||
help: bool,
|
|
||||||
#[options(help = "switch to next aura mode")]
|
|
||||||
next_mode: bool,
|
|
||||||
#[options(help = "switch to previous aura mode")]
|
|
||||||
prev_mode: bool,
|
|
||||||
#[options(
|
|
||||||
meta = "",
|
|
||||||
help = "set the keyboard LED to enabled while the device is awake"
|
|
||||||
)]
|
|
||||||
awake_enable: Option<bool>,
|
|
||||||
#[options(
|
|
||||||
meta = "",
|
|
||||||
help = "set the keyboard LED suspend animation to enabled while the device is suspended"
|
|
||||||
)]
|
|
||||||
sleep_enable: Option<bool>,
|
|
||||||
#[options(command)]
|
|
||||||
command: Option<SetAuraBuiltin>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Options)]
|
|
||||||
struct GraphicsCommand {
|
|
||||||
#[options(help = "print help message")]
|
|
||||||
help: bool,
|
|
||||||
#[options(
|
|
||||||
meta = "",
|
|
||||||
help = "Set graphics mode: <nvidia, hybrid, compute, integrated>"
|
|
||||||
)]
|
|
||||||
mode: Option<GfxVendors>,
|
|
||||||
#[options(help = "Get the current mode")]
|
|
||||||
get: bool,
|
|
||||||
#[options(help = "Get the current power status")]
|
|
||||||
pow: bool,
|
|
||||||
#[options(help = "Do not ask for confirmation")]
|
|
||||||
force: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Options, Debug)]
|
|
||||||
struct BiosCommand {
|
|
||||||
#[options(help = "print help message")]
|
|
||||||
help: bool,
|
|
||||||
#[options(
|
|
||||||
meta = "",
|
|
||||||
no_long,
|
|
||||||
help = "set bios POST sound: asusctl -p <true/false>"
|
|
||||||
)]
|
|
||||||
post_sound_set: Option<bool>,
|
|
||||||
#[options(no_long, help = "read bios POST sound")]
|
|
||||||
post_sound_get: bool,
|
|
||||||
#[options(
|
|
||||||
meta = "",
|
|
||||||
no_long,
|
|
||||||
help = "activate dGPU dedicated/G-Sync: asusctl -d <true/false>, reboot required"
|
|
||||||
)]
|
|
||||||
dedicated_gfx_set: Option<bool>,
|
|
||||||
#[options(no_long, help = "get GPU mode")]
|
|
||||||
dedicated_gfx_get: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let args: Vec<String> = args().skip(1).collect();
|
let args: Vec<String> = args().skip(1).collect();
|
||||||
@@ -138,41 +49,54 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let (dbus, _) = RogDbusClient::new()?;
|
let (dbus, _) = RogDbusClient::new().map_err(|e| {
|
||||||
|
println!("\nIs asusd running?\n");
|
||||||
|
println!("{}", PLEASE);
|
||||||
|
println!("{}\n", CONFIG_ADVICE);
|
||||||
|
e
|
||||||
|
})?;
|
||||||
|
|
||||||
let supported = dbus
|
let supported = dbus
|
||||||
.proxies()
|
.proxies()
|
||||||
.supported()
|
.supported()
|
||||||
.get_supported_functions()
|
.get_supported_functions()
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
println!("\nIs asusd running?\n\n{}", e);
|
println!("\nIs asusd running?\n");
|
||||||
println!();
|
println!("{}", PLEASE);
|
||||||
println!("Please use `journalctl -b -u asusd` and `systemctl status asusd` for more information");
|
println!("{}\n", CONFIG_ADVICE);
|
||||||
e
|
e
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if parsed.version {
|
if parsed.version {
|
||||||
print_versions();
|
print_versions();
|
||||||
|
println!();
|
||||||
|
print_laptop_info();
|
||||||
|
println!("{}\n", PLEASE);
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(err) = do_parsed(&parsed, &supported, &dbus) {
|
if let Err(err) = do_parsed(&parsed, &supported, &dbus) {
|
||||||
println!("Error: {}", err);
|
print_error_help(err, &supported);
|
||||||
println!();
|
|
||||||
print_versions();
|
|
||||||
println!();
|
|
||||||
print_laptop_info();
|
|
||||||
println!();
|
|
||||||
println!("Supported laptop functions:\n\n{}", supported);
|
|
||||||
println!();
|
|
||||||
println!("Please use `journalctl -b -u asusd` and `systemctl status asusd` for more information")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn print_error_help(err: Box<dyn std::error::Error>, supported: &SupportedFunctions) {
|
||||||
|
println!("Error: {}\n", err);
|
||||||
|
print_versions();
|
||||||
|
println!();
|
||||||
|
print_laptop_info();
|
||||||
|
println!();
|
||||||
|
println!("Supported laptop functions:\n\n{}", supported);
|
||||||
|
println!();
|
||||||
|
println!("{}", PLEASE);
|
||||||
|
println!("The above may give some indication that an option is not supported");
|
||||||
|
println!("or that a config file must be removed or fixed");
|
||||||
|
}
|
||||||
|
|
||||||
fn print_versions() {
|
fn print_versions() {
|
||||||
println!("\nApp and daemon versions:");
|
println!("App and daemon versions:");
|
||||||
println!(" asusctl v{}", env!("CARGO_PKG_VERSION"));
|
println!(" asusctl v{}", env!("CARGO_PKG_VERSION"));
|
||||||
println!(" asusd v{}", daemon::VERSION);
|
println!(" asusd v{}", daemon::VERSION);
|
||||||
println!("\nComponent crate versions:");
|
println!("\nComponent crate versions:");
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ pub struct FanCurve {
|
|||||||
#[cfg_attr(feature = "dbus", derive(Type))]
|
#[cfg_attr(feature = "dbus", derive(Type))]
|
||||||
#[derive(Deserialize, Serialize, Debug)]
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
pub struct FanCurves {
|
pub struct FanCurves {
|
||||||
active_curves: Vec<Profile>,
|
enabled: Vec<Profile>,
|
||||||
balanced: FanCurve,
|
balanced: FanCurve,
|
||||||
performance: FanCurve,
|
performance: FanCurve,
|
||||||
quiet: FanCurve,
|
quiet: FanCurve,
|
||||||
@@ -137,7 +137,7 @@ pub struct FanCurves {
|
|||||||
impl Default for FanCurves {
|
impl Default for FanCurves {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let mut curves = Self {
|
let mut curves = Self {
|
||||||
active_curves: Default::default(),
|
enabled: Default::default(),
|
||||||
balanced: Default::default(),
|
balanced: Default::default(),
|
||||||
performance: Default::default(),
|
performance: Default::default(),
|
||||||
quiet: Default::default(),
|
quiet: Default::default(),
|
||||||
@@ -188,7 +188,7 @@ impl FanCurves {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_enabled_curve_names(&self) -> &[Profile] {
|
pub fn get_enabled_curve_names(&self) -> &[Profile] {
|
||||||
&self.active_curves
|
&self.enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_all_fan_curves(&self) -> Vec<FanCurve> {
|
pub fn get_all_fan_curves(&self) -> Vec<FanCurve> {
|
||||||
|
|||||||
Reference in New Issue
Block a user