Add GUI
This commit is contained in:
parent
8c942bc6b0
commit
067570aab5
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/bash
|
||||||
|
zenity --password --title="sudo Authentication"
|
95
scripts/tdp
95
scripts/tdp
|
@ -5,6 +5,9 @@ command_name=$(basename $0)
|
||||||
rapl_path="/sys/class/powercap/intel-rapl:0"
|
rapl_path="/sys/class/powercap/intel-rapl:0"
|
||||||
pl1_path="${rapl_path}/constraint_0_power_limit_uw"
|
pl1_path="${rapl_path}/constraint_0_power_limit_uw"
|
||||||
pl2_path="${rapl_path}/constraint_1_power_limit_uw"
|
pl2_path="${rapl_path}/constraint_1_power_limit_uw"
|
||||||
|
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||||
|
gui_name="GPD TDP Manager"
|
||||||
|
gui_options=""
|
||||||
|
|
||||||
# Set up help text
|
# Set up help text
|
||||||
help_text="${command_name}: GDP Win 3 TDP management script
|
help_text="${command_name}: GDP Win 3 TDP management script
|
||||||
|
@ -46,6 +49,11 @@ Arguments:
|
||||||
--detail, -d Prints PL2 as well as PL1
|
--detail, -d Prints PL2 as well as PL1
|
||||||
--same, -s PL2 will be set to the same as PL1 rather than 2W higher
|
--same, -s PL2 will be set to the same as PL1 rather than 2W higher
|
||||||
--help Prints this help text"
|
--help Prints this help text"
|
||||||
|
|
||||||
|
gui_help_text="${command_name} gui
|
||||||
|
|
||||||
|
No help is available for the GUI.
|
||||||
|
If it does not work, ensure the \"zenity\" command is installed and available"
|
||||||
|
|
||||||
print_help () {
|
print_help () {
|
||||||
case $1 in
|
case $1 in
|
||||||
|
@ -55,6 +63,9 @@ print_help () {
|
||||||
"set")
|
"set")
|
||||||
echo "$set_help_text"
|
echo "$set_help_text"
|
||||||
;;
|
;;
|
||||||
|
"set")
|
||||||
|
echo "$gui_help_text"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "$help_text"
|
echo "$help_text"
|
||||||
;;
|
;;
|
||||||
|
@ -93,6 +104,38 @@ is_detailed () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_help () {
|
||||||
|
if [[ "$@" == *"--help"* ]] || [[ "$@" == *"-h"* ]]; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
is_number () {
|
||||||
|
if ! [[ $1 =~ ^-?[0-9]+$ ]]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_msg () {
|
||||||
|
zenity --info --title="$gui_name" $gui_options --text="$1" --no-wrap
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_read () {
|
||||||
|
zenity --entry --title="$gui_name" $gui_options --text="$1:"
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_ask () {
|
||||||
|
if $(zenity --question --title="$gui_name" $gui_options --text="$1" --no-wrap); then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
set_pl () {
|
set_pl () {
|
||||||
if [ $1 -eq 1 ] || [ $1 -eq 2 ] || [ ! -z $2 ]; then
|
if [ $1 -eq 1 ] || [ $1 -eq 2 ] || [ ! -z $2 ]; then
|
||||||
if [ $1 -eq 1 ]; then
|
if [ $1 -eq 1 ]; then
|
||||||
|
@ -129,7 +172,7 @@ check_tdp () {
|
||||||
echo "PL2 is ${pl2}W" # Placeholder
|
echo "PL2 is ${pl2}W" # Placeholder
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [ "$1" == "--help" ]; then
|
elif ( is_help $@ ); then
|
||||||
print_help "check"
|
print_help "check"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -142,10 +185,10 @@ set_tdp () {
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
echo "Please specify wattage"
|
echo "Please specify wattage"
|
||||||
exit
|
exit
|
||||||
elif [ "$1" == "--help" ]; then
|
elif ( is_help $@ ); then
|
||||||
print_help "set"
|
print_help "set"
|
||||||
exit
|
exit
|
||||||
elif ! [[ $1 =~ ^-?[0-9]+$ ]]; then
|
elif ! (is_number $1); then
|
||||||
echo "TDP is not a number or argument unknown!)"
|
echo "TDP is not a number or argument unknown!)"
|
||||||
print_unknown
|
print_unknown
|
||||||
exit
|
exit
|
||||||
|
@ -174,6 +217,48 @@ set_tdp () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Basic GUI using Zenity
|
||||||
|
gui_handler() {
|
||||||
|
if [ -z $(which zenity 2>/dev/null) ]; then
|
||||||
|
echo "Zenity is not available, GUI will not work until it is installed"
|
||||||
|
elif (is_help $@); then
|
||||||
|
print_help "gui"
|
||||||
|
else
|
||||||
|
export SUDO_ASKPASS="${script_dir}/gpd-sudo-prompt"
|
||||||
|
while : ; do
|
||||||
|
# Contains some ugly hacks to "widen" the entries for the small GPD screen, might tweak later
|
||||||
|
gui_action=$(zenity --list --title="${gui_name}" --width=400 --height=300 $gui_options --text="Chose action to perform:" --hide-column=1 --column="" --column="Action"\
|
||||||
|
check "`printf "\n Check current TDP\n "`" \
|
||||||
|
set "`printf "\n Set new TDP (requires sudo password)\n "`" \
|
||||||
|
exit "`printf "\n Exit TDP Manager\n "`")
|
||||||
|
|
||||||
|
case $gui_action in
|
||||||
|
|
||||||
|
"check")
|
||||||
|
gui_msg "$($command_name check --detail)"
|
||||||
|
;;
|
||||||
|
|
||||||
|
"set")
|
||||||
|
gui_tdp=$(gui_read "Please enter TDP")
|
||||||
|
|
||||||
|
if ! [ -z $gui_tdp ]; then
|
||||||
|
if $(gui_ask "Should PL2 be set to the same wattage?\nIf unsure, answer No."); then
|
||||||
|
gui_msg "$(tdp set $gui_tdp --same --detail)"
|
||||||
|
else
|
||||||
|
gui_msg "$(tdp set $gui_tdp --detail)"
|
||||||
|
fi
|
||||||
|
gui_tdp=""
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Command handler
|
# Command handler
|
||||||
case $1 in
|
case $1 in
|
||||||
|
|
||||||
|
@ -185,6 +270,10 @@ case $1 in
|
||||||
set_tdp "${@:2}"
|
set_tdp "${@:2}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
"gui" | "ui") # Pass to GUI handler
|
||||||
|
gui_handler "${@:2}"
|
||||||
|
;;
|
||||||
|
|
||||||
"help")
|
"help")
|
||||||
print_help
|
print_help
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Reference in New Issue