### Build and Install on openSUSE Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/README.md Installs development patterns and packages, then builds and installs the project using make. Works with KDE Plasma. ```sh zypper in -t pattern devel_basis zypper in rustup make cmake clang-devel libxkbcommon-devel systemd-devel expat-devel pcre2-devel libzstd-devel gtk3-devel make sudo make install ``` -------------------------------- ### Build and Install on Fedora Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/README.md Installs required development packages and builds/installs the project using make. ```sh dnf install cmake clang-devel libxkbcommon-devel systemd-devel expat-devel pcre2-devel libzstd-devel gtk3-devel make sudo make install ``` -------------------------------- ### Build and Install on Ubuntu/PopOS (Unsupported) Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/README.md Installs necessary development packages and builds/installs the project using make. Note that Ubuntu and PopOS are officially unsupported. ```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 ``` -------------------------------- ### Build and Install on Debian (Unsupported) Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/README.md Installs development packages, Rustup, and builds/installs the project using make. Note that Debian is officially unsupported. ```sh sudo apt install libclang-dev libudev-dev libfontconfig-dev build-essential cmake libxkbcommon-dev curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh make sudo make install ``` -------------------------------- ### Aura Configuration Example (RON) Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Defines a custom Aura effect configuration using the RON format. This example includes Breathe and Static effects for specific keys, and a DoomFlicker effect. Ensure the 'led_type' in rog-user.cfg matches your keyboard's capabilities (Key, Zone, or None). ```ron ( name: "aura-default", aura: ( effects: [ Breathe(( led: W, start_colour1: (255, 0, 20), start_colour2: (20, 255, 0), speed: Low, )), Breathe(( led: A, start_colour1: (255, 0, 20), start_colour2: (20, 255, 0), speed: Low, )), Breathe(( led: S, start_colour1: (255, 0, 20), start_colour2: (20, 255, 0), speed: Low, )), Breathe(( led: D, start_colour1: (255, 0, 20), start_colour2: (20, 255, 0), speed: Low, )), Breathe(( led: F, start_colour1: (255, 0, 0), start_colour2: (255, 0, 0), speed: High, )), Static(( led: RCtrl, colour: (0, 0, 255), )), Static(( led: LCtrl, colour: (0, 0, 255), )), Static(( led: Esc, colour: (0, 0, 255), )), DoomFlicker(( led: N9, start_colour: (0, 0, 255), max_percentage: 80, min_percentage: 40, )), ], zoned: false, ), ) ``` -------------------------------- ### ROG Aura Support Configuration Example Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-aura/README.md This RON configuration defines support for a specific laptop board, including its layout name, supported basic modes, and advanced lighting type. Board names can often be found using 'cat /sys/devices/virtual/dmi/id/board_name'. ```ron ( board_name: "G513QR", layout_name: "g513i-per-key", basic_modes: [Static, Breathe, Strobe, Rainbow, Star, Rain, Highlight, Laser, Ripple, Pulse, Comet, Flash], basic_zones: [], advanced_type: PerKey, ), ``` -------------------------------- ### RON Keyboard Layout Configuration Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-aura/README.md Defines custom keyboard layouts using Rusty Object Notation (RON). This example shows how to specify key shapes with dimensions and padding, and then arrange these keys into rows. ```ron ( locale: "US", key_shapes: { // This is a regular LED spot, it has a size (width x height), and padding around each edge. // The final size should be (width + pad_left + pad_right, height + pad_top + pad_bottom) "regular": Led( width: 1.0, height: 1.0, pad_left: 0.1, pad_right: 0.1, pad_top: 0.1, pad_bottom: 0.1, ), // There is nothing in this space but it takes up room "func_space": Blank( width: 0.2, height: 0.0, ), // This backspace button is composed of 3 individual LED "backspace1": Led( width: 0.65, height: 1.0, pad_left: 0.1, pad_right: 0.0, pad_top: 0.1, pad_bottom: 0.1, ), "backspace2": Led( width: 0.7, height: 1.0, pad_left: 0.0, pad_right: 0.0, pad_top: 0.1, pad_bottom: 0.1, ), "backspace3": Led( width: 0.65, height: 1.0, pad_left: 0.0, pad_right: 0.1, pad_top: 0.1, pad_bottom: 0.1, ), }, key_rows: [ ( // Padding generally isn't required but is available just in case pad_left: 0.1, pad_top: 0.1, // Each row is a horizontal row of keys of the keyboard row: [ // Declare a tuple of `Key`, and the String name to use from the hashmap above (Spacing, "rog_spacer"), (VolDown, "rog_row"), (VolUp, "rog_row"), (MicMute, "rog_row"), (Rog, "rog_row"), ], ), ( pad_left: 0.1, pad_top: 0.1, row: [ (Esc, "func_key"), // There are two non-led types, `Blocking` which is intended to block something like a row-laser (Blocking, "esc_func_spacing"), (F1, "func_key"), (F2, "func_key"), (F3, "func_key"), (F4, "func_key"), // and `Spacing` which is intended to act like a non-visible LED (Spacing, "func_space"), (F5, "func_key"), (F6, "func_key"), (F7, "func_key"), (F8, "func_key"), (Spacing, "func_space"), (F9, "func_key"), (F10, "func_key"), (F11, "func_key"), (F12, "func_key"), (Spacing, "func_space"), (Del, "func_key"), ], ), ( pad_left: 0.1, pad_top: 0.1, row: [ (Tilde, "regular"), (N1, "regular"), (N2, "regular"), (N3, "regular"), (N4, "regular"), (N5, "regular"), (N6, "regular"), (N7, "regular"), (N8, "regular"), (N9, "regular"), (N0, "regular"), (Hyphen, "regular"), (Equals, "regular"), (Backspace3_1, "backspace1"), (Backspace3_2, "backspace2"), (Backspace3_3, "backspace3"), (Spacing, "func_space"), (Home, "regular"), ], ) ] ) ``` -------------------------------- ### Fan Curve Configuration Examples Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Examples of fan curve formats supported by asusd. The format specifies temperature-to-fan-speed mappings, ordered from lowest to highest. ```text "30c:0%,40c:5%,50c:10%,60c:20%,70c:35%,80c:55%,90c:65%,100c:65%" ``` ```text "30:0,40:5,50:10,60:20,70:35,80:55,90:65,100:65" ``` ```text "30 0,40 5,50 10,60 20,70 35,80 55,90 65,100 65" ``` ```text "30 0 40 5 50 10 60 20 70 35 80 55 90 65 100 65" ``` -------------------------------- ### Write Animated Image to AniMe Matrix via DBus Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-anime/README.md This example demonstrates how to load a PNG image, animate its rotation, and continuously write it to the AniMe matrix display using the AuraDbusClient. Ensure the 'dbus' feature is enabled. ```rust use std::{ env, error::Error, f32::consts::PI, path::Path, process::exit, thread::sleep, time::Duration, }; use rog_anime::{ AniMeDataBuffer, {AniMeImage, Vec2}, }; use rog_dbus::AuraDbusClient; fn main() -> Result<(), Box> { let (client, _) = AuraDbusClient::new().unwrap(); let mut image = AniMeImage::from_png( Path::new("./doom.png"), 0.9, // scale 0.0, // rotation Vec2::new(0.0, 0.0), // position 0.3, // brightness )?; loop { image.angle += 0.05; if image.angle > PI * 2.0 { image.angle = 0.0 } image.update(); client .proxies() .anime() .write(::from(&image)) .unwrap(); sleep(Duration::from_micros(500)); } } ``` -------------------------------- ### Single Zone Aura Configuration (RON) Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Example of a single zone Aura configuration in RON format. This is used when 'led_type' is set to 'Zone' and 'zoned' is true in the config. It demonstrates the DoomFlicker effect applied to a single zone. ```ron ( name: "aura-default", aura: ( effects: [ DoomFlicker(( led: SingleZone, start_colour: (200, 40, 5), max_percentage: 80, min_percentage: 40, )), ], zoned: true, ), ) ``` -------------------------------- ### Asusctl Help Command Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Access help documentation for the asusctl CLI. General help or specific command help can be retrieved. ```bash asusctl --help ``` ```bash asusctl --help ``` ```bash asusctl --help ``` -------------------------------- ### asusctl armoury CLI Commands Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/GPU_MODE_SWITCHING_SUMMARY.md Demonstrates common commands for interacting with firmware attributes via the asusctl armoury CLI. ```bash # List all firmware attributes asusctl armoury list # Get specific attribute asusctl armoury get --property dgpu_disable # Set attribute value asusctl armoury set --property dgpu_disable --value 1 asusctl armoury set --property gpu_mux_mode --value 0 ``` -------------------------------- ### Rog Control Center CLI Options Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-aura/README.md Lists command-line options for testing keyboard layouts with Rog Control Center. Use these options to debug and preview layout configurations. ```bash -h, --help print help message -v, --version show program version number -b, --board-name set board name for testing, this will make ROGCC show only the keyboard page -l, --layout-viewing put ROGCC in layout viewing mode - this is helpful for finding existing layouts that might match your laptop ``` -------------------------------- ### Build ROG Control Center with X11 Support Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-control-center/README.md Enable X11 support during the build process using Cargo. This is useful if you need X11 compatibility. ```bash cargo build --features x11 ``` -------------------------------- ### Build and Run AniMe Matrix Simulator Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/README.md Build the AniMe Matrix simulator using cargo and run it. This requires the rog_simulators package. The simulator can be used with asusd. ```bash cargo build --package rog_simulators ``` ```bash ./target/debug/anime_sim ``` -------------------------------- ### Asusctl Keybind - Next Fan/Thermal Profile Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Command to switch to the next fan or thermal profile, typically bound to Fn+F5. ```bash asusctl profile -n ``` -------------------------------- ### AsusAnimation Configuration (JSON) Source: https://gitlab.com/asus-linux/asusctl/-/blob/main/MANUAL.md Defines an AsusAnimation sequence for AniMe configurations. Specify the file path to a pre-existing ASUS GIF, the duration, and brightness level. These files are typically found in /usr/share/asusd/anime/asus/. ```json "AsusAnimation": { "file": "", "time":