20 votes

Existe-t-il un équivalent Mac OSX de zenity ?

Je suis en train de porter quelques simples scripts de X Windows/bash à Mac OSX, mais je ne trouve pas de build de Zenity (une application Gnome pour les dialogues de base de l'interface graphique) pour OSX. Existe-t-il un autre utilitaire de dialogue en ligne de commande que je peux utiliser ? Opérations de base : dialogue de notification

  • Élément de liste
  • (c.-à-d. titre de base, texte, icône, bouton OK)
  • notification d'erreur
  • les invites oui/non ou ok/annulation
  • sélectionner 1 ou n éléments dans une liste
  • texte de saisie

Je ne connais pas (encore) AppleScript (mais il semble assez verbeux pour les tâches de maintenance de fichiers qui m'intéressent).

11voto

Mr. Mel Points 1440

Vérifiez cacaoDialog :

cocoaDialog est une application OS X qui permet d'utiliser les contrôles courants des interfaces graphiques, tels que les sélecteurs de fichiers, la saisie de texte, les barres de progression, les confirmations oui/non, etc. avec une application en ligne de commande. Il ne nécessite aucune connaissance de Cocoa, et est idéal pour une utilisation dans des scripts shell et Perl (ou Ruby, ou Python, ou... etc).

Il s'agit d'un concept assez simple : vous passez des arguments à l'exécutable pour créer un dialogue, et il renvoie une chaîne de résultats. Il existe de bonnes exemples ainsi que documentation .

Malheureusement, le site principal semble avoir disparu mais le code source est toujours là. Et Internet Archive possède certaines des pages

L'exécutable peut être obtenu à partir d'un gestionnaire de paquetage comme Macports - après installation de Macports puis sudo port install cocoadialog

1 votes

@mklement0 cocoaDialog à partir de novembre 2017 est de nouveau en développement actif : github.com/cocoadialog/cocoadialog

2 votes

Malheureusement, Cocoadialog semble ne pas être maintenu et abandonné.

7voto

martin Points 1

Homebrew fournit le paquet zenity. Il utilise le serveur MacOS X11 (émulation) Xquartz.

Il est plus facile d'avoir des implémentations multi-OS, mais ce n'est pas une interface graphique native de MacOS X.

0 votes

Pour ceux qui sont intéressés, zenity est disponible sur x11 tape. Exécuter brew install homebrew/x11/zenity pour l'installer.

7voto

Richard Marquez Points 387

Il ne s'agit pas d'un remplacement immédiat et il n'est pas directement compatible avec bash/zenity, mais si vous êtes d'accord avec une solution Mac native OOTB non portable et sans dépendances supplémentaires, considérez AppleScript (ou, à partir de Yosemite, Javascript JXA).

Voici un scénario typique d'un AppleScript qui construit une boîte de dialogue à partir de la sortie d'une commande shell ( emulator -list-avds qui répertorie les images des émulateurs Android), puis exécute une autre commande en fonction de l'élément sélectionné ( emulator -avd <image_name> qui lance l'image de l'émulateur sélectionné) :

set avds to paragraphs of (do shell script "~/Library/Android/sdk/emulator/emulator -list-avds")
set avd to (choose from list avds with prompt "Please select an AVD to start" default items "None" OK button name {"Start"} cancel button name {"Cancel"})
do shell script "~/Library/Android/sdk/emulator/emulator -avd " & avd & " -no-boot-anim > /dev/null 2>&1 &"

Vous pouvez exécuter le script à partir de l'ootb Script Editor.app ou de Automator.app . Les deux applications permettent également d'enregistrer un script en tant que paquet d'applications natives MacOS.

Pour exécuter le script ci-dessus à partir d'un script bash, vous pourriez utiliser :

osascript -e '
set avds to paragraphs of (do shell script "~/Library/Android/sdk/emulator/emulator -list-avds")
set avd to (choose from list avds with prompt "Please select an AVD to start" default items "None" OK button name {"Start"} cancel button name {"Cancel"})
do shell script "~/Library/Android/sdk/emulator/emulator -avd " & avd & " -no-boot-anim > /dev/null 2>&1 &"
'

Assurez-vous d'inclure le guillemet simple sur la dernière ligne.

Résultat :

applescript start android AVD

Référence

Pour des exemples de code AppleScript, consultez les scripts préinstallés fournis par Apple à l'adresse :

/Library/Scripts

Pour voir la documentation de l'API intégrée pour AppleScript/Javascript(JSX), lancez Script Editor.app , choisir Fichier > Dictionnaire ouvert puis sélectionnez StandardAdditions.osax dans le menu déroulant.

Utilisation de Javascript au lieu d'AppleScript

Depuis Yosemite, au lieu d'AppleScript, vous pouvez également utiliser Javascript (JXA).

Tutoriels et exemples d'utilisation de Javascript JXA

Enregistrement en tant qu'application MacOS

Desde el Script Editor.app vous pouvez également convertir votre script (applescript ou javascript) en une application native MacOS en sélectionnant Fichier > Exportation > Format de fichier : Application afin que vous puissiez exécuter le script comme une application mac normale.

5voto

DimiDak Points 128

Sur votre terminal

brew install zenity && zenity --info --text 'You did it!'

:)

4voto

Igor Zelaya Points 2266

Essayez aussi Pashua .

Pashua est un outil permettant de créer des dialogues Aqua natifs Windows à partir de langages de programmation qui n'ont pas ou peu de support pour les interfaces graphiques sur Mac OS X. Actuellement, il prend en charge Applescript, Perl, PHP, Python, Groovy, Rexx, Ruby, shell script et Tcl-et si votre langage préféré ne figure pas dans cette liste : écrire le code glue pour communiquer avec Pashua est assez simple.

0 votes

+1 ; Pashua est puissant, mais le style de l'API est différent de celui de Zenity en ce sens qu'au lieu d'arguments de ligne de commande séparés, des chaînes de configuration (multi-lignes) décrivant l'interface graphique souhaitée doivent être passées. Il faut probablement plus de temps pour démarrer.

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