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