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