mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Compare commits
15 Commits
5901a4b4d9
...
devel
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e512d0e2a0 | ||
|
|
8161005096 | ||
|
|
ad073c10ff | ||
|
|
475f321100 | ||
|
|
6330b6b3b0 | ||
|
|
99ec1e8bcf | ||
|
|
c2a3310891 | ||
|
|
024d41727f | ||
|
|
7d55a2675b | ||
|
|
37fad1741e | ||
|
|
8867749e0e | ||
|
|
d890461777 | ||
|
|
bcdbc45931 | ||
|
|
b97242981c | ||
|
|
1d10f99e77 |
@@ -1,5 +1,10 @@
|
||||
# Changelog
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changes
|
||||
- Fix PPT sliders not updating
|
||||
|
||||
## [6.3.2]
|
||||
|
||||
### Changes
|
||||
@@ -7,6 +12,8 @@
|
||||
- Improve firmware attributes handling
|
||||
- Very good looking UI restyling from @shevchenko0013
|
||||
- Added support for GA402NV matrix: thanks @Ghoul4500
|
||||
- Fixed aura CLI interface
|
||||
- Fixed LEDs handling in rogcc
|
||||
|
||||
## [6.3.1]
|
||||
|
||||
|
||||
260
Cargo.lock
generated
260
Cargo.lock
generated
@@ -212,7 +212,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusctl"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"argh",
|
||||
"dmi_id",
|
||||
@@ -232,7 +232,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusd"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"cargo-husky",
|
||||
"concat-idents",
|
||||
@@ -259,7 +259,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusd-user"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"config-traits",
|
||||
"dirs",
|
||||
@@ -488,7 +488,7 @@ dependencies = [
|
||||
"num-traits",
|
||||
"pastey 0.1.1",
|
||||
"rayon",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"v_frame",
|
||||
"y4m",
|
||||
]
|
||||
@@ -816,9 +816,9 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.53"
|
||||
version = "1.2.54"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932"
|
||||
checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"jobserver",
|
||||
@@ -938,7 +938,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "config-traits"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"log",
|
||||
"ron",
|
||||
@@ -987,7 +987,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "const-field-offset"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"const-field-offset-macro",
|
||||
"field-offset",
|
||||
@@ -996,7 +996,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "const-field-offset-macro"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -1036,16 +1036,6 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.7"
|
||||
@@ -1059,7 +1049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation 0.9.4",
|
||||
"core-foundation",
|
||||
"core-graphics-types",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
@@ -1072,7 +1062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation 0.9.4",
|
||||
"core-foundation",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@@ -1274,7 +1264,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "dmi_id"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"log",
|
||||
"udev 0.8.0",
|
||||
@@ -1422,9 +1412,9 @@ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
|
||||
|
||||
[[package]]
|
||||
name = "euclid"
|
||||
version = "0.22.11"
|
||||
version = "0.22.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48"
|
||||
checksum = "df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
@@ -1502,9 +1492,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "femtovg"
|
||||
version = "0.19.3"
|
||||
version = "0.20.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "be5d925785ad33d7b0ae2b445d9f157c3ab42ff3c515fff0b46d53d4a86c43c5"
|
||||
checksum = "a125295d4de2b2473e731c4612599ba3cdf7e05af6bba16f324ba8ffbf093436"
|
||||
dependencies = [
|
||||
"bitflags 2.10.0",
|
||||
"bytemuck",
|
||||
@@ -1533,14 +1523,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "filetime"
|
||||
version = "0.2.26"
|
||||
version = "0.2.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
|
||||
checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"libredox",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1631,7 +1620,7 @@ dependencies = [
|
||||
"objc2-core-text",
|
||||
"objc2-foundation 0.3.2",
|
||||
"read-fonts",
|
||||
"roxmltree 0.21.1",
|
||||
"roxmltree",
|
||||
"smallvec",
|
||||
"windows 0.58.0",
|
||||
"windows-core 0.58.0",
|
||||
@@ -1870,16 +1859,6 @@ dependencies = [
|
||||
"weezl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gif"
|
||||
version = "0.13.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
|
||||
dependencies = [
|
||||
"color_quant",
|
||||
"weezl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gif"
|
||||
version = "0.14.1"
|
||||
@@ -2237,7 +2216,7 @@ dependencies = [
|
||||
"hyper",
|
||||
"libc",
|
||||
"pin-project-lite",
|
||||
"socket2 0.6.1",
|
||||
"socket2 0.6.2",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
@@ -2246,7 +2225,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-linuxkms"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"calloop 0.14.3",
|
||||
"drm",
|
||||
@@ -2264,7 +2243,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-selector"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"i-slint-backend-linuxkms",
|
||||
@@ -2277,7 +2256,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-winit"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"block2 0.6.2",
|
||||
"cfg-if",
|
||||
@@ -2316,7 +2295,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-common"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"fontique",
|
||||
"ttf-parser 0.25.1",
|
||||
@@ -2325,7 +2304,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-compiler"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"annotate-snippets",
|
||||
"by_address",
|
||||
@@ -2353,7 +2332,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-core"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"auto_enums",
|
||||
"bitflags 2.10.0",
|
||||
@@ -2388,7 +2367,7 @@ dependencies = [
|
||||
"slab",
|
||||
"strum",
|
||||
"sys-locale",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"unicode-linebreak",
|
||||
"unicode-script",
|
||||
"unicode-segmentation",
|
||||
@@ -2396,13 +2375,12 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
"web-time",
|
||||
"webbrowser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "i-slint-core-macros"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"serde_json",
|
||||
@@ -2412,7 +2390,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-femtovg"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"const-field-offset",
|
||||
@@ -2434,7 +2412,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-skia"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"cfg-if",
|
||||
@@ -2469,7 +2447,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-software"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"clru",
|
||||
@@ -2633,7 +2611,7 @@ dependencies = [
|
||||
"rgb",
|
||||
"tiff",
|
||||
"zune-core 0.5.1",
|
||||
"zune-jpeg 0.5.9",
|
||||
"zune-jpeg 0.5.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2648,9 +2626,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "imagesize"
|
||||
version = "0.13.0"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
|
||||
checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
|
||||
|
||||
[[package]]
|
||||
name = "imgref"
|
||||
@@ -2864,9 +2842,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kurbo"
|
||||
version = "0.11.3"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
|
||||
checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"euclid",
|
||||
@@ -2875,9 +2853,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kurbo"
|
||||
version = "0.12.0"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32"
|
||||
checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb"
|
||||
dependencies = [
|
||||
"arrayvec",
|
||||
"euclid",
|
||||
@@ -2924,9 +2902,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libm"
|
||||
version = "0.2.15"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
|
||||
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
||||
|
||||
[[package]]
|
||||
name = "libredox"
|
||||
@@ -3244,7 +3222,7 @@ dependencies = [
|
||||
"objc2-foundation 0.3.2",
|
||||
"once_cell",
|
||||
"png 0.17.16",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"windows-sys 0.60.2",
|
||||
]
|
||||
|
||||
@@ -3360,9 +3338,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "num-conv"
|
||||
version = "0.1.0"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
||||
checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
|
||||
|
||||
[[package]]
|
||||
name = "num-derive"
|
||||
@@ -4095,9 +4073,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.105"
|
||||
version = "1.0.106"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
|
||||
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -4216,9 +4194,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.43"
|
||||
version = "1.0.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
|
||||
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
@@ -4318,7 +4296,7 @@ dependencies = [
|
||||
"rand 0.9.2",
|
||||
"rand_chacha 0.9.0",
|
||||
"simd_helpers",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"v_frame",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
@@ -4456,11 +4434,11 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
|
||||
|
||||
[[package]]
|
||||
name = "resvg"
|
||||
version = "0.45.1"
|
||||
version = "0.46.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43"
|
||||
checksum = "b563218631706d614e23059436526d005b50ab5f2d506b55a17eb65c5eb83419"
|
||||
dependencies = [
|
||||
"gif 0.13.3",
|
||||
"gif 0.14.1",
|
||||
"image-webp",
|
||||
"log",
|
||||
"pico-args",
|
||||
@@ -4468,7 +4446,7 @@ dependencies = [
|
||||
"svgtypes",
|
||||
"tiny-skia",
|
||||
"usvg",
|
||||
"zune-jpeg 0.4.21",
|
||||
"zune-jpeg 0.5.11",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4482,7 +4460,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog-control-center"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"asusd",
|
||||
"concat-idents",
|
||||
@@ -4513,7 +4491,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_anime"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"gif 0.12.0",
|
||||
@@ -4527,7 +4505,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_aura"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"log",
|
||||
@@ -4538,7 +4516,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_dbus"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"asusd",
|
||||
"rog_anime",
|
||||
@@ -4552,7 +4530,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_platform"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"concat-idents",
|
||||
"inotify",
|
||||
@@ -4565,7 +4543,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_profiles"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"log",
|
||||
"rog_platform",
|
||||
@@ -4576,7 +4554,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_scsi"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"ron",
|
||||
"serde",
|
||||
@@ -4586,7 +4564,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_simulators"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"log",
|
||||
"rog_anime",
|
||||
@@ -4596,7 +4574,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_slash"
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"serde",
|
||||
@@ -4629,12 +4607,6 @@ dependencies = [
|
||||
"text-size",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "roxmltree"
|
||||
version = "0.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
|
||||
|
||||
[[package]]
|
||||
name = "roxmltree"
|
||||
version = "0.21.1"
|
||||
@@ -4924,9 +4896,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "siphasher"
|
||||
version = "1.0.1"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
|
||||
checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e"
|
||||
|
||||
[[package]]
|
||||
name = "skia-bindings"
|
||||
@@ -4975,7 +4947,7 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
||||
[[package]]
|
||||
name = "slint"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"const-field-offset",
|
||||
"i-slint-backend-selector",
|
||||
@@ -4995,7 +4967,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "slint-build"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"derive_more",
|
||||
"i-slint-compiler",
|
||||
@@ -5006,7 +4978,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "slint-macros"
|
||||
version = "1.15.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"i-slint-compiler",
|
||||
"proc-macro2",
|
||||
@@ -5068,7 +5040,7 @@ dependencies = [
|
||||
"log",
|
||||
"memmap2",
|
||||
"rustix 1.1.3",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"wayland-backend",
|
||||
"wayland-client",
|
||||
"wayland-csd-frame",
|
||||
@@ -5140,9 +5112,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
|
||||
checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys 0.60.2",
|
||||
@@ -5242,11 +5214,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "svgtypes"
|
||||
version = "0.15.3"
|
||||
version = "0.16.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
|
||||
checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d"
|
||||
dependencies = [
|
||||
"kurbo 0.11.3",
|
||||
"kurbo 0.13.0",
|
||||
"siphasher",
|
||||
]
|
||||
|
||||
@@ -5330,7 +5302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9"
|
||||
dependencies = [
|
||||
"quick-xml 0.37.5",
|
||||
"thiserror 2.0.17",
|
||||
"thiserror 2.0.18",
|
||||
"windows 0.61.3",
|
||||
"windows-version",
|
||||
]
|
||||
@@ -5380,11 +5352,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "2.0.17"
|
||||
version = "2.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
|
||||
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
|
||||
dependencies = [
|
||||
"thiserror-impl 2.0.17",
|
||||
"thiserror-impl 2.0.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5400,9 +5372,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "2.0.17"
|
||||
version = "2.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
|
||||
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -5434,9 +5406,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.3.45"
|
||||
version = "0.3.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd"
|
||||
checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5"
|
||||
dependencies = [
|
||||
"deranged",
|
||||
"num-conv",
|
||||
@@ -5447,9 +5419,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time-core"
|
||||
version = "0.1.7"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca"
|
||||
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
|
||||
|
||||
[[package]]
|
||||
name = "tiny-skia"
|
||||
@@ -5526,7 +5498,7 @@ dependencies = [
|
||||
"libc",
|
||||
"mio 1.1.1",
|
||||
"pin-project-lite",
|
||||
"socket2 0.6.1",
|
||||
"socket2 0.6.2",
|
||||
"tokio-macros",
|
||||
"tracing",
|
||||
"windows-sys 0.61.2",
|
||||
@@ -5940,19 +5912,19 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "usvg"
|
||||
version = "0.45.1"
|
||||
version = "0.46.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef"
|
||||
checksum = "e419dff010bb12512b0ae9e3d2f318dfbdf0167fde7eb05465134d4e8756076f"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"data-url",
|
||||
"flate2",
|
||||
"fontdb",
|
||||
"imagesize",
|
||||
"kurbo 0.11.3",
|
||||
"kurbo 0.13.0",
|
||||
"log",
|
||||
"pico-args",
|
||||
"roxmltree 0.20.0",
|
||||
"roxmltree",
|
||||
"rustybuzz",
|
||||
"simplecss",
|
||||
"siphasher",
|
||||
@@ -5973,9 +5945,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.19.0"
|
||||
version = "1.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
|
||||
checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"serde_core",
|
||||
@@ -6030,7 +6002,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "vtable"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"const-field-offset",
|
||||
"portable-atomic",
|
||||
@@ -6041,7 +6013,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "vtable-macro"
|
||||
version = "0.3.0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f55d24727b3917ad6953f89a1dd32b48556b290e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -6296,22 +6268,6 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webbrowser"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97"
|
||||
dependencies = [
|
||||
"core-foundation 0.10.1",
|
||||
"jni",
|
||||
"log",
|
||||
"ndk-context",
|
||||
"objc2 0.6.3",
|
||||
"objc2-foundation 0.3.2",
|
||||
"url",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "weezl"
|
||||
version = "0.1.12"
|
||||
@@ -6933,7 +6889,7 @@ dependencies = [
|
||||
"calloop 0.13.0",
|
||||
"cfg_aliases",
|
||||
"concurrent-queue",
|
||||
"core-foundation 0.9.4",
|
||||
"core-foundation",
|
||||
"core-graphics",
|
||||
"cursor-icon",
|
||||
"dpi",
|
||||
@@ -7152,9 +7108,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zbus"
|
||||
version = "5.13.1"
|
||||
version = "5.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17f79257df967b6779afa536788657777a0001f5b42524fcaf5038d4344df40b"
|
||||
checksum = "1bfeff997a0aaa3eb20c4652baf788d2dfa6d2839a0ead0b3ff69ce2f9c4bdd1"
|
||||
dependencies = [
|
||||
"async-broadcast",
|
||||
"async-executor",
|
||||
@@ -7187,9 +7143,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zbus_macros"
|
||||
version = "5.13.1"
|
||||
version = "5.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aad23e2d2f91cae771c7af7a630a49e755f1eb74f8a46e9f6d5f7a146edf5a37"
|
||||
checksum = "0bbd5a90dbe8feee5b13def448427ae314ccd26a49cac47905cafefb9ff846f1"
|
||||
dependencies = [
|
||||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
@@ -7219,18 +7175,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.33"
|
||||
version = "0.8.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
|
||||
checksum = "71ddd76bcebeed25db614f82bf31a9f4222d3fbba300e6fb6c00afa26cbd4d9d"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.33"
|
||||
version = "0.8.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
|
||||
checksum = "d8187381b52e32220d50b255276aa16a084ec0a9017a0ca2152a1f55c539758d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -7294,9 +7250,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.15"
|
||||
version = "1.0.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2"
|
||||
checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"
|
||||
|
||||
[[package]]
|
||||
name = "zune-core"
|
||||
@@ -7330,18 +7286,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zune-jpeg"
|
||||
version = "0.5.9"
|
||||
version = "0.5.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87c86acb70a85b2c16f071f171847d1945e8f44812630463cd14ec83900ad01c"
|
||||
checksum = "2959ca473aae96a14ecedf501d20b3608d2825ba280d5adb57d651721885b0c2"
|
||||
dependencies = [
|
||||
"zune-core 0.5.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zvariant"
|
||||
version = "5.9.1"
|
||||
version = "5.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "326aaed414f04fe839777b4c443d4e94c74e7b3621093bd9c5e649ac8aa96543"
|
||||
checksum = "68b64ef4f40c7951337ddc7023dd03528a57a3ce3408ee9da5e948bd29b232c4"
|
||||
dependencies = [
|
||||
"endi",
|
||||
"enumflags2",
|
||||
@@ -7353,9 +7309,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zvariant_derive"
|
||||
version = "5.9.1"
|
||||
version = "5.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba44e1f8f4da9e6e2d25d2a60b116ef8b9d0be174a7685e55bb12a99866279a7"
|
||||
checksum = "484d5d975eb7afb52cc6b929c13d3719a20ad650fea4120e6310de3fc55e415c"
|
||||
dependencies = [
|
||||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[workspace.package]
|
||||
version = "6.3.1"
|
||||
version = "6.3.2"
|
||||
rust-version = "1.82"
|
||||
license = "MPL-2.0"
|
||||
readme = "README.md"
|
||||
|
||||
@@ -8,7 +8,7 @@ use rog_aura::{AuraEffect, AuraModeNum, AuraZone, Colour, Direction, Speed};
|
||||
#[derive(FromArgs, Debug, Clone)]
|
||||
#[argh(
|
||||
subcommand,
|
||||
name = "aura-power-old",
|
||||
name = "power-tuf",
|
||||
description = "aura power (old ROGs and TUF laptops)"
|
||||
)]
|
||||
pub struct LedPowerCommand1 {
|
||||
@@ -38,7 +38,7 @@ pub struct LedPowerCommand1 {
|
||||
}
|
||||
|
||||
#[derive(FromArgs, Debug, Clone)]
|
||||
#[argh(subcommand, name = "aura-power", description = "aura power")]
|
||||
#[argh(subcommand, name = "power", description = "aura power")]
|
||||
pub struct LedPowerCommand2 {
|
||||
#[argh(subcommand)]
|
||||
pub command: Option<SetAuraZoneEnabled>,
|
||||
|
||||
@@ -18,9 +18,7 @@ pub struct CliStart {
|
||||
#[derive(FromArgs, Debug)]
|
||||
#[argh(subcommand)]
|
||||
pub enum CliCommand {
|
||||
Aura(LedModeCommand),
|
||||
AuraPowerOld(LedPowerCommand1),
|
||||
AuraPower(LedPowerCommand2),
|
||||
Aura(AuraCommand),
|
||||
Brightness(BrightnessCommand),
|
||||
Profile(ProfileCommand),
|
||||
FanCurve(FanCurveCommand),
|
||||
@@ -99,7 +97,7 @@ pub struct ProfileSetCommand {
|
||||
}
|
||||
|
||||
#[derive(FromArgs, Debug, Default)]
|
||||
#[argh(subcommand, name = "aura", description = "led mode commands")]
|
||||
#[argh(subcommand, name = "effect", description = "led mode commands")]
|
||||
pub struct LedModeCommand {
|
||||
#[argh(switch, description = "switch to next aura mode")]
|
||||
pub next_mode: bool,
|
||||
@@ -111,6 +109,21 @@ pub struct LedModeCommand {
|
||||
pub command: Option<SetAuraBuiltin>,
|
||||
}
|
||||
|
||||
#[derive(FromArgs, Debug)]
|
||||
#[argh(subcommand, name = "aura", description = "aura device commands")]
|
||||
pub struct AuraCommand {
|
||||
#[argh(subcommand)]
|
||||
pub command: AuraSubCommand,
|
||||
}
|
||||
|
||||
#[derive(FromArgs, Debug)]
|
||||
#[argh(subcommand)]
|
||||
pub enum AuraSubCommand {
|
||||
Power(LedPowerCommand2),
|
||||
PowerTuf(LedPowerCommand1),
|
||||
Effect(LedModeCommand),
|
||||
}
|
||||
|
||||
#[derive(FromArgs, Debug, Default)]
|
||||
#[argh(
|
||||
subcommand,
|
||||
|
||||
@@ -186,9 +186,11 @@ fn do_parsed(
|
||||
conn: Connection,
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
match &parsed.command {
|
||||
CliCommand::Aura(mode) => handle_led_mode(mode)?,
|
||||
CliCommand::AuraPowerOld(pow) => handle_led_power1(pow)?,
|
||||
CliCommand::AuraPower(pow) => handle_led_power2(pow)?,
|
||||
CliCommand::Aura(a) => match &a.command {
|
||||
crate::cli_opts::AuraSubCommand::Effect(mode) => handle_led_mode(mode)?,
|
||||
crate::cli_opts::AuraSubCommand::PowerTuf(pow) => handle_led_power1(pow)?,
|
||||
crate::cli_opts::AuraSubCommand::Power(pow) => handle_led_power2(pow)?,
|
||||
},
|
||||
CliCommand::Brightness(cmd) => handle_brightness(cmd)?,
|
||||
CliCommand::Profile(cmd) => handle_throttle_profile(&conn, supported_properties, cmd)?,
|
||||
CliCommand::FanCurve(cmd) => handle_fan_curve(&conn, cmd)?,
|
||||
@@ -720,7 +722,7 @@ fn handle_led_power1(power: &LedPowerCommand1) -> Result<(), Box<dyn std::error:
|
||||
&& !power.keyboard
|
||||
&& !power.lightbar
|
||||
{
|
||||
println!("Missing arg or command; run 'asusctl aura-power-old --help' for usage");
|
||||
println!("Missing arg or command; run 'asusctl aura power-tuf --help' for usage");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
@@ -773,7 +775,7 @@ fn handle_led_power2(power: &LedPowerCommand2) -> Result<(), Box<dyn std::error:
|
||||
}
|
||||
|
||||
if power.command.is_none() {
|
||||
println!("Missing arg or command; run 'asusctl aura-power --help' for usage");
|
||||
println!("Missing arg or command; run 'asusctl aura power --help' for usage");
|
||||
println!("Commands available");
|
||||
return Ok(());
|
||||
}
|
||||
@@ -968,52 +970,72 @@ fn print_firmware_attr(attr: &AsusArmouryProxyBlocking) -> Result<(), Box<dyn st
|
||||
let name = attr.name()?;
|
||||
println!("{}:", <&str>::from(name));
|
||||
|
||||
let attrs = attr.available_attrs()?;
|
||||
if attrs.contains(&"min_value".to_string())
|
||||
&& attrs.contains(&"max_value".to_string())
|
||||
&& attrs.contains(&"current_value".to_string())
|
||||
{
|
||||
let c = attr.current_value()?;
|
||||
let min = attr.min_value()?;
|
||||
let max = attr.max_value()?;
|
||||
println!(" current: {min}..[{c}]..{max}");
|
||||
if attrs.contains(&"default_value".to_string()) {
|
||||
println!(" default: {}\n", attr.default_value()?);
|
||||
// Be resilient to DBus read failures: if any read fails, show "unavailable"
|
||||
let attrs = attr.available_attrs().unwrap_or_default();
|
||||
|
||||
let has_min = attrs.contains(&"min_value".to_string());
|
||||
let has_max = attrs.contains(&"max_value".to_string());
|
||||
let has_current = attrs.contains(&"current_value".to_string());
|
||||
let has_possible = attrs.contains(&"possible_values".to_string());
|
||||
let has_default = attrs.contains(&"default_value".to_string());
|
||||
|
||||
if has_min && has_max && has_current {
|
||||
let c = attr.current_value().ok();
|
||||
let min = attr.min_value().ok();
|
||||
let max = attr.max_value().ok();
|
||||
match (min, c, max) {
|
||||
(Some(min), Some(c), Some(max)) => println!(" current: {min}..[{c}]..{max}"),
|
||||
_ => println!(" current: unavailable"),
|
||||
}
|
||||
|
||||
if has_default {
|
||||
match attr.default_value().ok() {
|
||||
Some(d) => println!(" default: {}\n", d),
|
||||
None => println!(" default: unavailable\n"),
|
||||
}
|
||||
} else {
|
||||
println!();
|
||||
}
|
||||
} else if attrs.contains(&"possible_values".to_string())
|
||||
&& attrs.contains(&"current_value".to_string())
|
||||
{
|
||||
let c = attr.current_value()?;
|
||||
let v = attr.possible_values()?;
|
||||
for p in v.iter().enumerate() {
|
||||
if p.0 == 0 {
|
||||
print!(" current: [");
|
||||
} else if has_possible && has_current {
|
||||
let c = attr.current_value().ok();
|
||||
let v = attr.possible_values().ok();
|
||||
if let (Some(c), Some(v)) = (c, v) {
|
||||
for p in v.iter().enumerate() {
|
||||
if p.0 == 0 {
|
||||
print!(" current: [");
|
||||
}
|
||||
if *p.1 == c {
|
||||
print!("({c})");
|
||||
} else {
|
||||
print!("{}", p.1);
|
||||
}
|
||||
if p.0 < v.len() - 1 {
|
||||
print!(",");
|
||||
}
|
||||
if p.0 == v.len() - 1 {
|
||||
print!("]");
|
||||
}
|
||||
}
|
||||
if *p.1 == c {
|
||||
print!("({c})");
|
||||
if has_default {
|
||||
match attr.default_value().ok() {
|
||||
Some(d) => println!(" default: {}\n", d),
|
||||
None => println!(" default: unavailable\n"),
|
||||
}
|
||||
} else {
|
||||
print!("{}", p.1);
|
||||
println!("\n");
|
||||
}
|
||||
if p.0 < v.len() - 1 {
|
||||
print!(",");
|
||||
}
|
||||
if p.0 == v.len() - 1 {
|
||||
print!("]");
|
||||
}
|
||||
}
|
||||
if attrs.contains(&"default_value".to_string()) {
|
||||
println!(" default: {}\n", attr.default_value()?);
|
||||
} else {
|
||||
println!("\n");
|
||||
println!(" current: unavailable\n");
|
||||
}
|
||||
} else if has_current {
|
||||
match attr.current_value().ok() {
|
||||
Some(c) => println!(" current: {c}\n"),
|
||||
None => println!(" current: unavailable\n"),
|
||||
}
|
||||
} else if attrs.contains(&"current_value".to_string()) {
|
||||
let c = attr.current_value()?;
|
||||
println!(" current: {c}\n");
|
||||
} else {
|
||||
println!();
|
||||
println!(" unavailable\n");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -654,6 +654,15 @@ impl CtrlPlatform {
|
||||
.enabled = enable;
|
||||
self.config.lock().await.write();
|
||||
|
||||
// Re-emit armoury attribute limits so GUI sees updated min/max for PPT
|
||||
// attributes which can change when enabling/disabling PPT tuning groups.
|
||||
// Fire-and-forget: we don't want to fail the property call if emit fails.
|
||||
let _ = self
|
||||
.armoury_registry
|
||||
.emit_limits(&self.connection)
|
||||
.await
|
||||
.map_err(|e| log::error!("Failed to emit armoury limits: {e:?}"));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -712,6 +721,13 @@ impl ReloadAndNotify for CtrlPlatform {
|
||||
*config = data;
|
||||
config.base_charge_control_end_threshold =
|
||||
base_charge_control_end_threshold.unwrap_or_default();
|
||||
|
||||
// Ensure any armoury limits changes from the new config are emitted
|
||||
let _ = self
|
||||
.armoury_registry
|
||||
.emit_limits(&self.connection)
|
||||
.await
|
||||
.map_err(|e| log::error!("Failed to emit armoury limits after reload: {e:?}"));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
%global debug_package %{nil}
|
||||
%endif
|
||||
|
||||
%define version 6.3.1
|
||||
%define version 6.3.2
|
||||
%define specrelease %{?dist}
|
||||
%define pkg_release 1%{specrelease}
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
advanced_type: r#None,
|
||||
power_zones: [Keyboard],
|
||||
),
|
||||
(
|
||||
(
|
||||
device_name: "FX607V",
|
||||
product_id: "",
|
||||
layout_name: "fa506i",
|
||||
@@ -351,13 +351,13 @@
|
||||
power_zones: [Keyboard, Lightbar, Logo, RearGlow],
|
||||
),
|
||||
(
|
||||
device_name: "G635L",
|
||||
product_id: "",
|
||||
layout_name: "g635l-per-key",
|
||||
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash],
|
||||
basic_zones: [],
|
||||
advanced_type: PerKey,
|
||||
power_zones: [Keyboard, Lightbar, Logo],
|
||||
device_name: "G635L",
|
||||
product_id: "",
|
||||
layout_name: "g635l-per-key",
|
||||
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash],
|
||||
basic_zones: [],
|
||||
advanced_type: PerKey,
|
||||
power_zones: [Keyboard, Lightbar, Logo],
|
||||
),
|
||||
(
|
||||
device_name: "G712LI",
|
||||
@@ -579,7 +579,7 @@
|
||||
device_name: "G835L",
|
||||
product_id: "",
|
||||
layout_name: "g814ji-per-key",
|
||||
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Comet, Flash],
|
||||
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash],
|
||||
basic_zones: [],
|
||||
advanced_type: PerKey,
|
||||
power_zones: [Keyboard, Lightbar, Logo],
|
||||
@@ -998,4 +998,4 @@
|
||||
advanced_type: r#None,
|
||||
power_zones: [Ally],
|
||||
),
|
||||
])
|
||||
])
|
||||
@@ -148,6 +148,12 @@ async fn main() -> Result<()> {
|
||||
}
|
||||
};
|
||||
|
||||
let is_tuf = {
|
||||
let b = board_name.to_lowercase();
|
||||
let p = prod_family.to_lowercase();
|
||||
b.contains("tuf") || p.contains("tuf")
|
||||
};
|
||||
|
||||
#[cfg(feature = "rog_ally")]
|
||||
if is_rog_ally {
|
||||
config.notifications.enabled = false;
|
||||
@@ -198,7 +204,7 @@ async fn main() -> Result<()> {
|
||||
loop {
|
||||
if is_rog_ally {
|
||||
let config_copy_2 = config.clone();
|
||||
let newui = setup_window(config.clone(), prefetched_supported.clone());
|
||||
let newui = setup_window(config.clone(), prefetched_supported.clone(), is_tuf);
|
||||
newui.window().on_close_requested(move || {
|
||||
exit(0);
|
||||
});
|
||||
@@ -256,7 +262,7 @@ async fn main() -> Result<()> {
|
||||
});
|
||||
} else {
|
||||
let config_copy_2 = config_copy.clone();
|
||||
let newui = setup_window(config_copy, pref_for_invoke.clone());
|
||||
let newui = setup_window(config_copy, pref_for_invoke.clone(), is_tuf);
|
||||
newui.window().on_close_requested(move || {
|
||||
if let Ok(mut app_state) = app_state_copy.lock() {
|
||||
*app_state = AppState::MainWindowClosed;
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
pub mod setup_anime;
|
||||
pub mod setup_aura;
|
||||
pub mod setup_fans;
|
||||
pub mod setup_gpu;
|
||||
pub mod setup_system;
|
||||
|
||||
use std::sync::atomic::{AtomicU64, Ordering};
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
|
||||
static TOAST_SEQ: AtomicU64 = AtomicU64::new(0);
|
||||
|
||||
use config_traits::StdConfig;
|
||||
use log::warn;
|
||||
@@ -70,21 +75,52 @@ pub fn show_toast(
|
||||
handle: Weak<MainWindow>,
|
||||
result: zbus::Result<()>,
|
||||
) {
|
||||
// bump sequence so that any previously spawned timers won't clear newer toasts
|
||||
let seq = TOAST_SEQ.fetch_add(1, Ordering::SeqCst) + 1;
|
||||
match result {
|
||||
Ok(_) => {
|
||||
slint::invoke_from_event_loop(move || handle.unwrap().invoke_show_toast(success)).ok()
|
||||
let delayed_handle = handle.clone();
|
||||
let delayed_text = success.clone();
|
||||
slint::invoke_from_event_loop(move || handle.unwrap().invoke_show_toast(success)).ok();
|
||||
tokio::spawn(async move {
|
||||
tokio::time::sleep(Duration::from_secs(5)).await;
|
||||
if TOAST_SEQ.load(Ordering::SeqCst) == seq {
|
||||
slint::invoke_from_event_loop(move || {
|
||||
delayed_handle
|
||||
.unwrap()
|
||||
.invoke_clear_toast_if_matches(delayed_text)
|
||||
})
|
||||
.ok();
|
||||
}
|
||||
});
|
||||
}
|
||||
Err(e) => {
|
||||
let delayed_handle = handle.clone();
|
||||
let delayed_text = fail.clone();
|
||||
slint::invoke_from_event_loop(move || {
|
||||
log::warn!("{fail}: {e}");
|
||||
handle.unwrap().invoke_show_toast(fail)
|
||||
})
|
||||
.ok();
|
||||
tokio::spawn(async move {
|
||||
tokio::time::sleep(Duration::from_secs(5)).await;
|
||||
if TOAST_SEQ.load(Ordering::SeqCst) == seq {
|
||||
slint::invoke_from_event_loop(move || {
|
||||
delayed_handle
|
||||
.unwrap()
|
||||
.invoke_clear_toast_if_matches(delayed_text)
|
||||
})
|
||||
.ok();
|
||||
}
|
||||
});
|
||||
}
|
||||
Err(e) => slint::invoke_from_event_loop(move || {
|
||||
log::warn!("{fail}: {e}");
|
||||
handle.unwrap().invoke_show_toast(fail)
|
||||
})
|
||||
.ok(),
|
||||
};
|
||||
}
|
||||
|
||||
pub fn setup_window(
|
||||
config: Arc<Mutex<Config>>,
|
||||
prefetched_supported: std::sync::Arc<Option<Vec<i32>>>,
|
||||
is_tuf: bool,
|
||||
) -> MainWindow {
|
||||
slint::set_xdg_app_id("rog-control-center")
|
||||
.map_err(|e| warn!("Couldn't set application ID: {e:?}"))
|
||||
@@ -92,6 +128,8 @@ pub fn setup_window(
|
||||
let ui = MainWindow::new()
|
||||
.map_err(|e| warn!("Couldn't create main window: {e:?}"))
|
||||
.unwrap();
|
||||
// propagate TUF flag to the UI so the sidebar can swap logo branding
|
||||
ui.set_is_tuf(is_tuf);
|
||||
ui.window()
|
||||
.show()
|
||||
.map_err(|e| warn!("Couldn't show main window: {e:?}"))
|
||||
@@ -128,9 +166,12 @@ pub fn setup_window(
|
||||
setup_anime_page(&ui, config.clone());
|
||||
}
|
||||
if available.contains(&"xyz.ljones.FanCurves".to_string()) {
|
||||
setup_fan_curve_page(&ui, config);
|
||||
setup_fan_curve_page(&ui, config.clone());
|
||||
}
|
||||
|
||||
// Populate GPU page choices and callbacks
|
||||
setup_gpu::setup_gpu_page(&ui);
|
||||
|
||||
ui
|
||||
}
|
||||
|
||||
|
||||
182
rog-control-center/src/ui/setup_gpu.rs
Normal file
182
rog-control-center/src/ui/setup_gpu.rs
Normal file
@@ -0,0 +1,182 @@
|
||||
use log::error;
|
||||
use rog_platform::asus_armoury::{AttrValue, FirmwareAttributes};
|
||||
use slint::{ComponentHandle, ModelRc, SharedString};
|
||||
|
||||
use crate::{GPUPageData, MainWindow};
|
||||
|
||||
// Populate GPU page choices and wire the `cb_set_gpu_mode` callback
|
||||
pub fn setup_gpu_page(ui: &MainWindow) {
|
||||
let handle = ui.as_weak();
|
||||
|
||||
tokio::spawn(async move {
|
||||
// Read available attributes
|
||||
let attrs = FirmwareAttributes::new();
|
||||
let gpu_mux_available = attrs
|
||||
.gpu_mux_mode()
|
||||
.map(|a| a.base_path_exists())
|
||||
.unwrap_or(false);
|
||||
|
||||
// Prepare choice strings
|
||||
let mut choices: Vec<SharedString> = Vec::new();
|
||||
choices.push(SharedString::from("Integrated"));
|
||||
if gpu_mux_available {
|
||||
choices.push(SharedString::from("Ultimate"));
|
||||
}
|
||||
choices.push(SharedString::from("Hybrid"));
|
||||
|
||||
// Read current attribute values to initialise UI state
|
||||
let current_dgpu = attrs
|
||||
.dgpu_disable()
|
||||
.and_then(|a| a.current_value().ok())
|
||||
.unwrap_or(AttrValue::Integer(0));
|
||||
let current_mux = attrs
|
||||
.gpu_mux_mode()
|
||||
.and_then(|a| a.current_value().ok())
|
||||
.unwrap_or(AttrValue::Integer(1));
|
||||
|
||||
// Convert to UI-able values
|
||||
let dgpu_disabled = matches!(current_dgpu, AttrValue::Integer(v) if v == 1);
|
||||
// Determine initial index for gpu_mux_mode property
|
||||
let initial_index: i32 = if gpu_mux_available {
|
||||
// If mux attr says 0 -> Ultimate, else try dgpu to refine
|
||||
match current_mux {
|
||||
AttrValue::Integer(0) => 1, // Ultimate
|
||||
_ => {
|
||||
match current_dgpu {
|
||||
AttrValue::Integer(1) => 0, // Integrated
|
||||
_ => 2, // Hybrid/Optimus fallback
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Only Integrated / Hybrid
|
||||
match current_dgpu {
|
||||
AttrValue::Integer(1) => 0,
|
||||
_ => 1,
|
||||
}
|
||||
};
|
||||
|
||||
let handle_copy = handle.clone();
|
||||
if let Err(e) = handle.upgrade_in_event_loop(move |handle| {
|
||||
let global = handle.global::<GPUPageData>();
|
||||
|
||||
// set choices model
|
||||
let model: ModelRc<SharedString> = choices.as_slice().into();
|
||||
global.set_gpu_modes_choises(model);
|
||||
global.set_gpu_mux_available(gpu_mux_available);
|
||||
|
||||
// set initial state
|
||||
global.set_dgpu_disabled(if dgpu_disabled { 1 } else { 0 });
|
||||
global.set_gpu_mux_mode(initial_index);
|
||||
|
||||
// register callback
|
||||
let handle_cb = handle_copy.clone();
|
||||
global.on_cb_set_gpu_mode(move |index: i32| {
|
||||
// show a blue toast informing user a reboot is required (auto-clears)
|
||||
let toast_handle = handle_cb.clone();
|
||||
crate::ui::show_toast(
|
||||
SharedString::from(
|
||||
"GPU mode change scheduled — reboot required for changes to apply.",
|
||||
),
|
||||
SharedString::from("Failed to set GPU mode"),
|
||||
toast_handle.clone(),
|
||||
Ok(()),
|
||||
);
|
||||
|
||||
let handle_next = handle_cb.clone();
|
||||
tokio::spawn(async move {
|
||||
let attrs = FirmwareAttributes::new();
|
||||
let mux_avail = attrs
|
||||
.gpu_mux_mode()
|
||||
.map(|a| a.base_path_exists())
|
||||
.unwrap_or(false);
|
||||
|
||||
// helper to set attribute ignoring errors
|
||||
if mux_avail {
|
||||
match index {
|
||||
0 => {
|
||||
// Integrated
|
||||
if let Some(attr) = attrs.dgpu_disable() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(1));
|
||||
}
|
||||
if let Some(attr) = attrs.gpu_mux_mode() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(1));
|
||||
}
|
||||
}
|
||||
1 => {
|
||||
// Ultimate
|
||||
if let Some(attr) = attrs.dgpu_disable() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(0));
|
||||
}
|
||||
if let Some(attr) = attrs.gpu_mux_mode() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(0));
|
||||
}
|
||||
}
|
||||
2 => {
|
||||
// Dynamic
|
||||
if let Some(attr) = attrs.dgpu_disable() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(0));
|
||||
}
|
||||
if let Some(attr) = attrs.gpu_mux_mode() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(1));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
} else {
|
||||
match index {
|
||||
0 => {
|
||||
if let Some(attr) = attrs.dgpu_disable() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(1));
|
||||
}
|
||||
}
|
||||
1 => {
|
||||
if let Some(attr) = attrs.dgpu_disable() {
|
||||
let _ = attr.set_current_value(&AttrValue::Integer(0));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
};
|
||||
|
||||
// After attempting write(s), refresh UI from attributes
|
||||
let attrs2 = FirmwareAttributes::new();
|
||||
let cur_dgpu = attrs2
|
||||
.dgpu_disable()
|
||||
.and_then(|a| a.current_value().ok())
|
||||
.unwrap_or(AttrValue::Integer(0));
|
||||
let cur_mux = attrs2
|
||||
.gpu_mux_mode()
|
||||
.and_then(|a| a.current_value().ok())
|
||||
.unwrap_or(AttrValue::Integer(1));
|
||||
|
||||
let dgpu_disabled = matches!(cur_dgpu, AttrValue::Integer(v) if v == 1);
|
||||
let new_index: i32 = if mux_avail {
|
||||
match cur_mux {
|
||||
AttrValue::Integer(0) => 1,
|
||||
_ => match cur_dgpu {
|
||||
AttrValue::Integer(1) => 0,
|
||||
_ => 2,
|
||||
},
|
||||
}
|
||||
} else {
|
||||
match cur_dgpu {
|
||||
AttrValue::Integer(1) => 0,
|
||||
_ => 1,
|
||||
}
|
||||
};
|
||||
|
||||
if let Err(e) = handle_next.upgrade_in_event_loop(move |h| {
|
||||
let g = h.global::<GPUPageData>();
|
||||
g.set_dgpu_disabled(if dgpu_disabled { 1 } else { 0 });
|
||||
g.set_gpu_mux_mode(new_index);
|
||||
}) {
|
||||
error!("setup_gpu callback: upgrade_in_event_loop: {e:?}");
|
||||
}
|
||||
});
|
||||
});
|
||||
}) {
|
||||
error!("setup_gpu_page: upgrade_in_event_loop: {e:?}");
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -40,10 +40,6 @@ pub fn setup_system_page(ui: &MainWindow, _config: Arc<Mutex<Config>>) {
|
||||
ui.global::<SystemPageData>().set_platform_profile(-1);
|
||||
ui.global::<SystemPageData>().set_panel_overdrive(-1);
|
||||
ui.global::<SystemPageData>().set_boot_sound(-1);
|
||||
ui.global::<SystemPageData>().set_kbd_leds_awake(-1);
|
||||
ui.global::<SystemPageData>().set_kbd_leds_sleep(-1);
|
||||
ui.global::<SystemPageData>().set_kbd_leds_boot(-1);
|
||||
ui.global::<SystemPageData>().set_kbd_leds_shutdown(-1);
|
||||
ui.global::<SystemPageData>().set_screen_auto_brightness(-1);
|
||||
ui.global::<SystemPageData>().set_mcu_powersave(-1);
|
||||
ui.global::<SystemPageData>().set_mini_led_mode(-1);
|
||||
@@ -673,26 +669,6 @@ pub fn setup_system_page_callbacks(ui: &MainWindow, _states: Arc<Mutex<Config>>)
|
||||
setup_callback!(boot_sound, handle, attr, i32);
|
||||
setup_external!(boot_sound, i32, handle, attr, value)
|
||||
}
|
||||
FirmwareAttribute::KbdLedsAwake => {
|
||||
init_property!(kbd_leds_awake, handle, value, i32);
|
||||
setup_callback!(kbd_leds_awake, handle, attr, i32);
|
||||
setup_external!(kbd_leds_awake, i32, handle, attr, value)
|
||||
}
|
||||
FirmwareAttribute::KbdLedsSleep => {
|
||||
init_property!(kbd_leds_sleep, handle, value, i32);
|
||||
setup_callback!(kbd_leds_sleep, handle, attr, i32);
|
||||
setup_external!(kbd_leds_sleep, i32, handle, attr, value)
|
||||
}
|
||||
FirmwareAttribute::KbdLedsBoot => {
|
||||
init_property!(kbd_leds_boot, handle, value, i32);
|
||||
setup_callback!(kbd_leds_boot, handle, attr, i32);
|
||||
setup_external!(kbd_leds_boot, i32, handle, attr, value)
|
||||
}
|
||||
FirmwareAttribute::KbdLedsShutdown => {
|
||||
init_property!(kbd_leds_shutdown, handle, value, i32);
|
||||
setup_callback!(kbd_leds_shutdown, handle, attr, i32);
|
||||
setup_external!(kbd_leds_shutdown, i32, handle, attr, value)
|
||||
}
|
||||
FirmwareAttribute::ScreenAutoBrightness => {
|
||||
init_property!(screen_auto_brightness, handle, value, i32);
|
||||
setup_callback!(screen_auto_brightness, handle, attr, i32);
|
||||
|
||||
@@ -7,7 +7,7 @@ import { PageFans } from "pages/fans.slint";
|
||||
import { PageAnime, AnimePageData } from "pages/anime.slint";
|
||||
import { RogItem } from "widgets/common.slint";
|
||||
import { PageAura } from "pages/aura.slint";
|
||||
import { PageGPU } from "pages/gpu.slint";
|
||||
import { PageGPU, GPUPageData } from "pages/gpu.slint";
|
||||
import { Node } from "widgets/graph.slint";
|
||||
export { Node }
|
||||
import { FanPageData, FanType, Profile } from "types/fan_types.slint";
|
||||
@@ -16,7 +16,7 @@ import { AuraPageData, AuraDevType, LaptopAuraPower, AuraPowerState, PowerZones,
|
||||
export { AuraPageData, AuraDevType, LaptopAuraPower, AuraPowerState, PowerZones, AuraEffect }
|
||||
import { PageAppSettings, AppSettingsPageData } from "pages/app_settings.slint";
|
||||
|
||||
export { AppSize, AttrMinMax, SystemPageData, AnimePageData, AppSettingsPageData }
|
||||
export { AppSize, AttrMinMax, SystemPageData, AnimePageData, AppSettingsPageData, GPUPageData }
|
||||
|
||||
export component MainWindow inherits Window {
|
||||
title: "ROG Control";
|
||||
@@ -35,6 +35,8 @@ export component MainWindow inherits Window {
|
||||
true, // About
|
||||
];
|
||||
private property <bool> show_notif;
|
||||
// TODO: change if TUF on the logo in the menu on the main page
|
||||
in property <bool> is_tuf: false;
|
||||
private property <bool> fade_cover;
|
||||
private property <bool> toast: false;
|
||||
private property <string> toast_text: "I show when something is waiting";
|
||||
@@ -43,6 +45,13 @@ export component MainWindow inherits Window {
|
||||
toast = text != "";
|
||||
toast_text = text;
|
||||
}
|
||||
callback clear_toast_if_matches(string);
|
||||
clear_toast_if_matches(text) => {
|
||||
if (toast && toast_text == text) {
|
||||
toast = false;
|
||||
toast_text = "";
|
||||
}
|
||||
}
|
||||
callback exit-app();
|
||||
callback show_notification(bool);
|
||||
show_notification(yes) => {
|
||||
@@ -73,6 +82,7 @@ export component MainWindow inherits Window {
|
||||
@tr("Menu7" => "About"),
|
||||
];
|
||||
available: root.sidebar_items_avilable;
|
||||
is_tuf: root.is_tuf;
|
||||
}
|
||||
|
||||
Button {
|
||||
@@ -94,31 +104,37 @@ export component MainWindow inherits Window {
|
||||
|
||||
/*if(side-bar.current-item == 1):*/ aura := PageAura {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 1;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 2): PageAnime {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 2;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 3): fans := PageFans {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 3;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 4): PageGPU {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 4;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 5): PageAppSettings {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 5;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 6): PageAbout {
|
||||
width: root.width - side-bar.width;
|
||||
height: root.height + 12px;
|
||||
visible: side-bar.current-item == 6;
|
||||
}
|
||||
|
||||
|
||||
@@ -238,15 +238,47 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_aura_power = false;
|
||||
root.show_fade_cover = false;
|
||||
// TUF devices: show the same configurable power groups as `New`, since
|
||||
// `setup_aura` fills `AuraPageData.supported_power_zones` and `led_power`
|
||||
// appropriately for TUF devices. This ensures the Power Settings panel
|
||||
// reflects what the firmware reports for TUF models.
|
||||
if root.show_aura_power && AuraPageData.device_type == AuraDevType.Tuf: Rectangle {
|
||||
background: Palette.background;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 30px;
|
||||
padding-top: 10px;
|
||||
spacing: 10px;
|
||||
alignment: LayoutAlignment.start;
|
||||
|
||||
for state[idx] in AuraPageData.led_power.states: tuf_zone := AuraPowerGroup {
|
||||
group-title: AuraPageData.power_zone_names[state.zone_name_idx];
|
||||
boot_checked: state.boot;
|
||||
boot_toggled => {
|
||||
AuraPageData.led_power.states[idx].boot = tuf_zone.boot_checked;
|
||||
AuraPageData.cb_led_power(AuraPageData.led_power);
|
||||
}
|
||||
awake_checked: state.awake;
|
||||
awake_toggled => {
|
||||
AuraPageData.led_power.states[idx].awake = tuf_zone.awake_checked;
|
||||
AuraPageData.cb_led_power(AuraPageData.led_power);
|
||||
}
|
||||
sleep_checked: state.sleep;
|
||||
sleep_toggled => {
|
||||
AuraPageData.led_power.states[idx].sleep = tuf_zone.sleep_checked;
|
||||
AuraPageData.cb_led_power(AuraPageData.led_power);
|
||||
}
|
||||
shutdown_checked: state.shutdown;
|
||||
shutdown_toggled => {
|
||||
AuraPageData.led_power.states[idx].shutdown = tuf_zone.shutdown_checked;
|
||||
AuraPageData.cb_led_power(AuraPageData.led_power);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -292,17 +324,17 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_aura_power = false;
|
||||
root.show_fade_cover = false;
|
||||
}
|
||||
}
|
||||
if root.show_aura_power: Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_aura_power = false;
|
||||
root.show_fade_cover = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ export global GPUPageData {
|
||||
in-out property <int> gpu_mux_mode: 1; // 0 = Ultra/Discreet, 1 = Integrated/Optimus
|
||||
in-out property <int> dgpu_disabled: 0; // 1 == dGPU disabled
|
||||
in-out property <int> egpu_enabled: 0; // 1 == eGPU (XGMobile) enabled
|
||||
in-out property <[string]> gpu_modes_choises: [@tr("Ultra"), @tr("Integrated")];
|
||||
callback cb_gpu_mux_mode(int);
|
||||
callback cb_dgpu_disabled(int);
|
||||
callback cb_egpu_enabled(int);
|
||||
in-out property <[string]> gpu_modes_choises: [@tr("Integrated"), @tr("Hybrid")];
|
||||
in-out property <bool> gpu_mux_available: false;
|
||||
callback cb_set_gpu_mode(int);
|
||||
}
|
||||
|
||||
export component PageGPU inherits Rectangle {
|
||||
@@ -19,16 +18,45 @@ export component PageGPU inherits Rectangle {
|
||||
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
SystemDropdown {
|
||||
text: @tr("GPU mode");
|
||||
current_index <=> GPUPageData.gpu_mux_mode;
|
||||
current_value: GPUPageData.gpu_modes_choises[GPUPageData.gpu_mux_mode];
|
||||
model <=> GPUPageData.gpu_modes_choises;
|
||||
selected => {
|
||||
GPUPageData.cb_gpu_mux_mode(0);
|
||||
GPUPageData.cb_gpu_mux_mode(1);
|
||||
padding: 12px;
|
||||
spacing: 8px;
|
||||
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.border;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
height: 36px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Internal/Discrete GPU");
|
||||
}
|
||||
}
|
||||
|
||||
HorizontalLayout {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
alignment: LayoutAlignment.space-between;
|
||||
Rectangle {
|
||||
height: 32px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
text: @tr("Note: Changes take effect after a reboot. The dropdown always shows the current mode.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HorizontalLayout {
|
||||
SystemDropdown {
|
||||
text: @tr("GPU mode");
|
||||
model <=> GPUPageData.gpu_modes_choises;
|
||||
current_index <=> GPUPageData.gpu_mux_mode;
|
||||
current_value: GPUPageData.gpu_modes_choises[GPUPageData.gpu_mux_mode];
|
||||
selected => {
|
||||
GPUPageData.cb_set_gpu_mode(GPUPageData.gpu_mux_mode)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,14 +51,6 @@ export global SystemPageData {
|
||||
callback cb_panel_overdrive(int);
|
||||
in-out property <int> boot_sound;
|
||||
callback cb_boot_sound(int);
|
||||
in-out property <int> kbd_leds_awake;
|
||||
callback cb_kbd_leds_awake(int);
|
||||
in-out property <int> kbd_leds_sleep;
|
||||
callback cb_kbd_leds_sleep(int);
|
||||
in-out property <int> kbd_leds_boot;
|
||||
callback cb_kbd_leds_boot(int);
|
||||
in-out property <int> kbd_leds_shutdown;
|
||||
callback cb_kbd_leds_shutdown(int);
|
||||
in-out property <int> screen_auto_brightness;
|
||||
callback cb_screen_auto_brightness(int);
|
||||
in-out property <int> mcu_powersave;
|
||||
@@ -252,66 +244,6 @@ export component PageSystem inherits Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_awake != -1 ||
|
||||
SystemPageData.kbd_leds_sleep != -1 ||
|
||||
SystemPageData.kbd_leds_boot != -1 ||
|
||||
SystemPageData.kbd_leds_shutdown != -1: VerticalLayout {
|
||||
padding: 0px;
|
||||
spacing: 0px;
|
||||
alignment: LayoutAlignment.start;
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.border;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
height: 40px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Keyboard Power Management");
|
||||
}
|
||||
}
|
||||
|
||||
GroupBox {
|
||||
|
||||
HorizontalLayout {
|
||||
spacing: 10px;
|
||||
if SystemPageData.kbd_leds_awake != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Awake Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_awake;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_awake(SystemPageData.kbd_leds_awake)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_sleep != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Sleep Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_sleep;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_sleep(SystemPageData.kbd_leds_sleep)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_boot != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Boot Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_boot;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_boot(SystemPageData.kbd_leds_boot)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_shutdown != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Shutdown Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_shutdown;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_shutdown(SystemPageData.kbd_leds_shutdown)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.border;
|
||||
@@ -634,7 +566,7 @@ export component PageSystem inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemDropdown {
|
||||
text: @tr("EPP for Quiet Policy");
|
||||
text: @tr("EPP for ") + SystemPageData.platform_profile_choices[2] + @tr(" Policy");
|
||||
current_index <=> SystemPageData.profile_quiet_epp;
|
||||
current_value: SystemPageData.energy_performance_choices[SystemPageData.profile_quiet_epp];
|
||||
model <=> SystemPageData.energy_performance_choices;
|
||||
|
||||
@@ -52,6 +52,7 @@ component SideBarItem inherits Rectangle {
|
||||
export component SideBar inherits Rectangle {
|
||||
in property <[string]> model: [];
|
||||
in property <[bool]> available: [];
|
||||
in property <bool> is_tuf: false;
|
||||
out property <int> current-item: 0;
|
||||
out property <int> current-focused: fs.has-focus ? fs.focused-tab : -1;
|
||||
|
||||
@@ -99,6 +100,9 @@ export component SideBar inherits Rectangle {
|
||||
|
||||
Image {
|
||||
height: 100px;
|
||||
// TODO: change if TUF on the logo in the menu on the main page
|
||||
// If running on a TUF model, replace the ROG red with TUF orange
|
||||
// (add data/tuf-control-center.png and switch here when available)
|
||||
source: @image-url("../../data/rog-control-center.png");
|
||||
horizontal-alignment: center;
|
||||
image-fit: contain;
|
||||
|
||||
@@ -257,7 +257,6 @@ impl FirmwareAttributes {
|
||||
pub enum FirmwareAttributeType {
|
||||
#[default]
|
||||
Immediate,
|
||||
TUFKeyboard,
|
||||
Ppt,
|
||||
Gpu,
|
||||
Bios,
|
||||
@@ -346,11 +345,6 @@ define_attribute_getters!(
|
||||
panel_hd_mode: Immediate,
|
||||
panel_od: Immediate,
|
||||
|
||||
kbd_leds_awake: TUFKeyboard,
|
||||
kbd_leds_sleep: TUFKeyboard,
|
||||
kbd_leds_boot: TUFKeyboard,
|
||||
kbd_leds_shutdown: TUFKeyboard,
|
||||
|
||||
charge_mode: Immediate,
|
||||
}
|
||||
);
|
||||
@@ -400,10 +394,6 @@ pub enum FirmwareAttribute {
|
||||
PptEnabled = 24,
|
||||
None = 25,
|
||||
ScreenAutoBrightness = 26,
|
||||
KbdLedsAwake = 27,
|
||||
KbdLedsSleep = 28,
|
||||
KbdLedsBoot = 29,
|
||||
KbdLedsShutdown = 30,
|
||||
}
|
||||
|
||||
impl From<&str> for FirmwareAttribute {
|
||||
@@ -425,10 +415,6 @@ impl From<&str> for FirmwareAttribute {
|
||||
"nv_tgp" => Self::DgpuTgp,
|
||||
"charge_mode" => Self::ChargeMode,
|
||||
"boot_sound" => Self::BootSound,
|
||||
"kbd_leds_awake" => Self::KbdLedsAwake,
|
||||
"kbd_leds_sleep" => Self::KbdLedsSleep,
|
||||
"kbd_leds_boot" => Self::KbdLedsBoot,
|
||||
"kbd_leds_shutdown" => Self::KbdLedsShutdown,
|
||||
"mcu_powersave" => Self::McuPowersave,
|
||||
"panel_overdrive" => Self::PanelOverdrive,
|
||||
"panel_hd_mode" => Self::PanelHdMode,
|
||||
@@ -474,10 +460,6 @@ impl From<FirmwareAttribute> for &str {
|
||||
FirmwareAttribute::DgpuDisable => "dgpu_disable",
|
||||
FirmwareAttribute::GpuMuxMode => "gpu_mux_mode",
|
||||
FirmwareAttribute::MiniLedMode => "mini_led_mode",
|
||||
FirmwareAttribute::KbdLedsAwake => "kbd_leds_awake",
|
||||
FirmwareAttribute::KbdLedsSleep => "kbd_leds_sleep",
|
||||
FirmwareAttribute::KbdLedsBoot => "kbd_leds_boot",
|
||||
FirmwareAttribute::KbdLedsShutdown => "kbd_leds_shutdown",
|
||||
FirmwareAttribute::PendingReboot => "pending_reboot",
|
||||
FirmwareAttribute::ScreenAutoBrightness => "screen_auto_brightness",
|
||||
FirmwareAttribute::None => "none",
|
||||
|
||||
Reference in New Issue
Block a user