-1 votes

Existe-t-il une commande bash pour créer une zone de texte à l'écran ?

Je suis en train d'écrire une petite application pour Intel OS X afin d'afficher une gamme de températures internes, mais je n'ai pas été en mesure de trouver une commande/application de boîte de texte satisfaisante. Applescript fonctionne mais la boîte a son propre esprit - une seule largeur (qui est trop large), va où elle veut et insiste pour être au sommet. Une fenêtre Terminal est la meilleure solution, mais il est fastidieux de la rendre totalement sans risque.

Je recherche une fenêtre de texte gratuite, de préférence générée par une commande bash précompilée, avec une bordure étroite et sans boutons, décoration, barre de titre, barre de défilement, etc. Elle devrait être redimensionnable manuellement et par programme ou s'adapter automatiquement au texte. Il devrait être possible de la positionner n'importe où, manuellement et par programme.

Il doit être petit et autonome afin de pouvoir être intégré à une application et ne pas être limité à un système d'exploitation ou à un ordinateur particulier. De préférence, il devrait fonctionner sur tous les ordinateurs Mac Intel OS X.

Code pour la solution 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

Code pour la solution 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 Points 1242

Aucun outil général de création de boîtes d'écran n'est fourni avec MacOS. Bash ne fonctionne pas en dehors de l'interface de ligne de commande.

Vous pouvez bien sûr lancer d'autres programmes qui utilisent l'interface graphique de l'écran, comme AppleScript, Pashua ou terminal-notifier .

Peut-être qu'un outil existant comme https://bjango.com/mac/istatmenus/ ou le vénérable SMCFanControl pourrait faire ce que vous cherchez plutôt que de créer un outil personnalisé lancé par bash ?

Pour une interface graphique en ligne de commande, vous pouvez préférer un outil tel que ncurses ce qui simplifiera la quantité de concepts d'interface graphique MacOS que vous devez apprendre, à moins que vous ne soyez intéressé par les options spécifiques à MacOS.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X