mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
44 lines
2.2 KiB
Bash
44 lines
2.2 KiB
Bash
#!/bin/bash
|
|
# Extended controller support: the Xbox wireless dongle (xone, with its firmware) and Xbox controllers over Bluetooth (xpadneo).
|
|
# The kernel has no driver for the dongle, and without xpadneo a Bluetooth Xbox controller works as a plain gamepad (buttons and
|
|
# sticks) but misses rumble (trigger motors too), proper button mapping and the battery level. Both are DKMS modules from CachyOS's
|
|
# own repo, built for every installed kernel (so every kernel needs its headers). Sourced by steamify.sh; not meant to be run on
|
|
# its own.
|
|
|
|
controller_xone_pkg() {
|
|
# A PC with the AUR's xone-dkms-git already works: the repo's xone-dkms would conflict with it.
|
|
pacman -Q xone-dkms-git >/dev/null 2>&1 && echo xone-dkms-git || echo xone-dkms
|
|
}
|
|
|
|
controller_pkgs() { echo "xpadneo-dkms $(controller_xone_pkg) xone-dongle-firmware"; }
|
|
|
|
extended_controller_support_status() {
|
|
# shellcheck disable=SC2046 # a list of package names
|
|
pacman -Q $(controller_pkgs) >/dev/null 2>&1
|
|
}
|
|
|
|
extended_controller_support_enable() {
|
|
local p prev missing=()
|
|
info "Installing extended controller support (Xbox wireless dongle, Xbox Bluetooth)..."
|
|
install_kernel_headers || return 1
|
|
for p in $(controller_pkgs); do pacman -Q "$p" >/dev/null 2>&1 || missing+=("$p"); done
|
|
if ((${#missing[@]})); then
|
|
sudo pacman -S --needed --noconfirm "${missing[@]}" ||
|
|
{ err "Installing ${missing[*]} failed."; return 1; }
|
|
# What a first, half-finished run installed stays on the list.
|
|
prev="$(state_get extended_controller_support installed_pkgs)"
|
|
state_set extended_controller_support installed_pkgs "$(echo "$prev ${missing[*]}" | xargs)"
|
|
fi
|
|
ok "Extended controller support on: plug the dongle in again (or reconnect the controller) to use it."
|
|
}
|
|
|
|
extended_controller_support_disable() {
|
|
local pkgs
|
|
pkgs="$(state_get extended_controller_support installed_pkgs)"
|
|
# Only what Steamify installed; kernel headers stay.
|
|
# shellcheck disable=SC2086 # a list of package names
|
|
[[ -n "$pkgs" ]] && sudo pacman -Rns --noconfirm $pkgs >/dev/null 2>&1
|
|
state_clear extended_controller_support
|
|
ok "Extended controller support off."
|
|
}
|