mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
102 lines
2.2 KiB
Bash
Executable File
102 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Show or adjust Apple Studio Display and Apple XDR Display brightness using asdcontrol.
|
|
# omarchy:args=[--no-osd] [+N%|N%-|N%]
|
|
# omarchy:examples=omarchy brightness display apple | omarchy brightness display apple +5% | omarchy brightness display apple --no-osd 50%
|
|
|
|
device_cache="${XDG_RUNTIME_DIR:-/tmp}/omarchy-brightness-display-apple.device"
|
|
no_osd=0
|
|
args=()
|
|
|
|
for arg in "$@"; do
|
|
if [[ $arg == "--no-osd" ]]; then
|
|
no_osd=1
|
|
else
|
|
args+=("$arg")
|
|
fi
|
|
done
|
|
|
|
set -- "${args[@]}"
|
|
|
|
detect_apple_display_device() {
|
|
local devices=()
|
|
local path=""
|
|
|
|
for path in /dev/usb/hiddev* /dev/hiddev*; do
|
|
[[ -e $path ]] && devices+=("$path")
|
|
done
|
|
|
|
(( ${#devices[@]} > 0 )) || return 1
|
|
|
|
sudo asdcontrol --detect "${devices[@]}" 2>/dev/null | awk -F: '/^\/dev\/(usb\/)?hiddev/{ print $1; exit }'
|
|
}
|
|
|
|
find_apple_display_device() {
|
|
local cached=""
|
|
local device=""
|
|
|
|
if [[ -r $device_cache ]]; then
|
|
read -r cached <"$device_cache" || true
|
|
if [[ -n $cached && -e $cached ]]; then
|
|
printf '%s\n' "$cached"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
device="$(detect_apple_display_device)" || return 1
|
|
[[ -n $device ]] || return 1
|
|
|
|
printf '%s\n' "$device" >"$device_cache"
|
|
printf '%s\n' "$device"
|
|
}
|
|
|
|
current_brightness() {
|
|
local device="$1"
|
|
|
|
sudo asdcontrol "$device" 2>/dev/null | awk -F= '
|
|
/BRIGHTNESS=/ {
|
|
print int($2 * 100 / 60000)
|
|
found = 1
|
|
}
|
|
|
|
END { exit !found }
|
|
'
|
|
}
|
|
|
|
retry_with_fresh_device() {
|
|
rm -f "$device_cache"
|
|
device="$(find_apple_display_device || true)"
|
|
if [[ -z $device ]]; then
|
|
echo "No Apple Display HID device found" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
device="$(find_apple_display_device || true)"
|
|
if [[ -z $device ]]; then
|
|
echo "No Apple Display HID device found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if (( $# == 0 )); then
|
|
if current_brightness "$device"; then
|
|
exit
|
|
else
|
|
retry_with_fresh_device
|
|
current_brightness "$device"
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
step="$1"
|
|
if [[ $step =~ ^([0-9]+)%-$ ]]; then
|
|
step="-${BASH_REMATCH[1]}%"
|
|
fi
|
|
|
|
if ! sudo asdcontrol "$device" -- "$step" >/dev/null; then
|
|
retry_with_fresh_device
|
|
sudo asdcontrol "$device" -- "$step" >/dev/null
|
|
fi
|
|
|
|
(( no_osd )) || omarchy-osd -i brightness -p "$(current_brightness "$device")"
|