From 43ae186a80683dc3091773e0720936ebcb5af399 Mon Sep 17 00:00:00 2001 From: Steve Godlewski Date: Wed, 18 Feb 2026 13:19:30 -0700 Subject: [PATCH] Add Framework 16 RGB keyboard theme syncing (#4524) * Add framwork 16 RGB syncing * fixed install script, fixed color changing when style changes * added framework scripts to the main install scripts * renamed theme-set scripts, added migration * use omarchy-pkg-add, shared keyboard template, tracked udev rule * call the install file from the migration file --- bin/omarchy-hw-framework16 | 6 +++++ bin/omarchy-theme-set | 2 +- bin/omarchy-theme-set-keyboard | 4 ++++ ...tl => omarchy-theme-set-keyboard-asus-rog} | 2 +- bin/omarchy-theme-set-keyboard-f16 | 22 +++++++++++++++++++ .../{asusctl.rgb.tpl => keyboard.rgb.tpl} | 0 default/udev/framework16-qmk-hid.rules | 1 + install/config/all.sh | 1 + .../config/hardware/framework16-qmk-hid.sh | 9 ++++++++ install/packaging/all.sh | 1 + install/packaging/framework16.sh | 3 +++ migrations/1770483021.sh | 4 ++++ 12 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 bin/omarchy-hw-framework16 create mode 100755 bin/omarchy-theme-set-keyboard rename bin/{omarchy-theme-set-asusctl => omarchy-theme-set-keyboard-asus-rog} (66%) create mode 100755 bin/omarchy-theme-set-keyboard-f16 rename default/themed/{asusctl.rgb.tpl => keyboard.rgb.tpl} (100%) create mode 100644 default/udev/framework16-qmk-hid.rules create mode 100644 install/config/hardware/framework16-qmk-hid.sh create mode 100644 install/packaging/framework16.sh create mode 100644 migrations/1770483021.sh diff --git a/bin/omarchy-hw-framework16 b/bin/omarchy-hw-framework16 new file mode 100755 index 00000000..dffceb04 --- /dev/null +++ b/bin/omarchy-hw-framework16 @@ -0,0 +1,6 @@ +#!/bin/bash + +# Detect whether the computer is a Framework Laptop 16. + +[[ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" == "Framework" ]] && + grep -q "Laptop 16" /sys/class/dmi/id/product_name 2>/dev/null diff --git a/bin/omarchy-theme-set b/bin/omarchy-theme-set index b58c7773..9fe57b5f 100755 --- a/bin/omarchy-theme-set +++ b/bin/omarchy-theme-set @@ -57,7 +57,7 @@ omarchy-theme-set-gnome omarchy-theme-set-browser omarchy-theme-set-vscode omarchy-theme-set-obsidian -omarchy-theme-set-asusctl +omarchy-theme-set-keyboard # Call hook on theme set omarchy-hook theme-set "$THEME_NAME" diff --git a/bin/omarchy-theme-set-keyboard b/bin/omarchy-theme-set-keyboard new file mode 100755 index 00000000..6c237a8e --- /dev/null +++ b/bin/omarchy-theme-set-keyboard @@ -0,0 +1,4 @@ +#!/bin/bash + +omarchy-theme-set-keyboard-asus-rog +omarchy-theme-set-keyboard-f16 diff --git a/bin/omarchy-theme-set-asusctl b/bin/omarchy-theme-set-keyboard-asus-rog similarity index 66% rename from bin/omarchy-theme-set-asusctl rename to bin/omarchy-theme-set-keyboard-asus-rog index d202e03d..e0078ee4 100755 --- a/bin/omarchy-theme-set-asusctl +++ b/bin/omarchy-theme-set-keyboard-asus-rog @@ -1,6 +1,6 @@ #!/bin/bash -ASUSCTL_THEME=~/.config/omarchy/current/theme/asusctl.rgb +ASUSCTL_THEME=~/.config/omarchy/current/theme/keyboard.rgb if omarchy-cmd-present asusctl; then asusctl aura effect static -c $(sed 's/^#//' $ASUSCTL_THEME) diff --git a/bin/omarchy-theme-set-keyboard-f16 b/bin/omarchy-theme-set-keyboard-f16 new file mode 100755 index 00000000..c7a352da --- /dev/null +++ b/bin/omarchy-theme-set-keyboard-f16 @@ -0,0 +1,22 @@ +#!/bin/bash + +FRAMEWORK16_THEME=~/.config/omarchy/current/theme/keyboard.rgb + +if omarchy-cmd-present qmk_hid && [[ -f "$FRAMEWORK16_THEME" ]]; then + hex=$(cat "$FRAMEWORK16_THEME") + hex="${hex#\#}" + + # Convert hex to QMK HSV (0-255 scale) using Python's colorsys + read -r h s <<< $(python3 -c " +import colorsys +r, g, b = int('$hex'[:2],16)/255, int('$hex'[2:4],16)/255, int('$hex'[4:6],16)/255 +h, s, v = colorsys.rgb_to_hsv(r, g, b) +print(int(h * 255), int(s * 255)) +") + + qmk_hid via --rgb-effect 1 2>/dev/null + qmk_hid via --rgb-hue "$h" 2>/dev/null + qmk_hid via --rgb-saturation "$s" 2>/dev/null + qmk_hid via --rgb-brightness 100 2>/dev/null + qmk_hid via --save 2>/dev/null +fi diff --git a/default/themed/asusctl.rgb.tpl b/default/themed/keyboard.rgb.tpl similarity index 100% rename from default/themed/asusctl.rgb.tpl rename to default/themed/keyboard.rgb.tpl diff --git a/default/udev/framework16-qmk-hid.rules b/default/udev/framework16-qmk-hid.rules new file mode 100644 index 00000000..0100d7af --- /dev/null +++ b/default/udev/framework16-qmk-hid.rules @@ -0,0 +1 @@ +SUBSYSTEM=="hidraw", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", MODE="0660", TAG+="uaccess" diff --git a/install/config/all.sh b/install/config/all.sh index f62a4e61..9a7be526 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -41,3 +41,4 @@ run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-audio-mixer.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-asus-rog-mic.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-yt6801-ethernet-adapter.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-synaptic-touchpad.sh +run_logged $OMARCHY_INSTALL/config/hardware/framework16-qmk-hid.sh diff --git a/install/config/hardware/framework16-qmk-hid.sh b/install/config/hardware/framework16-qmk-hid.sh new file mode 100644 index 00000000..5fb46847 --- /dev/null +++ b/install/config/hardware/framework16-qmk-hid.sh @@ -0,0 +1,9 @@ +# Allow unprivileged access to the Framework 16 keyboard for RGB control via qmk_hid. + +if omarchy-hw-framework16; then + if [[ ! -f /etc/udev/rules.d/50-framework16-qmk-hid.rules ]]; then + sudo cp "$OMARCHY_PATH/default/udev/framework16-qmk-hid.rules" /etc/udev/rules.d/50-framework16-qmk-hid.rules + sudo udevadm control --reload-rules + sudo udevadm trigger + fi +fi diff --git a/install/packaging/all.sh b/install/packaging/all.sh index 1bdc912f..9d86078b 100644 --- a/install/packaging/all.sh +++ b/install/packaging/all.sh @@ -5,3 +5,4 @@ run_logged $OMARCHY_INSTALL/packaging/icons.sh run_logged $OMARCHY_INSTALL/packaging/webapps.sh run_logged $OMARCHY_INSTALL/packaging/tuis.sh run_logged $OMARCHY_INSTALL/packaging/asus-rog.sh +run_logged $OMARCHY_INSTALL/packaging/framework16.sh diff --git a/install/packaging/framework16.sh b/install/packaging/framework16.sh new file mode 100644 index 00000000..0c091f97 --- /dev/null +++ b/install/packaging/framework16.sh @@ -0,0 +1,3 @@ +if omarchy-hw-framework16; then + omarchy-pkg-add qmk-hid +fi diff --git a/migrations/1770483021.sh b/migrations/1770483021.sh new file mode 100644 index 00000000..fb8c7f9e --- /dev/null +++ b/migrations/1770483021.sh @@ -0,0 +1,4 @@ +echo "Install Framework 16 keyboard RGB support" + +source $OMARCHY_PATH/install/packaging/framework16.sh +source $OMARCHY_PATH/install/config/hardware/framework16-qmk-hid.sh