Better handling of supergfx version check, aura config updates

This commit is contained in:
Luke D. Jones
2023-04-25 13:56:00 +12:00
parent 45a354880a
commit 8db783d9b4
8 changed files with 146 additions and 158 deletions

View File

@@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- rog-control-center dark/light mode persistency
- Adjustments to keyboard detection
- Better support of using supergfxctl when available (tray icon and menu)
- Check supergfx version before enabling use in tray
- Update allowed Aura modes on asusd restart if changed
## [v4.6.0]
### Added

208
Cargo.lock generated
View File

@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "ab_glyph"
version = "0.2.21"
version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5110f1c78cf582855d895ecd0746b653db010cec6d9f5575293f27934d980a39"
checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser",
@@ -106,9 +106,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "1.0.1"
version = "0.7.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04"
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
dependencies = [
"memchr",
]
@@ -358,9 +358,9 @@ checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3"
[[package]]
name = "atomic_refcell"
version = "0.1.10"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79d6dc922a2792b006573f60b2648076355daeae5ce9cb59507e5908c9625d31"
checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8"
[[package]]
name = "atspi"
@@ -484,9 +484,9 @@ dependencies = [
[[package]]
name = "bumpalo"
version = "3.12.1"
version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8"
checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
[[package]]
name = "bytemuck"
@@ -589,12 +589,11 @@ dependencies = [
[[package]]
name = "cfg-expr"
version = "0.15.1"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9"
checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6"
dependencies = [
"smallvec",
"target-lexicon",
]
[[package]]
@@ -639,37 +638,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "cocoa"
version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
dependencies = [
"bitflags",
"block",
"cocoa-foundation",
"core-foundation",
"core-graphics",
"foreign-types",
"libc",
"objc",
]
[[package]]
name = "cocoa-foundation"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6"
dependencies = [
"bitflags",
"block",
"core-foundation",
"core-graphics-types",
"foreign-types",
"libc",
"objc",
]
[[package]]
name = "color_quant"
version = "1.1.0"
@@ -730,9 +698,9 @@ dependencies = [
[[package]]
name = "core-foundation-sys"
version = "0.8.4"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
[[package]]
name = "core-graphics"
@@ -761,9 +729,9 @@ dependencies = [
[[package]]
name = "cpufeatures"
version = "0.2.7"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58"
checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181"
dependencies = [
"libc",
]
@@ -926,7 +894,7 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
[[package]]
name = "ecolor"
version = "0.21.0"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"bytemuck",
]
@@ -934,34 +902,30 @@ dependencies = [
[[package]]
name = "eframe"
version = "0.21.3"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"bytemuck",
"cocoa",
"egui",
"egui-winit",
"egui_glow",
"glow",
"glutin",
"glutin-winit",
"image",
"js-sys",
"log",
"objc",
"percent-encoding",
"raw-window-handle",
"thiserror",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"winapi",
"winit",
]
[[package]]
name = "egui"
version = "0.21.0"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"accesskit",
"ahash",
@@ -973,14 +937,13 @@ dependencies = [
[[package]]
name = "egui-winit"
version = "0.21.1"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"accesskit_winit",
"arboard",
"egui",
"instant",
"log",
"raw-window-handle",
"smithay-clipboard",
"webbrowser",
"winit",
@@ -989,7 +952,7 @@ dependencies = [
[[package]]
name = "egui_glow"
version = "0.21.0"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"bytemuck",
"egui",
@@ -1000,10 +963,16 @@ dependencies = [
"web-sys",
]
[[package]]
name = "either"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
name = "emath"
version = "0.21.0"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"bytemuck",
]
@@ -1088,7 +1057,7 @@ dependencies = [
[[package]]
name = "epaint"
version = "0.21.0"
source = "git+https://github.com/emilk/egui#92c7053a148ae0edac3efb1d990f25b54a2ec3bc"
source = "git+https://github.com/emilk/egui?rev=d486c76a9f146c12321b2a3fd0cedfe732e5783d#d486c76a9f146c12321b2a3fd0cedfe732e5783d"
dependencies = [
"ab_glyph",
"ahash",
@@ -1705,20 +1674,6 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "image"
version = "0.24.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a"
dependencies = [
"bytemuck",
"byteorder",
"color_quant",
"num-rational",
"num-traits",
"png",
]
[[package]]
name = "indexmap"
version = "1.9.3"
@@ -1786,6 +1741,15 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "itertools"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.6"
@@ -1876,9 +1840,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.142"
version = "0.2.141"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
[[package]]
name = "libloading"
@@ -1914,9 +1878,9 @@ dependencies = [
[[package]]
name = "linux-raw-sys"
version = "0.3.4"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36eb31c1778188ae1e64398743890d0877fef36d11521ac60406b42016e8c2cf"
checksum = "3f508063cc7bb32987c71511216bd5a32be15bccb6a80b52df8b9d7f01fc3aa2"
[[package]]
name = "lock_api"
@@ -2159,27 +2123,6 @@ dependencies = [
"zbus",
]
[[package]]
name = "num-integer"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.15"
@@ -2254,9 +2197,9 @@ checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7"
[[package]]
name = "objc2"
version = "0.3.0-beta.3.patch-leaks.3"
version = "0.3.0-beta.3.patch-leaks.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468"
checksum = "e7d9bb2ee6b71d02b1b3554ed600d267ee9a2796acc9fa43fb7748e13fe072dd"
dependencies = [
"block2",
"objc-sys",
@@ -2289,9 +2232,9 @@ checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "orbclient"
version = "0.3.44"
version = "0.3.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e9829e16c5e112e94efb5e2ad1fe17f8c1c99bb0fcdc8c65c44e935d904767d"
checksum = "974465c5e83cf9df05c1e4137b271d29035c902e39e5ad4c1939837e22160af8"
dependencies = [
"cfg-if",
"redox_syscall 0.2.16",
@@ -2311,9 +2254,9 @@ dependencies = [
[[package]]
name = "owned_ttf_parser"
version = "0.19.0"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4"
checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228"
dependencies = [
"ttf-parser",
]
@@ -2439,9 +2382,9 @@ dependencies = [
[[package]]
name = "polling"
version = "2.8.0"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
checksum = "4be1c66a6add46bff50935c313dae30a5030cf8385c5206e8a95e9e9def974aa"
dependencies = [
"autocfg",
"bitflags",
@@ -2587,9 +2530,9 @@ dependencies = [
[[package]]
name = "regex"
version = "1.8.1"
version = "1.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370"
checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
dependencies = [
"aho-corasick",
"memchr",
@@ -2598,9 +2541,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
version = "0.7.1"
version = "0.6.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c"
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "rog-control-center"
@@ -2631,6 +2574,7 @@ dependencies = [
"tempfile",
"tokio",
"toml 0.5.11",
"versions",
"zbus",
]
@@ -2742,9 +2686,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.37.14"
version = "0.37.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b864d3c18a5785a05953adeed93e2dca37ed30f18e69bba9f30079d51f363f"
checksum = "722529a737f5a942fdbac3a46cee213053196737c5eaa3386d52e85b786f2659"
dependencies = [
"bitflags",
"errno",
@@ -3014,8 +2958,8 @@ dependencies = [
[[package]]
name = "supergfxctl"
version = "5.1.0"
source = "git+https://gitlab.com/asus-linux/supergfxctl.git#d020d26c0344477e86ce7ed5fe8ed2dfbdac0f9f"
version = "5.1.0-RC5"
source = "git+https://gitlab.com/asus-linux/supergfxctl.git#92d82977b47c54d868aa92e54a22d10a2e858598"
dependencies = [
"log",
"logind-zbus",
@@ -3062,9 +3006,9 @@ dependencies = [
[[package]]
name = "system-deps"
version = "6.0.5"
version = "6.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0fe581ad25d11420b873cf9aedaca0419c2b411487b134d4d21065f3d092055"
checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f"
dependencies = [
"cfg-expr",
"heck 0.4.1",
@@ -3083,12 +3027,6 @@ dependencies = [
"zbus",
]
[[package]]
name = "target-lexicon"
version = "0.12.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
[[package]]
name = "tauri-winrt-notification"
version = "0.1.0"
@@ -3160,9 +3098,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
[[package]]
name = "tiny-skia"
version = "0.8.4"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67"
checksum = "bfef3412c6975196fdfac41ef232f910be2bb37b9dd3313a49a1a6bc815a5bdb"
dependencies = [
"arrayref",
"arrayvec",
@@ -3174,9 +3112,9 @@ dependencies = [
[[package]]
name = "tiny-skia-path"
version = "0.8.4"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c"
checksum = "a4b5edac058fc98f51c935daea4d805b695b38e2f151241cad125ade2a2ac20d"
dependencies = [
"arrayref",
"bytemuck",
@@ -3291,13 +3229,13 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.24"
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.15",
"syn 1.0.109",
]
[[package]]
@@ -3311,9 +3249,9 @@ dependencies = [
[[package]]
name = "ttf-parser"
version = "0.19.0"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44dcf002ae3b32cd25400d6df128c5babec3927cd1eb7ce813cfff20eb6c3746"
checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633"
[[package]]
name = "typenum"
@@ -3435,6 +3373,16 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "versions"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee97e1d97bd593fb513912a07691b742361b3dd64ad56f2c694ea2dbfe0665d3"
dependencies = [
"itertools",
"nom",
]
[[package]]
name = "waker-fn"
version = "1.1.0"

View File

@@ -35,6 +35,8 @@ pix = "^0.13"
tinybmp = "^0.4.0"
gif = "^0.12.0"
versions = "4.1"
notify-rust = { git = "https://github.com/flukejones/notify-rust.git", default-features = false, features = ["z"] }
[profile.release]

View File

@@ -111,7 +111,7 @@ impl From<&AuraPowerConfig> for AuraPowerDev {
}
}
#[derive(Deserialize, Serialize, Debug)]
#[derive(Deserialize, Serialize, Debug, Clone)]
// #[serde(default)]
pub struct AuraConfig {
pub brightness: LedBrightness,
@@ -124,7 +124,8 @@ pub struct AuraConfig {
impl StdConfig for AuraConfig {
fn new() -> Self {
Self::create_default(AuraDevice::X19b6, &LaptopLedData::get_data())
// Self::create_default(AuraDevice::X19b6, &LaptopLedData::get_data())
panic!("AuraConfig::new() should not be used, use AuraConfig::create_default() instead");
}
fn config_dir() -> std::path::PathBuf {

View File

@@ -114,7 +114,15 @@ impl CtrlKbdLed {
LEDNode::None
};
let config = AuraConfig::create_default(led_prod, &supported_modes).load();
let config_init = AuraConfig::create_default(led_prod, &supported_modes);
let mut config = config_init.clone().load();
// Do updates of supported modes if required
for mode in &config_init.builtins {
if !config.builtins.contains_key(mode.0) {
config.builtins.insert(*mode.0, mode.1.clone());
}
}
let ctrl = CtrlKbdLed {
led_prod,
led_node, // on TUF this is the same as rgb_led / kd_brightness

View File

@@ -10,8 +10,8 @@ edition = "2021"
mocking = []
[dependencies]
egui = { git = "https://github.com/emilk/egui", commit = "d486c76a9f146c12321b2a3fd0cedfe732e5783d"}
eframe = { git = "https://github.com/emilk/egui", commit = "d486c76a9f146c12321b2a3fd0cedfe732e5783d"}
egui = { git = "https://github.com/emilk/egui", rev = "d486c76a9f146c12321b2a3fd0cedfe732e5783d"}
eframe = { git = "https://github.com/emilk/egui", rev = "d486c76a9f146c12321b2a3fd0cedfe732e5783d"}
libappindicator = "0.7" # Tray icon
gtk = "0.15.5"
@@ -39,6 +39,8 @@ notify-rust.workspace = true
png_pong.workspace = true
versions.workspace = true
nix = "^0.26.1"
tempfile = "3.3.0"

View File

@@ -8,7 +8,7 @@ use std::time::Duration;
use eframe::{IconData, NativeOptions};
use gumdrop::Options;
use log::{error, info, warn};
use log::{error, info, warn, LevelFilter};
use rog_aura::aura_detection::{LaptopLedData, LedSupportFile};
use rog_aura::layouts::KeyLayout;
use rog_control_center::cli_options::CliStart;
@@ -48,6 +48,7 @@ fn main() -> Result<()> {
let mut logger = env_logger::Builder::new();
logger
.filter_level(LevelFilter::Warn)
.parse_default_env()
.target(env_logger::Target::Stdout)
.format(|buf, record| writeln!(buf, "{}: {}", record.level(), record.args()))

View File

@@ -9,12 +9,14 @@ use std::time::Duration;
use gtk::gio::Icon;
use gtk::prelude::*;
use libappindicator::{AppIndicator, AppIndicatorStatus};
use log::{debug, error, info, trace};
use log::{debug, error, info, trace, warn};
use rog_dbus::zbus_platform::RogBiosProxyBlocking;
use rog_platform::platform::GpuMode;
use rog_platform::supported::SupportedFunctions;
use supergfxctl::actions::UserActionRequired as GfxUserActionRequired;
use supergfxctl::pci_device::{GfxMode, GfxPower};
use supergfxctl::zbus_proxy::DaemonProxyBlocking as GfxProxyBlocking;
use versions::Versioning;
use crate::error::Result;
use crate::system_state::SystemState;
@@ -79,6 +81,7 @@ pub struct ROGTray {
icon: &'static str,
bios_proxy: RogBiosProxyBlocking<'static>,
gfx_proxy_is_active: bool,
gfx_action: Arc<Mutex<GfxUserActionRequired>>,
gfx_proxy: GfxProxyBlocking<'static>,
}
@@ -103,6 +106,7 @@ impl ROGTray {
e
})?,
gfx_proxy_is_active: gfx_proxy.mode().is_ok(),
gfx_action: Arc::new(Mutex::new(GfxUserActionRequired::Nothing)),
gfx_proxy,
};
Ok(rog_tray)
@@ -249,30 +253,33 @@ impl ROGTray {
}
let gfx_dbus = self.gfx_proxy.clone();
let gfx_action = self.gfx_action.clone();
let mut gpu_menu = RadioGroup::new("Integrated", move |_| {
if current_mode != GfxMode::Integrated {
gfx_dbus
.set_mode(&GfxMode::Integrated)
.map_err(|e| {
error!("ROGTray: srt_mode: {e}");
e
})
.ok();
if let Ok(res) = gfx_dbus.set_mode(&GfxMode::Integrated).map_err(|e| {
error!("ROGTray: srt_mode: {e}");
e
}) {
if let Ok(mut lock) = gfx_action.lock() {
*lock = res;
}
}
}
});
let mut func = |menu_mode: GfxMode| {
let gfx_dbus = self.gfx_proxy.clone();
let gfx_action = self.gfx_action.clone();
gpu_menu.add(&format!("{menu_mode}"), move |_| {
if current_mode != menu_mode {
gfx_dbus
.set_mode(&menu_mode)
.map_err(|e| {
error!("ROGTray: set_mode: {e}");
e
})
.ok();
if let Ok(res) = gfx_dbus.set_mode(&menu_mode).map_err(|e| {
error!("ROGTray: set_mode: {e}");
e
}) {
if let Ok(mut lock) = gfx_action.lock() {
*lock = res;
}
}
}
});
};
@@ -284,16 +291,18 @@ impl ROGTray {
func(*item);
}
let mut _reboot_required = false;
let reboot_required = if _reboot_required {
"(Reboot required)"
let action_required = if let Ok(lock) = self.gfx_action.lock() {
if matches!(*lock, GfxUserActionRequired::Nothing) {
""
} else {
<&str>::from(*lock)
}
} else {
""
};
self.add_radio_sub_menu(
&format!("GPU Mode: {current_mode} {reboot_required}"),
&format!("GPU Mode: {current_mode} {action_required}"),
&current_mode.to_string(),
&gpu_menu,
);
@@ -423,7 +432,22 @@ pub fn init_tray(
};
let supported_gfx = if tray.gfx_proxy_is_active {
tray.gfx_proxy.supported().unwrap()
if let Ok(version) = tray.gfx_proxy.version() {
if let Some(version) = Versioning::new(&version) {
let curr_gfx = Versioning::new("5.0.3-RC4").unwrap();
warn!("supergfxd version = {version}");
if version < curr_gfx {
// Don't allow mode changing if too old a version
warn!("supergfxd found but is too old to use");
tray.gfx_proxy_is_active = false;
}
}
}
if tray.gfx_proxy_is_active {
tray.gfx_proxy.supported().unwrap()
} else {
Default::default()
}
} else {
Default::default()
};