84 lines
2.6 KiB
Bash
Executable File
84 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# args_json: {"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"get|set|up|down"},"value":{"type":"string","description":"Brightness percentage (for set action)"}}}
|
|
# ollie:prompt
|
|
# ## gui_brightness
|
|
#
|
|
# Get/set screen brightness.
|
|
#
|
|
# - Actions: `get`, `set`, `up`, `down`
|
|
#
|
|
# ```
|
|
# gui_brightness(action="get")
|
|
# gui_brightness(action="set", value="50")
|
|
# ```
|
|
# ollie:end
|
|
set -euo pipefail
|
|
|
|
source "$(dirname "$0")/_lib/args.sh"
|
|
|
|
SERVICE="org.kde.Solid.PowerManagement"
|
|
OBJ_PATH="/org/kde/Solid/PowerManagement/Actions/BrightnessControl"
|
|
IFACE="org.kde.Solid.PowerManagement.Actions.BrightnessControl"
|
|
|
|
cmd=$(arg_require "action")
|
|
|
|
get_max() {
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "$IFACE.brightnessMax" | \
|
|
sed 's/(//;s/,)//'
|
|
}
|
|
|
|
get_current() {
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "$IFACE.brightness" | \
|
|
sed 's/(//;s/,)//'
|
|
}
|
|
|
|
case "$cmd" in
|
|
get)
|
|
max=$(get_max)
|
|
cur=$(get_current)
|
|
if [ "$max" -gt 0 ]; then
|
|
pct=$((cur * 100 / max))
|
|
else
|
|
pct=0
|
|
fi
|
|
echo "${pct}%"
|
|
;;
|
|
set)
|
|
pct=$(arg_require "value")
|
|
max=$(get_max)
|
|
val=$((pct * max / 100))
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "$IFACE.setBrightness" "$val" >/dev/null
|
|
echo "OK: brightness set to ${pct}%"
|
|
;;
|
|
up)
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "$IFACE.brightnessKeyPressed" "int32:1" >/dev/null 2>&1 || \
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "org.kde.Solid.PowerManagement.Actions.BrightnessControl.brightnessKeyPressed" "int32:1" >/dev/null
|
|
max=$(get_max); cur=$(get_current)
|
|
echo "OK: brightness now $((cur * 100 / max))%"
|
|
;;
|
|
down)
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "$IFACE.brightnessKeyPressed" "int32:0" >/dev/null 2>&1 || \
|
|
gdbus call --session --dest "$SERVICE" \
|
|
--object-path "$OBJ_PATH" \
|
|
--method "org.kde.Solid.PowerManagement.Actions.BrightnessControl.brightnessKeyPressed" "int32:0" >/dev/null
|
|
max=$(get_max); cur=$(get_current)
|
|
echo "OK: brightness now $((cur * 100 / max))%"
|
|
;;
|
|
*)
|
|
echo "error: unknown action: $cmd (use get|set|up|down)" >&2
|
|
exit 1
|
|
;;
|
|
esac
|