Dialog von der Kommandozeile aus anzeigen (wie es xmessage tut)

4

Hintergrund

Ich möchte in der Lage sein, ein Benachrichtigungsfenster in OS X innerhalb eines Skripts anzuzeigen. Das Skript wird im Hintergrund ausgeführt, daher sollte die Benachrichtigung nicht an das Terminal gesendet, sondern in einem Dialogfeld angezeigt werden.

Was ich bisher gefunden habe

xmessage

Unter Linux würde ich wahrscheinlich xmessageeine seiner Varianten dafür verwenden. Aber unter OS X ist das Starten des umfangreichen X-Servers nur für diese Aufgabe für meinen Geschmack übertrieben und zu langsam.

Finder-Dialog

Ich habe eine ähnliche Frage in diesem Forenthread gefunden , in der die "akzeptierte" Antwort diesen Befehl vorschlug:

osascript -e 'tell app "Finder" to display dialog "Hey!"'

Unter OS X wird der resultierende Dialog jedoch nicht sofort angezeigt. Stattdessen springt das Finder-Symbol ab und der Dialog wird erst sichtbar, nachdem ich auf das Symbol geklickt habe. Zu viele Mausklicks, zu störend.

Notifier

Es gibt eine Antwort auf Super User, die ein Tool namens Terminal-Notifier vorschlägt . Leider scheint das nur für OS X zu funktionieren , daher hilft es in meinem Fall nicht.

Frage

Gibt es also ein Tool, das entweder in OS X oder frei verfügbar ist und es dem Benutzer ermöglicht, einen kleinen Dialog anzuzeigen, ohne zu viel Aufwand zu verursachen?

MvG
quelle

Antworten:

5

Eine Möglichkeit besteht darin, einen Hintergrundprozess wie SystemUIServer anzuweisen, den Dialog anzuzeigen:

osascript -e 'tell application "SystemUIServer"
display dialog "message"
end
activate application (path to frontmost application as text)'

Sie können der vordersten Anwendung auch anweisen, ein Dialogfeld anzuzeigen, das jedoch nicht sofort angezeigt wird, wenn die Anwendung nicht reagiert. Wenn MPlayer OS X an vorderster Stelle steht, akzeptieren Textdialogfelder keine Tastatureingaben.

osascript -e 'tell application (path to frontmost application as text)
display dialog "message"
end'
Lri
quelle
Der erste Ansatz hat den Nachteil, dass alle Fenster der angegebenen Anwendung geöffnet werden, was ich etwas ärgerlich finde. Aber der zweite Ansatz ist der beste, den ich bisher gesehen habe. Apps, die nicht reagieren, sollten selten genug sein, um mir keine Sorgen zu machen.
MVG 30.11.12
3

Versuchen

tell application "System Events" to display dialog "Plug the Digispark into the USB port." buttons {"OK"} with icon caution

Getestet unter OS X 10.8.2

Rei Vilo
quelle
Klingt, als müsste ich Javascript lernen
Edward Falk
Frage: Das Hinzufügen der Klausel führt dazu, buttons {"OK"}dass das Dialogfeld beim Aufrufen nicht den Fokus erhält. Wenn Sie es weglassen, erhalten Sie eine Abbrechen-Schaltfläche, die wir nicht möchten, aber zumindest der Dialog erhält den Fokus. Gibt es eine Möglichkeit, den Fokus zu erhalten, auch wenn diese Klausel verwendet wird?
Edward Falk