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 | ||||||
|  | @ -47,6 +50,11 @@ Arguments: | ||||||
|   --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 | ||||||
|     "check") |     "check") | ||||||
|  | @ -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