mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Compare commits
24 Commits
argh
...
7edb77b41f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7edb77b41f | ||
|
|
737ffa522c | ||
|
|
0311cfb1f9 | ||
|
|
b0ee27fb74 | ||
|
|
d4eca0c93e | ||
|
|
a9f4aac875 | ||
|
|
8377056580 | ||
|
|
d541581012 | ||
|
|
72ef6dea07 | ||
|
|
bfadc39400 | ||
|
|
754d82d031 | ||
|
|
8ae072ea82 | ||
|
|
cec2168591 | ||
|
|
8d6acc5975 | ||
|
|
b20ecf5378 | ||
|
|
ade839e981 | ||
|
|
d625c279a6 | ||
|
|
5ea14be3fa | ||
|
|
64c2e55db4 | ||
|
|
5303bfc1ad | ||
|
|
635f1dc9b9 | ||
|
|
33a4dba8fe | ||
|
|
e4680c9543 | ||
|
|
e9c5315bda |
@@ -90,7 +90,7 @@ pages:
|
|||||||
- rm -rf public
|
- rm -rf public
|
||||||
- mkdir public
|
- mkdir public
|
||||||
- cp -R ci-target/doc/* public
|
- cp -R ci-target/doc/* public
|
||||||
- cp extra/index.html public
|
- if [ -f extra/index.html ]; then cp extra/index.html public; else echo "no extra/index.html to copy"; fi
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
|||||||
17
CHANGELOG.md
17
CHANGELOG.md
@@ -1,12 +1,27 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [Unreleased]
|
## [6.3.2]
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Improve the notification area, @shevchenko0013 strikes again!
|
||||||
|
- Improve firmware attributes handling
|
||||||
|
|
||||||
|
## [6.3.1]
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Removed a lighting mode that is unavailable in windows to G835L: thanks to @shevchenko0013 again!
|
||||||
|
- Added translations for Ukranian language, thanks @shevchenko0013!
|
||||||
|
- Added LEDs definition for G615LR, thanks @btnrv
|
||||||
|
- Fix improper usage of Quiet when only LowPower is available
|
||||||
|
|
||||||
|
## [6.3.0]
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Added support for TUF keyboard powerstate control
|
- Added support for TUF keyboard powerstate control
|
||||||
- Improved AniMe Matrix support thanks to @Seom1177 !
|
- Improved AniMe Matrix support thanks to @Seom1177 !
|
||||||
- Fixed a bug with one-shot battery change, thanks @bitr8 !
|
- Fixed a bug with one-shot battery change, thanks @bitr8 !
|
||||||
- Changed the CLI interface of asusctl to be less confusing
|
- Changed the CLI interface of asusctl to be less confusing
|
||||||
|
- Added support for G835L, thanks to @shevchenko0013 !
|
||||||
|
|
||||||
## [6.2.0]
|
## [6.2.0]
|
||||||
|
|
||||||
|
|||||||
133
Cargo.lock
generated
133
Cargo.lock
generated
@@ -212,7 +212,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "asusctl"
|
name = "asusctl"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"argh",
|
"argh",
|
||||||
"dmi_id",
|
"dmi_id",
|
||||||
@@ -232,7 +232,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "asusd"
|
name = "asusd"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cargo-husky",
|
"cargo-husky",
|
||||||
"concat-idents",
|
"concat-idents",
|
||||||
@@ -259,7 +259,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "asusd-user"
|
name = "asusd-user"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"config-traits",
|
"config-traits",
|
||||||
"dirs",
|
"dirs",
|
||||||
@@ -816,9 +816,9 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.52"
|
version = "1.2.53"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
|
checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"jobserver",
|
"jobserver",
|
||||||
@@ -864,9 +864,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.4.42"
|
version = "0.4.43"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
|
checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iana-time-zone",
|
"iana-time-zone",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@@ -938,7 +938,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "config-traits"
|
name = "config-traits"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"ron",
|
"ron",
|
||||||
@@ -987,7 +987,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "const-field-offset"
|
name = "const-field-offset"
|
||||||
version = "0.1.5"
|
version = "0.1.5"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const-field-offset-macro",
|
"const-field-offset-macro",
|
||||||
"field-offset",
|
"field-offset",
|
||||||
@@ -996,7 +996,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "const-field-offset-macro"
|
name = "const-field-offset-macro"
|
||||||
version = "0.1.5"
|
version = "0.1.5"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -1274,7 +1274,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dmi_id"
|
name = "dmi_id"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"udev 0.8.0",
|
"udev 0.8.0",
|
||||||
@@ -1545,9 +1545,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "find-msvc-tools"
|
name = "find-msvc-tools"
|
||||||
version = "0.1.7"
|
version = "0.1.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
|
checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
@@ -2246,7 +2246,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-backend-linuxkms"
|
name = "i-slint-backend-linuxkms"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"calloop 0.14.3",
|
"calloop 0.14.3",
|
||||||
"drm",
|
"drm",
|
||||||
@@ -2264,7 +2264,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-backend-selector"
|
name = "i-slint-backend-selector"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"i-slint-backend-linuxkms",
|
"i-slint-backend-linuxkms",
|
||||||
@@ -2277,7 +2277,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-backend-winit"
|
name = "i-slint-backend-winit"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"block2 0.6.2",
|
"block2 0.6.2",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
@@ -2316,7 +2316,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-common"
|
name = "i-slint-common"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fontique",
|
"fontique",
|
||||||
"ttf-parser 0.25.1",
|
"ttf-parser 0.25.1",
|
||||||
@@ -2325,7 +2325,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-compiler"
|
name = "i-slint-compiler"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"annotate-snippets",
|
"annotate-snippets",
|
||||||
"by_address",
|
"by_address",
|
||||||
@@ -2353,7 +2353,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-core"
|
name = "i-slint-core"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"auto_enums",
|
"auto_enums",
|
||||||
"bitflags 2.10.0",
|
"bitflags 2.10.0",
|
||||||
@@ -2402,7 +2402,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-core-macros"
|
name = "i-slint-core-macros"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -2412,7 +2412,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-renderer-femtovg"
|
name = "i-slint-renderer-femtovg"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"const-field-offset",
|
"const-field-offset",
|
||||||
@@ -2434,7 +2434,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-renderer-skia"
|
name = "i-slint-renderer-skia"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
@@ -2469,7 +2469,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "i-slint-renderer-software"
|
name = "i-slint-renderer-software"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"clru",
|
"clru",
|
||||||
@@ -2632,8 +2632,8 @@ dependencies = [
|
|||||||
"rayon",
|
"rayon",
|
||||||
"rgb",
|
"rgb",
|
||||||
"tiff",
|
"tiff",
|
||||||
"zune-core 0.5.0",
|
"zune-core 0.5.1",
|
||||||
"zune-jpeg 0.5.8",
|
"zune-jpeg 0.5.9",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2819,9 +2819,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.83"
|
version = "0.3.85"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
|
checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
@@ -4482,7 +4482,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog-control-center"
|
name = "rog-control-center"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"asusd",
|
"asusd",
|
||||||
"concat-idents",
|
"concat-idents",
|
||||||
@@ -4513,7 +4513,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_anime"
|
name = "rog_anime"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dmi_id",
|
"dmi_id",
|
||||||
"gif 0.12.0",
|
"gif 0.12.0",
|
||||||
@@ -4527,7 +4527,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_aura"
|
name = "rog_aura"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dmi_id",
|
"dmi_id",
|
||||||
"log",
|
"log",
|
||||||
@@ -4538,7 +4538,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_dbus"
|
name = "rog_dbus"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"asusd",
|
"asusd",
|
||||||
"rog_anime",
|
"rog_anime",
|
||||||
@@ -4552,7 +4552,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_platform"
|
name = "rog_platform"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"concat-idents",
|
"concat-idents",
|
||||||
"inotify",
|
"inotify",
|
||||||
@@ -4565,7 +4565,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_profiles"
|
name = "rog_profiles"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"rog_platform",
|
"rog_platform",
|
||||||
@@ -4576,7 +4576,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_scsi"
|
name = "rog_scsi"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ron",
|
"ron",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -4586,7 +4586,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_simulators"
|
name = "rog_simulators"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"rog_anime",
|
"rog_anime",
|
||||||
@@ -4596,7 +4596,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rog_slash"
|
name = "rog_slash"
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dmi_id",
|
"dmi_id",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -4975,7 +4975,7 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "slint"
|
name = "slint"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const-field-offset",
|
"const-field-offset",
|
||||||
"i-slint-backend-selector",
|
"i-slint-backend-selector",
|
||||||
@@ -4995,7 +4995,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "slint-build"
|
name = "slint-build"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_more",
|
"derive_more",
|
||||||
"i-slint-compiler",
|
"i-slint-compiler",
|
||||||
@@ -5006,7 +5006,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "slint-macros"
|
name = "slint-macros"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"i-slint-compiler",
|
"i-slint-compiler",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -5778,9 +5778,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typed-index-collections"
|
name = "typed-index-collections"
|
||||||
version = "3.4.0"
|
version = "3.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5318ee4ce62a4e948a33915574021a7a953d83e84fba6e25c72ffcfd7dad35ff"
|
checksum = "898160f1dfd383b4e92e17f0512a7d62f3c51c44937b23b6ffc3a1614a8eaccd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"serde",
|
"serde",
|
||||||
@@ -6030,7 +6030,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "vtable"
|
name = "vtable"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const-field-offset",
|
"const-field-offset",
|
||||||
"portable-atomic",
|
"portable-atomic",
|
||||||
@@ -6041,7 +6041,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "vtable-macro"
|
name = "vtable-macro"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -6075,18 +6075,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasip2"
|
name = "wasip2"
|
||||||
version = "1.0.1+wasi-0.2.4"
|
version = "1.0.2+wasi-0.2.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
|
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"wit-bindgen",
|
"wit-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen"
|
name = "wasm-bindgen"
|
||||||
version = "0.2.106"
|
version = "0.2.108"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
|
checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
@@ -6097,11 +6097,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-futures"
|
name = "wasm-bindgen-futures"
|
||||||
version = "0.4.56"
|
version = "0.4.58"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
|
checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
|
"futures-util",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
@@ -6110,9 +6111,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro"
|
name = "wasm-bindgen-macro"
|
||||||
version = "0.2.106"
|
version = "0.2.108"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
|
checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"wasm-bindgen-macro-support",
|
"wasm-bindgen-macro-support",
|
||||||
@@ -6120,9 +6121,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-macro-support"
|
name = "wasm-bindgen-macro-support"
|
||||||
version = "0.2.106"
|
version = "0.2.108"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
|
checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bumpalo",
|
"bumpalo",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -6133,9 +6134,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-bindgen-shared"
|
name = "wasm-bindgen-shared"
|
||||||
version = "0.2.106"
|
version = "0.2.108"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
|
checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
@@ -6277,9 +6278,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "web-sys"
|
name = "web-sys"
|
||||||
version = "0.3.83"
|
version = "0.3.85"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
|
checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
@@ -6980,9 +6981,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wit-bindgen"
|
name = "wit-bindgen"
|
||||||
version = "0.46.0"
|
version = "0.51.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
|
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "write-fonts"
|
name = "write-fonts"
|
||||||
@@ -7293,9 +7294,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zmij"
|
name = "zmij"
|
||||||
version = "1.0.14"
|
version = "1.0.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea"
|
checksum = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zune-core"
|
name = "zune-core"
|
||||||
@@ -7305,9 +7306,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zune-core"
|
name = "zune-core"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773"
|
checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zune-inflate"
|
name = "zune-inflate"
|
||||||
@@ -7329,11 +7330,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zune-jpeg"
|
name = "zune-jpeg"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e35aee689668bf9bd6f6f3a6c60bb29ba1244b3b43adfd50edd554a371da37d5"
|
checksum = "87c86acb70a85b2c16f071f171847d1945e8f44812630463cd14ec83900ad01c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"zune-core 0.5.0",
|
"zune-core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "6.2.0"
|
version = "6.3.1"
|
||||||
rust-version = "1.82"
|
rust-version = "1.82"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = ["Luke <luke@ljones.dev>"]
|
authors = [
|
||||||
|
"Luke <luke@ljones.dev>",
|
||||||
|
"Denis Benato <benato.denis96@gmail.com>"
|
||||||
|
]
|
||||||
repository = "https://gitlab.com/asus-linux/asusctl"
|
repository = "https://gitlab.com/asus-linux/asusctl"
|
||||||
homepage = "https://gitlab.com/asus-linux/asusctl"
|
homepage = "https://gitlab.com/asus-linux/asusctl"
|
||||||
description = "Laptop feature control for ASUS ROG laptops and others"
|
description = "Laptop feature control for ASUS ROG laptops and others"
|
||||||
|
|||||||
@@ -13,9 +13,7 @@ Now includes a GUI, `rog-control-center`.
|
|||||||
|
|
||||||
Due to on-going driver work the minimum suggested kernel version is always **the latest*, as improvements and fixes are continuous.
|
Due to on-going driver work the minimum suggested kernel version is always **the latest*, as improvements and fixes are continuous.
|
||||||
|
|
||||||
Support for some new features is not avilable unless you run a patched kernel with the work I am doing [in this github repo](https://github.com/flukejones/linux/tree/wip/ally-6.13). Use the linked branch, or `wip/ally-6.12`. Everything that is done here is upstreamed eventually (a long process).
|
Support for TDP is tied to the new asus-armoury driver: available mainline since linux 6.19: everything older is not supported.
|
||||||
|
|
||||||
Z13 devices will need [these](https://lore.kernel.org/linux-input/20240416090402.31057-1-luke@ljones.dev/T/#t)
|
|
||||||
|
|
||||||
## X11 support
|
## X11 support
|
||||||
|
|
||||||
@@ -180,3 +178,7 @@ Reference to any ASUS products, services, processes, or other information and/or
|
|||||||
The use of ROG and ASUS trademarks within this website and associated tools and libraries is only to provide a recognisable identifier to users to enable them to associate that these tools will work with ASUS ROG laptops.
|
The use of ROG and ASUS trademarks within this website and associated tools and libraries is only to provide a recognisable identifier to users to enable them to associate that these tools will work with ASUS ROG laptops.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## AI Disaclaimer
|
||||||
|
|
||||||
|
Portions of this code have been written by various AI tools and reviewed by the maintainer exaclty as with every other contribution.
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ use std::sync::Arc;
|
|||||||
|
|
||||||
use config_traits::StdConfig;
|
use config_traits::StdConfig;
|
||||||
use log::{debug, error, info, warn};
|
use log::{debug, error, info, warn};
|
||||||
use rog_platform::asus_armoury::{AttrValue, Attribute, FirmwareAttribute, FirmwareAttributes};
|
use rog_platform::asus_armoury::{
|
||||||
|
AttrValue, Attribute, FirmwareAttribute, FirmwareAttributeType, FirmwareAttributes,
|
||||||
|
};
|
||||||
use rog_platform::platform::{PlatformProfile, RogPlatform};
|
use rog_platform::platform::{PlatformProfile, RogPlatform};
|
||||||
use rog_platform::power::AsusPower;
|
use rog_platform::power::AsusPower;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@@ -168,82 +170,64 @@ impl ArmouryAttributeRegistry {
|
|||||||
impl crate::Reloadable for AsusArmouryAttribute {
|
impl crate::Reloadable for AsusArmouryAttribute {
|
||||||
async fn reload(&mut self) -> Result<(), RogError> {
|
async fn reload(&mut self) -> Result<(), RogError> {
|
||||||
info!("Reloading {}", self.attr.name());
|
info!("Reloading {}", self.attr.name());
|
||||||
let name: FirmwareAttribute = self.attr.name().into();
|
let attribute: FirmwareAttribute = self.attr.name().into();
|
||||||
|
let name = self.attr.name();
|
||||||
|
|
||||||
// Treat dGPU attributes the same as PPT attributes for power-profile
|
let config = self.config.lock().await;
|
||||||
// behaviour so they follow AC/DC tuning groups.
|
let apply_value = match attribute.property_type() {
|
||||||
if name.is_ppt() || name.is_dgpu() {
|
FirmwareAttributeType::Ppt => {
|
||||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
let power_plugged = self
|
let power_plugged = self
|
||||||
.power
|
.power
|
||||||
.get_online()
|
.get_online()
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
error!("Could not get power status: {e:?}");
|
error!("Could not get power status: {e:?}");
|
||||||
e
|
e
|
||||||
})
|
|
||||||
.unwrap_or_default()
|
|
||||||
== 1;
|
|
||||||
|
|
||||||
let apply_value = {
|
|
||||||
let config = self.config.lock().await;
|
|
||||||
config
|
|
||||||
.select_tunings_ref(power_plugged, profile)
|
|
||||||
.and_then(|tuning| {
|
|
||||||
if tuning.enabled {
|
|
||||||
tuning.group.get(&self.name()).copied()
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
};
|
.unwrap_or_default()
|
||||||
|
== 1;
|
||||||
|
|
||||||
if let Some(tune) = apply_value {
|
let apply_value = {
|
||||||
self.attr
|
config.select_tunings_ref(power_plugged, profile).and_then(
|
||||||
.set_current_value(&AttrValue::Integer(tune))
|
|tuning| match tuning.enabled {
|
||||||
.map_err(|e| {
|
true => tuning.group.get(&self.name()).copied(),
|
||||||
error!("Could not set {} value: {e:?}", self.attr.name());
|
false => None,
|
||||||
self.attr.base_path_exists();
|
},
|
||||||
e
|
)
|
||||||
})?;
|
};
|
||||||
info!(
|
|
||||||
"Restored PPT armoury setting {} to {:?}",
|
apply_value.map_or(AttrValue::None, AttrValue::Integer)
|
||||||
self.attr.name(),
|
|
||||||
tune
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
info!("Ignored restoring PPT armoury setting {} as tuning group is disabled or no saved value", self.attr.name());
|
|
||||||
}
|
}
|
||||||
} else {
|
FirmwareAttributeType::Gpu => {
|
||||||
// Handle non-PPT attributes (boolean and other settings)
|
info!("Reload called on GPU attribute {name}: doing nothing");
|
||||||
if let Some(saved_value) = self.config.lock().await.armoury_settings.get(&name) {
|
AttrValue::None
|
||||||
self.attr
|
|
||||||
.set_current_value(&AttrValue::Integer(*saved_value))
|
|
||||||
.map_err(|e| {
|
|
||||||
error!(
|
|
||||||
"Error restoring armoury setting {}: {e:?}",
|
|
||||||
self.attr.name()
|
|
||||||
);
|
|
||||||
self.attr.base_path_exists();
|
|
||||||
e
|
|
||||||
})?;
|
|
||||||
info!(
|
|
||||||
"Restored armoury setting {} to {:?}",
|
|
||||||
self.attr.name(),
|
|
||||||
saved_value
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
info!(
|
|
||||||
"No saved armoury setting for {}: skipping restore",
|
|
||||||
self.attr.name()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
_ => {
|
||||||
|
info!("Reload called on firmware attribute {name}");
|
||||||
|
match config.armoury_settings.get(&attribute) {
|
||||||
|
Some(saved_value) => AttrValue::Integer(*saved_value),
|
||||||
|
None => AttrValue::None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.attr.set_current_value(&apply_value).map_err(|e| {
|
||||||
|
error!("Could not set {} value: {e:?}", self.attr.name());
|
||||||
|
self.attr.base_path_exists();
|
||||||
|
e
|
||||||
|
})?;
|
||||||
|
|
||||||
|
info!(
|
||||||
|
"Restored asus-armoury setting {} to {:?}",
|
||||||
|
self.attr.name(),
|
||||||
|
apply_value
|
||||||
|
);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If return is `-1` on a property then there is avilable value for that
|
/// If return is `-1` on a property then there is available value for that
|
||||||
/// property
|
/// property
|
||||||
#[interface(name = "xyz.ljones.AsusArmoury")]
|
#[interface(name = "xyz.ljones.AsusArmoury")]
|
||||||
impl AsusArmouryAttribute {
|
impl AsusArmouryAttribute {
|
||||||
@@ -293,7 +277,7 @@ impl AsusArmouryAttribute {
|
|||||||
|
|
||||||
async fn restore_default(&self) -> fdo::Result<()> {
|
async fn restore_default(&self) -> fdo::Result<()> {
|
||||||
self.attr.restore_default()?;
|
self.attr.restore_default()?;
|
||||||
if self.name().is_ppt() || self.name().is_dgpu() {
|
if self.name().property_type() == FirmwareAttributeType::Ppt {
|
||||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
let power_plugged = self
|
let power_plugged = self
|
||||||
.power
|
.power
|
||||||
@@ -352,7 +336,7 @@ impl AsusArmouryAttribute {
|
|||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn current_value(&self) -> fdo::Result<i32> {
|
async fn current_value(&self) -> fdo::Result<i32> {
|
||||||
if self.name().is_ppt() || self.name().is_dgpu() {
|
if self.name().property_type() == FirmwareAttributeType::Ppt {
|
||||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
let power_plugged = self
|
let power_plugged = self
|
||||||
.power
|
.power
|
||||||
@@ -387,66 +371,62 @@ impl AsusArmouryAttribute {
|
|||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn set_current_value(&mut self, value: i32) -> fdo::Result<()> {
|
async fn set_current_value(&mut self, value: i32) -> fdo::Result<()> {
|
||||||
if self.name().is_ppt() || self.name().is_dgpu() {
|
let name = self.attr.name();
|
||||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
let apply_value = match self.name().property_type() {
|
||||||
let power_plugged = self
|
FirmwareAttributeType::Ppt => {
|
||||||
.power
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
.get_online()
|
let power_plugged = self
|
||||||
.map_err(|e| {
|
.power
|
||||||
error!("Could not get power status: {e:?}");
|
.get_online()
|
||||||
e
|
|
||||||
})
|
|
||||||
.unwrap_or_default();
|
|
||||||
|
|
||||||
let mut config = self.config.lock().await;
|
|
||||||
let tuning = config.select_tunings(power_plugged == 1, profile);
|
|
||||||
|
|
||||||
if let Some(tune) = tuning.group.get_mut(&self.name()) {
|
|
||||||
*tune = value;
|
|
||||||
} else {
|
|
||||||
tuning.group.insert(self.name(), value);
|
|
||||||
debug!("Store tuning config for {} = {:?}", self.attr.name(), value);
|
|
||||||
}
|
|
||||||
if tuning.enabled {
|
|
||||||
self.attr
|
|
||||||
.set_current_value(&AttrValue::Integer(value))
|
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
error!(
|
error!("Could not get power status: {e:?}");
|
||||||
"Could not set value to PPT property {}: {e:?}",
|
|
||||||
self.attr.name()
|
|
||||||
);
|
|
||||||
e
|
e
|
||||||
})?;
|
})
|
||||||
} else {
|
.unwrap_or_default();
|
||||||
warn!(
|
|
||||||
"Tuning group is disabled: skipping setting value to PPT property {}",
|
|
||||||
self.attr.name()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self.attr
|
|
||||||
.set_current_value(&AttrValue::Integer(value))
|
|
||||||
.map_err(|e| {
|
|
||||||
error!(
|
|
||||||
"Could not set value {value} to attribute {}: {e:?}",
|
|
||||||
self.attr.name()
|
|
||||||
);
|
|
||||||
e
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut settings = self.config.lock().await;
|
let mut config = self.config.lock().await;
|
||||||
settings
|
let tuning = config.select_tunings(power_plugged == 1, profile);
|
||||||
.armoury_settings
|
|
||||||
.entry(self.name())
|
if let Some(tune) = tuning.group.get_mut(&self.name()) {
|
||||||
.and_modify(|setting| {
|
*tune = value;
|
||||||
debug!("Set config for {} = {value}", self.attr.name());
|
} else {
|
||||||
*setting = value;
|
tuning.group.insert(self.name(), value);
|
||||||
})
|
debug!("Store tuning config for {name} = {:?}", value);
|
||||||
.or_insert_with(|| {
|
}
|
||||||
debug!("Adding config for {} = {value}", self.attr.name());
|
|
||||||
value
|
match tuning.enabled {
|
||||||
});
|
true => {
|
||||||
}
|
debug!("Tuning is enabled: setting value to PPT property {name} = {value}");
|
||||||
|
AttrValue::Integer(value)
|
||||||
|
}
|
||||||
|
false => {
|
||||||
|
warn!("Tuning is disabled: skipping setting value to PPT property {name}");
|
||||||
|
AttrValue::None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
let mut settings = self.config.lock().await;
|
||||||
|
settings
|
||||||
|
.armoury_settings
|
||||||
|
.entry(self.name())
|
||||||
|
.and_modify(|setting| {
|
||||||
|
debug!("Set config for {name} = {value}");
|
||||||
|
*setting = value;
|
||||||
|
})
|
||||||
|
.or_insert_with(|| {
|
||||||
|
debug!("Adding config for {name} = {value}");
|
||||||
|
value
|
||||||
|
});
|
||||||
|
|
||||||
|
AttrValue::Integer(value)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.attr.set_current_value(&apply_value).map_err(|e| {
|
||||||
|
error!("Could not set value {value} to attribute {name}: {e:?}");
|
||||||
|
e
|
||||||
|
})?;
|
||||||
|
|
||||||
// write config after setting value
|
// write config after setting value
|
||||||
self.config.lock().await.write();
|
self.config.lock().await.write();
|
||||||
@@ -515,7 +495,7 @@ pub async fn set_config_or_default(
|
|||||||
) {
|
) {
|
||||||
for attr in attrs.attributes().iter() {
|
for attr in attrs.attributes().iter() {
|
||||||
let name: FirmwareAttribute = attr.name().into();
|
let name: FirmwareAttribute = attr.name().into();
|
||||||
if name.is_ppt() || name.is_dgpu() {
|
if name.property_type() == FirmwareAttributeType::Ppt {
|
||||||
let tuning = config.select_tunings(power_plugged, profile);
|
let tuning = config.select_tunings(power_plugged, profile);
|
||||||
if !tuning.enabled {
|
if !tuning.enabled {
|
||||||
debug!("Tuning group is not enabled, skipping");
|
debug!("Tuning group is not enabled, skipping");
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ use std::sync::Arc;
|
|||||||
|
|
||||||
use config_traits::StdConfig;
|
use config_traits::StdConfig;
|
||||||
use log::{debug, error, info, warn};
|
use log::{debug, error, info, warn};
|
||||||
use rog_platform::asus_armoury::{AttrValue, FirmwareAttribute, FirmwareAttributes};
|
use rog_platform::asus_armoury::{
|
||||||
|
AttrValue, FirmwareAttribute, FirmwareAttributeType, FirmwareAttributes,
|
||||||
|
};
|
||||||
use rog_platform::cpu::{CPUControl, CPUGovernor, CPUEPP};
|
use rog_platform::cpu::{CPUControl, CPUGovernor, CPUEPP};
|
||||||
use rog_platform::platform::{PlatformProfile, Properties, RogPlatform};
|
use rog_platform::platform::{PlatformProfile, Properties, RogPlatform};
|
||||||
use rog_platform::power::AsusPower;
|
use rog_platform::power::AsusPower;
|
||||||
@@ -459,8 +461,18 @@ impl CtrlPlatform {
|
|||||||
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
||||||
policy: PlatformProfile,
|
policy: PlatformProfile,
|
||||||
) -> Result<(), FdoErr> {
|
) -> Result<(), FdoErr> {
|
||||||
self.config.lock().await.platform_profile_on_battery = policy;
|
// If the requested profile isn't available on this platform, and it's
|
||||||
self.set_platform_profile(ctxt, policy).await?;
|
// `Quiet`, fall back to `LowPower` so we don't write an unavailable
|
||||||
|
// profile into the config file.
|
||||||
|
let mut chosen = policy;
|
||||||
|
if let Ok(choices) = self.platform.get_platform_profile_choices() {
|
||||||
|
if chosen == PlatformProfile::Quiet && !choices.contains(&PlatformProfile::Quiet) {
|
||||||
|
chosen = PlatformProfile::LowPower;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.config.lock().await.platform_profile_on_battery = chosen;
|
||||||
|
self.set_platform_profile(ctxt, chosen).await?;
|
||||||
self.config.lock().await.write();
|
self.config.lock().await.write();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -488,8 +500,16 @@ impl CtrlPlatform {
|
|||||||
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
||||||
policy: PlatformProfile,
|
policy: PlatformProfile,
|
||||||
) -> Result<(), FdoErr> {
|
) -> Result<(), FdoErr> {
|
||||||
self.config.lock().await.platform_profile_on_ac = policy;
|
// Mirror the same fallback behavior for AC profile changes.
|
||||||
self.set_platform_profile(ctxt, policy).await?;
|
let mut chosen = policy;
|
||||||
|
if let Ok(choices) = self.platform.get_platform_profile_choices() {
|
||||||
|
if chosen == PlatformProfile::Quiet && !choices.contains(&PlatformProfile::Quiet) {
|
||||||
|
chosen = PlatformProfile::LowPower;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.config.lock().await.platform_profile_on_ac = chosen;
|
||||||
|
self.set_platform_profile(ctxt, chosen).await?;
|
||||||
self.config.lock().await.write();
|
self.config.lock().await.write();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -599,7 +619,7 @@ impl CtrlPlatform {
|
|||||||
|
|
||||||
for attr in self.attributes.attributes() {
|
for attr in self.attributes.attributes() {
|
||||||
let name: FirmwareAttribute = attr.name().into();
|
let name: FirmwareAttribute = attr.name().into();
|
||||||
if name.is_ppt() {
|
if name.property_type() == FirmwareAttributeType::Ppt {
|
||||||
// reset stored value
|
// reset stored value
|
||||||
if let Some(tune) = self
|
if let Some(tune) = self
|
||||||
.config
|
.config
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
%global debug_package %{nil}
|
%global debug_package %{nil}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%define version 6.2.0
|
%define version 6.3.1
|
||||||
%define specrelease %{?dist}
|
%define specrelease %{?dist}
|
||||||
%define pkg_release 1%{specrelease}
|
%define pkg_release 1%{specrelease}
|
||||||
|
|
||||||
|
|||||||
23
extra/index.html
Normal file
23
extra/index.html
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>asusctl docs</title>
|
||||||
|
<!-- Redirect to the generated crate docs -->
|
||||||
|
<meta http-equiv="refresh" content="0;url=asusctl/index.html">
|
||||||
|
<link rel="canonical" href="asusctl/index.html">
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; color:#222; display:flex; align-items:center; justify-content:center; height:100vh; margin:0 }
|
||||||
|
.box { text-align:center }
|
||||||
|
a { color: #0366d6 }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="box">
|
||||||
|
<h1>asusctl documentation</h1>
|
||||||
|
<p>Redirecting to the generated docs — if your browser doesn't redirect automatically, <a href="asusctl/index.html">click here</a>.</p>
|
||||||
|
<p>If you expected a different landing page, update <code>extra/index.html</code> accordingly.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -332,6 +332,15 @@
|
|||||||
advanced_type: r#None,
|
advanced_type: r#None,
|
||||||
power_zones: [Keyboard, Lightbar],
|
power_zones: [Keyboard, Lightbar],
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
device_name: "G615LR",
|
||||||
|
product_id: "",
|
||||||
|
layout_name: "g634j-per-key",
|
||||||
|
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave],
|
||||||
|
basic_zones: [Key1, Key2, Key3, Key4],
|
||||||
|
advanced_type: r#None,
|
||||||
|
power_zones: [Keyboard, Lightbar],
|
||||||
|
),
|
||||||
(
|
(
|
||||||
device_name: "G634J",
|
device_name: "G634J",
|
||||||
product_id: "",
|
product_id: "",
|
||||||
@@ -566,6 +575,15 @@
|
|||||||
advanced_type: PerKey,
|
advanced_type: PerKey,
|
||||||
power_zones: [Keyboard, Lightbar, Logo, RearGlow],
|
power_zones: [Keyboard, Lightbar, Logo, RearGlow],
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
device_name: "G835L",
|
||||||
|
product_id: "",
|
||||||
|
layout_name: "g814ji-per-key",
|
||||||
|
basic_modes: [Static, Breathe, RainbowCycle, RainbowWave, Star, Rain, Highlight, Laser, Ripple, Comet, Flash],
|
||||||
|
basic_zones: [],
|
||||||
|
advanced_type: PerKey,
|
||||||
|
power_zones: [Keyboard, Lightbar, Logo],
|
||||||
|
),
|
||||||
(
|
(
|
||||||
device_name: "GA401I",
|
device_name: "GA401I",
|
||||||
product_id: "",
|
product_id: "",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ mocking = []
|
|||||||
x11 = ["slint/backend-winit-x11"]
|
x11 = ["slint/backend-winit-x11"]
|
||||||
# Optional tokio debug feature does not require nightly; remove RUSTFLAGS note.
|
# Optional tokio debug feature does not require nightly; remove RUSTFLAGS note.
|
||||||
tokio-debug = ["console-subscriber"]
|
tokio-debug = ["console-subscriber"]
|
||||||
|
rog_ally = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
console-subscriber = { version = "^0.4", optional = true }
|
console-subscriber = { version = "^0.4", optional = true }
|
||||||
|
|||||||
@@ -107,7 +107,6 @@ async fn main() -> Result<()> {
|
|||||||
let board_name = dmi.board_name;
|
let board_name = dmi.board_name;
|
||||||
let prod_family = dmi.product_family;
|
let prod_family = dmi.product_family;
|
||||||
info!("Running on {board_name}, product: {prod_family}");
|
info!("Running on {board_name}, product: {prod_family}");
|
||||||
let is_rog_ally = board_name == "RC71L" || board_name == "RC72L" || prod_family == "ROG Ally";
|
|
||||||
|
|
||||||
let args: Vec<String> = args().skip(1).collect();
|
let args: Vec<String> = args().skip(1).collect();
|
||||||
|
|
||||||
@@ -138,6 +137,18 @@ async fn main() -> Result<()> {
|
|||||||
config.start_fullscreen = false;
|
config.start_fullscreen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let is_rog_ally = {
|
||||||
|
#[cfg(feature = "rog_ally")]
|
||||||
|
{
|
||||||
|
board_name == "RC71L" || board_name == "RC72L" || prod_family == "ROG Ally"
|
||||||
|
}
|
||||||
|
#[cfg(not(feature = "rog_ally"))]
|
||||||
|
{
|
||||||
|
false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#[cfg(feature = "rog_ally")]
|
||||||
if is_rog_ally {
|
if is_rog_ally {
|
||||||
config.notifications.enabled = false;
|
config.notifications.enabled = false;
|
||||||
config.enable_tray_icon = false;
|
config.enable_tray_icon = false;
|
||||||
@@ -145,6 +156,7 @@ async fn main() -> Result<()> {
|
|||||||
config.startup_in_background = false;
|
config.startup_in_background = false;
|
||||||
config.start_fullscreen = true;
|
config.start_fullscreen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
config.write();
|
config.write();
|
||||||
|
|
||||||
let enable_tray_icon = config.enable_tray_icon;
|
let enable_tray_icon = config.enable_tray_icon;
|
||||||
@@ -203,76 +215,77 @@ async fn main() -> Result<()> {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.ok();
|
.ok();
|
||||||
} else {
|
|
||||||
// save as a var, don't hold the lock the entire time or deadlocks happen
|
continue;
|
||||||
if let Ok(app_state) = app_state.lock() {
|
}
|
||||||
state = *app_state;
|
|
||||||
|
// save as a var, don't hold the lock the entire time or deadlocks happen
|
||||||
|
if let Ok(app_state) = app_state.lock() {
|
||||||
|
state = *app_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This sleep is required to give the event loop time to react
|
||||||
|
sleep(Duration::from_millis(300));
|
||||||
|
if state == AppState::MainWindowShouldOpen {
|
||||||
|
if let Ok(mut app_state) = app_state.lock() {
|
||||||
|
*app_state = AppState::MainWindowOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This sleep is required to give the event loop time to react
|
let config_copy = config.clone();
|
||||||
sleep(Duration::from_millis(300));
|
let app_state_copy = app_state.clone();
|
||||||
if state == AppState::MainWindowShouldOpen {
|
slint::invoke_from_event_loop(move || {
|
||||||
if let Ok(mut app_state) = app_state.lock() {
|
UI.with(|ui| {
|
||||||
*app_state = AppState::MainWindowOpen;
|
let app_state_copy = app_state_copy.clone();
|
||||||
}
|
let mut ui = ui.borrow_mut();
|
||||||
|
if let Some(ui) = ui.as_mut() {
|
||||||
|
ui.window().show().unwrap();
|
||||||
|
ui.window().on_close_requested(move || {
|
||||||
|
if let Ok(mut app_state) = app_state_copy.lock() {
|
||||||
|
*app_state = AppState::MainWindowClosed;
|
||||||
|
}
|
||||||
|
slint::CloseRequestResponse::HideWindow
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
let config_copy_2 = config_copy.clone();
|
||||||
|
let newui = setup_window(config_copy);
|
||||||
|
newui.window().on_close_requested(move || {
|
||||||
|
if let Ok(mut app_state) = app_state_copy.lock() {
|
||||||
|
*app_state = AppState::MainWindowClosed;
|
||||||
|
}
|
||||||
|
slint::CloseRequestResponse::HideWindow
|
||||||
|
});
|
||||||
|
|
||||||
let config_copy = config.clone();
|
let ui_copy = newui.as_weak();
|
||||||
let app_state_copy = app_state.clone();
|
newui
|
||||||
slint::invoke_from_event_loop(move || {
|
.window()
|
||||||
UI.with(|ui| {
|
.set_rendering_notifier(move |s, _| {
|
||||||
let app_state_copy = app_state_copy.clone();
|
if let slint::RenderingState::RenderingSetup = s {
|
||||||
let mut ui = ui.borrow_mut();
|
let config = config_copy_2.clone();
|
||||||
if let Some(ui) = ui.as_mut() {
|
ui_copy
|
||||||
ui.window().show().unwrap();
|
.upgrade_in_event_loop(move |w| {
|
||||||
ui.window().on_close_requested(move || {
|
let fullscreen =
|
||||||
if let Ok(mut app_state) = app_state_copy.lock() {
|
config.lock().is_ok_and(|c| c.start_fullscreen);
|
||||||
*app_state = AppState::MainWindowClosed;
|
if fullscreen && !w.window().is_fullscreen() {
|
||||||
|
w.window().set_fullscreen(fullscreen);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.ok();
|
||||||
}
|
}
|
||||||
slint::CloseRequestResponse::HideWindow
|
})
|
||||||
});
|
.ok();
|
||||||
} else {
|
ui.replace(newui);
|
||||||
let config_copy_2 = config_copy.clone();
|
|
||||||
let newui = setup_window(config_copy);
|
|
||||||
newui.window().on_close_requested(move || {
|
|
||||||
if let Ok(mut app_state) = app_state_copy.lock() {
|
|
||||||
*app_state = AppState::MainWindowClosed;
|
|
||||||
}
|
|
||||||
slint::CloseRequestResponse::HideWindow
|
|
||||||
});
|
|
||||||
|
|
||||||
let ui_copy = newui.as_weak();
|
|
||||||
newui
|
|
||||||
.window()
|
|
||||||
.set_rendering_notifier(move |s, _| {
|
|
||||||
if let slint::RenderingState::RenderingSetup = s {
|
|
||||||
let config = config_copy_2.clone();
|
|
||||||
ui_copy
|
|
||||||
.upgrade_in_event_loop(move |w| {
|
|
||||||
let fullscreen = config
|
|
||||||
.lock()
|
|
||||||
.is_ok_and(|c| c.start_fullscreen);
|
|
||||||
if fullscreen && !w.window().is_fullscreen() {
|
|
||||||
w.window().set_fullscreen(fullscreen);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.ok();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.ok();
|
|
||||||
ui.replace(newui);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.unwrap();
|
|
||||||
} else if state == AppState::QuitApp {
|
|
||||||
slint::quit_event_loop().unwrap();
|
|
||||||
exit(0);
|
|
||||||
} else if state != AppState::MainWindowOpen {
|
|
||||||
if let Ok(config) = config.lock() {
|
|
||||||
if !config.run_in_background {
|
|
||||||
slint::quit_event_loop().unwrap();
|
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
} else if state == AppState::QuitApp {
|
||||||
|
slint::quit_event_loop().unwrap();
|
||||||
|
exit(0);
|
||||||
|
} else if state != AppState::MainWindowOpen {
|
||||||
|
if let Ok(config) = config.lock() {
|
||||||
|
if !config.run_in_background {
|
||||||
|
slint::quit_event_loop().unwrap();
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,15 +9,11 @@ use std::process::Command;
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use futures_util::StreamExt;
|
|
||||||
use log::{debug, error, info, warn};
|
use log::{debug, error, info, warn};
|
||||||
use notify_rust::{Hint, Notification, Timeout, Urgency};
|
use notify_rust::{Hint, Notification, Timeout};
|
||||||
use rog_platform::platform::GpuMode;
|
|
||||||
use rog_platform::power::AsusPower;
|
use rog_platform::power::AsusPower;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use supergfxctl::actions::UserActionRequired as GfxUserAction;
|
use supergfxctl::pci_device::GfxPower;
|
||||||
use supergfxctl::pci_device::{GfxMode, GfxPower};
|
|
||||||
use supergfxctl::zbus_proxy::DaemonProxy as SuperProxy;
|
|
||||||
use tokio::runtime::Runtime;
|
use tokio::runtime::Runtime;
|
||||||
use tokio::task::JoinHandle;
|
use tokio::task::JoinHandle;
|
||||||
|
|
||||||
@@ -145,12 +141,8 @@ pub fn start_notifications(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let enabled_notifications_copy = config.clone();
|
info!("Attempting to start plain dgpu status monitor");
|
||||||
let no_supergfx = move |e: &zbus::Error| {
|
start_dpu_status_mon(config.clone());
|
||||||
error!("zbus signal: receive_notify_gfx_status: {e}");
|
|
||||||
warn!("Attempting to start plain dgpu status monitor");
|
|
||||||
start_dpu_status_mon(enabled_notifications_copy.clone());
|
|
||||||
};
|
|
||||||
|
|
||||||
// GPU MUX Mode notif
|
// GPU MUX Mode notif
|
||||||
// TODO: need to get armoury attrs and iter to find
|
// TODO: need to get armoury attrs and iter to find
|
||||||
@@ -189,95 +181,9 @@ pub fn start_notifications(
|
|||||||
// Ok::<(), zbus::Error>(())
|
// Ok::<(), zbus::Error>(())
|
||||||
// });
|
// });
|
||||||
|
|
||||||
let enabled_notifications_copy = config.clone();
|
|
||||||
// GPU Mode change/action notif
|
|
||||||
tokio::spawn(async move {
|
|
||||||
let conn = zbus::Connection::system().await.inspect_err(|e| {
|
|
||||||
no_supergfx(e);
|
|
||||||
})?;
|
|
||||||
let proxy = SuperProxy::builder(&conn).build().await.inspect_err(|e| {
|
|
||||||
no_supergfx(e);
|
|
||||||
})?;
|
|
||||||
let _ = proxy.mode().await.inspect_err(|e| {
|
|
||||||
no_supergfx(e);
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let proxy_copy = proxy.clone();
|
|
||||||
let enabled_notifications_copy_action = enabled_notifications_copy.clone();
|
|
||||||
let mut p = proxy.receive_notify_action().await?;
|
|
||||||
tokio::spawn(async move {
|
|
||||||
info!("Started zbus signal thread: receive_notify_action");
|
|
||||||
while let Some(e) = p.next().await {
|
|
||||||
if let Ok(out) = e.args() {
|
|
||||||
// Respect user notification settings for gpu actions
|
|
||||||
if let Ok(cfg) = enabled_notifications_copy_action.lock() {
|
|
||||||
if !cfg.notifications.enabled || !cfg.notifications.receive_notify_gfx {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let action = out.action();
|
|
||||||
let mode = convert_gfx_mode(proxy.mode().await.unwrap_or_default());
|
|
||||||
match action {
|
|
||||||
supergfxctl::actions::UserActionRequired::Reboot => {
|
|
||||||
do_mux_notification("Graphics mode change requires reboot", &mode)
|
|
||||||
}
|
|
||||||
_ => do_gfx_action_notif(<&str>::from(action), *action, mode),
|
|
||||||
}
|
|
||||||
.map_err(|e| {
|
|
||||||
error!("zbus signal: do_gfx_action_notif: {e}");
|
|
||||||
e
|
|
||||||
})
|
|
||||||
.ok();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let mut p = proxy_copy.receive_notify_gfx_status().await?;
|
|
||||||
tokio::spawn(async move {
|
|
||||||
info!("Started zbus signal thread: receive_notify_gfx_status");
|
|
||||||
let mut last_status = GfxPower::Unknown;
|
|
||||||
while let Some(e) = p.next().await {
|
|
||||||
if let Ok(out) = e.args() {
|
|
||||||
let status = out.status;
|
|
||||||
if status != GfxPower::Unknown && status != last_status {
|
|
||||||
if let Ok(config) = enabled_notifications_copy.lock() {
|
|
||||||
if !config.notifications.receive_notify_gfx_status
|
|
||||||
|| !config.notifications.enabled
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Required check because status cycles through
|
|
||||||
// active/unknown/suspended
|
|
||||||
do_gpu_status_notif("dGPU status changed:", &status)
|
|
||||||
.show_async()
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.on_close(|_| ());
|
|
||||||
}
|
|
||||||
last_status = status;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ok::<(), zbus::Error>(())
|
|
||||||
});
|
|
||||||
|
|
||||||
Ok(vec![blocking])
|
Ok(vec![blocking])
|
||||||
}
|
}
|
||||||
|
|
||||||
fn convert_gfx_mode(gfx: GfxMode) -> GpuMode {
|
|
||||||
match gfx {
|
|
||||||
GfxMode::Hybrid => GpuMode::Optimus,
|
|
||||||
GfxMode::Integrated => GpuMode::Integrated,
|
|
||||||
GfxMode::NvidiaNoModeset => GpuMode::Optimus,
|
|
||||||
GfxMode::Vfio => GpuMode::Vfio,
|
|
||||||
GfxMode::AsusEgpu => GpuMode::Egpu,
|
|
||||||
GfxMode::AsusMuxDgpu => GpuMode::Ultimate,
|
|
||||||
GfxMode::None => GpuMode::Error,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn base_notification<T>(message: &str, data: &T) -> Notification
|
fn base_notification<T>(message: &str, data: &T) -> Notification
|
||||||
where
|
where
|
||||||
T: Display,
|
T: Display,
|
||||||
@@ -303,97 +209,3 @@ fn do_gpu_status_notif(message: &str, data: &GfxPower) -> Notification {
|
|||||||
notif.icon(icon);
|
notif.icon(icon);
|
||||||
notif
|
notif
|
||||||
}
|
}
|
||||||
|
|
||||||
fn do_gfx_action_notif(message: &str, action: GfxUserAction, mode: GpuMode) -> Result<()> {
|
|
||||||
if matches!(action, GfxUserAction::Reboot) {
|
|
||||||
do_mux_notification("Graphics mode change requires reboot", &mode).ok();
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut notif = Notification::new();
|
|
||||||
notif
|
|
||||||
.appname(NOTIF_HEADER)
|
|
||||||
.summary(&format!("Changing to {mode}. {message}"))
|
|
||||||
//.hint(Hint::Resident(true))
|
|
||||||
.hint(Hint::Category("device".into()))
|
|
||||||
.urgency(Urgency::Critical)
|
|
||||||
// For user-action notifications keep them visible if they require interaction
|
|
||||||
// but for non-interactive actions we prefer they auto-hide like other notifs.
|
|
||||||
.timeout(Timeout::Milliseconds(6000))
|
|
||||||
.icon("dialog-warning")
|
|
||||||
.hint(Hint::Transient(true));
|
|
||||||
|
|
||||||
if matches!(action, GfxUserAction::Logout) {
|
|
||||||
notif.action("gfx-mode-session-action", "Logout");
|
|
||||||
let handle = notif.show()?;
|
|
||||||
if let Ok(desktop) = std::env::var("XDG_CURRENT_DESKTOP") {
|
|
||||||
if desktop.to_lowercase() == "gnome" {
|
|
||||||
handle.wait_for_action(|id| {
|
|
||||||
if id == "gfx-mode-session-action" {
|
|
||||||
let mut cmd = Command::new("gnome-session-quit");
|
|
||||||
cmd.spawn().ok();
|
|
||||||
} else if id == "__closed" {
|
|
||||||
// TODO: cancel the switching
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if desktop.to_lowercase() == "kde" {
|
|
||||||
handle.wait_for_action(|id| {
|
|
||||||
if id == "gfx-mode-session-action" {
|
|
||||||
let mut cmd = Command::new("qdbus");
|
|
||||||
cmd.args([
|
|
||||||
"org.kde.ksmserver", "/KSMServer", "logout", "1", "0", "0",
|
|
||||||
]);
|
|
||||||
cmd.spawn().ok();
|
|
||||||
} else if id == "__closed" {
|
|
||||||
// TODO: cancel the switching
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// todo: handle alternatives
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
notif.show()?;
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Actual `GpuMode` unused as data is never correct until switched by reboot
|
|
||||||
fn do_mux_notification(message: &str, m: &GpuMode) -> Result<()> {
|
|
||||||
let mut notif = base_notification(message, &m.to_string());
|
|
||||||
notif
|
|
||||||
.action("gfx-mode-session-action", "Reboot")
|
|
||||||
.urgency(Urgency::Critical)
|
|
||||||
.icon("system-reboot-symbolic")
|
|
||||||
.hint(Hint::Transient(true));
|
|
||||||
let handle = notif.show()?;
|
|
||||||
|
|
||||||
std::thread::spawn(|| {
|
|
||||||
if let Ok(desktop) = std::env::var("XDG_CURRENT_DESKTOP") {
|
|
||||||
if desktop.to_lowercase() == "gnome" {
|
|
||||||
handle.wait_for_action(|id| {
|
|
||||||
if id == "gfx-mode-session-action" {
|
|
||||||
let mut cmd = Command::new("gnome-session-quit");
|
|
||||||
cmd.arg("--reboot");
|
|
||||||
cmd.spawn().ok();
|
|
||||||
} else if id == "__closed" {
|
|
||||||
// TODO: cancel the switching
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if desktop.to_lowercase() == "kde" {
|
|
||||||
handle.wait_for_action(|id| {
|
|
||||||
if id == "gfx-mode-session-action" {
|
|
||||||
let mut cmd = Command::new("qdbus");
|
|
||||||
cmd.args([
|
|
||||||
"org.kde.ksmserver", "/KSMServer", "logout", "1", "1", "0",
|
|
||||||
]);
|
|
||||||
cmd.spawn().ok();
|
|
||||||
} else if id == "__closed" {
|
|
||||||
// TODO: cancel the switching
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|||||||
Binary file not shown.
810
rog-control-center/translations/uk_UA/rog-control-center.po
Normal file
810
rog-control-center/translations/uk_UA/rog-control-center.po
Normal file
@@ -0,0 +1,810 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: rog-control-center\n"
|
||||||
|
"POT-Creation-Date: 2026-01-16 22:25+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-07-28 12:00+0300\n"
|
||||||
|
"Last-Translator: Mykola Shevchenko\n"
|
||||||
|
"Language-Team: Ukrainian\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: uk_UA\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:55
|
||||||
|
msgctxt "MainWindow"
|
||||||
|
msgid "ROG"
|
||||||
|
msgstr "ROG"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:57
|
||||||
|
msgctxt "Menu1"
|
||||||
|
msgid "System Control"
|
||||||
|
msgstr "Системні"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:58
|
||||||
|
msgctxt "Menu2"
|
||||||
|
msgid "Keyboard Aura"
|
||||||
|
msgstr "Aura клавіатури"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:59
|
||||||
|
msgctxt "Menu3"
|
||||||
|
msgid "AniMe Matrix"
|
||||||
|
msgstr "AniMe матриця"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:60
|
||||||
|
msgctxt "Menu4"
|
||||||
|
msgid "Fan Curves"
|
||||||
|
msgstr "Криві вентиляторів"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:61
|
||||||
|
msgctxt "Menu5"
|
||||||
|
msgid "App Settings"
|
||||||
|
msgstr "Налаштування"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:62
|
||||||
|
msgctxt "Menu6"
|
||||||
|
msgid "About"
|
||||||
|
msgstr "Про додаток"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:74
|
||||||
|
msgctxt "MainWindow"
|
||||||
|
msgid "Quit App"
|
||||||
|
msgstr "Вийти"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:6
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Off"
|
||||||
|
msgstr "Вимкнено"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:7
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Низька"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:8
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Med"
|
||||||
|
msgstr "Середня"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:9
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Висока"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:23
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Glitch Construction"
|
||||||
|
msgstr "Збій конструкції"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:23
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Static Emergence"
|
||||||
|
msgstr "Статична поява"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:25
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Binary Banner Scroll"
|
||||||
|
msgstr "Прокрутка бінарного банера"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:25
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Rog Logo Glitch"
|
||||||
|
msgstr "Збій логотипу Rog"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:27
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Banner Swipe"
|
||||||
|
msgstr "Прогортання банера"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:27
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Starfield"
|
||||||
|
msgstr "Зоряне поле"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:29
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Glitch Out"
|
||||||
|
msgstr "Збій"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:29
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "See Ya"
|
||||||
|
msgstr "Бувай"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:50
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Brightness"
|
||||||
|
msgstr "Яскравість"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:66
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Enable display"
|
||||||
|
msgstr "Увімкнути показ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:74 rog-control-center/ui/pages/anime.slint:97
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Advanced"
|
||||||
|
msgstr "Розширені"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:89
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Use built-in animations"
|
||||||
|
msgstr "Використовувати вбудовані анімації"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:146
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Set which builtin animations are played"
|
||||||
|
msgstr "Встановити, які вбудовані анімації відтворювати"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:150
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Boot Animation"
|
||||||
|
msgstr "Анімація завантаження"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:160
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Running Animation"
|
||||||
|
msgstr "Анімація роботи"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:170
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Sleep Animation"
|
||||||
|
msgstr "Анімація сну"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:180
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Shutdown Animation"
|
||||||
|
msgstr "Анімація вимкнення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:220
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Advanced Display Settings"
|
||||||
|
msgstr "Розширені налаштування показу"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:225
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when lid closed"
|
||||||
|
msgstr "Вимикати при закритій кришці"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:234
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when suspended"
|
||||||
|
msgstr "Вимикати в режимі сну"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:243
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when on battery"
|
||||||
|
msgstr "Вимикати при роботі від батареї"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:20
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Balanced"
|
||||||
|
msgstr "Збалансований"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:20 rog-control-center/ui/pages/system.slint:27
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Performance"
|
||||||
|
msgstr "Продуктивний"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:20
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Quiet"
|
||||||
|
msgstr "Тихий"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:20
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "LowPower"
|
||||||
|
msgstr "Низьке споживання"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:26
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "За замовчуванням"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:28
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "BalancePerformance"
|
||||||
|
msgstr "Баланс-Продуктивність"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:29
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "BalancePower"
|
||||||
|
msgstr "Баланс-Енергозбереження"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:30
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Енергозбереження"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:159
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Power settings"
|
||||||
|
msgstr "Налаштування живлення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:164
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Charge limit"
|
||||||
|
msgstr "Ліміт заряду"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:179
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Platform Profile"
|
||||||
|
msgstr "Профіль платформи"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:189
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Advanced"
|
||||||
|
msgstr "Розширені"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:209
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Screenpad brightness"
|
||||||
|
msgstr "Яскравість екранної панелі"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:233
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Sync with primary"
|
||||||
|
msgstr "Синхронізувати з основним"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:253
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Armoury settings"
|
||||||
|
msgstr "Налаштування Armoury"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:253
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Keyboard Power Management"
|
||||||
|
msgstr "Керування живленням клавіатури"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:263
|
||||||
|
msgctxt "no_asus_armoury_driver_1"
|
||||||
|
msgid "The asus-armoury driver is not loaded"
|
||||||
|
msgstr "Драйвер asus-armoury не завантажено"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:269
|
||||||
|
msgctxt "no_asus_armoury_driver_2"
|
||||||
|
msgid "For advanced features you will require a kernel with this driver added."
|
||||||
|
msgstr "Для розширених функцій вам знадобиться ядро з доданим цим драйвером."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:280
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Panel Overdrive"
|
||||||
|
msgstr "Розгін матриці"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:288
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "MiniLED Mode"
|
||||||
|
msgstr "Режим MiniLED"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:296
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "POST boot sound"
|
||||||
|
msgstr "Звук при завантаженні"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:312
|
||||||
|
msgctxt "ppt_warning"
|
||||||
|
msgid "The following settings are not applied until the toggle is enabled."
|
||||||
|
msgstr "Наступні налаштування не застосовуються, доки перемикач не буде увімкнено."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:317 rog-control-center/ui/pages/system.slint:324
|
||||||
|
msgctxt "ppt_group_enabled"
|
||||||
|
msgid "Enable Tuning"
|
||||||
|
msgstr "Увімкнути налаштування"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:334 rog-control-center/ui/pages/system.slint:335
|
||||||
|
msgctxt "ppt_pl1_spl"
|
||||||
|
msgid "CPU Sustained Power Limit"
|
||||||
|
msgstr "Тривалий ліміт потужності CPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:336
|
||||||
|
msgctxt "ppt_pl1_spl_help"
|
||||||
|
msgid ""
|
||||||
|
"Long-term CPU power limit that affects sustained workload performance. "
|
||||||
|
"Higher values may increase heat and power consumption."
|
||||||
|
msgstr ""
|
||||||
|
"Довготривалий ліміт потужності CPU, що впливає на продуктивність при тривалих навантаженнях."
|
||||||
|
"Вищі значення можуть збільшити нагрівання та споживання енергії."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:352 rog-control-center/ui/pages/system.slint:353
|
||||||
|
msgctxt "ppt_pl2_sppt"
|
||||||
|
msgid "CPU Turbo Power Limit"
|
||||||
|
msgstr "Турбо ліміт потужності CPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:354
|
||||||
|
msgctxt "ppt_pl2_sppt_help"
|
||||||
|
msgid ""
|
||||||
|
"Short-term CPU power limit for boost periods. Controls maximum power during "
|
||||||
|
"brief high-performance bursts."
|
||||||
|
msgstr ""
|
||||||
|
"Короткочасний ліміт потужності CPU для періодів прискорення. Контролює максимальну"
|
||||||
|
"потужність під час коротких сплесків високої продуктивності."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:370 rog-control-center/ui/pages/system.slint:371
|
||||||
|
msgctxt "ppt_pl3_fppt"
|
||||||
|
msgid "CPU Fast Burst Power Limit"
|
||||||
|
msgstr "Швидкий ліміт потужності CPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:372
|
||||||
|
msgctxt "ppt_pl3_fppt_help"
|
||||||
|
msgid ""
|
||||||
|
"Ultra-short duration power limit for instantaneous CPU bursts. Affects "
|
||||||
|
"responsiveness during sudden workload spikes."
|
||||||
|
msgstr ""
|
||||||
|
"Надкороткий ліміт потужності для миттєвих сплесків CPU."
|
||||||
|
"Впливає на чутливість під час раптових піків навантаження."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:387 rog-control-center/ui/pages/system.slint:388
|
||||||
|
msgctxt "ppt_fppt"
|
||||||
|
msgid "Fast Package Power Limit"
|
||||||
|
msgstr "Швидкий ліміт потужності пакета"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:389
|
||||||
|
msgctxt "ppt_fppt_help"
|
||||||
|
msgid ""
|
||||||
|
"Ultra-short duration power limit for system package. Controls maximum power "
|
||||||
|
"during millisecond-scale load spikes."
|
||||||
|
msgstr ""
|
||||||
|
"Надкороткий ліміт потужності для системного пакета. Контролює максимальну"
|
||||||
|
"потужність під час пікових навантажень мілісекундного масштабу."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:405 rog-control-center/ui/pages/system.slint:406
|
||||||
|
msgctxt "ppt_apu_sppt"
|
||||||
|
msgid "APU Sustained Power Limit"
|
||||||
|
msgstr "Тривалий ліміт потужності APU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:407
|
||||||
|
msgctxt "ppt_apu_sppt_help"
|
||||||
|
msgid ""
|
||||||
|
"Long-term power limit for integrated graphics and CPU combined. Affects "
|
||||||
|
"sustained performance of APU-based workloads."
|
||||||
|
msgstr ""
|
||||||
|
"Довготривалий ліміт потужності для інтегрованої графіки та CPU разом."
|
||||||
|
"Впливає на тривалу продуктивність навантажень на базі APU."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:423 rog-control-center/ui/pages/system.slint:424
|
||||||
|
msgctxt "ppt_platform_sppt"
|
||||||
|
msgid "Platform Sustained Power Limit"
|
||||||
|
msgstr "Тривалий ліміт потужності платформи"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:425
|
||||||
|
msgctxt "ppt_platform_sppt_help"
|
||||||
|
msgid ""
|
||||||
|
"Overall system power limit for sustained operations. Controls total platform "
|
||||||
|
"power consumption over extended periods."
|
||||||
|
msgstr ""
|
||||||
|
"Загальний ліміт потужності системи для тривалих операцій. Контролює загальне"
|
||||||
|
"споживання енергії платформою протягом тривалих періодів."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:441 rog-control-center/ui/pages/system.slint:442
|
||||||
|
msgctxt "nv_dynamic_boost"
|
||||||
|
msgid "GPU Power Boost"
|
||||||
|
msgstr "Прискорення потужності GPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:443
|
||||||
|
msgctxt "nv_dynamic_boost_help"
|
||||||
|
msgid ""
|
||||||
|
"Additional power allocation for GPU dynamic boost. Higher values increase "
|
||||||
|
"GPU performance but generate more heat."
|
||||||
|
msgstr ""
|
||||||
|
"Додаткове виділення потужності для динамічного прискорення GPU. Вищі значення"
|
||||||
|
"збільшують продуктивність GPU, але генерують більше тепла."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:459 rog-control-center/ui/pages/system.slint:460
|
||||||
|
msgctxt "nv_temp_target"
|
||||||
|
msgid "GPU Temperature Limit"
|
||||||
|
msgstr "Ліміт температури GPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:461
|
||||||
|
msgctxt "nv_temp_target_help"
|
||||||
|
msgid ""
|
||||||
|
"Maximum GPU temperature threshold in Celsius. GPU will throttle to maintain "
|
||||||
|
"temperature below this limit."
|
||||||
|
msgstr ""
|
||||||
|
"Максимальний поріг температури GPU у градусах Цельсія. GPU буде знижувати"
|
||||||
|
"частоту для підтримки температури нижче цього ліміту."
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:513
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Energy Performance Preference linked to Throttle Policy"
|
||||||
|
msgstr "Перевага енергоефективності пов'язана з Політикою Тротлінгу"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:517
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Change EPP based on Throttle Policy"
|
||||||
|
msgstr "Змінювати EPP на основі Політики Тротлінгу"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:525
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Balanced Policy"
|
||||||
|
msgstr "EPP для Збалансованої Політики"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:535
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Performance Policy"
|
||||||
|
msgstr "EPP для Політики Продуктивності"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:545
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Quiet Policy"
|
||||||
|
msgstr "EPP для Тихої Політики"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:563
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy for power state"
|
||||||
|
msgstr "Політика Тротлінгу для стану живлення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:569
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy on Battery"
|
||||||
|
msgstr "Політика Тротлінгу при живленні від батареї"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:579 rog-control-center/ui/pages/system.slint:600
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr "Увімкнено"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:590
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy on AC"
|
||||||
|
msgstr "Політика Тротлінгу при живленні від мережі"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:28
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Brightness"
|
||||||
|
msgstr "Яскравість"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:39
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Aura mode"
|
||||||
|
msgstr "Режим Aura"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:59
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Colour 1"
|
||||||
|
msgstr "Колір 1"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:85
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Colour 2"
|
||||||
|
msgstr "Колір 2"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:119
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Zone"
|
||||||
|
msgstr "Зона"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:142
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Direction"
|
||||||
|
msgstr "Напрямок"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:164
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Speed"
|
||||||
|
msgstr "Швидкість"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:185
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Power Settings"
|
||||||
|
msgstr "Налаштування живлення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:270
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Power Zones"
|
||||||
|
msgstr "Зони живлення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:26
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Run in background after closing"
|
||||||
|
msgstr "Працювати у фоні після закриття"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:34
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Start app in background (UI closed)"
|
||||||
|
msgstr "Запускати у фоні (без інтерфейсу)"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:42
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Enable system tray icon"
|
||||||
|
msgstr "Увімкнути іконку в треї"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:50
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Enable dGPU notifications"
|
||||||
|
msgstr "Увімкнути сповіщення про dGPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:26
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "This fan is not avilable on this machine"
|
||||||
|
msgstr "Цей вентилятор недоступний на цьому пристрої"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:34
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr "Увімкнено"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:43
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr "Застосувати"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:51
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Скасувати"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:59
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Factory Default (all fans)"
|
||||||
|
msgstr "Заводські налаштування (всі вентилятори)"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:72
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Balanced"
|
||||||
|
msgstr "Збалансований"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:75 rog-control-center/ui/pages/fans.slint:134 rog-control-center/ui/pages/fans.slint:193
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "CPU"
|
||||||
|
msgstr "CPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:93 rog-control-center/ui/pages/fans.slint:152 rog-control-center/ui/pages/fans.slint:211
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Mid"
|
||||||
|
msgstr "Середній"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:111 rog-control-center/ui/pages/fans.slint:170 rog-control-center/ui/pages/fans.slint:229
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "GPU"
|
||||||
|
msgstr "GPU"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:131
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Performance"
|
||||||
|
msgstr "Продуктивний"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:190
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Quiet"
|
||||||
|
msgstr "Тихий"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/common.slint:126
|
||||||
|
msgctxt "confirm_reset"
|
||||||
|
msgid "Are you sure you want to reset this?"
|
||||||
|
msgstr "Ви впевнені, що хочете скинути це?"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:33
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Boot"
|
||||||
|
msgstr "Запуск"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:43
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Awake"
|
||||||
|
msgstr "Робота"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:53
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Sleep"
|
||||||
|
msgstr "Сон"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:63
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Shutdown"
|
||||||
|
msgstr "Вимкнення"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:102
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Zone Selection"
|
||||||
|
msgstr "Вибір зони"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:114
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Boot"
|
||||||
|
msgstr "Завантаження"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:124
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Awake"
|
||||||
|
msgstr "Робота"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:134
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Sleep"
|
||||||
|
msgstr "Сон"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:52
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Логотип"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:53 rog-control-center/ui/types/aura_types.slint:63
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Keyboard"
|
||||||
|
msgstr "Клавіатура"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:54 rog-control-center/ui/types/aura_types.slint:64
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Lightbar"
|
||||||
|
msgstr "Світлова панель"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:55
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Lid"
|
||||||
|
msgstr "Кришка"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:56
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Rear Glow"
|
||||||
|
msgstr "Заднє світіння"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:57 rog-control-center/ui/types/aura_types.slint:65
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Keyboard and Lightbar"
|
||||||
|
msgstr "Клавіатура та світлова панель"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:58
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Ally"
|
||||||
|
msgstr "Ally"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:68
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Off"
|
||||||
|
msgstr "Вимкнено"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:69
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Низька"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:70
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Med"
|
||||||
|
msgstr "Середня"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:71
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Висока"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:76 rog-control-center/ui/types/aura_types.slint:91
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Static"
|
||||||
|
msgstr "Статичний"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:77 rog-control-center/ui/types/aura_types.slint:92
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Breathe"
|
||||||
|
msgstr "Дихання"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:78 rog-control-center/ui/types/aura_types.slint:93
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Strobe"
|
||||||
|
msgstr "Стробоскоп"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:79
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Rainbow"
|
||||||
|
msgstr "Веселка"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:80
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Star"
|
||||||
|
msgstr "Зірка"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:81
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Rain"
|
||||||
|
msgstr "Дощ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:82
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Highlight"
|
||||||
|
msgstr "Підсвічування"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:83
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Laser"
|
||||||
|
msgstr "Лазер"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:84
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Ripple"
|
||||||
|
msgstr "Хвиля"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:85
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Nothing"
|
||||||
|
msgstr "Нічого"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:86
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Pulse"
|
||||||
|
msgstr "Пульс"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:87
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Comet"
|
||||||
|
msgstr "Комета"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:88
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Flash"
|
||||||
|
msgstr "Спалах"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:100
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "None"
|
||||||
|
msgstr "Немає"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:101
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key1"
|
||||||
|
msgstr "Клавіша 1"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:102
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key2"
|
||||||
|
msgstr "Клавіша 2"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:103
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key3"
|
||||||
|
msgstr "Клавіша 3"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:104
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key4"
|
||||||
|
msgstr "Клавіша 4"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:105
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Логотип"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:106
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Lightbar Left"
|
||||||
|
msgstr "Світлова панель зліва"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:107
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Lightbar Right"
|
||||||
|
msgstr "Світлова панель справа"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:111
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Вправо"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:112
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Вліво"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:113
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Up"
|
||||||
|
msgstr "Вгору"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:114
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Down"
|
||||||
|
msgstr "Вниз"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:118
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Низька"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:119
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "Medium"
|
||||||
|
msgstr "Середня"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:120
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Висока"
|
||||||
|
|
||||||
@@ -110,6 +110,33 @@ export component MainWindow inherits Window {
|
|||||||
if(side-bar.current-item == 5): PageAbout {
|
if(side-bar.current-item == 5): PageAbout {
|
||||||
width: root.width - side-bar.width;
|
width: root.width - side-bar.width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if toast: Rectangle {
|
||||||
|
x: 0px;
|
||||||
|
y: root.height - self.height;
|
||||||
|
width: root.width - side-bar.width;
|
||||||
|
height: 40px;
|
||||||
|
opacity: 1.0;
|
||||||
|
background: Palette.selection-background;
|
||||||
|
clip: true;
|
||||||
|
TouchArea {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
clicked => {
|
||||||
|
toast = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background: Palette.control-background;
|
||||||
|
Text {
|
||||||
|
color: Palette.control-foreground;
|
||||||
|
text: root.toast_text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,31 +160,6 @@ export component MainWindow inherits Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if toast: Rectangle {
|
|
||||||
x: 0px;
|
|
||||||
y: 0px;
|
|
||||||
width: root.width;
|
|
||||||
height: 32px;
|
|
||||||
opacity: 1.0;
|
|
||||||
background: Colors.grey;
|
|
||||||
TouchArea {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
clicked => {
|
|
||||||
toast = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
background: Palette.control-background;
|
|
||||||
Text {
|
|
||||||
color: Palette.control-foreground;
|
|
||||||
text: root.toast_text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// // TODO: or use Dialogue
|
// // TODO: or use Dialogue
|
||||||
if show_notif: Rectangle {
|
if show_notif: Rectangle {
|
||||||
@@ -190,7 +192,7 @@ export component MainWindow inherits Window {
|
|||||||
y: 0px;
|
y: 0px;
|
||||||
width: root.width;
|
width: root.width;
|
||||||
height: root.height;
|
height: root.height;
|
||||||
|
|
||||||
//padding only has effect on layout elements
|
//padding only has effect on layout elements
|
||||||
//padding: 10px;
|
//padding: 10px;
|
||||||
|
|
||||||
|
|||||||
@@ -253,8 +253,19 @@ impl FirmwareAttributes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
|
||||||
|
pub enum FirmwareAttributeType {
|
||||||
|
#[default]
|
||||||
|
Immediate,
|
||||||
|
TUFKeyboard,
|
||||||
|
Ppt,
|
||||||
|
Gpu,
|
||||||
|
Bios,
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! define_attribute_getters {
|
macro_rules! define_attribute_getters {
|
||||||
($($attr:ident),*) => {
|
// Accept a list of attribute idents and an optional `types { .. }` block
|
||||||
|
( $( $attr:ident ),* $(,)? $( ; types { $( $tattr:ident : $ptype:ident ),* $(,)? } )? ) => {
|
||||||
impl FirmwareAttributes {
|
impl FirmwareAttributes {
|
||||||
$(
|
$(
|
||||||
pub fn $attr(&self) -> Option<&Attribute> {
|
pub fn $attr(&self) -> Option<&Attribute> {
|
||||||
@@ -268,6 +279,17 @@ macro_rules! define_attribute_getters {
|
|||||||
});
|
});
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FirmwareAttribute {
|
||||||
|
pub fn property_type(&self) -> FirmwareAttributeType {
|
||||||
|
match <&str>::from(*self) {
|
||||||
|
$(
|
||||||
|
$( stringify!($tattr) => FirmwareAttributeType::$ptype, )*
|
||||||
|
)?
|
||||||
|
_ => FirmwareAttributeType::Immediate,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,6 +321,38 @@ define_attribute_getters!(
|
|||||||
gpu_mux_mode,
|
gpu_mux_mode,
|
||||||
mini_led_mode,
|
mini_led_mode,
|
||||||
screen_auto_brightness
|
screen_auto_brightness
|
||||||
|
; types {
|
||||||
|
ppt_pl1_spl: Ppt,
|
||||||
|
ppt_pl2_sppt: Ppt,
|
||||||
|
ppt_apu_sppt: Ppt,
|
||||||
|
ppt_platform_sppt: Ppt,
|
||||||
|
ppt_fppt: Ppt,
|
||||||
|
nv_dynamic_boost: Ppt,
|
||||||
|
nv_temp_target: Ppt,
|
||||||
|
dgpu_base_tgp: Ppt,
|
||||||
|
dgpu_tgp: Ppt,
|
||||||
|
|
||||||
|
gpu_mux_mode: Gpu,
|
||||||
|
egpu_connected: Gpu,
|
||||||
|
egpu_enable: Gpu,
|
||||||
|
dgpu_disable: Gpu,
|
||||||
|
|
||||||
|
boot_sound: Bios,
|
||||||
|
|
||||||
|
mcu_powersave: Immediate,
|
||||||
|
|
||||||
|
screen_auto_brightness: Immediate,
|
||||||
|
mini_led_mode: Immediate,
|
||||||
|
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,
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
/// CamelCase names of the properties. Intended for use with DBUS
|
/// CamelCase names of the properties. Intended for use with DBUS
|
||||||
@@ -352,29 +406,6 @@ pub enum FirmwareAttribute {
|
|||||||
KbdLedsShutdown = 30,
|
KbdLedsShutdown = 30,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FirmwareAttribute {
|
|
||||||
pub fn is_ppt(&self) -> bool {
|
|
||||||
matches!(
|
|
||||||
self,
|
|
||||||
FirmwareAttribute::PptPl1Spl
|
|
||||||
| FirmwareAttribute::PptPl2Sppt
|
|
||||||
| FirmwareAttribute::PptPl3Fppt
|
|
||||||
| FirmwareAttribute::PptFppt
|
|
||||||
| FirmwareAttribute::PptApuSppt
|
|
||||||
| FirmwareAttribute::PptPlatformSppt
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn is_dgpu(&self) -> bool {
|
|
||||||
matches!(
|
|
||||||
self,
|
|
||||||
FirmwareAttribute::NvDynamicBoost
|
|
||||||
| FirmwareAttribute::NvTempTarget
|
|
||||||
| FirmwareAttribute::DgpuTgp
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<&str> for FirmwareAttribute {
|
impl From<&str> for FirmwareAttribute {
|
||||||
fn from(s: &str) -> Self {
|
fn from(s: &str) -> Self {
|
||||||
match s {
|
match s {
|
||||||
|
|||||||
1
rust-toolchain
Normal file
1
rust-toolchain
Normal file
@@ -0,0 +1 @@
|
|||||||
|
stable
|
||||||
Reference in New Issue
Block a user