2 votes

Une session SSH peut-elle être enveloppée pour apparaître comme une application distincte ?

Fluide peut créer un wrapper .app autour d'une instance webkit pour transformer n'importe quelle page web en une application OSX. Ce script peut faire un travail moins approfondi avec Chrome. Existe-t-il quelque chose qui puisse faire cela pour une session ssh, éventuellement via un profil Terminal ou iTerm2, ou un client SSH autonome ?

Pour élaborer :

J'ouvre Safari, puis une deuxième fenêtre Safari pour un site web particulier. Maintenant, cmd+tab et force quit et mission control et le dock et beaucoup d'autres fonctions OSX traitent ces deux fenêtres comme faisant partie de la même application.

Au lieu de cela, après avoir ouvert Safari, je peux ouvrir mon .app personnalisé créé avec Fluid pour le site Web en question. Cela me permet de bénéficier de toutes les fonctionnalités natives du système d'exploitation, à savoir l'utilisation de deux applications distinctes.

De la même manière, dans Terminal ou iTerm2 ou un client SSH autonome (par exemple CyberDuck ou SecureCRT), je peux ouvrir une deuxième fenêtre avec un profil particulier chargé qui permettra de se connecter à un certain serveur. Cette fenêtre sera, là encore, traitée par le système d'exploitation comme faisant partie de l'application unique en cours d'exécution.

J'espère que quelque chose comme Fluid créera une enveloppe .app autour de n'importe quelle méthode d'ouverture d'une session SSH vers un serveur particulier, qui sera ensuite indépendante de tout autre SSH que je fais dans mon utilisation normale.

1voto

shsteimer Points 8749

Le seul moyen d'exécuter plusieurs instances distinctes de Terminal est de les lancer avec la ligne de commande open -n -a "Terminal" -- Je comprends que ce n'est pas une bonne façon de gérer des choses qui ne sont pas censées être gérées de cette façon. Il y a des préférences partagées et des fichiers plist utilisés par ces instances, donc vous pouvez rencontrer des problèmes.

La raison pour laquelle Fluid fonctionne si bien est que chaque application est une instance de navigateur WebKit distincte, avec un espace de noms de préférences unique, et sans les décorations normales de la fenêtre du navigateur. Le moins que l'on puisse dire, c'est qu'il s'agit d'un hack lourd.

Vous pouvez script Terminal avec AppleScript et ensuite enregistrer l'AppleScript comme une application. Ce script force une nouvelle instance de Terminal au premier plan, puis exécute une commande ssh dans celle-ci :

do shell script "open -n -a Terminal"
tell application "Terminal"
   set currentTab to do script ("ssh user@server;")
   # Additional commands can be sent using...
   # delay 6
   # do script ("do something remote") in currentTab
end tell

Saisissez-le dans l'éditeur AppleScript, personnalisez-le selon vos besoins, puis sélectionnez File > Save... et où il est dit Type: dans la boîte de dialogue Enregistrer, sélectionnez Application .

Cela créera un non signé .app que vous pouvez distribuer comme une application pour démarrer ssh sessions. Si vous disposez d'un certificat de développeur et que vous souhaitez apposer une signature de code sur le fichier .app pour que les utilisateurs ne reçoivent pas d'avertissement sur l'exécution d'un code non fiable, utilisez l'option File > Export... sélectionnez l'option de menu Application pour le Type et assurez-vous que le Code Sign: dans la boîte de dialogue pointant vers un certificat de développeur au lieu de Don't Code Sign .

Il est préférable de signer le code de l'application si vous comptez la donner à d'autres utilisateurs.

Si vous exécutez cela, vous obtiendrez des terminaux entièrement nouveaux, indépendants les uns des autres, que vous pourrez quitter par Cmd-Q sans quitter les autres instances. Remplacer Terminal dans le script avec iTerm si vous le préférez pour votre travail en ligne de commande.

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