-1 votos

¿Existe un comando bash para hacer un cuadro de texto en pantalla?

Estoy escribiendo una pequeña aplicación para Intel OS X para mostrar un rango de temperaturas internas pero no he podido encontrar un comando/aplicación de caja de texto satisfactorio. Applescript funciona pero el cuadro tiene una mente propia - sólo un ancho (que es demasiado ancho), va donde quiere e insiste en estar en la parte superior. Una ventana de Terminal es lo mejor, pero es tedioso hacerla completamente libre de riesgos.

Busco una ventana de texto gratuita, preferiblemente generada por un comando bash precompilado, con un borde estrecho y sin botones, decoración, barra de título, barra de desplazamiento, etc. Debería ser redimensionable manual y programáticamente o autoajustable al texto. Debería ser posible posicionarla manualmente y programáticamente en cualquier lugar.

Debe ser pequeño y autónomo para que se pueda poner dentro de una aplicación y no se limite a ser instalado en un sistema operativo/ordenador concreto. Preferiblemente debe funcionar en todos los ordenadores Mac con Intel OS X.

Código para la solución Applescript:

#!/usr/bin/osascript
tell application "System Events" to set d to POSIX path of container of (path to me)
set k to "Open"
repeat until (k = "Close")
tell me to activate
set k to button returned of (display dialog (do shell script "s=" & d & "/c; b=''; 
g(){ x=$($s -k $1 -r); y=${x: -6:2}; z=${x: -3:2}; w=0; [ $z = 80 ] && w=5; b=$b\"  $((16#$y)).$w   $2\n\"; }; 
g TA0P 'Ambient'; 
g TC0C 'CPU A Core 0'; 
g TC2C 'CPU B Core 0'; 
g TCAH 'CPU A HeatSink'; 
g TCBH 'CPU B HeatSink'; 
g TH0P 'Drive Bay 0'; 
g TH1P 'Drive Bay 1'; 
g TH2P 'Drive Bay 2'; 
g TH3P 'Drive Bay 3'; 
g TN0H 'MCH HeatSink'; 
g Tp0C 'PSU1 Inlet'; 
g Tp1C 'PSU1 Component'; 
echo \"$b\"") buttons {"Close"} default button 1 with title "Temperature (Centigrade)" giving up after 19.9)
end repeat

Código para la solución de la Terminal:

#!/usr/bin/osascript
tell application "System Events" to set d to POSIX path of container of (path to me)
tell application "Terminal"
activate
set T to do script "#"
set W to id of window 1 whose tab 1 = T
close (every window whose id != W)
set bounds of window id W to {2, 25, 202, 310}
end tell
repeat
do shell script "s=" & d & "/c; 
b=\" Temperature (Centigrade)\n\n $(date \"+%y/%m/%d %H:%M:%S\")\n\n\"; 
g(){ x=$($s -k $1 -r); y=${x: -6:2}; z=${x: -3:2}; w=0; [ $z = 80 ] && w=5; b=\"$b $((16#$y)).$w   $2\n\"; }; 
g TA0P 'Ambient'; 
g TC0C 'CPU A Core 0'; 
g TC2C 'CPU B Core 0'; 
g TCAH 'CPU A HeatSink'; 
g TCBH 'CPU B HeatSink'; 
g TH0P 'Drive Bay 0'; 
g TH1P 'Drive Bay 1'; 
g TH2P 'Drive Bay 2'; 
g TH3P 'Drive Bay 3'; 
g TN0H 'MCH HeatSink'; 
g Tp0C 'PSU1 Inlet'; 
g Tp1C 'PSU1 Component'; echo \"$b\" > /tmp/TidC"
tell application "Terminal" to do script "PS1=''; printf '\\33c\\e[3J'; cat /tmp/TidC; echo -n ' '; for q in {9..1}; do echo -n $q' '; sleep 1; done" in window id W
delay 9.6
end repeat

1voto

Oskar Puntos 1242

MacOS no incluye ningún conjunto de herramientas de creación de cuadros de pantalla. Bash no funciona fuera de la interfaz de línea de comandos.

Por supuesto, puede lanzar otros programas que utilicen la interfaz gráfica de la pantalla, como AppleScript, Pashua o terminal-notificador .

Tal vez una herramienta existente como https://bjango.com/mac/istatmenus/ o el venerable SMCFanControl podría hacer lo que buscas en lugar de elaborar una herramienta personalizada lanzada por Bash?

Para la GUI de la línea de comandos puede preferir una herramienta como ncurses que simplificará la cantidad de conceptos de la interfaz gráfica de MacOS que tienes que aprender, a menos que estés interesado en las opciones específicas de MacOS.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X