Comment ouvrir de nouvelles fenêtres en tant qu'instances d'application distinctes pour Chrome, Terminal?

15

En passant de Linux (OpenBox WM) à MBP, j'ai du mal à retrouver le niveau de productivité auquel j'étais habitué ... Une chose spécifique qui le tue, c'est l'insistance d'OSX sur la séparation entre "applications" et "fenêtres", en attribuant des clés différentes. combos pour basculer entre les deux, chacun avec son propre comportement de rotation (soupir). Cela devient encore pire car OSX insiste pour que tout les fenêtres de l'application X vers l'avant chaque fois que j'y passe. Je rencontre souvent des situations dans lesquelles j'ai deux fenêtres Chrome ou plus et deux fenêtres Terminal ou plus, chaque groupe couvrant tout l'espace du bureau, mais je ne peux pas en avoir une simultanément à l'avant.

Autres contraintes: je ne veux pas déplacer les fenêtres pour séparer les espaces de travail (ou ce que cela s'appelle) simplement pour pouvoir les utiliser. Je préfère ne pas utiliser la souris, mais je suis disposé à le faire si cela résoudra mon problème (ce ne sera pas le cas ci-dessus).

Une chose qui pourrait résoudre mon problème est de pouvoir démarrer de nouvelles fenêtres des applications qui me tiennent à cœur (Chrome, Terminal) en tant qu'instances séparées. Cela me permettra de basculer arbitrairement entre eux sans les forcer tous à passer au premier plan.

Est-ce que quelqu'un sait comment faire cela à Yosemite? Merci beaucoup!

garnold
la source
1
Pour être honnête, revenez à Linux :-) J'ai les mêmes problèmes que vous depuis des mois et je n'ai pas été en mesure de les résoudre. Avez-vous réussi enfin?
flindeberg

Réponses:

11

Vous pouvez essayer la syntaxe suivante en utilisant open commander:

open -na "Google Chrome"

-n parameters ouvre une nouvelle instance même si elle est déjà en cours d'exécution.

Ajout supplémentaire --user-data-dir démarrera l’instance dans le répertoire de profil séparé, par exemple

open -na "Google Chrome" --args --user-data-dir="$PWD/Foo"

Et en utilisant --profile-directory vous pouvez changer le nom du profil par défaut.

kenorb
la source
Cela ouvre définitivement une nouvelle fenêtre mais je ne peux pas dire en quoi c'est une nouvelle instance. Je m'attendais à ce qu'il y ait plusieurs icônes Chrome dans le sélecteur de tâches. J'ai fini par trouver une application pour faire quelque chose de similaire à ceci: bahoom.com/hyperswitch
kraftydevil
Je ne sais pas pourquoi votre système ne montre pas une nouvelle instance. Quand je commence une nouvelle instance avec open -n de Safari ou Forklift (à titre d'exemple), ils apparaissent dans le Dock et le commutateur d'applications sous forme de nouvelles versions (ainsi que dans le Moniteur d'activité). Si vous recherchez un autre commutateur d'applications, Sorcière par de nombreuses astuces pourrait être ce que vous voulez. Il permet de changer d'application et de fenêtre.
Dustin Wheeler
2
Ahh, cela semble être quelque chose de différent par rapport à Chrome… plusieurs applications sur mon système (iTerm, Safari, Forklift) démarrent de nouvelles instances, mais Chrome semble avaler la nouvelle instance (Activity Monitor affiche une nouvelle instance lorsque open Si la commande est exécutée, elle disparaît rapidement et la nouvelle fenêtre devient un sous-processus de l'instance de Chrome d'origine).
Dustin Wheeler
6

Ok, une réponse complète pour le cas général et pour Chrome en particulier:

Pour la plupart des applications, lancement avec open -naF "App Name" ou open -nF /path/to/application.app devrait suffire (voir Safari, chariot élévateur à fourche, applications Office, etc.).

  • -n ouvre une nouvelle instance
  • -a raconte open pour regarder dans la liste des applications enregistrées (pas besoin de spécifier le chemin complet, mais peut se tromper si vous avez plusieurs versions d'une application. Je vois parfois des problèmes avec la distinction entre les applications MacOS et les applications installées par les systèmes d'exploitation Parallels… I préférez spécifier le chemin directement.)
  • -F ouvre une nouvelle instance (ignore l'état de sauvegarde d'application laissé par les instances précédentes)

Pour Google Chrome, il faut quelque chose de légèrement différent (modifié à partir de la source dans cet article de blog ). Chrome doit être lancé à partir de la ligne de commande avec le --user-data-dir=/tmp/dir drapeau mis en "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" (spécifiez votre propre répertoire… si vous n'avez besoin que de deux instances, il est probablement préférable de créer une deuxième maison permanente, mais si vous avez besoin d'un nombre arbitraire, il est préférable de créer une fonction shell qui crée un répertoire temporaire aléatoire, puis le supprime à la fermeture.)

L'utilisation de cette méthode génère plusieurs instances de Chrome sur ma machine et empêche Chrome de les consolider sous le même processus maître.

Soit dit en passant, vous souhaiterez peut-être incorporer des indicateurs supplémentaires dans votre fonction de shell pour lancer Chrome… une liste complète (mise à jour automatiquement) est disponible. ici .

Dustin Wheeler
la source
1

La méthode la plus simple est la open -n commander

par exemple. open -n /Applications/Chrome.app/

Tetsujin
la source
Merci. Malheureusement, cela n’a pas eu l’effet escompté ... Avec Chrome, une nouvelle fenêtre s’était ouverte, mais elle était liée à l’instance en cours d’exécution. Avec Terminal, il a créé une nouvelle instance qui a répliqué les fenêtres de l’instance en cours (de manière très bizarre). Pas sûr de savoir comment procéder ici, des conseils supplémentaires appréciés.
garnold
Pas vraiment sûr après ça, désolé. Je viens d'utiliser Spaces & amp; basculer entre les configurations de travail, en fonction de ce que je fais.
Tetsujin
Le comportement de réplication est probablement lié à la fonctionnalité de reprise introduite dans OS X 10.7. Vous pouvez le désactiver sur un par application en utilisant le defaults write commande, ou vous pouvez utiliser le -F drapeau avec open ( par exemple., open -nFa "Terminal" ) pour ouvrir une "nouvelle" instance d'une application (cochez la case man page pour ouvrir).
Dustin Wheeler
0

Vous devrez (éventuellement) finir par exécuter l'application à partir de Terminal.

Vous pouvez soit utiliser le open -n commande depuis Terminal (comme mentionné par @Tetsujin) ou vous pouvez, dans le package de l'application, cliquer sur l'exécutable Application/Contents/MacOS/ )

JMY1000
la source