mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 319373faea | |||
| f6aa3e3d01 | |||
| d11fc20bab | |||
| b0e1b21e4b | |||
| 1c1daaa6d2 | |||
| c3b5de843f | |||
| 09dcfb4065 | |||
| b2e7211bbe | |||
| 1ab1adf937 | |||
| a21bf779b0 | |||
| 0dba22529c | |||
| 180d63620b | |||
| daea1f538c | |||
| f5e2484797 | |||
| 7105ae40c6 | |||
| 33f9900ef9 | |||
| 1aa1c62e40 | |||
| 3a18ef4c7b | |||
| 9dcce77302 | |||
| 995df9b51b | |||
| 84c8babdb7 | |||
| 1014f97b6f | |||
| 3c023be57d | |||
| eff20c84d6 | |||
| f8984eb7e9 | |||
| 2ffd2a1e1f | |||
| 341bd081f8 | |||
| 52af4203a1 | |||
| e5a6088392 | |||
| 6ee5dfb352 | |||
| 3f8336fc5e | |||
| 8fc7e8f3a7 | |||
| 098b1f2668 | |||
| 20df3ad2f2 | |||
| 7aaadad6da | |||
| be60c1ba02 | |||
| 698a8e8677 | |||
| ce6420eeac | |||
| f5f5e4f720 | |||
| c08503826b | |||
| df93209839 | |||
| 11ee7827e9 | |||
| c337de5139 | |||
| c5c5a9ac67 | |||
| b84bc61f3d | |||
| b4e38e0814 |
@@ -9,6 +9,7 @@ vendor_*
|
|||||||
.vscode
|
.vscode
|
||||||
.~lock.*
|
.~lock.*
|
||||||
*.ods#
|
*.ods#
|
||||||
|
*.patch
|
||||||
|
|
||||||
# gnome extension
|
# gnome extension
|
||||||
node-modules
|
node-modules
|
||||||
|
|||||||
@@ -2,6 +2,24 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [v6.1.15]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Reflect the current asus-armoury status on AC plug connection status change
|
||||||
|
|
||||||
|
## [v6.1.14]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Fix formatting
|
||||||
|
- Attempt to fix tests
|
||||||
|
|
||||||
|
## [v6.1.13]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Fix a problem in reloading the service (@evertvorster)
|
||||||
|
- Add Azerbaijani language (@rashadgasimli)
|
||||||
|
- Add Ubuntu installation instructions
|
||||||
|
|
||||||
## [v6.1.12]
|
## [v6.1.12]
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
Generated
+1477
-1564
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "6.1.12"
|
version = "6.1.15"
|
||||||
rust-version = "1.82"
|
rust-version = "1.82"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ BIN_D := asusd
|
|||||||
BIN_U := asusd-user
|
BIN_U := asusd-user
|
||||||
LEDCFG := aura_support.ron
|
LEDCFG := aura_support.ron
|
||||||
|
|
||||||
|
DESTDIR_REALPATH = $(shell realpath $(DESTDIR))
|
||||||
|
|
||||||
SRC := Cargo.toml Cargo.lock Makefile $(shell find -type f -wholename '**/src/*.rs')
|
SRC := Cargo.toml Cargo.lock Makefile $(shell find -type f -wholename '**/src/*.rs')
|
||||||
|
|
||||||
STRIP_BINARIES ?= 0
|
STRIP_BINARIES ?= 0
|
||||||
@@ -48,24 +50,31 @@ clean:
|
|||||||
distclean:
|
distclean:
|
||||||
rm -rf .cargo vendor vendor.tar.xz
|
rm -rf .cargo vendor vendor.tar.xz
|
||||||
|
|
||||||
install-program:
|
target/$(TARGET)/$(BIN_D): build
|
||||||
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_ROG)" "$(DESTDIR)$(bindir)/$(BIN_ROG)"
|
target/$(TARGET)/$(BIN_C): build
|
||||||
|
target/$(TARGET)/$(BIN_U): build
|
||||||
|
target/$(TARGET)/$(BIN_ROG): build
|
||||||
|
|
||||||
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_C)" "$(DESTDIR)$(bindir)/$(BIN_C)"
|
install-asusd: target/$(TARGET)/$(BIN_D)
|
||||||
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_D)" "$(DESTDIR)$(bindir)/$(BIN_D)"
|
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_D)" "$(DESTDIR)$(bindir)/$(BIN_D)"
|
||||||
|
|
||||||
|
install-asusctl: target/$(TARGET)/$(BIN_C)
|
||||||
|
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_C)" "$(DESTDIR)$(bindir)/$(BIN_C)"
|
||||||
|
|
||||||
|
install-asusd_user: target/$(TARGET)/$(BIN_U)
|
||||||
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_U)" "$(DESTDIR)$(bindir)/$(BIN_U)"
|
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_U)" "$(DESTDIR)$(bindir)/$(BIN_U)"
|
||||||
|
|
||||||
install-data:
|
install-rog_gui: target/$(TARGET)/$(BIN_ROG)
|
||||||
|
$(INSTALL_PROGRAM) "./target/$(TARGET)/$(BIN_ROG)" "$(DESTDIR)$(bindir)/$(BIN_ROG)"
|
||||||
|
|
||||||
|
.PHONY: install-asusd install-asusctl install-asusd_user install-rog_gui
|
||||||
|
|
||||||
|
install-program: install-asusd install-asusctl install-asusd_user install-rog_gui
|
||||||
|
|
||||||
|
install-data-rog_gui:
|
||||||
$(INSTALL_DATA) "./rog-control-center/data/$(BIN_ROG).desktop" "$(DESTDIR)$(datarootdir)/applications/$(BIN_ROG).desktop"
|
$(INSTALL_DATA) "./rog-control-center/data/$(BIN_ROG).desktop" "$(DESTDIR)$(datarootdir)/applications/$(BIN_ROG).desktop"
|
||||||
$(INSTALL_DATA) "./rog-control-center/data/$(BIN_ROG).png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/$(BIN_ROG).png"
|
$(INSTALL_DATA) "./rog-control-center/data/$(BIN_ROG).png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/$(BIN_ROG).png"
|
||||||
cd rog-aura/data/layouts && find . -type f -name "*.ron" -exec $(INSTALL_DATA) "{}" "$(DESTDIR)$(datarootdir)/rog-gui/layouts/{}" \;
|
cd rog-aura/data/layouts && find . -type f -name "*.ron" -exec $(INSTALL_DATA) "{}" "$(DESTDIR_REALPATH)$(datarootdir)/rog-gui/layouts/{}" \;
|
||||||
|
|
||||||
$(INSTALL_DATA) "./data/$(BIN_D).rules" "$(DESTDIR)$(libdir)/udev/rules.d/99-$(BIN_D).rules"
|
|
||||||
$(INSTALL_DATA) "./rog-aura/data/$(LEDCFG)" "$(DESTDIR)$(datarootdir)/asusd/$(LEDCFG)"
|
|
||||||
$(INSTALL_DATA) "./data/$(BIN_D).conf" "$(DESTDIR)$(datarootdir)/dbus-1/system.d/$(BIN_D).conf"
|
|
||||||
|
|
||||||
$(INSTALL_DATA) "./data/$(BIN_D).service" "$(DESTDIR)$(libdir)/systemd/system/$(BIN_D).service"
|
|
||||||
$(INSTALL_DATA) "./data/$(BIN_U).service" "$(DESTDIR)$(libdir)/systemd/user/$(BIN_U).service"
|
|
||||||
|
|
||||||
$(INSTALL_DATA) "./data/icons/asus_notif_yellow.png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/asus_notif_yellow.png"
|
$(INSTALL_DATA) "./data/icons/asus_notif_yellow.png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/asus_notif_yellow.png"
|
||||||
$(INSTALL_DATA) "./data/icons/asus_notif_green.png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/asus_notif_green.png"
|
$(INSTALL_DATA) "./data/icons/asus_notif_green.png" "$(DESTDIR)$(datarootdir)/icons/hicolor/512x512/apps/asus_notif_green.png"
|
||||||
@@ -81,9 +90,24 @@ install-data:
|
|||||||
$(INSTALL_DATA) "./data/icons/scalable/gpu-vfio.svg" "$(DESTDIR)$(datarootdir)/icons/hicolor/scalable/status/gpu-vfio.svg"
|
$(INSTALL_DATA) "./data/icons/scalable/gpu-vfio.svg" "$(DESTDIR)$(datarootdir)/icons/hicolor/scalable/status/gpu-vfio.svg"
|
||||||
$(INSTALL_DATA) "./data/icons/scalable/notification-reboot.svg" "$(DESTDIR)$(datarootdir)/icons/hicolor/scalable/status/notification-reboot.svg"
|
$(INSTALL_DATA) "./data/icons/scalable/notification-reboot.svg" "$(DESTDIR)$(datarootdir)/icons/hicolor/scalable/status/notification-reboot.svg"
|
||||||
|
|
||||||
cd rog-anime/data && find "./anime" -type f -exec $(INSTALL_DATA) "{}" "$(DESTDIR)$(datarootdir)/asusd/{}" \;
|
install-data-asusd:
|
||||||
|
$(INSTALL_DATA) "./data/$(BIN_D).rules" "$(DESTDIR)$(libdir)/udev/rules.d/99-$(BIN_D).rules"
|
||||||
|
$(INSTALL_DATA) "./rog-aura/data/$(LEDCFG)" "$(DESTDIR)$(datarootdir)/asusd/$(LEDCFG)"
|
||||||
|
$(INSTALL_DATA) "./data/$(BIN_D).conf" "$(DESTDIR)$(datarootdir)/dbus-1/system.d/$(BIN_D).conf"
|
||||||
|
|
||||||
|
$(INSTALL_DATA) "./data/$(BIN_D).service" "$(DESTDIR)$(libdir)/systemd/system/$(BIN_D).service"
|
||||||
|
|
||||||
|
cd rog-anime/data && find "./anime" -type f -exec $(INSTALL_DATA) "{}" "$(DESTDIR_REALPATH)$(datarootdir)/asusd/{}" \;
|
||||||
|
|
||||||
|
install-data-asusd_user:
|
||||||
|
$(INSTALL_DATA) "./data/$(BIN_U).service" "$(DESTDIR)$(libdir)/systemd/user/$(BIN_U).service"
|
||||||
|
|
||||||
|
.PHONY: install-data-asusd install-data-asusd_user
|
||||||
|
|
||||||
|
install-data: install-data-asusd install-data-rog_gui
|
||||||
|
|
||||||
install: install-program install-data
|
install: install-program install-data
|
||||||
|
$(INSTALL_DATA) "./LICENSE" "$(DESTDIR)$(datarootdir)/asusctl/LICENSE"
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f "$(DESTDIR)$(bindir)/$(BIN_ROG)"
|
rm -f "$(DESTDIR)$(bindir)/$(BIN_ROG)"
|
||||||
|
|||||||
@@ -110,7 +110,12 @@ officially unsuported,but you can still try and test it by yourself(some feature
|
|||||||
|
|
||||||
**Ubuntu, Popos (unsuported):**
|
**Ubuntu, Popos (unsuported):**
|
||||||
|
|
||||||
instructions removed as outdated
|
```sh
|
||||||
|
sudo apt install make cargo gcc pkg-config openssl libasound2-dev cmake build-essential python3 libfreetype6-dev libexpat1-dev libxcb-composite0-dev libssl-dev libx11-dev libfontconfig1-dev curl libclang-dev libudev-dev checkinstall libseat-dev libinput-dev libxkbcommon-dev libgbm-dev
|
||||||
|
|
||||||
|
make
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
|
|
||||||
|
|||||||
@@ -27,3 +27,15 @@ zbus.workspace = true
|
|||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rog_dbus = { path = "../rog-dbus" }
|
rog_dbus = { path = "../rog-dbus" }
|
||||||
|
|
||||||
|
[package.metadata.deb]
|
||||||
|
license-file = ["../LICENSE", "4"]
|
||||||
|
extended-description = """\
|
||||||
|
An utility for Linux to control many aspects of various ASUS laptops
|
||||||
|
but can also be used with non-asus laptops with reduced features."""
|
||||||
|
depends = "$auto"
|
||||||
|
section = "utility"
|
||||||
|
priority = "optional"
|
||||||
|
assets = [
|
||||||
|
["target/release/asusctl", "usr/bin/", "755"],
|
||||||
|
]
|
||||||
|
|||||||
+2
-2
@@ -1171,9 +1171,9 @@ fn print_firmware_attr(attr: &AsusArmouryProxyBlocking) -> Result<(), Box<dyn st
|
|||||||
|
|
||||||
fn handle_armoury_command(cmd: &ArmouryCommand) -> Result<(), Box<dyn std::error::Error>> {
|
fn handle_armoury_command(cmd: &ArmouryCommand) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
{
|
{
|
||||||
if cmd.free.is_empty() || cmd.free.len() % 2 != 0 || cmd.help {
|
if cmd.free.is_empty() || !cmd.free.len().is_multiple_of(2) || cmd.help {
|
||||||
const USAGE: &str = "Usage: asusctl platform panel_overdrive 1 nv_dynamic_boost 5";
|
const USAGE: &str = "Usage: asusctl platform panel_overdrive 1 nv_dynamic_boost 5";
|
||||||
if cmd.free.len() % 2 != 0 {
|
if !cmd.free.len().is_multiple_of(2) {
|
||||||
println!(
|
println!(
|
||||||
"Incorrect number of args, each attribute label must be paired with a setting:"
|
"Incorrect number of args, each attribute label must be paired with a setting:"
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -32,3 +32,16 @@ config-traits = { path = "../config-traits" }
|
|||||||
|
|
||||||
zbus.workspace = true
|
zbus.workspace = true
|
||||||
env_logger.workspace = true
|
env_logger.workspace = true
|
||||||
|
|
||||||
|
[package.metadata.deb]
|
||||||
|
license-file = ["../LICENSE", "4"]
|
||||||
|
extended-description = """\
|
||||||
|
An user utility for Linux to control fancy things on various ASUS laptops
|
||||||
|
like keyboard effects or anime matrix animation cycles."""
|
||||||
|
depends = "$auto"
|
||||||
|
section = "utility"
|
||||||
|
priority = "optional"
|
||||||
|
assets = [
|
||||||
|
["target/release/asusd-user", "usr/bin/", "755"],
|
||||||
|
["../asusd_user-fakeinstall/usr/lib/systemd/user/*", "usr/lib/systemd/user/", "644"],
|
||||||
|
]
|
||||||
|
|||||||
@@ -45,3 +45,18 @@ concat-idents.workspace = true
|
|||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
cargo-husky.workspace = true
|
cargo-husky.workspace = true
|
||||||
|
|
||||||
|
[package.metadata.deb]
|
||||||
|
license-file = ["../LICENSE", "4"]
|
||||||
|
extended-description = """\
|
||||||
|
The dbus server for asusctl and rog-control-center applications."""
|
||||||
|
depends = "$auto"
|
||||||
|
section = "utility"
|
||||||
|
priority = "optional"
|
||||||
|
assets = [
|
||||||
|
["target/release/asusd", "usr/bin/", "755"],
|
||||||
|
["../asusd-fakeinstall/usr/lib/systemd/system/*", "usr/lib/systemd/system/", "644"],
|
||||||
|
["../asusd-fakeinstall/usr/lib/udev/rules.d/*", "usr/lib/udev/rules.d/", "644"],
|
||||||
|
["../asusd-fakeinstall/usr/share/asusd/*", "usr/share/share/asusd/", "644"],
|
||||||
|
["../asusd-fakeinstall/usr/share/dbus-1/system.d/*", "usr/share/dbus-1/system.d/", "644"],
|
||||||
|
]
|
||||||
|
|||||||
+259
-58
@@ -51,6 +51,29 @@ impl AsusArmouryAttribute {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn attribute_name(&self) -> String {
|
||||||
|
String::from(self.attr.name())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn resolve_i32_value(refreshed: Option<i32>, cached: &AttrValue) -> i32 {
|
||||||
|
refreshed
|
||||||
|
.or(match cached {
|
||||||
|
AttrValue::Integer(i) => Some(*i),
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.unwrap_or(-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn emit_limits(&self, connection: &Connection) -> Result<(), RogError> {
|
||||||
|
let path = dbus_path_for_attr(self.attr.name());
|
||||||
|
let signal = SignalEmitter::new(connection, path)?;
|
||||||
|
self.min_value_changed(&signal).await?;
|
||||||
|
self.max_value_changed(&signal).await?;
|
||||||
|
self.scalar_increment_changed(&signal).await?;
|
||||||
|
self.current_value_changed(&signal).await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn move_to_zbus(self, connection: &Connection) -> Result<(), RogError> {
|
pub async fn move_to_zbus(self, connection: &Connection) -> Result<(), RogError> {
|
||||||
let path = dbus_path_for_attr(self.attr.name());
|
let path = dbus_path_for_attr(self.attr.name());
|
||||||
connection
|
connection
|
||||||
@@ -78,14 +101,20 @@ impl AsusArmouryAttribute {
|
|||||||
let sig = signal_ctxt.clone();
|
let sig = signal_ctxt.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut buffer = [0; 32];
|
let mut buffer = [0; 32];
|
||||||
watch
|
if let Ok(stream) = watch.into_event_stream(&mut buffer) {
|
||||||
.into_event_stream(&mut buffer)
|
stream
|
||||||
.unwrap()
|
.for_each(|_| async {
|
||||||
.for_each(|_| async {
|
debug!("{} changed", name);
|
||||||
debug!("{} changed", name);
|
ctrl.$fn_prop_changed(&sig).await.ok();
|
||||||
ctrl.$fn_prop_changed(&sig).await.ok();
|
})
|
||||||
})
|
.await;
|
||||||
.await;
|
} else {
|
||||||
|
info!(
|
||||||
|
"inotify event stream failed for {} ({}). You can ignore this \
|
||||||
|
if unsupported",
|
||||||
|
name, $attr_str
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Err(e) => info!(
|
Err(e) => info!(
|
||||||
@@ -107,35 +136,90 @@ impl AsusArmouryAttribute {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Default)]
|
||||||
|
pub struct ArmouryAttributeRegistry {
|
||||||
|
attrs: Vec<AsusArmouryAttribute>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ArmouryAttributeRegistry {
|
||||||
|
pub fn push(&mut self, attr: AsusArmouryAttribute) {
|
||||||
|
self.attrs.push(attr);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn emit_limits(&self, connection: &Connection) -> Result<(), RogError> {
|
||||||
|
let mut last_err: Option<RogError> = None;
|
||||||
|
for attr in &self.attrs {
|
||||||
|
if let Err(e) = attr.emit_limits(connection).await {
|
||||||
|
error!(
|
||||||
|
"Failed to emit updated limits for attribute '{}': {e:?}",
|
||||||
|
attr.attribute_name()
|
||||||
|
);
|
||||||
|
last_err = Some(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(err) = last_err {
|
||||||
|
Err(err)
|
||||||
|
} else {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl crate::Reloadable for AsusArmouryAttribute {
|
impl crate::Reloadable for AsusArmouryAttribute {
|
||||||
async fn reload(&mut self) -> Result<(), RogError> {
|
async fn reload(&mut self) -> Result<(), RogError> {
|
||||||
info!("Reloading {}", self.attr.name());
|
info!("Reloading {}", self.attr.name());
|
||||||
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
let name: FirmwareAttribute = self.attr.name().into();
|
||||||
let power_plugged = self
|
|
||||||
.power
|
if name.is_ppt() {
|
||||||
.get_online()
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
.map_err(|e| {
|
let power_plugged = self
|
||||||
error!("Could not get power status: {e:?}");
|
.power
|
||||||
e
|
.get_online()
|
||||||
})
|
.map_err(|e| {
|
||||||
.unwrap_or_default();
|
error!("Could not get power status: {e:?}");
|
||||||
let config = if power_plugged == 1 {
|
e
|
||||||
&self.config.lock().await.ac_profile_tunings
|
})
|
||||||
|
.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
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
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!("Set {} to {:?}", self.attr.name(), tune);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
&self.config.lock().await.dc_profile_tunings
|
// Handle non-PPT attributes (boolean and other settings)
|
||||||
};
|
if let Some(saved_value) = self.config.lock().await.armoury_settings.get(&name) {
|
||||||
if let Some(tuning) = config.get(&profile) {
|
self.attr
|
||||||
if tuning.enabled {
|
.set_current_value(&AttrValue::Integer(*saved_value))
|
||||||
if let Some(tune) = tuning.group.get(&self.name()) {
|
.map_err(|e| {
|
||||||
self.attr
|
error!("Could not set {} value: {e:?}", self.attr.name());
|
||||||
.set_current_value(&AttrValue::Integer(*tune))
|
self.attr.base_path_exists();
|
||||||
.map_err(|e| {
|
e
|
||||||
error!("Could not set {} value: {e:?}", self.attr.name());
|
})?;
|
||||||
self.attr.base_path_exists();
|
info!(
|
||||||
e
|
"Restored armoury setting {} to {:?}",
|
||||||
})?;
|
self.attr.name(),
|
||||||
info!("Set {} to {:?}", self.attr.name(), tune);
|
saved_value
|
||||||
}
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,26 +310,20 @@ impl AsusArmouryAttribute {
|
|||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn min_value(&self) -> i32 {
|
async fn min_value(&self) -> i32 {
|
||||||
match self.attr.min_value() {
|
Self::resolve_i32_value(self.attr.refresh_min_value(), self.attr.min_value())
|
||||||
AttrValue::Integer(i) => *i,
|
|
||||||
_ => -1,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn max_value(&self) -> i32 {
|
async fn max_value(&self) -> i32 {
|
||||||
match self.attr.max_value() {
|
Self::resolve_i32_value(self.attr.refresh_max_value(), self.attr.max_value())
|
||||||
AttrValue::Integer(i) => *i,
|
|
||||||
_ => -1,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn scalar_increment(&self) -> i32 {
|
async fn scalar_increment(&self) -> i32 {
|
||||||
match self.attr.scalar_increment() {
|
Self::resolve_i32_value(
|
||||||
AttrValue::Integer(i) => *i,
|
self.attr.refresh_scalar_increment(),
|
||||||
_ => -1,
|
self.attr.scalar_increment(),
|
||||||
}
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
@@ -267,12 +345,15 @@ impl AsusArmouryAttribute {
|
|||||||
error!("Could not get power status: {e:?}");
|
error!("Could not get power status: {e:?}");
|
||||||
e
|
e
|
||||||
})
|
})
|
||||||
.unwrap_or_default();
|
.unwrap_or_default()
|
||||||
let mut config = self.config.lock().await;
|
== 1;
|
||||||
let tuning = config.select_tunings(power_plugged == 1, profile);
|
let config = self.config.lock().await;
|
||||||
if let Some(tune) = tuning.group.get(&self.name()) {
|
if let Some(tuning) = config.select_tunings_ref(power_plugged, profile) {
|
||||||
return Ok(*tune);
|
if let Some(tune) = tuning.group.get(&self.name()) {
|
||||||
} else if let AttrValue::Integer(i) = self.attr.default_value() {
|
return Ok(*tune);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let AttrValue::Integer(i) = self.attr.default_value() {
|
||||||
return Ok(*i);
|
return Ok(*i);
|
||||||
}
|
}
|
||||||
return Err(fdo::Error::Failed(
|
return Err(fdo::Error::Failed(
|
||||||
@@ -288,6 +369,83 @@ impl AsusArmouryAttribute {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn stored_value_for_power(&self, on_ac: bool) -> fdo::Result<i32> {
|
||||||
|
if !self.name().is_ppt() {
|
||||||
|
return Err(fdo::Error::NotSupported(
|
||||||
|
"Stored values are only available for PPT attributes".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
|
let config = self.config.lock().await;
|
||||||
|
if let Some(tuning) = config.select_tunings_ref(on_ac, profile) {
|
||||||
|
if let Some(tune) = tuning.group.get(&self.name()) {
|
||||||
|
return Ok(*tune);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let AttrValue::Integer(i) = self.attr.default_value() {
|
||||||
|
return Ok(*i);
|
||||||
|
}
|
||||||
|
Err(fdo::Error::Failed(
|
||||||
|
"Could not read stored value".to_string(),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn set_value_for_power(&mut self, on_ac: bool, value: i32) -> fdo::Result<()> {
|
||||||
|
if !self.name().is_ppt() {
|
||||||
|
return Err(fdo::Error::NotSupported(
|
||||||
|
"Setting stored values is only supported for PPT attributes".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
let profile: PlatformProfile = self.platform.get_platform_profile()?.into();
|
||||||
|
let apply_now;
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut config = self.config.lock().await;
|
||||||
|
let tuning = config.select_tunings(on_ac, profile);
|
||||||
|
|
||||||
|
if let Some(tune) = tuning.group.get_mut(&self.name()) {
|
||||||
|
*tune = value;
|
||||||
|
} else {
|
||||||
|
tuning.group.insert(self.name(), value);
|
||||||
|
debug!(
|
||||||
|
"Store {} value for {} power = {}",
|
||||||
|
self.attr.name(),
|
||||||
|
if on_ac { "AC" } else { "DC" },
|
||||||
|
value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_now = tuning.enabled;
|
||||||
|
config.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
if apply_now {
|
||||||
|
let power_plugged = self
|
||||||
|
.power
|
||||||
|
.get_online()
|
||||||
|
.map_err(|e| {
|
||||||
|
error!("Could not get power status: {e:?}");
|
||||||
|
e
|
||||||
|
})
|
||||||
|
.unwrap_or_default()
|
||||||
|
!= 0;
|
||||||
|
|
||||||
|
if power_plugged == on_ac {
|
||||||
|
self.attr
|
||||||
|
.set_current_value(&AttrValue::Integer(value))
|
||||||
|
.map_err(|e| {
|
||||||
|
error!("Could not set value: {e:?}");
|
||||||
|
e
|
||||||
|
})?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[zbus(property)]
|
#[zbus(property)]
|
||||||
async fn set_current_value(&mut self, value: i32) -> fdo::Result<()> {
|
async fn set_current_value(&mut self, value: i32) -> fdo::Result<()> {
|
||||||
if self.name().is_ppt() {
|
if self.name().is_ppt() {
|
||||||
@@ -363,7 +521,8 @@ pub async fn start_attributes_zbus(
|
|||||||
power: AsusPower,
|
power: AsusPower,
|
||||||
attributes: FirmwareAttributes,
|
attributes: FirmwareAttributes,
|
||||||
config: Arc<Mutex<Config>>,
|
config: Arc<Mutex<Config>>,
|
||||||
) -> Result<(), RogError> {
|
) -> Result<ArmouryAttributeRegistry, RogError> {
|
||||||
|
let mut registry = ArmouryAttributeRegistry::default();
|
||||||
for attr in attributes.attributes() {
|
for attr in attributes.attributes() {
|
||||||
let mut attr = AsusArmouryAttribute::new(
|
let mut attr = AsusArmouryAttribute::new(
|
||||||
attr.clone(),
|
attr.clone(),
|
||||||
@@ -371,15 +530,43 @@ pub async fn start_attributes_zbus(
|
|||||||
power.clone(),
|
power.clone(),
|
||||||
config.clone(),
|
config.clone(),
|
||||||
);
|
);
|
||||||
attr.reload().await?;
|
|
||||||
|
|
||||||
let path = dbus_path_for_attr(attr.attr.name());
|
let registry_attr = attr.clone();
|
||||||
let sig = zbus::object_server::SignalEmitter::new(conn, path)?;
|
|
||||||
attr.watch_and_notify(sig).await?;
|
|
||||||
|
|
||||||
attr.move_to_zbus(conn).await?;
|
if let Err(e) = attr.reload().await {
|
||||||
|
error!(
|
||||||
|
"Skipping attribute '{}' due to reload error: {e:?}",
|
||||||
|
attr.attr.name()
|
||||||
|
);
|
||||||
|
// continue with others
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let attr_name = attr.attribute_name();
|
||||||
|
|
||||||
|
let path = dbus_path_for_attr(attr_name.as_str());
|
||||||
|
match zbus::object_server::SignalEmitter::new(conn, path) {
|
||||||
|
Ok(sig) => {
|
||||||
|
if let Err(e) = attr.watch_and_notify(sig).await {
|
||||||
|
error!("Failed to start watcher for '{}': {e:?}", attr.attr.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
error!(
|
||||||
|
"Failed to create SignalEmitter for '{}': {e:?}",
|
||||||
|
attr.attr.name()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Err(e) = attr.move_to_zbus(conn).await {
|
||||||
|
error!("Failed to register attribute '{attr_name}' on zbus: {e:?}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
registry.push(registry_attr);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(registry)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn set_config_or_default(
|
pub async fn set_config_or_default(
|
||||||
@@ -420,6 +607,20 @@ pub async fn set_config_or_default(
|
|||||||
// config.write();
|
// config.write();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Handle non-PPT attributes (boolean and other settings)
|
||||||
|
if let Some(saved_value) = config.armoury_settings.get(&name) {
|
||||||
|
attr.set_current_value(&AttrValue::Integer(*saved_value))
|
||||||
|
.map_err(|e| {
|
||||||
|
error!("Failed to set {}: {e}", <&str>::from(name));
|
||||||
|
})
|
||||||
|
.ok();
|
||||||
|
info!(
|
||||||
|
"Restored armoury setting for {} = {:?}",
|
||||||
|
<&str>::from(name),
|
||||||
|
saved_value
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,8 +82,9 @@ impl AuraConfig {
|
|||||||
config
|
config
|
||||||
.builtins
|
.builtins
|
||||||
.insert(*n, AuraEffect::default_with_mode(*n));
|
.insert(*n, AuraEffect::default_with_mode(*n));
|
||||||
|
}
|
||||||
if !config.support_data.basic_zones.is_empty() {
|
if !config.support_data.basic_zones.is_empty() {
|
||||||
|
for n in &config.support_data.basic_modes {
|
||||||
let mut default = vec![];
|
let mut default = vec![];
|
||||||
for (i, tmp) in config.support_data.basic_zones.iter().enumerate() {
|
for (i, tmp) in config.support_data.basic_zones.iter().enumerate() {
|
||||||
default.push(AuraEffect {
|
default.push(AuraEffect {
|
||||||
@@ -118,14 +119,14 @@ impl AuraConfig {
|
|||||||
self.multizone_on = false;
|
self.multizone_on = false;
|
||||||
} else {
|
} else {
|
||||||
if let Some(multi) = self.multizone.as_mut() {
|
if let Some(multi) = self.multizone.as_mut() {
|
||||||
if let Some(fx) = multi.get_mut(effect.mode()) {
|
if let Some(fx_vec) = multi.get_mut(effect.mode()) {
|
||||||
for fx in fx.iter_mut() {
|
for fx in fx_vec.iter_mut() {
|
||||||
if fx.zone == effect.zone {
|
if fx.zone == effect.zone {
|
||||||
*fx = effect;
|
*fx = effect;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fx.push(effect);
|
fx_vec.push(effect);
|
||||||
} else {
|
} else {
|
||||||
multi.insert(*effect.mode(), vec![effect]);
|
multi.insert(*effect.mode(), vec![effect]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ impl Aura {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn lock_config(&self) -> MutexGuard<AuraConfig> {
|
pub async fn lock_config(&self) -> MutexGuard<'_, AuraConfig> {
|
||||||
self.config.lock().await
|
self.config.lock().await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ impl ScsiAura {
|
|||||||
Self { device, config }
|
Self { device, config }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn lock_config(&self) -> MutexGuard<ScsiConfig> {
|
pub async fn lock_config(&self) -> MutexGuard<'_, ScsiConfig> {
|
||||||
self.config.lock().await
|
self.config.lock().await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ impl Slash {
|
|||||||
Self { hid, usb, config }
|
Self { hid, usb, config }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn lock_config(&self) -> MutexGuard<SlashConfig> {
|
pub async fn lock_config(&self) -> MutexGuard<'_, SlashConfig> {
|
||||||
self.config.lock().await
|
self.config.lock().await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-2
@@ -67,6 +67,19 @@ impl Config {
|
|||||||
};
|
};
|
||||||
config.entry(profile).or_insert_with(Tuning::default)
|
config.entry(profile).or_insert_with(Tuning::default)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn select_tunings_ref(
|
||||||
|
&self,
|
||||||
|
power_plugged: bool,
|
||||||
|
profile: PlatformProfile,
|
||||||
|
) -> Option<&Tuning> {
|
||||||
|
let config = if power_plugged {
|
||||||
|
&self.ac_profile_tunings
|
||||||
|
} else {
|
||||||
|
&self.dc_profile_tunings
|
||||||
|
};
|
||||||
|
config.get(&profile)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
@@ -146,7 +159,7 @@ pub struct Config611 {
|
|||||||
|
|
||||||
impl From<Config611> for Config {
|
impl From<Config611> for Config {
|
||||||
fn from(c: Config611) -> Self {
|
fn from(c: Config611) -> Self {
|
||||||
Self {
|
let mut config = Self {
|
||||||
// Restore the base charge limit
|
// Restore the base charge limit
|
||||||
charge_control_end_threshold: c.charge_control_end_threshold,
|
charge_control_end_threshold: c.charge_control_end_threshold,
|
||||||
base_charge_control_end_threshold: c.charge_control_end_threshold,
|
base_charge_control_end_threshold: c.charge_control_end_threshold,
|
||||||
@@ -168,7 +181,12 @@ impl From<Config611> for Config {
|
|||||||
armoury_settings: HashMap::default(),
|
armoury_settings: HashMap::default(),
|
||||||
screenpad_gamma: None,
|
screenpad_gamma: None,
|
||||||
screenpad_sync_primary: Default::default(),
|
screenpad_sync_primary: Default::default(),
|
||||||
}
|
};
|
||||||
|
|
||||||
|
config.ac_profile_tunings = c.ac_profile_tunings;
|
||||||
|
config.dc_profile_tunings = c.dc_profile_tunings;
|
||||||
|
config.armoury_settings = c.armoury_settings;
|
||||||
|
config
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ use zbus::fdo::Error as FdoErr;
|
|||||||
use zbus::object_server::SignalEmitter;
|
use zbus::object_server::SignalEmitter;
|
||||||
use zbus::{interface, Connection};
|
use zbus::{interface, Connection};
|
||||||
|
|
||||||
use crate::asus_armoury::set_config_or_default;
|
use crate::asus_armoury::{set_config_or_default, ArmouryAttributeRegistry};
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::error::RogError;
|
use crate::error::RogError;
|
||||||
use crate::{task_watch_item, CtrlTask, ReloadAndNotify};
|
use crate::{task_watch_item, CtrlTask, ReloadAndNotify};
|
||||||
@@ -46,6 +46,8 @@ pub struct CtrlPlatform {
|
|||||||
attributes: FirmwareAttributes,
|
attributes: FirmwareAttributes,
|
||||||
cpu_control: Option<CPUControl>,
|
cpu_control: Option<CPUControl>,
|
||||||
config: Arc<Mutex<Config>>,
|
config: Arc<Mutex<Config>>,
|
||||||
|
connection: Connection,
|
||||||
|
armoury_registry: ArmouryAttributeRegistry,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CtrlPlatform {
|
impl CtrlPlatform {
|
||||||
@@ -56,6 +58,8 @@ impl CtrlPlatform {
|
|||||||
config: Arc<Mutex<Config>>,
|
config: Arc<Mutex<Config>>,
|
||||||
config_path: &Path,
|
config_path: &Path,
|
||||||
signal_context: SignalEmitter<'static>,
|
signal_context: SignalEmitter<'static>,
|
||||||
|
connection: Connection,
|
||||||
|
armoury_registry: ArmouryAttributeRegistry,
|
||||||
) -> Result<Self, RogError> {
|
) -> Result<Self, RogError> {
|
||||||
let config1 = config.clone();
|
let config1 = config.clone();
|
||||||
let config_path = config_path.to_owned();
|
let config_path = config_path.to_owned();
|
||||||
@@ -68,6 +72,8 @@ impl CtrlPlatform {
|
|||||||
cpu_control: CPUControl::new()
|
cpu_control: CPUControl::new()
|
||||||
.map_err(|e| error!("Couldn't get CPU control sysfs: {e}"))
|
.map_err(|e| error!("Couldn't get CPU control sysfs: {e}"))
|
||||||
.ok(),
|
.ok(),
|
||||||
|
connection,
|
||||||
|
armoury_registry,
|
||||||
};
|
};
|
||||||
let mut inotify_self = ret_self.clone();
|
let mut inotify_self = ret_self.clone();
|
||||||
|
|
||||||
@@ -729,6 +735,31 @@ impl CtrlTask for CtrlPlatform {
|
|||||||
}
|
}
|
||||||
if !sleeping {
|
if !sleeping {
|
||||||
platform1.run_ac_or_bat_cmd(power_plugged > 0).await;
|
platform1.run_ac_or_bat_cmd(power_plugged > 0).await;
|
||||||
|
if let Ok(profile) =
|
||||||
|
platform1.platform.get_platform_profile().map(|p| p.into())
|
||||||
|
{
|
||||||
|
let attrs = FirmwareAttributes::new();
|
||||||
|
{
|
||||||
|
let mut cfg = platform1.config.lock().await;
|
||||||
|
set_config_or_default(
|
||||||
|
&attrs,
|
||||||
|
&mut cfg,
|
||||||
|
power_plugged > 0,
|
||||||
|
profile,
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
}
|
||||||
|
if let Err(e) = platform1
|
||||||
|
.armoury_registry
|
||||||
|
.emit_limits(&platform1.connection)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
error!(
|
||||||
|
"Failed to emit armoury updates after power change: \
|
||||||
|
{e:?}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
platform1.config.lock().await.last_power_plugged = power_plugged;
|
platform1.config.lock().await.last_power_plugged = power_plugged;
|
||||||
}
|
}
|
||||||
@@ -789,13 +820,17 @@ impl CtrlTask for CtrlPlatform {
|
|||||||
{
|
{
|
||||||
// TODO: manage this better, shouldn't need to create every time
|
// TODO: manage this better, shouldn't need to create every time
|
||||||
let attrs = FirmwareAttributes::new();
|
let attrs = FirmwareAttributes::new();
|
||||||
set_config_or_default(
|
{
|
||||||
&attrs,
|
let mut cfg = platform3.config.lock().await;
|
||||||
&mut *platform3.config.lock().await,
|
set_config_or_default(&attrs, &mut cfg, power_plugged, profile).await;
|
||||||
power_plugged,
|
}
|
||||||
profile,
|
if let Err(e) = platform3
|
||||||
)
|
.armoury_registry
|
||||||
.await;
|
.emit_limits(&platform3.connection)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
error!("Failed to emit armoury updates after AC/DC toggle: {e:?}");
|
||||||
|
}
|
||||||
platform3
|
platform3
|
||||||
.enable_ppt_group_changed(&signal_ctxt_copy)
|
.enable_ppt_group_changed(&signal_ctxt_copy)
|
||||||
.await
|
.await
|
||||||
@@ -852,6 +887,9 @@ impl CtrlTask for CtrlPlatform {
|
|||||||
profile,
|
profile,
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
if let Err(e) = ctrl.armoury_registry.emit_limits(&ctrl.connection).await {
|
||||||
|
error!("Failed to emit armoury updates after profile change: {e:?}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-4
@@ -3,7 +3,7 @@ use std::error::Error;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use ::zbus::Connection;
|
use ::zbus::Connection;
|
||||||
use asusd::asus_armoury::start_attributes_zbus;
|
use asusd::asus_armoury::{start_attributes_zbus, ArmouryAttributeRegistry};
|
||||||
use asusd::aura_manager::DeviceManager;
|
use asusd::aura_manager::DeviceManager;
|
||||||
use asusd::config::Config;
|
use asusd::config::Config;
|
||||||
use asusd::ctrl_backlight::CtrlBacklight;
|
use asusd::ctrl_backlight::CtrlBacklight;
|
||||||
@@ -62,7 +62,9 @@ async fn start_daemon() -> Result<(), Box<dyn Error>> {
|
|||||||
|
|
||||||
// Start zbus server
|
// Start zbus server
|
||||||
let mut server = Connection::system().await?;
|
let mut server = Connection::system().await?;
|
||||||
server.object_server().at("/", ObjectManager).await.unwrap();
|
if let Err(e) = server.object_server().at("/", ObjectManager).await {
|
||||||
|
error!("Failed to register ObjectManager at root '/': {e:?}");
|
||||||
|
}
|
||||||
|
|
||||||
let config = Config::new().load();
|
let config = Config::new().load();
|
||||||
let cfg_path = config.file_path();
|
let cfg_path = config.file_path();
|
||||||
@@ -72,14 +74,21 @@ async fn start_daemon() -> Result<(), Box<dyn Error>> {
|
|||||||
let platform = RogPlatform::new()?; // TODO: maybe needs async mutex?
|
let platform = RogPlatform::new()?; // TODO: maybe needs async mutex?
|
||||||
let power = AsusPower::new()?; // TODO: maybe needs async mutex?
|
let power = AsusPower::new()?; // TODO: maybe needs async mutex?
|
||||||
let attributes = FirmwareAttributes::new();
|
let attributes = FirmwareAttributes::new();
|
||||||
start_attributes_zbus(
|
let armoury_registry = match start_attributes_zbus(
|
||||||
&server,
|
&server,
|
||||||
platform.clone(),
|
platform.clone(),
|
||||||
power.clone(),
|
power.clone(),
|
||||||
attributes.clone(),
|
attributes.clone(),
|
||||||
config.clone(),
|
config.clone(),
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
{
|
||||||
|
Ok(registry) => registry,
|
||||||
|
Err(e) => {
|
||||||
|
error!("Failed to initialize firmware attributes over zbus: {e:?}");
|
||||||
|
ArmouryAttributeRegistry::default()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
match CtrlFanCurveZbus::new() {
|
match CtrlFanCurveZbus::new() {
|
||||||
Ok(ctrl) => {
|
Ok(ctrl) => {
|
||||||
@@ -108,6 +117,8 @@ async fn start_daemon() -> Result<(), Box<dyn Error>> {
|
|||||||
config.clone(),
|
config.clone(),
|
||||||
&cfg_path,
|
&cfg_path,
|
||||||
CtrlPlatform::signal_context(&server)?,
|
CtrlPlatform::signal_context(&server)?,
|
||||||
|
server.clone(),
|
||||||
|
armoury_registry,
|
||||||
) {
|
) {
|
||||||
Ok(ctrl) => {
|
Ok(ctrl) => {
|
||||||
let sig_ctx = CtrlPlatform::signal_context(&server)?;
|
let sig_ctx = CtrlPlatform::signal_context(&server)?;
|
||||||
|
|||||||
+3
-1
@@ -9,11 +9,13 @@ ENV{DMI_FAMILY}=="*Strix*", GOTO="asusd_start"
|
|||||||
ENV{DMI_FAMILY}=="*Vivo*ook*", GOTO="asusd_start"
|
ENV{DMI_FAMILY}=="*Vivo*ook*", GOTO="asusd_start"
|
||||||
ENV{DMI_FAMILY}=="*Zenbook*", GOTO="asusd_start"
|
ENV{DMI_FAMILY}=="*Zenbook*", GOTO="asusd_start"
|
||||||
ENV{DMI_FAMILY}=="*ProArt*", GOTO="asusd_start"
|
ENV{DMI_FAMILY}=="*ProArt*", GOTO="asusd_start"
|
||||||
|
ENV{DMI_FAMILY}=="*TX Air*", GOTO="asusd_start"
|
||||||
|
ENV{DMI_FAMILY}=="*TX Gaming*", GOTO="asusd_start"
|
||||||
# No match so
|
# No match so
|
||||||
GOTO="asusd_end"
|
GOTO="asusd_end"
|
||||||
|
|
||||||
LABEL="asusd_start"
|
LABEL="asusd_start"
|
||||||
ACTION=="add|change", DRIVER=="asus-nb-wmi", TAG+="systemd", ENV{SYSTEMD_WANTS}="asusd.service"
|
ACTION=="add|change", DRIVER=="asus-nb-wmi", TAG+="systemd", ENV{SYSTEMD_WANTS}="asusd.service"
|
||||||
ACTION=="add|remove", DRIVER=="asus-nb-wmi", TAG+="systemd", RUN+="systemctl restart asusd.service"
|
ACTION=="add|remove", DRIVER=="asus-nb-wmi", TAG+="systemd", RUN+="/usr/bin/systemctl restart asusd.service"
|
||||||
|
|
||||||
LABEL="asusd_end"
|
LABEL="asusd_end"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
%global debug_package %{nil}
|
%global debug_package %{nil}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%define version 6.1.12
|
%define version 6.1.15
|
||||||
%define specrelease %{?dist}
|
%define specrelease %{?dist}
|
||||||
%define pkg_release 9%{specrelease}
|
%define pkg_release 9%{specrelease}
|
||||||
|
|
||||||
@@ -31,6 +31,7 @@ Version: %{version}
|
|||||||
Release: %{pkg_release}
|
Release: %{pkg_release}
|
||||||
Summary: Control fan speeds, LEDs, graphics modes, and charge levels for ASUS notebooks
|
Summary: Control fan speeds, LEDs, graphics modes, and charge levels for ASUS notebooks
|
||||||
License: MPLv2
|
License: MPLv2
|
||||||
|
Requires: power-profiles-daemon
|
||||||
|
|
||||||
Group: System Environment/Kernel
|
Group: System Environment/Kernel
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ impl AnimeImage {
|
|||||||
// first 5 rows for GA401 are always at X = 0
|
// first 5 rows for GA401 are always at X = 0
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
(y + 1) / 2 - 3
|
y.div_ceil(2) - 3
|
||||||
}
|
}
|
||||||
AnimeType::GU604 => {
|
AnimeType::GU604 => {
|
||||||
// first 9 rows start at zero
|
// first 9 rows start at zero
|
||||||
@@ -185,7 +185,7 @@ impl AnimeImage {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// and then their offset grows by one every two rows
|
// and then their offset grows by one every two rows
|
||||||
(y + 1) / 2 - 5
|
y.div_ceil(2) - 5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -213,7 +213,7 @@ impl AnimeImage {
|
|||||||
// First 5 rows for GA401 are always 33 physical LEDs long
|
// First 5 rows for GA401 are always 33 physical LEDs long
|
||||||
return 33;
|
return 33;
|
||||||
}
|
}
|
||||||
36 - (y + 1) / 2
|
36 - y.div_ceil(2)
|
||||||
}
|
}
|
||||||
AnimeType::GU604 => {
|
AnimeType::GU604 => {
|
||||||
if y <= 9 {
|
if y <= 9 {
|
||||||
|
|||||||
@@ -107,6 +107,15 @@
|
|||||||
advanced_type: None,
|
advanced_type: None,
|
||||||
power_zones: [Keyboard],
|
power_zones: [Keyboard],
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
device_name: "FX706H",
|
||||||
|
product_id: "",
|
||||||
|
layout_name: "fx505d",
|
||||||
|
basic_modes: [Static, Breathe, RainbowCycle],
|
||||||
|
basic_zones: [],
|
||||||
|
advanced_type: None,
|
||||||
|
power_zones: [Keyboard],
|
||||||
|
),
|
||||||
(
|
(
|
||||||
device_name: "G512L",
|
device_name: "G512L",
|
||||||
product_id: "",
|
product_id: "",
|
||||||
|
|||||||
@@ -58,3 +58,17 @@ features = [
|
|||||||
|
|
||||||
[build-dependencies.slint-build]
|
[build-dependencies.slint-build]
|
||||||
git = "https://github.com/slint-ui/slint.git"
|
git = "https://github.com/slint-ui/slint.git"
|
||||||
|
|
||||||
|
[package.metadata.deb]
|
||||||
|
license-file = ["../LICENSE", "4"]
|
||||||
|
extended-description = """\
|
||||||
|
The dbus server for asusctl and rog-control-center applications."""
|
||||||
|
depends = "$auto"
|
||||||
|
section = "utility"
|
||||||
|
priority = "optional"
|
||||||
|
assets = [
|
||||||
|
["target/release/rog-control-center", "usr/bin/", "755"],
|
||||||
|
["../rog_gui-fakeinstall/usr/share/applications/*", "usr/share/share/applications/", "644"],
|
||||||
|
["../rog_gui-fakeinstall/usr/share/icons/hicolor/512x512/apps/*", "usr/share/icons/hicolor/512x512/apps", "644"],
|
||||||
|
["../rog_gui-fakeinstall/usr/share/icons/hicolor/scalable/status/*", "usr/share/icons/hicolor/scalable/status", "644"],
|
||||||
|
]
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use slint::{ComponentHandle, Model, ModelRc, SharedString, VecModel};
|
|||||||
use super::show_toast;
|
use super::show_toast;
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use crate::zbus_proxies::find_iface_async;
|
use crate::zbus_proxies::find_iface_async;
|
||||||
use crate::{set_ui_callbacks, set_ui_props_async, AttrMinMax, MainWindow, SystemPageData};
|
use crate::{set_ui_callbacks, AttrMinMax, MainWindow, SystemPageData};
|
||||||
|
|
||||||
const MINMAX: AttrMinMax = AttrMinMax {
|
const MINMAX: AttrMinMax = AttrMinMax {
|
||||||
min: 0,
|
min: 0,
|
||||||
@@ -572,120 +572,123 @@ pub fn setup_system_page_callbacks(ui: &MainWindow, _states: Arc<Mutex<Config>>)
|
|||||||
|
|
||||||
for attr in armoury_attrs {
|
for attr in armoury_attrs {
|
||||||
if let Ok(value) = attr.current_value().await {
|
if let Ok(value) = attr.current_value().await {
|
||||||
let name = attr.name().await.unwrap();
|
if let Ok(name) = attr.name().await {
|
||||||
debug!("Setting up {} = {value}", <&str>::from(name));
|
debug!("Setting up {} = {value}", <&str>::from(name));
|
||||||
let platform = platform.clone();
|
let platform = platform.clone();
|
||||||
handle
|
handle
|
||||||
.upgrade_in_event_loop(move |handle| match name {
|
.upgrade_in_event_loop(move |handle| match name {
|
||||||
FirmwareAttribute::ApuMem => {}
|
FirmwareAttribute::ApuMem => {}
|
||||||
FirmwareAttribute::CoresPerformance => {}
|
FirmwareAttribute::CoresPerformance => {}
|
||||||
FirmwareAttribute::CoresEfficiency => {}
|
FirmwareAttribute::CoresEfficiency => {}
|
||||||
FirmwareAttribute::PptEnabled => {
|
FirmwareAttribute::PptEnabled => {
|
||||||
init_property!(ppt_enabled, handle, value, bool);
|
init_property!(ppt_enabled, handle, value, bool);
|
||||||
setup_callback!(ppt_enabled, handle, attr, bool);
|
setup_callback!(ppt_enabled, handle, attr, bool);
|
||||||
let handle_copy = handle.as_weak();
|
let handle_copy = handle.as_weak();
|
||||||
let proxy_copy = attr.clone();
|
let proxy_copy = attr.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let mut x = proxy_copy.receive_current_value_changed().await;
|
let mut x = proxy_copy.receive_current_value_changed().await;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
while let Some(e) = x.next().await {
|
while let Some(e) = x.next().await {
|
||||||
if let Ok(out) = e.get().await {
|
if let Ok(out) = e.get().await {
|
||||||
handle_copy
|
handle_copy
|
||||||
.upgrade_in_event_loop(move |handle| {
|
.upgrade_in_event_loop(move |handle| {
|
||||||
handle
|
handle
|
||||||
.global::<SystemPageData>()
|
.global::<SystemPageData>()
|
||||||
.set_enable_ppt_group(out == 1);
|
.set_enable_ppt_group(out == 1);
|
||||||
handle
|
handle
|
||||||
.global::<SystemPageData>()
|
.global::<SystemPageData>()
|
||||||
.set_ppt_enabled(out == 1);
|
.set_ppt_enabled(out == 1);
|
||||||
})
|
})
|
||||||
.ok();
|
.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
handle
|
||||||
handle
|
.global::<SystemPageData>()
|
||||||
.global::<SystemPageData>()
|
.set_ppt_enabled_available(true);
|
||||||
.set_ppt_enabled_available(true);
|
handle
|
||||||
handle
|
.global::<SystemPageData>()
|
||||||
.global::<SystemPageData>()
|
.set_enable_ppt_group(value == 1);
|
||||||
.set_enable_ppt_group(value == 1);
|
}
|
||||||
}
|
FirmwareAttribute::PptPl1Spl => {
|
||||||
FirmwareAttribute::PptPl1Spl => {
|
init_minmax_property!(ppt_pl1_spl, handle, attr);
|
||||||
init_minmax_property!(ppt_pl1_spl, handle, attr);
|
setup_callback!(ppt_pl1_spl, handle, attr, i32);
|
||||||
setup_callback!(ppt_pl1_spl, handle, attr, i32);
|
setup_callback_restore_default!(ppt_pl1_spl, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_pl1_spl, handle, attr);
|
setup_minmax_external!(ppt_pl1_spl, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_pl1_spl, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::PptPl2Sppt => {
|
||||||
FirmwareAttribute::PptPl2Sppt => {
|
init_minmax_property!(ppt_pl2_sppt, handle, attr);
|
||||||
init_minmax_property!(ppt_pl2_sppt, handle, attr);
|
setup_callback!(ppt_pl2_sppt, handle, attr, i32);
|
||||||
setup_callback!(ppt_pl2_sppt, handle, attr, i32);
|
setup_callback_restore_default!(ppt_pl2_sppt, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_pl2_sppt, handle, attr);
|
setup_minmax_external!(ppt_pl2_sppt, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_pl2_sppt, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::PptPl3Fppt => {
|
||||||
FirmwareAttribute::PptPl3Fppt => {
|
init_minmax_property!(ppt_pl3_fppt, handle, attr);
|
||||||
init_minmax_property!(ppt_pl3_fppt, handle, attr);
|
setup_callback!(ppt_pl3_fppt, handle, attr, i32);
|
||||||
setup_callback!(ppt_pl3_fppt, handle, attr, i32);
|
setup_callback_restore_default!(ppt_pl3_fppt, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_pl3_fppt, handle, attr);
|
setup_minmax_external!(ppt_pl3_fppt, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_pl3_fppt, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::PptFppt => {
|
||||||
FirmwareAttribute::PptFppt => {
|
init_minmax_property!(ppt_fppt, handle, attr);
|
||||||
init_minmax_property!(ppt_fppt, handle, attr);
|
setup_callback!(ppt_fppt, handle, attr, i32);
|
||||||
setup_callback!(ppt_fppt, handle, attr, i32);
|
setup_callback_restore_default!(ppt_fppt, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_fppt, handle, attr);
|
setup_minmax_external!(ppt_fppt, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_fppt, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::PptApuSppt => {
|
||||||
FirmwareAttribute::PptApuSppt => {
|
init_minmax_property!(ppt_apu_sppt, handle, attr);
|
||||||
init_minmax_property!(ppt_apu_sppt, handle, attr);
|
setup_callback!(ppt_apu_sppt, handle, attr, i32);
|
||||||
setup_callback!(ppt_apu_sppt, handle, attr, i32);
|
setup_callback_restore_default!(ppt_apu_sppt, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_apu_sppt, handle, attr);
|
setup_minmax_external!(ppt_apu_sppt, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_apu_sppt, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::PptPlatformSppt => {
|
||||||
FirmwareAttribute::PptPlatformSppt => {
|
init_minmax_property!(ppt_platform_sppt, handle, attr);
|
||||||
init_minmax_property!(ppt_platform_sppt, handle, attr);
|
setup_callback!(ppt_platform_sppt, handle, attr, i32);
|
||||||
setup_callback!(ppt_platform_sppt, handle, attr, i32);
|
setup_callback_restore_default!(ppt_platform_sppt, handle, attr);
|
||||||
setup_callback_restore_default!(ppt_platform_sppt, handle, attr);
|
setup_minmax_external!(ppt_platform_sppt, handle, attr, platform);
|
||||||
setup_minmax_external!(ppt_platform_sppt, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::NvDynamicBoost => {
|
||||||
FirmwareAttribute::NvDynamicBoost => {
|
init_minmax_property!(nv_dynamic_boost, handle, attr);
|
||||||
init_minmax_property!(nv_dynamic_boost, handle, attr);
|
setup_callback!(nv_dynamic_boost, handle, attr, i32);
|
||||||
setup_callback!(nv_dynamic_boost, handle, attr, i32);
|
setup_callback_restore_default!(nv_dynamic_boost, handle, attr);
|
||||||
setup_callback_restore_default!(nv_dynamic_boost, handle, attr);
|
setup_minmax_external!(nv_dynamic_boost, handle, attr, platform);
|
||||||
setup_minmax_external!(nv_dynamic_boost, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::NvTempTarget => {
|
||||||
FirmwareAttribute::NvTempTarget => {
|
init_minmax_property!(nv_temp_target, handle, attr);
|
||||||
init_minmax_property!(nv_temp_target, handle, attr);
|
setup_callback!(nv_temp_target, handle, attr, i32);
|
||||||
setup_callback!(nv_temp_target, handle, attr, i32);
|
setup_callback_restore_default!(nv_temp_target, handle, attr);
|
||||||
setup_callback_restore_default!(nv_temp_target, handle, attr);
|
setup_minmax_external!(nv_temp_target, handle, attr, platform);
|
||||||
setup_minmax_external!(nv_temp_target, handle, attr, platform);
|
}
|
||||||
}
|
FirmwareAttribute::DgpuBaseTgp => {}
|
||||||
FirmwareAttribute::DgpuBaseTgp => {}
|
FirmwareAttribute::DgpuTgp => {}
|
||||||
FirmwareAttribute::DgpuTgp => {}
|
FirmwareAttribute::ChargeMode => {}
|
||||||
FirmwareAttribute::ChargeMode => {}
|
FirmwareAttribute::BootSound => {
|
||||||
FirmwareAttribute::BootSound => {
|
init_property!(boot_sound, handle, value, i32);
|
||||||
init_property!(boot_sound, handle, value, i32);
|
setup_callback!(boot_sound, handle, attr, i32);
|
||||||
setup_callback!(boot_sound, handle, attr, i32);
|
setup_external!(boot_sound, i32, handle, attr, value)
|
||||||
setup_external!(boot_sound, i32, handle, attr, value)
|
}
|
||||||
}
|
FirmwareAttribute::McuPowersave => {}
|
||||||
FirmwareAttribute::McuPowersave => {}
|
FirmwareAttribute::PanelOverdrive => {
|
||||||
FirmwareAttribute::PanelOverdrive => {
|
init_property!(panel_overdrive, handle, value, i32);
|
||||||
init_property!(panel_overdrive, handle, value, i32);
|
setup_callback!(panel_overdrive, handle, attr, i32);
|
||||||
setup_callback!(panel_overdrive, handle, attr, i32);
|
setup_external!(panel_overdrive, i32, handle, attr, value)
|
||||||
setup_external!(panel_overdrive, i32, handle, attr, value)
|
}
|
||||||
}
|
FirmwareAttribute::PanelHdMode => {}
|
||||||
FirmwareAttribute::PanelHdMode => {}
|
FirmwareAttribute::EgpuConnected => {}
|
||||||
FirmwareAttribute::EgpuConnected => {}
|
FirmwareAttribute::EgpuEnable => {}
|
||||||
FirmwareAttribute::EgpuEnable => {}
|
FirmwareAttribute::DgpuDisable => {}
|
||||||
FirmwareAttribute::DgpuDisable => {}
|
FirmwareAttribute::GpuMuxMode => {}
|
||||||
FirmwareAttribute::GpuMuxMode => {}
|
FirmwareAttribute::MiniLedMode => {
|
||||||
FirmwareAttribute::MiniLedMode => {
|
init_property!(mini_led_mode, handle, value, i32);
|
||||||
init_property!(mini_led_mode, handle, value, i32);
|
setup_callback!(mini_led_mode, handle, attr, i32);
|
||||||
setup_callback!(mini_led_mode, handle, attr, i32);
|
setup_external!(mini_led_mode, i32, handle, attr, value);
|
||||||
setup_external!(mini_led_mode, i32, handle, attr, value);
|
}
|
||||||
}
|
FirmwareAttribute::PendingReboot => {}
|
||||||
FirmwareAttribute::PendingReboot => {}
|
FirmwareAttribute::None => {}
|
||||||
FirmwareAttribute::None => {}
|
})
|
||||||
})
|
.ok();
|
||||||
.ok();
|
} else {
|
||||||
|
error!("Attribute with no name, skipping");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handle
|
handle
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,684 @@
|
|||||||
|
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2024-06-09 00:20+0000\n"
|
||||||
|
"PO-Revision-Date: 2024-07-19 11:32+0400\n"
|
||||||
|
"Last-Translator: Rəşad Qasımlı <rashadgasimli2005@gmail.com>\n"
|
||||||
|
"Language-Team: Azerbaijan <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: az\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:6
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Off"
|
||||||
|
msgstr "Sönülü"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:7
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Aşağı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:8
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Med"
|
||||||
|
msgstr "Orta"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:9
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Yüksək"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:23
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Glitch Construction"
|
||||||
|
msgstr "Nasazlıq İnşaatı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:23
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Static Emergence"
|
||||||
|
msgstr "Statik Ortaya Çıxma"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:25
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Binary Banner Scroll"
|
||||||
|
msgstr "İkili Afiş Sürüşdürmə"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:25
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Rog Logo Glitch"
|
||||||
|
msgstr "Rog Logo Nasazlığı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:27
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Banner Swipe"
|
||||||
|
msgstr "Afiş Sürüşdürmə"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:27
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Starfield"
|
||||||
|
msgstr "Ulduz Sahəsi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:29
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "Glitch Out"
|
||||||
|
msgstr "Nasazlıq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:29
|
||||||
|
msgctxt "AnimePageData"
|
||||||
|
msgid "See Ya"
|
||||||
|
msgstr "Görüşərik"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:50
|
||||||
|
msgctxt "Anime Brightness"
|
||||||
|
msgid "Brightness"
|
||||||
|
msgstr "Parlaqlıq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:66
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Enable display"
|
||||||
|
msgstr "Ekranı aktivləşdir"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:74 rog-control-center/ui/pages/anime.slint:97
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Advanced"
|
||||||
|
msgstr "Qabaqcıl"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:89
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Use built-in animations"
|
||||||
|
msgstr "Yerləşik animasiyalardan istifadə edin"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:146
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Set which builtin animations are played"
|
||||||
|
msgstr "Hansı yerləşik animasiyaların oynadılacağını ayarlayın"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:150
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Boot Animation"
|
||||||
|
msgstr "Açılış Animasiyası"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:160
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Running Animation"
|
||||||
|
msgstr "İşləyən Animasiya"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:170
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Sleep Animation"
|
||||||
|
msgstr "Yuxu Animasiyası"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:180
|
||||||
|
msgctxt "Anime built-in selection"
|
||||||
|
msgid "Shutdown Animation"
|
||||||
|
msgstr "Söndürmə Animasiyası"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:220
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Advanced Display Settings"
|
||||||
|
msgstr "Qabaqcıl Ekran Parametrləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:225
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when lid closed"
|
||||||
|
msgstr "Qapaq bağlandıqda söndür"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:234
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when suspended"
|
||||||
|
msgstr "Gözlədiləndə söndür"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/anime.slint:243
|
||||||
|
msgctxt "PageAnime"
|
||||||
|
msgid "Off when on battery"
|
||||||
|
msgstr "Batareyadaykən söndür"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:26
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Run in background after closing"
|
||||||
|
msgstr "Bağlandıqdan sonra arxafonda işlət"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:34
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Start app in background (UI closed)"
|
||||||
|
msgstr "Tətbiqi arxafonda başlat (İİ sönülü vəziyyətdə)"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:42
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Enable system tray icon"
|
||||||
|
msgstr "Sistem nimçə ikonunu aktivləşdir"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/app_settings.slint:50
|
||||||
|
msgctxt "PageAppSettings"
|
||||||
|
msgid "Enable dGPU notifications"
|
||||||
|
msgstr "Xarici ekran kartı bildirimlərini aktivləşdir"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:28
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Brightness"
|
||||||
|
msgstr "Parlaqlıq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:39
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Aura mode"
|
||||||
|
msgstr "Aura rejimi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:59
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Colour 1"
|
||||||
|
msgstr "Rəng 1"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:85
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Colour 2"
|
||||||
|
msgstr "Rəng 2"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:119
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Zone"
|
||||||
|
msgstr "Qurşaq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:142
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Direction"
|
||||||
|
msgstr "İstiqamət"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:164
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Speed"
|
||||||
|
msgstr "Sürət"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:185
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Power Settings"
|
||||||
|
msgstr "Enerji Parametrləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/aura.slint:270
|
||||||
|
msgctxt "PageAura"
|
||||||
|
msgid "Power Zones"
|
||||||
|
msgstr "Enerji qurşaqları"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:26
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "This fan is not avilable on this machine"
|
||||||
|
msgstr "Bu ventilyator bu cihazda mövcud deyil"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:34
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:43
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr "Tətbiq et"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:51
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Ləğv et"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:59
|
||||||
|
msgctxt "FanTab"
|
||||||
|
msgid "Factory Default (all fans)"
|
||||||
|
msgstr "Zavod standartı (bütün ventilyatorlar)"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:72
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Balanced"
|
||||||
|
msgstr "Balanslaşdırılmış"
|
||||||
|
|
||||||
|
#: 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 "Prosessor"
|
||||||
|
|
||||||
|
#: 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 "Orta"
|
||||||
|
|
||||||
|
#: 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 "Ekran kartı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:131
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Performance"
|
||||||
|
msgstr "Performans"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/fans.slint:190
|
||||||
|
msgctxt "PageFans"
|
||||||
|
msgid "Quiet"
|
||||||
|
msgstr "Sakit"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:26
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Balanced"
|
||||||
|
msgstr "Balanslaşdırılmış"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:26 rog-control-center/ui/pages/system.slint:30
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Performance"
|
||||||
|
msgstr "Performans"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:26
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Quiet"
|
||||||
|
msgstr "Sakit"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:29
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Default"
|
||||||
|
msgstr "Standart"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:31
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "BalancePerformance"
|
||||||
|
msgstr "Taraz-Performans"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:32
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "BalancePower"
|
||||||
|
msgstr "Taraz-Enerji"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:33
|
||||||
|
msgctxt "SystemPageData"
|
||||||
|
msgid "Power"
|
||||||
|
msgstr "Enerji"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:110
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Base system settings"
|
||||||
|
msgstr "Əsas sistem parametrləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:115
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Charge limit"
|
||||||
|
msgstr "Şarj limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:127
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy"
|
||||||
|
msgstr "Enerji Siyasəti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:137
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Advanced"
|
||||||
|
msgstr "Qabaqcıl"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:149
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Panel Overdrive"
|
||||||
|
msgstr "Panel aşırma"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:157
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "MiniLED Mode"
|
||||||
|
msgstr "MiniLED Rejimi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:165
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "POST boot sound"
|
||||||
|
msgstr "POST açılış səsi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:183
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "System performance settings"
|
||||||
|
msgstr "Sistem performans parametrləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:188
|
||||||
|
msgctxt "ppt_pl1_spl"
|
||||||
|
msgid "PL1, sustained power limit"
|
||||||
|
msgstr "ES1, davamlı enerji limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:198
|
||||||
|
msgctxt "ppt_pl2_sppt"
|
||||||
|
msgid "PL2, turbo power limit"
|
||||||
|
msgstr "ES2, turbo enerji limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:208
|
||||||
|
msgctxt "ppt_fppt"
|
||||||
|
msgid "FPPT, Fast Power Limit"
|
||||||
|
msgstr "SPEİ, sürətli enerji limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:218
|
||||||
|
msgctxt "ppt_apu_sppt"
|
||||||
|
msgid "SPPT, APU slow power limit"
|
||||||
|
msgstr "YPEİ, APU yavaş enerji limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:228
|
||||||
|
msgctxt "ppt_platform_sppt"
|
||||||
|
msgid "Slow package power tracking limit"
|
||||||
|
msgstr "Yavaş paket enerji izləmə limiti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:238
|
||||||
|
msgctxt "nv_dynamic_boost"
|
||||||
|
msgid "dGPU boost overclock"
|
||||||
|
msgstr "Xarici ekran kartının sürət aşırtma sürətini artırma"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:248
|
||||||
|
msgctxt "nv_temp_target"
|
||||||
|
msgid "dGPU temperature max"
|
||||||
|
msgstr "Xarici ekran kartının maksimum temperaturu"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:294
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Energy Performance Preference linked to Throttle Policy"
|
||||||
|
msgstr "Enerji Performans Üstünlüyü Enerji Siyasətinə bağlıdır"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:298
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Change EPP based on Throttle Policy"
|
||||||
|
msgstr "EPÜ-yü Enerji Siyasəti üçün dəyişdirin"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:306
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Balanced Policy"
|
||||||
|
msgstr "Balanslaşdırılmış Siyasət üçün EPÜ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:316
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Performance Policy"
|
||||||
|
msgstr "Perfomans Siyasəti üçün EPÜ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:326
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "EPP for Quiet Policy"
|
||||||
|
msgstr "Sakit Siyasət üçün EPÜ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:344
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy for power state"
|
||||||
|
msgstr "Enerji vəziyyəti üçün Enerji Siyasəti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:350
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy on Battery"
|
||||||
|
msgstr "Batareyadaykən Enerji Siyasəti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:360 rog-control-center/ui/pages/system.slint:381
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/pages/system.slint:371
|
||||||
|
msgctxt "PageSystem"
|
||||||
|
msgid "Throttle Policy on AC"
|
||||||
|
msgstr "Şarjdaykən Enerji Siyasəti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:49
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Loqo"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:50 rog-control-center/ui/types/aura_types.slint:59
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Keyboard"
|
||||||
|
msgstr "Klaviatura"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:51 rog-control-center/ui/types/aura_types.slint:60
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Lightbar"
|
||||||
|
msgstr "İşıq Çubuğu"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:52
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Lid"
|
||||||
|
msgstr "Qapaq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:53
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Rear Glow"
|
||||||
|
msgstr "Arxa Parıltı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:54 rog-control-center/ui/types/aura_types.slint:61
|
||||||
|
msgctxt "Aura power zone"
|
||||||
|
msgid "Keyboard and Lightbar"
|
||||||
|
msgstr "Klaviatura və İşıq Çubuğu"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:64
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Off"
|
||||||
|
msgstr "Sönülü"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:65
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Aşağı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:66
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "Med"
|
||||||
|
msgstr "Orta"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:67
|
||||||
|
msgctxt "Aura brightness"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Yüksək"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:72 rog-control-center/ui/types/aura_types.slint:87
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Static"
|
||||||
|
msgstr "Statik"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:73 rog-control-center/ui/types/aura_types.slint:88
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Breathe"
|
||||||
|
msgstr "Nəfəs Alma"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:74 rog-control-center/ui/types/aura_types.slint:89
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Strobe"
|
||||||
|
msgstr "Fləş"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:75
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Rainbow"
|
||||||
|
msgstr "Göyqurşağı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:76
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Star"
|
||||||
|
msgstr "Ulduz"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:77
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Rain"
|
||||||
|
msgstr "Yağış"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:78
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Highlight"
|
||||||
|
msgstr "Vurğulama"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:79
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Laser"
|
||||||
|
msgstr "Lazer"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:80
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Ripple"
|
||||||
|
msgstr "Dalğalanma"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:81
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Nothing"
|
||||||
|
msgstr "Heç nə"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:82
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Pulse"
|
||||||
|
msgstr "Nəbz"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:83
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Comet"
|
||||||
|
msgstr "Quyruqlu Ulduz"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:84
|
||||||
|
msgctxt "Basic aura mode"
|
||||||
|
msgid "Flash"
|
||||||
|
msgstr "Fləş"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:96
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "None"
|
||||||
|
msgstr "Heç biri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:97
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key1"
|
||||||
|
msgstr "Açar1"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:98
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key2"
|
||||||
|
msgstr "Açar2"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:99
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key3"
|
||||||
|
msgstr "Açar3"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:100
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Key4"
|
||||||
|
msgstr "Açar5"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:101
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Logo"
|
||||||
|
msgstr "Loqo"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:102
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Lightbar Left"
|
||||||
|
msgstr "İşıq Çubuğu Sol"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:103
|
||||||
|
msgctxt "Aura zone"
|
||||||
|
msgid "Lightbar Right"
|
||||||
|
msgstr "İşıq Çubuğu Sağ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:107
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Right"
|
||||||
|
msgstr "Sağ"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:108
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Left"
|
||||||
|
msgstr "Sol"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:109
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Up"
|
||||||
|
msgstr "Yuxarı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:110
|
||||||
|
msgctxt "Aura direction"
|
||||||
|
msgid "Down"
|
||||||
|
msgstr "Aşağı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:114
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "Aşağı"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:115
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "Medium"
|
||||||
|
msgstr "Orta"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/types/aura_types.slint:116
|
||||||
|
msgctxt "Aura speed"
|
||||||
|
msgid "High"
|
||||||
|
msgstr "Yüksək"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:33
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Boot"
|
||||||
|
msgstr "Açılış"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:43
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Awake"
|
||||||
|
msgstr "Oyaq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:53
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Sleep"
|
||||||
|
msgstr "Yuxu"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:63
|
||||||
|
msgctxt "AuraPowerGroup"
|
||||||
|
msgid "Shutdown"
|
||||||
|
msgstr "Söndür"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:102
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Zone Selection"
|
||||||
|
msgstr "Bölgə seçimi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:114
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Boot"
|
||||||
|
msgstr "Açılış"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:124
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Awake"
|
||||||
|
msgstr "Oyaq"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/widgets/aura_power.slint:134
|
||||||
|
msgctxt "AuraPowerGroupOld"
|
||||||
|
msgid "Sleep"
|
||||||
|
msgstr "Yuxu"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:51
|
||||||
|
msgctxt "MainWindow"
|
||||||
|
msgid "ROG"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:53
|
||||||
|
msgctxt "Menu1"
|
||||||
|
msgid "System Control"
|
||||||
|
msgstr "Sistem Nəzarəti"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:54
|
||||||
|
msgctxt "Menu2"
|
||||||
|
msgid "Keyboard Aura"
|
||||||
|
msgstr "Klaviatura Aura"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:55
|
||||||
|
msgctxt "Menu3"
|
||||||
|
msgid "AniMe Matrix"
|
||||||
|
msgstr "AniMe Matrisi"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:56
|
||||||
|
msgctxt "Menu4"
|
||||||
|
msgid "Fan Curves"
|
||||||
|
msgstr "Fan Əyriləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:57
|
||||||
|
msgctxt "Menu5"
|
||||||
|
msgid "App Settings"
|
||||||
|
msgstr "Tətbiq Parametrləri"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:58
|
||||||
|
msgctxt "Menu6"
|
||||||
|
msgid "About"
|
||||||
|
msgstr "Haqqında"
|
||||||
|
|
||||||
|
#: rog-control-center/ui/main_window.slint:70
|
||||||
|
msgctxt "MainWindow"
|
||||||
|
msgid "Quit App"
|
||||||
|
msgstr "Tətbiqdən Çıxın"
|
||||||
|
|
||||||
@@ -190,7 +190,9 @@ export component MainWindow inherits Window {
|
|||||||
y: 0px;
|
y: 0px;
|
||||||
width: root.width;
|
width: root.width;
|
||||||
height: root.height;
|
height: root.height;
|
||||||
padding: 10px;
|
|
||||||
|
//padding only has effect on layout elements
|
||||||
|
//padding: 10px;
|
||||||
|
|
||||||
background: Palette.background;
|
background: Palette.background;
|
||||||
border-color: Palette.border;
|
border-color: Palette.border;
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ export component PageAnime inherits Rectangle {
|
|||||||
property <bool> show_builtin_advanced: false;
|
property <bool> show_builtin_advanced: false;
|
||||||
clip: true;
|
clip: true;
|
||||||
// TODO: slow with border-radius
|
// TODO: slow with border-radius
|
||||||
padding: 8px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 8px;
|
||||||
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
||||||
// TODO: border-radius: 8px;
|
// TODO: border-radius: 8px;
|
||||||
VerticalLayout {
|
VerticalLayout {
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ export component PageAppSettings inherits VerticalLayout {
|
|||||||
Rectangle {
|
Rectangle {
|
||||||
clip: true;
|
clip: true;
|
||||||
// TODO: slow with border-radius
|
// TODO: slow with border-radius
|
||||||
padding: 8px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 8px;
|
||||||
|
|
||||||
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
// height: parent.height - infobar.height - mainview.padding - self.padding * 2;
|
||||||
// TODO: border-radius: 8px;
|
// TODO: border-radius: 8px;
|
||||||
mainview := VerticalLayout {
|
mainview := VerticalLayout {
|
||||||
|
|||||||
@@ -113,7 +113,8 @@ export component PageAura inherits Rectangle {
|
|||||||
min-height: 80px;
|
min-height: 80px;
|
||||||
max-height: 90px;
|
max-height: 90px;
|
||||||
RogItem {
|
RogItem {
|
||||||
padding: 0px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 0px;
|
||||||
VerticalBox {
|
VerticalBox {
|
||||||
Text {
|
Text {
|
||||||
text: @tr("Zone");
|
text: @tr("Zone");
|
||||||
@@ -136,7 +137,8 @@ export component PageAura inherits Rectangle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RogItem {
|
RogItem {
|
||||||
padding: 0px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 0px;
|
||||||
VerticalBox {
|
VerticalBox {
|
||||||
Text {
|
Text {
|
||||||
text: @tr("Direction");
|
text: @tr("Direction");
|
||||||
@@ -158,7 +160,8 @@ export component PageAura inherits Rectangle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RogItem {
|
RogItem {
|
||||||
padding: 0px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 0px;
|
||||||
VerticalBox {
|
VerticalBox {
|
||||||
Text {
|
Text {
|
||||||
text: @tr("Speed");
|
text: @tr("Speed");
|
||||||
|
|||||||
@@ -140,7 +140,8 @@ export component PageSystem inherits Rectangle {
|
|||||||
property <bool> show_fade_cover: false;
|
property <bool> show_fade_cover: false;
|
||||||
property <bool> show_throttle_advanced: false;
|
property <bool> show_throttle_advanced: false;
|
||||||
clip: true;
|
clip: true;
|
||||||
padding: 8px;
|
//padding only has effect on layout elements
|
||||||
|
//padding: 8px;
|
||||||
ScrollView {
|
ScrollView {
|
||||||
VerticalLayout {
|
VerticalLayout {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@@ -301,7 +302,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_pl1_spl.current != -1 || SystemPageData.ppt_pl2_sppt.current != -1 || SystemPageData.ppt_pl3_fppt.current != -1 || SystemPageData.ppt_fppt.current != -1 || SystemPageData.ppt_apu_sppt.current != -1 || SystemPageData.nv_temp_target.current != -1 || SystemPageData.nv_dynamic_boost.current != -1: HorizontalLayout {
|
if (SystemPageData.ppt_pl1_spl.max > 0 && SystemPageData.ppt_pl1_spl.current != -1) || (SystemPageData.ppt_pl2_sppt.max > 0 && SystemPageData.ppt_pl2_sppt.current != -1) || (SystemPageData.ppt_pl3_fppt.max > 0 && SystemPageData.ppt_pl3_fppt.current != -1) || (SystemPageData.ppt_fppt.max > 0 && SystemPageData.ppt_fppt.current != -1) || (SystemPageData.ppt_apu_sppt.max > 0 && SystemPageData.ppt_apu_sppt.current != -1) || (SystemPageData.nv_temp_target.max > 0 && SystemPageData.nv_temp_target.current != -1) || (SystemPageData.nv_dynamic_boost.max > 0 && SystemPageData.nv_dynamic_boost.current != -1): HorizontalLayout {
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
alignment: LayoutAlignment.space-between;
|
alignment: LayoutAlignment.space-between;
|
||||||
@@ -330,7 +331,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_pl1_spl.current != -1: SystemSlider {
|
if SystemPageData.ppt_pl1_spl.max > 0 && SystemPageData.ppt_pl1_spl.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_pl1_spl" => "CPU Sustained Power Limit");
|
text: @tr("ppt_pl1_spl" => "CPU Sustained Power Limit");
|
||||||
title: @tr("ppt_pl1_spl" => "CPU Sustained Power Limit");
|
title: @tr("ppt_pl1_spl" => "CPU Sustained Power Limit");
|
||||||
help_text: @tr("ppt_pl1_spl_help" => "Long-term CPU power limit that affects sustained workload performance. Higher values may increase heat and power consumption.");
|
help_text: @tr("ppt_pl1_spl_help" => "Long-term CPU power limit that affects sustained workload performance. Higher values may increase heat and power consumption.");
|
||||||
@@ -348,7 +349,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_pl2_sppt.current != -1: SystemSlider {
|
if SystemPageData.ppt_pl2_sppt.max > 0 && SystemPageData.ppt_pl2_sppt.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_pl2_sppt" => "CPU Turbo Power Limit");
|
text: @tr("ppt_pl2_sppt" => "CPU Turbo Power Limit");
|
||||||
title: @tr("ppt_pl2_sppt" => "CPU Turbo Power Limit");
|
title: @tr("ppt_pl2_sppt" => "CPU Turbo Power Limit");
|
||||||
help_text: @tr("ppt_pl2_sppt_help" => "Short-term CPU power limit for boost periods. Controls maximum power during brief high-performance bursts.");
|
help_text: @tr("ppt_pl2_sppt_help" => "Short-term CPU power limit for boost periods. Controls maximum power during brief high-performance bursts.");
|
||||||
@@ -366,7 +367,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_pl3_fppt.current != -1: SystemSlider {
|
if SystemPageData.ppt_pl3_fppt.max > 0 && SystemPageData.ppt_pl3_fppt.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_pl3_fppt" => "CPU Fast Burst Power Limit");
|
text: @tr("ppt_pl3_fppt" => "CPU Fast Burst Power Limit");
|
||||||
title: @tr("ppt_pl3_fppt" => "CPU Fast Burst Power Limit");
|
title: @tr("ppt_pl3_fppt" => "CPU Fast Burst Power Limit");
|
||||||
help_text: @tr("ppt_pl3_fppt_help" => "Ultra-short duration power limit for instantaneous CPU bursts. Affects responsiveness during sudden workload spikes.");
|
help_text: @tr("ppt_pl3_fppt_help" => "Ultra-short duration power limit for instantaneous CPU bursts. Affects responsiveness during sudden workload spikes.");
|
||||||
@@ -383,7 +384,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
SystemPageData.cb_ppt_pl3_fppt(Math.round(value));
|
SystemPageData.cb_ppt_pl3_fppt(Math.round(value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if SystemPageData.ppt_fppt.current != -1: SystemSlider {
|
if SystemPageData.ppt_fppt.max > 0 && SystemPageData.ppt_fppt.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_fppt" => "Fast Package Power Limit");
|
text: @tr("ppt_fppt" => "Fast Package Power Limit");
|
||||||
title: @tr("ppt_fppt" => "Fast Package Power Limit");
|
title: @tr("ppt_fppt" => "Fast Package Power Limit");
|
||||||
help_text: @tr("ppt_fppt_help" => "Ultra-short duration power limit for system package. Controls maximum power during millisecond-scale load spikes.");
|
help_text: @tr("ppt_fppt_help" => "Ultra-short duration power limit for system package. Controls maximum power during millisecond-scale load spikes.");
|
||||||
@@ -401,7 +402,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_apu_sppt.current != -1: SystemSlider {
|
if SystemPageData.ppt_apu_sppt.max > 0 && SystemPageData.ppt_apu_sppt.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_apu_sppt" => "APU Sustained Power Limit");
|
text: @tr("ppt_apu_sppt" => "APU Sustained Power Limit");
|
||||||
title: @tr("ppt_apu_sppt" => "APU Sustained Power Limit");
|
title: @tr("ppt_apu_sppt" => "APU Sustained Power Limit");
|
||||||
help_text: @tr("ppt_apu_sppt_help" => "Long-term power limit for integrated graphics and CPU combined. Affects sustained performance of APU-based workloads.");
|
help_text: @tr("ppt_apu_sppt_help" => "Long-term power limit for integrated graphics and CPU combined. Affects sustained performance of APU-based workloads.");
|
||||||
@@ -419,7 +420,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.ppt_platform_sppt.current != -1: SystemSlider {
|
if SystemPageData.ppt_platform_sppt.max > 0 && SystemPageData.ppt_platform_sppt.current != -1: SystemSlider {
|
||||||
text: @tr("ppt_platform_sppt" => "Platform Sustained Power Limit");
|
text: @tr("ppt_platform_sppt" => "Platform Sustained Power Limit");
|
||||||
title: @tr("ppt_platform_sppt" => "Platform Sustained Power Limit");
|
title: @tr("ppt_platform_sppt" => "Platform Sustained Power Limit");
|
||||||
help_text: @tr("ppt_platform_sppt_help" => "Overall system power limit for sustained operations. Controls total platform power consumption over extended periods.");
|
help_text: @tr("ppt_platform_sppt_help" => "Overall system power limit for sustained operations. Controls total platform power consumption over extended periods.");
|
||||||
@@ -437,7 +438,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.nv_dynamic_boost.current != -1: SystemSlider {
|
if SystemPageData.nv_dynamic_boost.max > 0 && SystemPageData.nv_dynamic_boost.current != -1: SystemSlider {
|
||||||
text: @tr("nv_dynamic_boost" => "GPU Power Boost");
|
text: @tr("nv_dynamic_boost" => "GPU Power Boost");
|
||||||
title: @tr("nv_dynamic_boost" => "GPU Power Boost");
|
title: @tr("nv_dynamic_boost" => "GPU Power Boost");
|
||||||
help_text: @tr("nv_dynamic_boost_help" => "Additional power allocation for GPU dynamic boost. Higher values increase GPU performance but generate more heat.");
|
help_text: @tr("nv_dynamic_boost_help" => "Additional power allocation for GPU dynamic boost. Higher values increase GPU performance but generate more heat.");
|
||||||
@@ -455,7 +456,7 @@ export component PageSystem inherits Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if SystemPageData.nv_temp_target.current != -1: SystemSlider {
|
if SystemPageData.nv_temp_target.max > 0 && SystemPageData.nv_temp_target.current != -1: SystemSlider {
|
||||||
text: @tr("nv_temp_target" => "GPU Temperature Limit");
|
text: @tr("nv_temp_target" => "GPU Temperature Limit");
|
||||||
title: @tr("nv_temp_target" => "GPU Temperature Limit");
|
title: @tr("nv_temp_target" => "GPU Temperature Limit");
|
||||||
help_text: @tr("nv_temp_target_help" => "Maximum GPU temperature threshold in Celsius. GPU will throttle to maintain temperature below this limit.");
|
help_text: @tr("nv_temp_target_help" => "Maximum GPU temperature threshold in Celsius. GPU will throttle to maintain temperature below this limit.");
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
import { Palette, HorizontalBox, VerticalBox } from "std-widgets.slint";
|
import { Palette, HorizontalBox, VerticalBox } from "std-widgets.slint";
|
||||||
|
|
||||||
component SideBarItem inherits Rectangle {
|
component SideBarItem inherits Rectangle {
|
||||||
padding: 10px;
|
// padding only has effect on layout elements
|
||||||
|
// padding: 10px;
|
||||||
in property <bool> selected;
|
in property <bool> selected;
|
||||||
in property <bool> has-focus;
|
in property <bool> has-focus;
|
||||||
in-out property <string> text <=> label.text;
|
in-out property <string> text <=> label.text;
|
||||||
|
|||||||
@@ -124,6 +124,22 @@ impl Attribute {
|
|||||||
&self.scalar_increment
|
&self.scalar_increment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn read_attr_i32(&self, name: &str) -> Option<i32> {
|
||||||
|
read_i32(&self.base_path.join(name)).ok()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn refresh_min_value(&self) -> Option<i32> {
|
||||||
|
self.read_attr_i32("min_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn refresh_max_value(&self) -> Option<i32> {
|
||||||
|
self.read_attr_i32("max_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn refresh_scalar_increment(&self) -> Option<i32> {
|
||||||
|
self.read_attr_i32("scalar_increment")
|
||||||
|
}
|
||||||
|
|
||||||
/// Read all the immutable values to struct data. These should *never*
|
/// Read all the immutable values to struct data. These should *never*
|
||||||
/// change, if they do then it is possibly a driver issue - although this is
|
/// change, if they do then it is possibly a driver issue - although this is
|
||||||
/// subject to `firmware_attributes` class changes in kernel.
|
/// subject to `firmware_attributes` class changes in kernel.
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ pub fn find_fan_curve_node() -> Result<Device, ProfileError> {
|
|||||||
derive(Type, Value, OwnedValue),
|
derive(Type, Value, OwnedValue),
|
||||||
zvariant(signature = "s")
|
zvariant(signature = "s")
|
||||||
)]
|
)]
|
||||||
#[derive(Deserialize, Serialize, Debug, Hash, PartialEq, Eq, Clone, Copy)]
|
#[derive(Default, Deserialize, Serialize, Debug, Hash, PartialEq, Eq, Clone, Copy)]
|
||||||
pub enum FanCurvePU {
|
pub enum FanCurvePU {
|
||||||
|
#[default]
|
||||||
CPU = 0,
|
CPU = 0,
|
||||||
GPU = 1,
|
GPU = 1,
|
||||||
MID = 2,
|
MID = 2,
|
||||||
@@ -100,12 +101,6 @@ impl std::str::FromStr for FanCurvePU {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for FanCurvePU {
|
|
||||||
fn default() -> Self {
|
|
||||||
Self::CPU
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Main purpose of `FanCurves` is to enable restoring state on system boot
|
/// Main purpose of `FanCurves` is to enable restoring state on system boot
|
||||||
#[cfg_attr(feature = "dbus", derive(Type))]
|
#[cfg_attr(feature = "dbus", derive(Type))]
|
||||||
#[derive(Deserialize, Serialize, Debug, Default)]
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
canvas.set_draw_color(Color::RGB(*b, *b, *b));
|
canvas.set_draw_color(Color::RGB(*b, *b, *b));
|
||||||
|
|
||||||
let x: i32 = w + x_count as i32 * w
|
let x: i32 = w + x_count as i32 * w
|
||||||
- if (y_count + y_offset as usize) % 2 != 0 {
|
- if !(y_count + y_offset as usize).is_multiple_of(2) {
|
||||||
0
|
0
|
||||||
} else {
|
} else {
|
||||||
w / 2
|
w / 2
|
||||||
|
|||||||
Reference in New Issue
Block a user