mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Compare commits
32 Commits
argh
...
fd5e5a4451
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd5e5a4451 | ||
|
|
bc132c2796 | ||
|
|
a99e408dc3 | ||
|
|
3616c049bb | ||
|
|
3cb1062714 | ||
|
|
c32e6f5ed6 | ||
|
|
6e83884c0a | ||
|
|
7edb77b41f | ||
|
|
737ffa522c | ||
|
|
0311cfb1f9 | ||
|
|
b0ee27fb74 | ||
|
|
d4eca0c93e | ||
|
|
1016995ff5 | ||
|
|
a9f4aac875 | ||
|
|
8377056580 | ||
|
|
d541581012 | ||
|
|
72ef6dea07 | ||
|
|
bfadc39400 | ||
|
|
754d82d031 | ||
|
|
8ae072ea82 | ||
|
|
cec2168591 | ||
|
|
8d6acc5975 | ||
|
|
b20ecf5378 | ||
|
|
ade839e981 | ||
|
|
d625c279a6 | ||
|
|
5ea14be3fa | ||
|
|
64c2e55db4 | ||
|
|
5303bfc1ad | ||
|
|
635f1dc9b9 | ||
|
|
33a4dba8fe | ||
|
|
e4680c9543 | ||
|
|
e9c5315bda |
@@ -8,6 +8,9 @@ indent_style = space
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.slint]
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ pages:
|
||||
- rm -rf public
|
||||
- mkdir 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:
|
||||
paths:
|
||||
- public
|
||||
|
||||
17
CHANGELOG.md
17
CHANGELOG.md
@@ -1,12 +1,27 @@
|
||||
# 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
|
||||
- Added support for TUF keyboard powerstate control
|
||||
- Improved AniMe Matrix support thanks to @Seom1177 !
|
||||
- Fixed a bug with one-shot battery change, thanks @bitr8 !
|
||||
- Changed the CLI interface of asusctl to be less confusing
|
||||
- Added support for G835L, thanks to @shevchenko0013 !
|
||||
|
||||
## [6.2.0]
|
||||
|
||||
|
||||
133
Cargo.lock
generated
133
Cargo.lock
generated
@@ -212,7 +212,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusctl"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"argh",
|
||||
"dmi_id",
|
||||
@@ -232,7 +232,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusd"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"cargo-husky",
|
||||
"concat-idents",
|
||||
@@ -259,7 +259,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "asusd-user"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"config-traits",
|
||||
"dirs",
|
||||
@@ -816,9 +816,9 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.52"
|
||||
version = "1.2.53"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
|
||||
checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"jobserver",
|
||||
@@ -864,9 +864,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.42"
|
||||
version = "0.4.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
|
||||
checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
|
||||
dependencies = [
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
@@ -938,7 +938,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "config-traits"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"ron",
|
||||
@@ -987,7 +987,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "const-field-offset"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
dependencies = [
|
||||
"const-field-offset-macro",
|
||||
"field-offset",
|
||||
@@ -996,7 +996,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "const-field-offset-macro"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/slint-ui/slint.git#f181d5e7b200b8986ba856fa0574425e0d6389aa"
|
||||
source = "git+https://github.com/slint-ui/slint.git#75fb4125d8082c5c64b4ce8220c6fe607c8caac0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -1274,7 +1274,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "dmi_id"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"udev 0.8.0",
|
||||
@@ -1545,9 +1545,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "find-msvc-tools"
|
||||
version = "0.1.7"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
|
||||
checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
@@ -2246,7 +2246,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-linuxkms"
|
||||
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 = [
|
||||
"calloop 0.14.3",
|
||||
"drm",
|
||||
@@ -2264,7 +2264,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-selector"
|
||||
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 = [
|
||||
"cfg-if",
|
||||
"i-slint-backend-linuxkms",
|
||||
@@ -2277,7 +2277,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-backend-winit"
|
||||
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 = [
|
||||
"block2 0.6.2",
|
||||
"cfg-if",
|
||||
@@ -2316,7 +2316,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-common"
|
||||
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 = [
|
||||
"fontique",
|
||||
"ttf-parser 0.25.1",
|
||||
@@ -2325,7 +2325,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-compiler"
|
||||
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 = [
|
||||
"annotate-snippets",
|
||||
"by_address",
|
||||
@@ -2353,7 +2353,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-core"
|
||||
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 = [
|
||||
"auto_enums",
|
||||
"bitflags 2.10.0",
|
||||
@@ -2402,7 +2402,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-core-macros"
|
||||
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 = [
|
||||
"quote",
|
||||
"serde_json",
|
||||
@@ -2412,7 +2412,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-femtovg"
|
||||
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 = [
|
||||
"cfg-if",
|
||||
"const-field-offset",
|
||||
@@ -2434,7 +2434,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-skia"
|
||||
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 = [
|
||||
"bytemuck",
|
||||
"cfg-if",
|
||||
@@ -2469,7 +2469,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "i-slint-renderer-software"
|
||||
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 = [
|
||||
"bytemuck",
|
||||
"clru",
|
||||
@@ -2632,8 +2632,8 @@ dependencies = [
|
||||
"rayon",
|
||||
"rgb",
|
||||
"tiff",
|
||||
"zune-core 0.5.0",
|
||||
"zune-jpeg 0.5.8",
|
||||
"zune-core 0.5.1",
|
||||
"zune-jpeg 0.5.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -2819,9 +2819,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.83"
|
||||
version = "0.3.85"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
|
||||
checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
@@ -4482,7 +4482,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog-control-center"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"asusd",
|
||||
"concat-idents",
|
||||
@@ -4513,7 +4513,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_anime"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"gif 0.12.0",
|
||||
@@ -4527,7 +4527,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_aura"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"log",
|
||||
@@ -4538,7 +4538,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_dbus"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"asusd",
|
||||
"rog_anime",
|
||||
@@ -4552,7 +4552,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_platform"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"concat-idents",
|
||||
"inotify",
|
||||
@@ -4565,7 +4565,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_profiles"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"rog_platform",
|
||||
@@ -4576,7 +4576,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_scsi"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"ron",
|
||||
"serde",
|
||||
@@ -4586,7 +4586,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_simulators"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"rog_anime",
|
||||
@@ -4596,7 +4596,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rog_slash"
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
dependencies = [
|
||||
"dmi_id",
|
||||
"serde",
|
||||
@@ -4975,7 +4975,7 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
||||
[[package]]
|
||||
name = "slint"
|
||||
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 = [
|
||||
"const-field-offset",
|
||||
"i-slint-backend-selector",
|
||||
@@ -4995,7 +4995,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "slint-build"
|
||||
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 = [
|
||||
"derive_more",
|
||||
"i-slint-compiler",
|
||||
@@ -5006,7 +5006,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "slint-macros"
|
||||
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 = [
|
||||
"i-slint-compiler",
|
||||
"proc-macro2",
|
||||
@@ -5778,9 +5778,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "typed-index-collections"
|
||||
version = "3.4.0"
|
||||
version = "3.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5318ee4ce62a4e948a33915574021a7a953d83e84fba6e25c72ffcfd7dad35ff"
|
||||
checksum = "898160f1dfd383b4e92e17f0512a7d62f3c51c44937b23b6ffc3a1614a8eaccd"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"serde",
|
||||
@@ -6030,7 +6030,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "vtable"
|
||||
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 = [
|
||||
"const-field-offset",
|
||||
"portable-atomic",
|
||||
@@ -6041,7 +6041,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "vtable-macro"
|
||||
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 = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -6075,18 +6075,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||
|
||||
[[package]]
|
||||
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"
|
||||
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
|
||||
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
|
||||
dependencies = [
|
||||
"wit-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.106"
|
||||
version = "0.2.108"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
|
||||
checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
@@ -6097,11 +6097,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.56"
|
||||
version = "0.4.58"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
|
||||
checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"futures-util",
|
||||
"js-sys",
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
@@ -6110,9 +6111,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.106"
|
||||
version = "0.2.108"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
|
||||
checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
@@ -6120,9 +6121,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.106"
|
||||
version = "0.2.108"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
|
||||
checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"proc-macro2",
|
||||
@@ -6133,9 +6134,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.106"
|
||||
version = "0.2.108"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
|
||||
checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@@ -6277,9 +6278,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.83"
|
||||
version = "0.3.85"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
|
||||
checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
@@ -6980,9 +6981,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wit-bindgen"
|
||||
version = "0.46.0"
|
||||
version = "0.51.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
|
||||
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
||||
|
||||
[[package]]
|
||||
name = "write-fonts"
|
||||
@@ -7293,9 +7294,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.14"
|
||||
version = "1.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea"
|
||||
checksum = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2"
|
||||
|
||||
[[package]]
|
||||
name = "zune-core"
|
||||
@@ -7305,9 +7306,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
|
||||
|
||||
[[package]]
|
||||
name = "zune-core"
|
||||
version = "0.5.0"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773"
|
||||
checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
|
||||
|
||||
[[package]]
|
||||
name = "zune-inflate"
|
||||
@@ -7329,11 +7330,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zune-jpeg"
|
||||
version = "0.5.8"
|
||||
version = "0.5.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e35aee689668bf9bd6f6f3a6c60bb29ba1244b3b43adfd50edd554a371da37d5"
|
||||
checksum = "87c86acb70a85b2c16f071f171847d1945e8f44812630463cd14ec83900ad01c"
|
||||
dependencies = [
|
||||
"zune-core 0.5.0",
|
||||
"zune-core 0.5.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
[workspace.package]
|
||||
version = "6.2.0"
|
||||
version = "6.3.1"
|
||||
rust-version = "1.82"
|
||||
license = "MPL-2.0"
|
||||
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"
|
||||
homepage = "https://gitlab.com/asus-linux/asusctl"
|
||||
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.
|
||||
|
||||
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).
|
||||
|
||||
Z13 devices will need [these](https://lore.kernel.org/linux-input/20240416090402.31057-1-luke@ljones.dev/T/#t)
|
||||
Support for TDP is tied to the new asus-armoury driver: available mainline since linux 6.19: everything older is not supported.
|
||||
|
||||
## 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.
|
||||
|
||||
---
|
||||
|
||||
## 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 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::power::AsusPower;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -168,82 +170,64 @@ impl ArmouryAttributeRegistry {
|
||||
impl crate::Reloadable for AsusArmouryAttribute {
|
||||
async fn reload(&mut self) -> Result<(), RogError> {
|
||||
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
|
||||
// behaviour so they follow AC/DC tuning groups.
|
||||
if name.is_ppt() || name.is_dgpu() {
|
||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||
let power_plugged = self
|
||||
.power
|
||||
.get_online()
|
||||
.map_err(|e| {
|
||||
error!("Could not get power status: {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
|
||||
}
|
||||
let config = self.config.lock().await;
|
||||
let apply_value = match attribute.property_type() {
|
||||
FirmwareAttributeType::Ppt => {
|
||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||
let power_plugged = self
|
||||
.power
|
||||
.get_online()
|
||||
.map_err(|e| {
|
||||
error!("Could not get power status: {e:?}");
|
||||
e
|
||||
})
|
||||
};
|
||||
.unwrap_or_default()
|
||||
== 1;
|
||||
|
||||
if let Some(tune) = apply_value {
|
||||
self.attr
|
||||
.set_current_value(&AttrValue::Integer(tune))
|
||||
.map_err(|e| {
|
||||
error!("Could not set {} value: {e:?}", self.attr.name());
|
||||
self.attr.base_path_exists();
|
||||
e
|
||||
})?;
|
||||
info!(
|
||||
"Restored PPT armoury setting {} to {:?}",
|
||||
self.attr.name(),
|
||||
tune
|
||||
);
|
||||
} else {
|
||||
info!("Ignored restoring PPT armoury setting {} as tuning group is disabled or no saved value", self.attr.name());
|
||||
let apply_value = {
|
||||
config.select_tunings_ref(power_plugged, profile).and_then(
|
||||
|tuning| match tuning.enabled {
|
||||
true => tuning.group.get(&self.name()).copied(),
|
||||
false => None,
|
||||
},
|
||||
)
|
||||
};
|
||||
|
||||
apply_value.map_or(AttrValue::None, AttrValue::Integer)
|
||||
}
|
||||
} else {
|
||||
// Handle non-PPT attributes (boolean and other settings)
|
||||
if let Some(saved_value) = self.config.lock().await.armoury_settings.get(&name) {
|
||||
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()
|
||||
);
|
||||
FirmwareAttributeType::Gpu => {
|
||||
info!("Reload called on GPU attribute {name}: doing nothing");
|
||||
AttrValue::None
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
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(())
|
||||
}
|
||||
}
|
||||
|
||||
/// 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
|
||||
#[interface(name = "xyz.ljones.AsusArmoury")]
|
||||
impl AsusArmouryAttribute {
|
||||
@@ -293,7 +277,7 @@ impl AsusArmouryAttribute {
|
||||
|
||||
async fn restore_default(&self) -> fdo::Result<()> {
|
||||
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 power_plugged = self
|
||||
.power
|
||||
@@ -352,7 +336,7 @@ impl AsusArmouryAttribute {
|
||||
|
||||
#[zbus(property)]
|
||||
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 power_plugged = self
|
||||
.power
|
||||
@@ -387,66 +371,62 @@ impl AsusArmouryAttribute {
|
||||
|
||||
#[zbus(property)]
|
||||
async fn set_current_value(&mut self, value: i32) -> fdo::Result<()> {
|
||||
if self.name().is_ppt() || self.name().is_dgpu() {
|
||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||
let power_plugged = self
|
||||
.power
|
||||
.get_online()
|
||||
.map_err(|e| {
|
||||
error!("Could not get power status: {e:?}");
|
||||
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))
|
||||
let name = self.attr.name();
|
||||
let apply_value = match self.name().property_type() {
|
||||
FirmwareAttributeType::Ppt => {
|
||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||
let power_plugged = self
|
||||
.power
|
||||
.get_online()
|
||||
.map_err(|e| {
|
||||
error!(
|
||||
"Could not set value to PPT property {}: {e:?}",
|
||||
self.attr.name()
|
||||
);
|
||||
error!("Could not get power status: {e:?}");
|
||||
e
|
||||
})?;
|
||||
} else {
|
||||
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
|
||||
})?;
|
||||
})
|
||||
.unwrap_or_default();
|
||||
|
||||
let mut settings = self.config.lock().await;
|
||||
settings
|
||||
.armoury_settings
|
||||
.entry(self.name())
|
||||
.and_modify(|setting| {
|
||||
debug!("Set config for {} = {value}", self.attr.name());
|
||||
*setting = value;
|
||||
})
|
||||
.or_insert_with(|| {
|
||||
debug!("Adding config for {} = {value}", self.attr.name());
|
||||
value
|
||||
});
|
||||
}
|
||||
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 {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
|
||||
self.config.lock().await.write();
|
||||
@@ -515,7 +495,7 @@ pub async fn set_config_or_default(
|
||||
) {
|
||||
for attr in attrs.attributes().iter() {
|
||||
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);
|
||||
if !tuning.enabled {
|
||||
debug!("Tuning group is not enabled, skipping");
|
||||
|
||||
@@ -4,7 +4,9 @@ use std::sync::Arc;
|
||||
|
||||
use config_traits::StdConfig;
|
||||
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::platform::{PlatformProfile, Properties, RogPlatform};
|
||||
use rog_platform::power::AsusPower;
|
||||
@@ -459,8 +461,18 @@ impl CtrlPlatform {
|
||||
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
||||
policy: PlatformProfile,
|
||||
) -> Result<(), FdoErr> {
|
||||
self.config.lock().await.platform_profile_on_battery = policy;
|
||||
self.set_platform_profile(ctxt, policy).await?;
|
||||
// If the requested profile isn't available on this platform, and it's
|
||||
// `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();
|
||||
Ok(())
|
||||
}
|
||||
@@ -488,8 +500,16 @@ impl CtrlPlatform {
|
||||
#[zbus(signal_context)] ctxt: SignalEmitter<'_>,
|
||||
policy: PlatformProfile,
|
||||
) -> Result<(), FdoErr> {
|
||||
self.config.lock().await.platform_profile_on_ac = policy;
|
||||
self.set_platform_profile(ctxt, policy).await?;
|
||||
// Mirror the same fallback behavior for AC profile changes.
|
||||
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();
|
||||
Ok(())
|
||||
}
|
||||
@@ -599,7 +619,7 @@ impl CtrlPlatform {
|
||||
|
||||
for attr in self.attributes.attributes() {
|
||||
let name: FirmwareAttribute = attr.name().into();
|
||||
if name.is_ppt() {
|
||||
if name.property_type() == FirmwareAttributeType::Ppt {
|
||||
// reset stored value
|
||||
if let Some(tune) = self
|
||||
.config
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
%global debug_package %{nil}
|
||||
%endif
|
||||
|
||||
%define version 6.2.0
|
||||
%define version 6.3.1
|
||||
%define specrelease %{?dist}
|
||||
%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,
|
||||
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",
|
||||
product_id: "",
|
||||
@@ -566,6 +575,15 @@
|
||||
advanced_type: PerKey,
|
||||
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",
|
||||
product_id: "",
|
||||
|
||||
@@ -14,6 +14,7 @@ mocking = []
|
||||
x11 = ["slint/backend-winit-x11"]
|
||||
# Optional tokio debug feature does not require nightly; remove RUSTFLAGS note.
|
||||
tokio-debug = ["console-subscriber"]
|
||||
rog_ally = []
|
||||
|
||||
[dependencies]
|
||||
console-subscriber = { version = "^0.4", optional = true }
|
||||
|
||||
@@ -107,7 +107,6 @@ async fn main() -> Result<()> {
|
||||
let board_name = dmi.board_name;
|
||||
let prod_family = dmi.product_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();
|
||||
|
||||
@@ -138,6 +137,18 @@ async fn main() -> Result<()> {
|
||||
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 {
|
||||
config.notifications.enabled = false;
|
||||
config.enable_tray_icon = false;
|
||||
@@ -145,6 +156,7 @@ async fn main() -> Result<()> {
|
||||
config.startup_in_background = false;
|
||||
config.start_fullscreen = true;
|
||||
}
|
||||
|
||||
config.write();
|
||||
|
||||
let enable_tray_icon = config.enable_tray_icon;
|
||||
@@ -203,76 +215,77 @@ async fn main() -> Result<()> {
|
||||
}
|
||||
})
|
||||
.ok();
|
||||
} else {
|
||||
// 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;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// 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
|
||||
sleep(Duration::from_millis(300));
|
||||
if state == AppState::MainWindowShouldOpen {
|
||||
if let Ok(mut app_state) = app_state.lock() {
|
||||
*app_state = AppState::MainWindowOpen;
|
||||
}
|
||||
let config_copy = config.clone();
|
||||
let app_state_copy = app_state.clone();
|
||||
slint::invoke_from_event_loop(move || {
|
||||
UI.with(|ui| {
|
||||
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 app_state_copy = app_state.clone();
|
||||
slint::invoke_from_event_loop(move || {
|
||||
UI.with(|ui| {
|
||||
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;
|
||||
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();
|
||||
}
|
||||
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 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);
|
||||
})
|
||||
.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,15 +9,11 @@ use std::process::Command;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
|
||||
use futures_util::StreamExt;
|
||||
use log::{debug, error, info, warn};
|
||||
use notify_rust::{Hint, Notification, Timeout, Urgency};
|
||||
use rog_platform::platform::GpuMode;
|
||||
use notify_rust::{Hint, Notification, Timeout};
|
||||
use rog_platform::power::AsusPower;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use supergfxctl::actions::UserActionRequired as GfxUserAction;
|
||||
use supergfxctl::pci_device::{GfxMode, GfxPower};
|
||||
use supergfxctl::zbus_proxy::DaemonProxy as SuperProxy;
|
||||
use supergfxctl::pci_device::GfxPower;
|
||||
use tokio::runtime::Runtime;
|
||||
use tokio::task::JoinHandle;
|
||||
|
||||
@@ -145,12 +141,8 @@ pub fn start_notifications(
|
||||
}
|
||||
});
|
||||
|
||||
let enabled_notifications_copy = config.clone();
|
||||
let no_supergfx = move |e: &zbus::Error| {
|
||||
error!("zbus signal: receive_notify_gfx_status: {e}");
|
||||
warn!("Attempting to start plain dgpu status monitor");
|
||||
start_dpu_status_mon(enabled_notifications_copy.clone());
|
||||
};
|
||||
info!("Attempting to start plain dgpu status monitor");
|
||||
start_dpu_status_mon(config.clone());
|
||||
|
||||
// GPU MUX Mode notif
|
||||
// TODO: need to get armoury attrs and iter to find
|
||||
@@ -189,95 +181,9 @@ pub fn start_notifications(
|
||||
// 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])
|
||||
}
|
||||
|
||||
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
|
||||
where
|
||||
T: Display,
|
||||
@@ -303,97 +209,3 @@ fn do_gpu_status_notif(message: &str, data: &GfxPower) -> Notification {
|
||||
notif.icon(icon);
|
||||
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(())
|
||||
}
|
||||
|
||||
@@ -102,8 +102,9 @@ pub fn setup_window(config: Arc<Mutex<Config>>) -> MainWindow {
|
||||
available.contains(&"xyz.ljones.Aura".to_string()),
|
||||
available.contains(&"xyz.ljones.Anime".to_string()),
|
||||
available.contains(&"xyz.ljones.FanCurves".to_string()),
|
||||
true,
|
||||
true,
|
||||
true, // GPU Configuration
|
||||
true, // App Settings
|
||||
true, // About
|
||||
]
|
||||
.into(),
|
||||
);
|
||||
|
||||
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 "Висока"
|
||||
|
||||
@@ -7,6 +7,7 @@ import { PageFans } from "pages/fans.slint";
|
||||
import { PageAnime, AnimePageData } from "pages/anime.slint";
|
||||
import { RogItem } from "widgets/common.slint";
|
||||
import { PageAura } from "pages/aura.slint";
|
||||
import { PageGPU } from "pages/gpu.slint";
|
||||
import { Node } from "widgets/graph.slint";
|
||||
export { Node }
|
||||
import { FanPageData, FanType, Profile } from "types/fan_types.slint";
|
||||
@@ -24,7 +25,15 @@ export component MainWindow inherits Window {
|
||||
default-font-size: 14px;
|
||||
default-font-weight: 400;
|
||||
icon: @image-url("../data/rog-control-center.png");
|
||||
in property <[bool]> sidebar_items_avilable: [true, true, true, true, true, true];
|
||||
in property <[bool]> sidebar_items_avilable: [
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true, // GPU Configuration
|
||||
true, // App Settings
|
||||
true, // About
|
||||
];
|
||||
private property <bool> show_notif;
|
||||
private property <bool> fade_cover;
|
||||
private property <bool> toast: false;
|
||||
@@ -47,37 +56,31 @@ export component MainWindow inherits Window {
|
||||
}
|
||||
min-height: AppSize.height;
|
||||
min-width: AppSize.width;
|
||||
background: Colors.black;
|
||||
background: Palette.alternate-background;
|
||||
|
||||
HorizontalLayout {
|
||||
padding: 0px;
|
||||
VerticalLayout {
|
||||
padding: 0px;
|
||||
side-bar := SideBar {
|
||||
title: @tr("ROG");
|
||||
model: [
|
||||
@tr("Menu1" => "System Control"),
|
||||
@tr("Menu2" => "Keyboard Aura"),
|
||||
@tr("Menu3" => "AniMe Matrix"),
|
||||
@tr("Menu4" => "Fan Curves"),
|
||||
@tr("Menu5" => "App Settings"),
|
||||
@tr("Menu6" => "About"),
|
||||
@tr("Menu5" => "GPU Configuration"),
|
||||
@tr("Menu6" => "App Settings"),
|
||||
@tr("Menu7" => "About"),
|
||||
];
|
||||
available: root.sidebar_items_avilable;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
max-height: 40px;
|
||||
Button {
|
||||
height: 40px;
|
||||
width: side-bar.width;
|
||||
background: Palette.control-background;
|
||||
Text {
|
||||
vertical-alignment: center;
|
||||
horizontal-alignment: center;
|
||||
text: @tr("Quit App");
|
||||
}
|
||||
|
||||
TouchArea {
|
||||
clicked => {
|
||||
root.exit-app();
|
||||
}
|
||||
text: @tr("Quit App");
|
||||
clicked() => {
|
||||
root.exit-app();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,26 +92,61 @@ export component MainWindow inherits Window {
|
||||
height: root.height + 12px;
|
||||
}
|
||||
|
||||
aura := PageAura {
|
||||
/*if(side-bar.current-item == 1):*/ aura := PageAura {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 1;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 2): PageAnime {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 2;
|
||||
}
|
||||
|
||||
fans := PageFans {
|
||||
if(side-bar.current-item == 3): fans := PageFans {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 3;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 4): PageAppSettings {
|
||||
if(side-bar.current-item == 4): PageGPU {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 4;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 5): PageAbout {
|
||||
if(side-bar.current-item == 5): PageAppSettings {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 5;
|
||||
}
|
||||
|
||||
if(side-bar.current-item == 6): PageAbout {
|
||||
width: root.width - side-bar.width;
|
||||
visible: side-bar.current-item == 6;
|
||||
}
|
||||
|
||||
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 +171,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
|
||||
if show_notif: Rectangle {
|
||||
@@ -190,10 +203,6 @@ export component MainWindow inherits Window {
|
||||
y: 0px;
|
||||
width: root.width;
|
||||
height: root.height;
|
||||
|
||||
//padding only has effect on layout elements
|
||||
//padding: 10px;
|
||||
|
||||
background: Palette.background;
|
||||
border-color: Palette.border;
|
||||
border-width: 3px;
|
||||
|
||||
@@ -1,62 +1,77 @@
|
||||
import { AboutSlint, VerticalBox, HorizontalBox } from "std-widgets.slint";
|
||||
import {
|
||||
AboutSlint,
|
||||
VerticalBox,
|
||||
HorizontalBox,
|
||||
ScrollView,
|
||||
} from "std-widgets.slint";
|
||||
|
||||
export component PageAbout inherits VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
Text {
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: "A UI for asusctl made with slint";
|
||||
font-size: 22px;
|
||||
}
|
||||
ScrollView {
|
||||
|
||||
HorizontalBox {
|
||||
alignment: LayoutAlignment.center;
|
||||
VerticalBox {
|
||||
HorizontalBox {
|
||||
alignment: LayoutAlignment.center;
|
||||
VerticalBox {
|
||||
alignment: LayoutAlignment.center;
|
||||
|
||||
Text {
|
||||
wrap: TextWrap.word-wrap;
|
||||
text: "You need to use kernel version 6.19 to use this software";
|
||||
}
|
||||
Text {
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: "ROG Control Center";
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
Text {
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: "Todo:";
|
||||
font-size: 22px;
|
||||
}
|
||||
Text {
|
||||
wrap: TextWrap.word-wrap;
|
||||
text: "\nA powerful graphical interface for managing ASUS ROG, TUF, and ProArt laptops on Linux. It acts as the official GUI for the asusctl toolset, allowing for seamless hardware tuning without the command line.";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] Theme the widgets";
|
||||
}
|
||||
Text {
|
||||
font-weight: 900;
|
||||
text: "Key Features:";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] Add a cpu/gpu temp/fan speed info bar";
|
||||
}
|
||||
Text {
|
||||
text: " • Performance: Switch power profiles and customize fan curves.\n • Aura Sync: Control keyboard backlighting and LED effects.\n • Battery Health: Set charge limits to extend battery longevity.\n • Display: Toggle Panel Overdrive and refresh rates.\n • AniMe Matrix: Control AniMe Matrix displays.";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] Include fan speeds, temps in a bottom bar";
|
||||
}
|
||||
Text {
|
||||
font-weight: 900;
|
||||
text: "Requirements:";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] Slash control";
|
||||
}
|
||||
Text {
|
||||
text: " • This software requires kernel version 6.19.";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] Screenpad controls";
|
||||
}
|
||||
Text {
|
||||
font-weight: 900;
|
||||
text: "Work in progress:";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "- [ ] ROG Ally specific settings";
|
||||
Text {
|
||||
text: " • Theme the widgets\n • Add a cpu/gpu temp/fan speed info bar\n • Include fan speeds, temps in a bottom bar\n • Slash control\n • Screenpad controls\n • ROG Ally specific settings";
|
||||
}
|
||||
|
||||
Text {
|
||||
font-weight: 900;
|
||||
text: "License:";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: " This project is open-source software licensed under the Mozilla Public License 2.0 (MPL-2.0).";
|
||||
}
|
||||
|
||||
Text {
|
||||
font-weight: 900;
|
||||
text: "Links:";
|
||||
}
|
||||
|
||||
Text {
|
||||
text: " Source Code: https://gitlab.com/asus-linux/asusctl\n Website: https://asus-linux.org/";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: "Work in progress";
|
||||
font-size: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,12 +36,8 @@ export component PageAnime inherits Rectangle {
|
||||
property <bool> show_display_advanced: false;
|
||||
property <bool> show_builtin_advanced: false;
|
||||
clip: true;
|
||||
// TODO: slow with border-radius
|
||||
//padding only has effect on layout elements
|
||||
//padding: 8px;
|
||||
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
||||
// TODO: border-radius: 8px;
|
||||
VerticalLayout {
|
||||
|
||||
VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
HorizontalLayout {
|
||||
@@ -132,8 +128,9 @@ export component PageAnime inherits Rectangle {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
background: Palette.background;
|
||||
VerticalLayout {
|
||||
padding: 50px;
|
||||
padding: 4px;
|
||||
spacing: 10px;
|
||||
GroupBox {
|
||||
height: 10px;
|
||||
@@ -141,7 +138,7 @@ export component PageAnime inherits Rectangle {
|
||||
spacing: 10px;
|
||||
alignment: LayoutAlignment.start;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Set which builtin animations are played");
|
||||
@@ -193,8 +190,8 @@ export component PageAnime inherits Rectangle {
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "X";
|
||||
height: 40px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_builtin_advanced = false;
|
||||
root.show_fade_cover = false;
|
||||
@@ -206,8 +203,9 @@ export component PageAnime inherits Rectangle {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
background: Palette.background;
|
||||
VerticalLayout {
|
||||
padding: 50px;
|
||||
padding: 4px;
|
||||
spacing: 10px;
|
||||
GroupBox {
|
||||
height: 100px;
|
||||
@@ -215,7 +213,7 @@ export component PageAnime inherits Rectangle {
|
||||
spacing: 10px;
|
||||
alignment: LayoutAlignment.start;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Advanced Display Settings");
|
||||
@@ -254,8 +252,8 @@ export component PageAnime inherits Rectangle {
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "X";
|
||||
height: 40px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_display_advanced = false;
|
||||
root.show_fade_cover = false;
|
||||
|
||||
@@ -15,12 +15,7 @@ export global AppSettingsPageData {
|
||||
export component PageAppSettings inherits VerticalLayout {
|
||||
Rectangle {
|
||||
clip: true;
|
||||
// TODO: slow with border-radius
|
||||
//padding only has effect on layout elements
|
||||
//padding: 8px;
|
||||
|
||||
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
||||
// TODO: border-radius: 8px;
|
||||
mainview := VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
@@ -57,7 +52,8 @@ export component PageAppSettings inherits VerticalLayout {
|
||||
}
|
||||
|
||||
Text {
|
||||
text: "WIP: some features like notifications are not complete";
|
||||
color: Palette.accent-background;
|
||||
text: " WIP: some features like notifications are not complete";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ export component PageAura inherits Rectangle {
|
||||
c2.final_colour = AuraPageData.led_mode_data.colour2;
|
||||
c2.external_colour_change();
|
||||
}
|
||||
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 10px;
|
||||
@@ -53,6 +54,7 @@ export component PageAura inherits Rectangle {
|
||||
min-height: 220px;
|
||||
max-height: 400px;
|
||||
HorizontalLayout {
|
||||
padding-top: 5px;
|
||||
spacing: 10px;
|
||||
VerticalBox {
|
||||
Text {
|
||||
@@ -113,8 +115,6 @@ export component PageAura inherits Rectangle {
|
||||
min-height: 80px;
|
||||
max-height: 90px;
|
||||
RogItem {
|
||||
//padding only has effect on layout elements
|
||||
//padding: 0px;
|
||||
VerticalBox {
|
||||
Text {
|
||||
text: @tr("Zone");
|
||||
@@ -137,8 +137,6 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
|
||||
RogItem {
|
||||
//padding only has effect on layout elements
|
||||
//padding: 0px;
|
||||
VerticalBox {
|
||||
Text {
|
||||
text: @tr("Direction");
|
||||
@@ -160,8 +158,6 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
|
||||
RogItem {
|
||||
//padding only has effect on layout elements
|
||||
//padding: 0px;
|
||||
VerticalBox {
|
||||
Text {
|
||||
text: @tr("Speed");
|
||||
@@ -205,6 +201,7 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
|
||||
if root.show_aura_power && AuraPageData.device_type == AuraDevType.New: Rectangle {
|
||||
background: Palette.background;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
@@ -244,8 +241,8 @@ export component PageAura inherits Rectangle {
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "X";
|
||||
height: 40px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_aura_power = false;
|
||||
root.show_fade_cover = false;
|
||||
@@ -255,6 +252,7 @@ export component PageAura inherits Rectangle {
|
||||
}
|
||||
|
||||
if root.show_aura_power && AuraPageData.device_type == AuraDevType.Old: Rectangle {
|
||||
background: Palette.background;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
@@ -297,8 +295,8 @@ export component PageAura inherits Rectangle {
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "X";
|
||||
height: 40px;
|
||||
text: "✕";
|
||||
height: 36px;
|
||||
clicked => {
|
||||
root.show_aura_power = false;
|
||||
root.show_fade_cover = false;
|
||||
|
||||
@@ -16,20 +16,28 @@ component FanTab inherits Rectangle {
|
||||
in-out property <[Node]> nodes;
|
||||
|
||||
VerticalLayout {
|
||||
padding: 5px;
|
||||
HorizontalLayout {
|
||||
if root.tab_enabled: Graph {
|
||||
nodes <=> root.nodes;
|
||||
}
|
||||
if !root.tab_enabled: Rectangle {
|
||||
Text {
|
||||
font-size: 24px;
|
||||
font-size: 16px;
|
||||
text: @tr("This fan is not avilable on this machine");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
background: Palette.border;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
HorizontalLayout {
|
||||
alignment: LayoutAlignment.end;
|
||||
spacing: 10px;
|
||||
padding: 10px;
|
||||
CheckBox {
|
||||
text: @tr("Enabled");
|
||||
checked <=> root.enabled;
|
||||
|
||||
36
rog-control-center/ui/pages/gpu.slint
Normal file
36
rog-control-center/ui/pages/gpu.slint
Normal file
@@ -0,0 +1,36 @@
|
||||
import { Palette, TabWidget, Button, CheckBox, ScrollView } from "std-widgets.slint";
|
||||
import { Graph, Node } from "../widgets/graph.slint";
|
||||
import { SystemToggle, SystemDropdown } from "../widgets/common.slint";
|
||||
import { Profile, FanType, FanPageData } from "../types/fan_types.slint";
|
||||
|
||||
export global GPUPageData {
|
||||
// GPU mode and device state
|
||||
in-out property <int> gpu_mux_mode: 1; // 0 = Ultra/Discreet, 1 = Integrated/Optimus
|
||||
in-out property <int> dgpu_disabled: 0; // 1 == dGPU disabled
|
||||
in-out property <int> egpu_enabled: 0; // 1 == eGPU (XGMobile) enabled
|
||||
in-out property <[string]> gpu_modes_choises: [@tr("Ultra"), @tr("Integrated")];
|
||||
callback cb_gpu_mux_mode(int);
|
||||
callback cb_dgpu_disabled(int);
|
||||
callback cb_egpu_enabled(int);
|
||||
}
|
||||
|
||||
export component PageGPU inherits Rectangle {
|
||||
clip: true;
|
||||
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
SystemDropdown {
|
||||
text: @tr("GPU mode");
|
||||
current_index <=> GPUPageData.gpu_mux_mode;
|
||||
current_value: GPUPageData.gpu_modes_choises[GPUPageData.gpu_mux_mode];
|
||||
model <=> GPUPageData.gpu_modes_choises;
|
||||
selected => {
|
||||
GPUPageData.cb_gpu_mux_mode(0);
|
||||
GPUPageData.cb_gpu_mux_mode(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,21 +152,20 @@ export component PageSystem inherits Rectangle {
|
||||
property <bool> show_fade_cover: false;
|
||||
property <bool> show_throttle_advanced: false;
|
||||
clip: true;
|
||||
//padding only has effect on layout elements
|
||||
//padding: 8px;
|
||||
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 10px;
|
||||
spacing: 10px;
|
||||
padding: 12px;
|
||||
spacing: 8px;
|
||||
alignment: LayoutAlignment.start;
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.accent-background;
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
height: 40px;
|
||||
border-color: Palette.border;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
height: 36px;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Power settings");
|
||||
@@ -212,11 +211,11 @@ export component PageSystem inherits Rectangle {
|
||||
padding-left: 10px;
|
||||
padding-right: 20px;
|
||||
HorizontalLayout {
|
||||
width: 38%;
|
||||
width: 40%;
|
||||
alignment: LayoutAlignment.space-between;
|
||||
padding-right: 15px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
text: @tr("Screenpad brightness");
|
||||
@@ -240,7 +239,7 @@ export component PageSystem inherits Rectangle {
|
||||
|
||||
HorizontalLayout {
|
||||
width: 20%;
|
||||
padding-left: 10px;
|
||||
padding-left: 14px;
|
||||
alignment: LayoutAlignment.stretch;
|
||||
Switch {
|
||||
text: @tr("Sync with primary");
|
||||
@@ -253,14 +252,74 @@ export component PageSystem inherits Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_awake != -1 ||
|
||||
SystemPageData.kbd_leds_sleep != -1 ||
|
||||
SystemPageData.kbd_leds_boot != -1 ||
|
||||
SystemPageData.kbd_leds_shutdown != -1: VerticalLayout {
|
||||
padding: 0px;
|
||||
spacing: 0px;
|
||||
alignment: LayoutAlignment.start;
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.border;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
height: 40px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Keyboard Power Management");
|
||||
}
|
||||
}
|
||||
|
||||
GroupBox {
|
||||
|
||||
HorizontalLayout {
|
||||
spacing: 10px;
|
||||
if SystemPageData.kbd_leds_awake != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Awake Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_awake;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_awake(SystemPageData.kbd_leds_awake)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_sleep != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Sleep Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_sleep;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_sleep(SystemPageData.kbd_leds_sleep)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_boot != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Boot Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_boot;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_boot(SystemPageData.kbd_leds_boot)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_shutdown != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Shutdown Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_shutdown;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_shutdown(SystemPageData.kbd_leds_shutdown)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
background: Palette.alternate-background;
|
||||
border-color: Palette.accent-background;
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
height: 40px;
|
||||
border-color: Palette.border;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
height: 36px;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: Palette.control-foreground;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
text: @tr("Armoury settings");
|
||||
@@ -268,62 +327,26 @@ export component PageSystem inherits Rectangle {
|
||||
}
|
||||
|
||||
if !SystemPageData.asus_armoury_loaded: Rectangle {
|
||||
border-width: 3px;
|
||||
border-color: red;
|
||||
background: maroon;
|
||||
// background: darkred;
|
||||
max-height: 30px;
|
||||
VerticalBox {
|
||||
Text {
|
||||
text: @tr("no_asus_armoury_driver_1" => "The asus-armoury driver is not loaded");
|
||||
font-size: 16px;
|
||||
color: white;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
}
|
||||
|
||||
Text {
|
||||
text: @tr("no_asus_armoury_driver_2" => "For advanced features you will require a kernel with this driver added.");
|
||||
font-size: 16px;
|
||||
color: white;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GroupBox {
|
||||
title: @tr("Keyboard Power Management");
|
||||
HorizontalLayout {
|
||||
spacing: 10px;
|
||||
if SystemPageData.kbd_leds_awake != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Awake Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_awake;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_awake(SystemPageData.kbd_leds_awake)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_sleep != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Sleep Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_sleep;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_sleep(SystemPageData.kbd_leds_sleep)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_boot != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Boot Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_boot;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_boot(SystemPageData.kbd_leds_boot)
|
||||
}
|
||||
}
|
||||
|
||||
if SystemPageData.kbd_leds_shutdown != -1: SystemToggleInt {
|
||||
text: @tr("Keyboard Shutdown Effect");
|
||||
checked_int <=> SystemPageData.kbd_leds_shutdown;
|
||||
toggled => {
|
||||
SystemPageData.cb_kbd_leds_shutdown(SystemPageData.kbd_leds_shutdown)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HorizontalBox {
|
||||
padding: 0px;
|
||||
spacing: 10px;
|
||||
@@ -561,20 +584,22 @@ export component PageSystem inherits Rectangle {
|
||||
}
|
||||
|
||||
if root.show_throttle_advanced: Rectangle {
|
||||
background: Palette.background;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 1;
|
||||
ScrollView {
|
||||
VerticalLayout {
|
||||
padding: 50px;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 100px;
|
||||
alignment: start;
|
||||
padding: 5px;
|
||||
padding-top: 15px;
|
||||
spacing: 10px;
|
||||
GroupBox {
|
||||
VerticalBox {
|
||||
alignment: start;
|
||||
spacing: 10px;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
text: @tr("Energy Performance Preference linked to Throttle Policy");
|
||||
@@ -622,9 +647,10 @@ export component PageSystem inherits Rectangle {
|
||||
|
||||
GroupBox {
|
||||
VerticalBox {
|
||||
alignment: start;
|
||||
spacing: 10px;
|
||||
Text {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
text: @tr("Throttle Policy for power state");
|
||||
@@ -679,8 +705,8 @@ export component PageSystem inherits Rectangle {
|
||||
Button {
|
||||
x: root.width - self.width - 6px;
|
||||
y: 6px;
|
||||
text: "X";
|
||||
height: 40px;
|
||||
text: "✕";
|
||||
height: 34px;
|
||||
clicked => {
|
||||
root.show_throttle_advanced = false;
|
||||
root.show_fade_cover = false;
|
||||
|
||||
@@ -4,8 +4,6 @@ import { PowerZones } from "../types/aura_types.slint";
|
||||
|
||||
export component AuraPowerGroup inherits Rectangle {
|
||||
min-width: row.min-width;
|
||||
border-radius: 20px;
|
||||
background: Palette.alternate-background;
|
||||
opacity: 0.9;
|
||||
in-out property <string> group-title;
|
||||
in-out property <bool> boot_checked;
|
||||
@@ -16,6 +14,7 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
callback awake_toggled(bool);
|
||||
callback sleep_toggled(bool);
|
||||
callback shutdown_toggled(bool);
|
||||
|
||||
VerticalBox {
|
||||
spacing: 10px;
|
||||
Text {
|
||||
@@ -28,7 +27,7 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
row := HorizontalBox {
|
||||
alignment: LayoutAlignment.center;
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Boot");
|
||||
checked <=> root.boot_checked;
|
||||
@@ -38,7 +37,7 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Awake");
|
||||
checked <=> root.awake_checked;
|
||||
@@ -48,7 +47,7 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Sleep");
|
||||
checked <=> root.sleep_checked;
|
||||
@@ -58,7 +57,7 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Shutdown");
|
||||
checked <=> root.shutdown_checked;
|
||||
@@ -72,8 +71,6 @@ export component AuraPowerGroup inherits Rectangle {
|
||||
|
||||
export component AuraPowerGroupOld inherits Rectangle {
|
||||
min-width: row.min-width;
|
||||
border-radius: 20px;
|
||||
background: Palette.alternate-background;
|
||||
opacity: 0.9;
|
||||
in-out property <int> current_zone;
|
||||
in-out property <[int]> zones;
|
||||
@@ -86,6 +83,7 @@ export component AuraPowerGroupOld inherits Rectangle {
|
||||
callback awake_toggled(bool);
|
||||
callback sleep_toggled(bool);
|
||||
callback selected_zone(int);
|
||||
|
||||
VerticalBox {
|
||||
spacing: 10px;
|
||||
Text {
|
||||
@@ -109,7 +107,7 @@ export component AuraPowerGroupOld inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Boot");
|
||||
checked <=> root.boot_checked;
|
||||
@@ -119,7 +117,7 @@ export component AuraPowerGroupOld inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Awake");
|
||||
checked <=> root.awake_checked;
|
||||
@@ -129,7 +127,7 @@ export component AuraPowerGroupOld inherits Rectangle {
|
||||
}
|
||||
|
||||
SystemToggleVert {
|
||||
min-width: 96px;
|
||||
min-width: 128px;
|
||||
max-height: 42px;
|
||||
text: @tr("Sleep");
|
||||
checked <=> root.sleep_checked;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Palette, Slider, HorizontalBox, Button, LineEdit } from "std-widgets.slint";
|
||||
|
||||
export component ColourSlider inherits VerticalLayout {
|
||||
spacing: 10px;
|
||||
spacing: 12px;
|
||||
in-out property <bool> enabled;
|
||||
property <string> hex: "#FF0000";
|
||||
in-out property <float> c1value <=> c1.value;
|
||||
@@ -102,9 +102,9 @@ export component ColourSlider inherits VerticalLayout {
|
||||
hex = set_hex_from_colour(final_colour);
|
||||
}
|
||||
Rectangle {
|
||||
height: 32px;
|
||||
border-width: 2px;
|
||||
border-radius: 7px;
|
||||
height: 28px;
|
||||
border-width: 1px;
|
||||
border-radius: 3px;
|
||||
border-color: Palette.border;
|
||||
// 13 colours
|
||||
background: !root.enabled ? Palette.alternate-background : @linear-gradient(90deg, base_colours[0], base_colours[1], base_colours[2], base_colours[3], base_colours[4], base_colours[5], base_colours[6], base_colours[7], base_colours[8], base_colours[9], base_colours[10], base_colours[11], base_colours[12], base_colours[13], base_colours[14], base_colours[15], base_colours[16], base_colours[17], base_colours[18], base_colours[19], base_colours[20], base_colours[21], base_colours[22], base_colours[23], base_colours[24], base_colours[25], base_colours[26], base_colours[27], base_colours[28], base_colours[29], base_colours[30], base_colours[31], base_colours[32], base_colours[33], base_colours[34], base_colours[35]);
|
||||
@@ -127,9 +127,9 @@ export component ColourSlider inherits VerticalLayout {
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
height: 32px;
|
||||
border-width: 2px;
|
||||
border-radius: 7px;
|
||||
height: 28px;
|
||||
border-width: 1px;
|
||||
border-radius: 3px;
|
||||
border-color: Palette.border;
|
||||
// 11 colours
|
||||
background: !root.enabled ? Palette.alternate-background : @linear-gradient(90deg, base_saturation[0], base_saturation[1], base_saturation[2], base_saturation[3], base_saturation[4], base_saturation[5], base_saturation[6], base_saturation[7], base_saturation[8], base_saturation[9], base_saturation[10]);
|
||||
@@ -151,9 +151,9 @@ export component ColourSlider inherits VerticalLayout {
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
height: 32px;
|
||||
border-width: 2px;
|
||||
border-radius: 7px;
|
||||
height: 28px;
|
||||
border-width: 1px;
|
||||
border-radius: 3px;
|
||||
border-color: Palette.border;
|
||||
// 11 colours
|
||||
background: !root.enabled ? Palette.alternate-background : @linear-gradient(90deg, base_value[0], base_value[1], base_value[2], base_value[3], base_value[4], base_value[5], base_value[6], base_value[7], base_value[8], base_value[9], base_value[10]);
|
||||
@@ -191,8 +191,8 @@ export component ColourSlider inherits VerticalLayout {
|
||||
|
||||
Rectangle {
|
||||
width: self.height;
|
||||
border-width: 2px;
|
||||
border-radius: 7px;
|
||||
border-width: 1px;
|
||||
border-radius: 3px;
|
||||
border-color: Palette.border;
|
||||
background <=> root.colourbox;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import { Palette, VerticalBox , StandardButton, Button, HorizontalBox, ComboBox, Switch, Slider} from "std-widgets.slint";
|
||||
|
||||
export component RogItem inherits Rectangle {
|
||||
background: Palette.control-background;
|
||||
border-color: Palette.border;
|
||||
border-width: 3px;
|
||||
border-radius: 10px;
|
||||
min-height: 48px;
|
||||
max-height: 56px;
|
||||
border-width: 1px;
|
||||
border-radius: 2px;
|
||||
min-height: 44px;
|
||||
max-height: 44px;
|
||||
}
|
||||
|
||||
export component SystemSlider inherits RogItem {
|
||||
@@ -30,14 +29,14 @@ export component SystemSlider inherits RogItem {
|
||||
HorizontalLayout {
|
||||
spacing: 6px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
text: root.text;
|
||||
}
|
||||
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
horizontal-alignment: TextHorizontalAlignment.right;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
@@ -47,7 +46,7 @@ export component SystemSlider inherits RogItem {
|
||||
}
|
||||
|
||||
HorizontalBox {
|
||||
padding-right: 20px;
|
||||
padding-right: 10px;
|
||||
slider := Slider {
|
||||
enabled: root.enabled;
|
||||
maximum: root.maximum;
|
||||
@@ -162,7 +161,7 @@ export component SystemToggle inherits RogItem {
|
||||
alignment: LayoutAlignment.start;
|
||||
padding-left: 10px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
text: root.text;
|
||||
@@ -193,7 +192,7 @@ export component SystemToggleInt inherits RogItem {
|
||||
alignment: LayoutAlignment.start;
|
||||
padding-left: 10px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
text: root.text;
|
||||
@@ -223,7 +222,7 @@ export component SystemToggleVert inherits RogItem {
|
||||
alignment: LayoutAlignment.space-around;
|
||||
padding-top: 8px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.bottom;
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
@@ -254,7 +253,7 @@ export component SystemDropdown inherits RogItem {
|
||||
alignment: LayoutAlignment.start;
|
||||
padding-left: 10px;
|
||||
Text {
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
vertical-alignment: TextVerticalAlignment.center;
|
||||
color: Palette.control-foreground;
|
||||
text: root.text;
|
||||
@@ -291,11 +290,7 @@ export component PopupNotification {
|
||||
border-width: 2px;
|
||||
border-color: Palette.accent-background;
|
||||
background: Palette.background;
|
||||
// TODO: drop shadows slow
|
||||
// drop-shadow-offset-x: 7px;
|
||||
// drop-shadow-offset-y: 7px;
|
||||
// drop-shadow-color: black;
|
||||
// drop-shadow-blur: 30px;
|
||||
|
||||
VerticalLayout {
|
||||
Dialog {
|
||||
VerticalLayout {
|
||||
|
||||
@@ -191,10 +191,11 @@ export component Graph inherits Rectangle {
|
||||
tip := Rectangle {
|
||||
background: Palette.control-foreground;
|
||||
opacity: 0.3;
|
||||
border-radius: 12px;
|
||||
x: final_x_pos();
|
||||
y: final_y_pos();
|
||||
width: label.preferred-width;
|
||||
height: label.preferred-height;
|
||||
width: label.preferred-width + 14px;
|
||||
height: label.preferred-height + 4px;
|
||||
function x_pos() -> length {
|
||||
scale_x_to_graph(n.x) - label.preferred-width - 8px
|
||||
}
|
||||
@@ -225,7 +226,7 @@ export component Graph inherits Rectangle {
|
||||
//
|
||||
label := Text {
|
||||
color: Palette.accent-foreground;
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
text: "\{Math.floor(n.x / 1px)}c, \{fan_pct()}%";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
import { Palette, HorizontalBox, VerticalBox } from "std-widgets.slint";
|
||||
|
||||
component SideBarItem inherits Rectangle {
|
||||
// padding only has effect on layout elements
|
||||
// padding: 10px;
|
||||
in property <bool> selected;
|
||||
in property <bool> has-focus;
|
||||
in-out property <string> text <=> label.text;
|
||||
@@ -26,18 +24,16 @@ component SideBarItem inherits Rectangle {
|
||||
state.opacity: 0.8;
|
||||
}
|
||||
]
|
||||
|
||||
state := Rectangle {
|
||||
opacity: 0;
|
||||
border-width: 2px;
|
||||
border-radius: 10px;
|
||||
border-color: Palette.accent-background;
|
||||
background: Palette.alternate-background;
|
||||
background: Palette.selection-background;
|
||||
animate opacity { duration: 150ms; }
|
||||
animate border-width { duration: 150ms; }
|
||||
height: l.preferred-height;
|
||||
}
|
||||
|
||||
l := HorizontalBox {
|
||||
x: 4px;
|
||||
y: (parent.height - self.height) / 2;
|
||||
spacing: 0px;
|
||||
label := Text {
|
||||
@@ -56,20 +52,16 @@ component SideBarItem inherits Rectangle {
|
||||
export component SideBar inherits Rectangle {
|
||||
in property <[string]> model: [];
|
||||
in property <[bool]> available: [];
|
||||
in property <string> title <=> label.text;
|
||||
out property <int> current-item: 0;
|
||||
out property <int> current-focused: fs.has-focus ? fs.focused-tab : -1;
|
||||
|
||||
// The currently focused tab
|
||||
width: 160px;
|
||||
width: 180px;
|
||||
forward-focus: fs;
|
||||
accessible-role: tab;
|
||||
accessible-delegate-focus: root.current-focused >= 0 ? root.current-focused : root.current-item;
|
||||
Rectangle {
|
||||
border-width: 2px;
|
||||
border-color: Palette.accent-background;
|
||||
border-radius: 0px;
|
||||
background: Palette.background.darker(0.2);
|
||||
background: Palette.alternate-background;
|
||||
fs := FocusScope {
|
||||
key-pressed(event) => {
|
||||
if (event.text == "\n") {
|
||||
@@ -102,10 +94,19 @@ export component SideBar inherits Rectangle {
|
||||
|
||||
VerticalBox {
|
||||
spacing: 4px;
|
||||
padding: 0px;
|
||||
alignment: start;
|
||||
label := Text {
|
||||
font-size: 16px;
|
||||
|
||||
Image {
|
||||
height: 100px;
|
||||
source: @image-url("../../data/rog-control-center.png");
|
||||
horizontal-alignment: center;
|
||||
image-fit: contain;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
height: 1px;
|
||||
background: Palette.border;
|
||||
}
|
||||
|
||||
navigation := VerticalLayout {
|
||||
|
||||
@@ -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 {
|
||||
($($attr:ident),*) => {
|
||||
// Accept a list of attribute idents and an optional `types { .. }` block
|
||||
( $( $attr:ident ),* $(,)? $( ; types { $( $tattr:ident : $ptype:ident ),* $(,)? } )? ) => {
|
||||
impl FirmwareAttributes {
|
||||
$(
|
||||
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,
|
||||
mini_led_mode,
|
||||
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
|
||||
@@ -352,29 +406,6 @@ pub enum FirmwareAttribute {
|
||||
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 {
|
||||
fn from(s: &str) -> Self {
|
||||
match s {
|
||||
|
||||
1
rust-toolchain
Normal file
1
rust-toolchain
Normal file
@@ -0,0 +1 @@
|
||||
stable
|
||||
Reference in New Issue
Block a user