Gibt es eine einfache Möglichkeit, separate Dock-Symbole für verschiedene Chrome-Profile zu haben?

Ich verwende Google Chrome Version 22 unter OS X 10.8. Ich verwende separate Benutzerprofile (die mit der nativen Chrome-Funktion in erstellt wurden Settings->Users) für mein "normales" Surfen im Internet und die von mir durchgeführte Webentwicklung. Ich starte mein Webentwicklungsprofil aus dem normalen Chrome-Profilfenster, indem ich auf den Avatar in der oberen linken Ecke klicke:

Geben Sie hier die Bildbeschreibung ein

Im Moment teilen sich diese beiden Profile ein einziges Dock-Symbol. Ich würde es jedoch viel bevorzugen, wenn jedes Chrome-Profil ein eigenes Dock-Symbol hat, wobei die Fenster separat verwaltet werden - und idealerweise, dass die Dock-Symbole auf irgendeine Weise unterschieden werden. Ist dies ohne weiteres möglich? Mit „einfach“ meine ich, dass Dinge wie das Neuerstellen von Chrome aus dem Quellcode keine Option sind, die ich in Betracht ziehe.

Hinweis : Ich möchte für beide Profile dieselbe stabile Version von Chrome verwenden. Es wäre in Ordnung, dieselbe Version zweimal zu installieren, solange sie getrennt bleiben und das Dock-Symbol unterschieden werden kann.

Ich möchte nur darauf hinweisen, dass dies eine Standardfunktion von Chrome unter Windows ist (zumindest in v64). Wenn Sie ein neues Profil in Chrome Settings->Userserstellen, fragt Chrome „Erstellen Sie eine Desktop-Verknüpfung für diesen Benutzer“ und wenn Sie auf Ja klicken, wird eine Verknüpfung erstellt, die das Chrome-Symbol mit dem Chrome-Profilsymbol des Benutzers ist, das in der rechten unteren Ecke eingeblendet ist. Wenn die App ausgeführt wird, hat jedes Profil ein eigenes Symbol in der Taskleiste. Ich erwähne das nur, weil ich hoffe, dass sie diese Funktion irgendwann in die macOS-Version bringen.

Antworten (4)

Damit zwei Chrome gleichzeitig laufen, müssen Sie eine zweite lauffähige Google Chrome App erstellen.

Sie können diese zweite Anwendung erstellen, indem Sie das folgende Skript ausführen. Es kommt von dieser Seite , ich kopiere und füge es für die Bequemlichkeit der Leser ein:

#!/bin/bash

PROFILE_NAME=$1
mkdir -p "/Applications/Google Chrome $1.app/Contents/MacOS"

F="/Applications/Google Chrome $1.app/Contents/MacOS/Google Chrome $1"
cat > "$F" <<\EOF
#!/bin/bash

#
# Google Chrome for Mac with additional profile.
#

# Name your profile:
EOF

echo "PROFILE_NAME='$PROFILE_NAME'\n" >> "$F"

cat >> "$F" <<\EOF
# Store the profile here:
PROFILE_DIR="/Users/$USER/Library/Application Support/Google/Chrome/${PROFILE_NAME}"

# Find the Google Chrome binary:
CHROME_APP=$(mdfind 'kMDItemCFBundleIdentifier == "com.google.Chrome"' | head -1)
CHROME_BIN="$CHROME_APP/Contents/MacOS/Google Chrome"
if [[ ! -e "$CHROME_BIN" ]]; then
  echo "ERROR: Can not find Google Chrome.  Exiting."
  exit -1
fi

# Start me up!
exec "$CHROME_BIN" --enable-udd-profiles --user-data-dir="$PROFILE_DIR"
EOF

sudo chmod +x "$F"

Speichern Sie es in einer Datei (sagen wir create_second_chrome.shim Desktop-Ordner), öffnen Sie die Shell und führen Sie es aus, indem Sie als Parameter den Profilordner übergeben, den Sie der zweiten Chrome-App zuordnen möchten. Es wird aufgerufen Google Chrome profile_folder_name. Nehmen wir an Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Jetzt können Sie die neue Version von Chrome ( Google Chrome Development) aus dem ~/ApplicationsVerzeichnis starten. Sie können ein anderes Symbol festlegen, indem Sie mit der rechten Maustaste auf die App klicken und „Informationen abrufen“ auswählen. Sie werden sehen, dass diese neue Version ein eigenes Symbol im Dock hat und dort bei Bedarf angedockt werden kann.

Das scheint nicht zu funktionieren. Ich habe ein neues Profil für mich selbst erstellt und Developmentangerufen Settings -> Users. Dadurch wurde das Verzeichnis erstellt ~/Library/Application Support/Google/Chrome/Profile 2. Das Ausführen open -a "Google Chrome" --args --profile-directory="Profile 2"öffnet jedoch immer noch das alte/ursprüngliche Profil, wie ich am Avatar in der oberen rechten Ecke erkennen kann.
@AndrewFerrier Haben Sie versucht, command + qChrome zu schließen und über den Workflow erneut zu öffnen? Bei mir funktioniert es.
es funktioniert, wenn man das macht, ja (dh wenn Chrome gar nicht gestartet wird, öffnet es das gewünschte Profil). Wenn jedoch ein Profil bereits gestartet wurde, öffnet die Ausführung dieses Befehls erneut ein Fenster für dieses Profil, unabhängig davon, welches Profil angegeben ist. Das hilft bei der Frage nicht weiter, da das Ziel darin besteht, beide gleichzeitig geöffnet zu haben.
@AndrewFerrier Danke für deine Bearbeitung, jetzt die Antwort besser! Hoffe es hat dir geholfen! Lukas
@AndrewFerrier Möchtest du zwei verschiedene Symbole haben? Korrigieren Sie mich, wenn ich falsch liege, aber die Symbole sollten das einzige Problem sein, oder?
@AndrewFerrier Ich habe versucht, das Symbol ( command+ iin der neuen App und Drag & Drop rechts neben dem Google Chrome-Entwicklungsnamen) des zweiten Chrome zu ändern, und ich habe dieses Problem nicht.
ich auch jetzt nicht! Anscheinend habe ich einen Fehler gemacht, es scheint jetzt in Ordnung zu sein. Werde es noch eine Weile laufen lassen, mal sehen ob ich weiterhin Probleme habe...
Während das Kopieren des Symbols im Finder und OSX-Anwendungsumschalter funktionierte, scheint es in Activity Monitor oder Witch nicht funktioniert zu haben. Ich vermute, dass diese Tools eher den Prozess als das App-Bundle für das Symbol betrachten. Irgendwelche Gedanken, wie man das beheben kann?
Es scheint, dass es in allen Fällen funktioniert, außer beim Ziehen von Links. Wenn Sie "echte" Chrome finden, werden sie auch dann geöffnet, wenn das Drop-Ziel eine andere App-Instanz war.
Ich sehe etwas Ähnliches wie @AndreyTatarinov. Wenn ich versuche, eine URL an das umschlossene Chrome zu senden, öffnet es kurz etwas, das wie eine weitere Instanz des umschlossenen Chromes aussieht, das sofort beendet wird. Das umschlossene Chrome öffnet ein neues Fenster mit der Standardseite (nicht der URL, die ich öffnen wollte). Dies bedeutet, dass das umschlossene Chrome beispielsweise nicht mit Choosy funktioniert. Ich denke, es hat etwas damit zu tun, dass LaunchServices die verpackte Version nicht als unabhängige Anwendung erkennt, aber ich habe versucht, eine Info.plist mit einer anderen hinzuzufügen CFBundleIdentifier, und das hat das Problem nicht behoben.
Hallo @Maverik, ich denke, dieses Skript verwechselt das, worauf die --user-data-dirOption zeigt. Es weist auf etwas hin, das aufgerufen wird PROFILE_DIR , /Users/$USER/Library/Application Support/Google/Chrome/${PROFILE_NAME}als ob das Profil ein Chrome-Benutzer wäre. Aber in Wirklichkeit muss dies eine Ebene höher sein. Ich denke, Sie sollten es nennen CHROME_DATAoder INSTANCE_DATAund Sie sollten es unter /Users/$USER/Library/Application Support/Google/Chrome${PROFILE_NAME}: neben dem vorhandenen ChromeVerzeichnis ablegen, nicht darin.
Ich bin auf ein Problem gestoßen, bei dem das Symbol zufällig auf die Standardeinstellung zurückgesetzt wurde. Und ich brauchte einen anderen Prozessnamen, um andere Skripte zu verwenden. Ich habe einen Symlink in der Chrome-App hinzugefügt, um dies zu beheben. Ersetzen Sie den exec-Aufruf im Antwortskript durch Folgendes:# Create a symlink in the Google Chrome app so we control the process name SYMLINK="$CHROME_APP/Contents/MacOS/Google Chrome ${PROFILE_NAME}" if [[ ! -e "$SYMLINK" ]]; then ln -s "$CHROME_APP/Contents/MacOS/Google Chrome" "$SYMLINK" fi # Start me up! exec "$SYMLINK" --enable-udd-profiles --user-data-dir="$PROFILE_DIR"

UPDATE : Ich verwende diese Methode nicht mehr. Stattdessen verwende ich jetzt Epichrome , das viel einfacher zu verwenden ist und besser funktioniert. Ich habe eine neue Antwort mit diesen Informationen gepostet und schlage vor, dass die Leute stattdessen diese verwenden.


Originalantwort mit manueller Anleitung:

Ich habe das Skript von @Maverick ausprobiert und es hat teilweise funktioniert (danke!), aber ich bin auf einige Schwierigkeiten gestoßen. Das Hauptproblem besteht darin, dass die verpackte Kopie von Chrome, obwohl sie unabhängig ist, ein eigenes Symbol hat und eigenständig korrekt funktioniert, keine URLs öffnen kann, die von anderen Anwendungen gesendet wurden, sodass sie nicht mit Choosy funktioniert.

Hier ist, was für mich funktioniert hat, um zum Beispiel ein zweites Chrome zu bekommen, das Links über Choosy öffnen kann:

  1. Kopieren Sie Library/Application Support/Google/Chromein Library/Application Support/Google/ChromePersonalIhr Home-Verzeichnis. Dies ist optional; Ich wollte meine Chrome-Benutzerprofile auf die neue Instanz übertragen. Aber wenn Sie mit einem Neuanfang einverstanden sind, können Sie dies überspringen.
  2. Google Chrome.appAn einen anderen Ort kopieren . Ich habe verwendet /Applications/Google Chrome Personal.app.
  3. Kopieren Sie mein wrapper.sh-Skript (unten) in das Contents/MacOSVerzeichnis der App.
  4. chmod +x wrapper.sh
  5. Ändern Sie Contents/Info.plistin dieser neuen App zu:
    • Zeigen Sie auf das Wrapper-Skript (setzen Sie den CFBundleExecutableWert auf wrapper.sh)
    • einen eindeutigen Wert haben CFBundleIdentifier(fügen Sie einfach "Personal" zum vorhandenen Wert hinzu)
    • einen eindeutigen Wert haben CFBundleName(fügen Sie einfach "Personal" zum vorhandenen Wert hinzu)
    • einen eindeutigen Wert haben CFBundleDisplayName(fügen Sie einfach "Personal" zum vorhandenen Wert hinzu)

Hier ist mein modifiziertes wrapper.sh-Skript. Setzen Sie es auf /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.shund bearbeiten Sie dann die Info.plist wie in Schritt 4.

#!/bin/bash

# Wrapper script that starts independent instance of Google Chrome for Mac

# To use: copy Google Chrome.app to a new location.  Copy this script into
# the Contents/MacOS directory of the copied app.  Edit the copied app's
# Contents/Info.plist and change CFBundleExecutable to "wrapper.sh",
# and pick a unique CFBundleIdentifier.

# Instance data will be stored here.  You can copy your existing data 
# to this location if you want to preserve your existing user profile(s).
# You can also change this if you want to store the data somewhere else.
INSTANCE_DIR="/Users/$USER/Library/Application Support/Google/ChromePersonal"

# Find the Google Chrome binary:
CHOME_BIN="$(dirname "$0")/Google Chrome"

# Start Chrome
exec "$CHOME_BIN" --user-data-dir="$INSTANCE_DIR"

Eine Einschränkung: Ich glaube, dass die automatische Update-Funktion von Chrome dies jedes Mal unterbricht, wenn Chrome aktualisiert wird, was bedeutet, dass Sie die Schritte 3 und 4 nach jedem Chrome-Update wiederholen müssen.

Wenn ich diese Anweisungen befolge, erhalte ich eine App, die nicht gestartet werden kann
Entschuldigung @TomJNowell! Ich glaube, ich muss einen Schritt ausgelassen haben. Wahrscheinlich müssen Sie das wrapper.sh-Skript chmod 755? Meine ist ausführbar. Wenn Sie das versuchen und es das Problem für Sie behebt, lassen Sie es mich wissen, damit ich die Antwort aktualisieren kann.
chmod +x hat es geschafft
Sie können automatische Updates verhindern, indem Sie den KSProductIDSchlüssel in ändern Info.plist. Wenn Sie auf die About-Seite gehen, sehen Sie einen „KSOmahaServer app 'com.google.ChromePersonal' info node status 'error-unknownApplication'. ...“; Fehler beim Versuch, manuell zu aktualisieren.
Follow-up: Updates scheinen für mich ohne Änderung deaktiviert zu sein KSProductID. Es sagt, dass ein Update verfügbar ist, dann klicke ich auf Neu starten und es wird mit derselben Version neu gestartet. Ich habe Automatische Updates für alle Benutzer nicht aktiviert, vielleicht ist das der Grund dafür oder dass ich die ausführbare Datei umbenannt habe.

Ich benutze jetzt Epichrome für diesen Zweck. Epichrome wurde zum Erstellen von standortspezifischen Browsern entwickelt, aber Sie können die Filterregeln und das Symbol nach Belieben einrichten, sodass es perfekt in der Lage ist, einfach ein zweites Chrome mit seinem eigenen separaten Profil und Dock-Symbol zu erstellen. Von Epichrome erstellte Browser funktionieren mit dem Update-Mechanismus von Google, sodass sie alle mit der neuesten Version von Chrome auf dem neuesten Stand bleiben.

Es hat eine einfache GUI – keine Codierung oder Neukompilierung von Chrome erforderlich. Ich denke, es ist eine ziemlich solide Lösung für dieses Problem.

Haben Sie Epichrome mit Detangle verglichen ?

Keine dieser Antworten hat für mich unter Mac OS X Yosemite umfassend funktioniert. Hier ist meine Lösung, die Ihnen mehrere Instanzen, ein Dock-Startmenü für die Instanzen und verschiedene Symbole für jede Instanz bietet. Wenn Sie das Skript ausführen, durchläuft es automatisch alle Ihre Profile und sagt Ihnen dann, was als nächstes zu tun ist.

#!/bin/bash

# cdi.sh - Make chrome profiles behave like multiple browsers on Mac OS X
#          (Tested on Yoshmite). Make profiles work like seperate applications
#          - esp. useful if you want to easily switch between different browsers
#          in different virtual desktops / workspaces, or don't want work
#          windows mixed in with home windows in the "Window" menu, or want to
#          be able to easily see what processes are with a certain profile in
#          chrome task manager, or be able to eaisly quit one profile with
#          multiple windows open and start where you left of later.

set -e

cd /Users/$USER/Library/Application\ Support/Google/Chrome

CDI="cdi-chrome-multiple-profile-instances-in-dock-with-different-icons.d"
APPLESCRIPTS="$CDI/Applescript-Sources"
LAUNCHERS="$CDI/Chrome-Launchers"
RUNTIMES="$CDI/Chrome-Runtimes"
test -d $CDI || mkdir $CDI
test -d $APPLESCRIPTS || mkdir $APPLESCRIPTS
test -d $LAUNCHERS || mkdir $LAUNCHERS
test -d $RUNTIMES || mkdir $RUNTIMES

grep '"username"' Profile*/Preferences Default/Preferences | grep -v '               ' | awk -F : '{print $1";"$3}' | sed 's:/Preferences::g' | sed 's:\@:-at-:g' | sed 's/;\ /;/g' > $CDI/profiles.txt
# Like: Profile 1;"webmaster-at-example.org"

echo "Be patient, this involves copying a lot of data..."

while read PROFILE; do

DIR="$(echo $PROFILE | awk -F\; '{print $1}')"
# Like: DIR='Profile 1'
echo "Working on profile: $DIR"

LINK="$(echo $PROFILE | awk -F\; '{print $2}' | sed 's/\ /\-/g' | sed 's/"//g' | sed 's/^/cdi-profile-/g')"
# Like: cdi-profile-webmaster-at-example.org

APP="$(echo $LINK | sed 's/^cdi-profile-//g' | sed 's/$/-DO-NOT-RUN-DIRECTLY-JUST-USE-FOR-CHANGING-ICON-cdi\.app/g')"
# Like: webmaster-at-example.org-DO-NOT-RUN-DIRECTLY-JUST-USE-FOR-CHANGING-ICON-cdi.app

SHIM="$(echo $LINK | sed 's/^cdi-profile-//g' | sed 's/$/\.app/g')"
# Like: webmaster-at-example.org.app

TXT="$APPLESCRIPTS/$(echo $LINK | sed 's:^cdi-profile-:chrome-:g' | sed 's/$/\.txt/g')"
# Like:
# cdi-chrome-multiple-profile-instances-in-dock-with-different-icons.d
# /Applescript-Sources/chrome-webmaster-at-example.org.txt

test -L "$LINK" || ln -s "$DIR" "$LINK"
cd "$LINK"
test -L Default || ln -s . Default
cd /Users/$USER/Library/Application\ Support/Google/Chrome
test -d "$RUNTIMES/$APP" || cp -R /Applications/Google\ Chrome.app "$RUNTIMES/$APP"

## This section disabled because enabling it makes automatic profile login not work.
## There is a chance someone who knows more about chrome will help at some point; see:
## https://code.google.com/p/chromium/issues/detail?id=460787
## https://groups.google.com/a/chromium.org/forum/#!topic/chromium-discuss/0HEeMuh8WqA
## https://github.com/lhl/chrome-ssb-osx
# Change Bundle ID so desktop assignation works. Not sure if this will survive updates.
# CFBundleIdentifier must contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters.
# (Based on fiddling around there also seems to be a length limit.)
#UUID="$(echo $APP | md5sum | awk '{print $1}' | tr [0-9] [A-Z] | cut -c 1-4,29-32)"
#plutil -replace CFBundleIdentifier -string "cdi.$UUID" -- "$RUNTIMES/$APP/Contents/Info.plist"
#plutil -replace CFBundleName -string "$UUID" -- "$RUNTIMES/$APP/Contents/Info.plist"
#plutil -replace CFBundleDisplayName -string "$UUID" -- "$RUNTIMES/$APP/Contents/Info.plist"
#plutil -replace KSProductID -string "cdi.$UUID" -- "$RUNTIMES/$APP/Contents/Info.plist"
# To check: defaults read ~/Library/Preferences/com.apple.spaces.plist app-bindings

echo "on run" > $TXT
echo -n "do shell script " >> $TXT
echo -n '"' >> $TXT
echo -n "/Users/$USER/Library/Application\\\\ Support/Google/Chrome/$RUNTIMES/$APP/Contents/MacOS/Google\\\\ Chrome --user-data-dir=/Users/$USER/Library/Application\\\\ Support/Google/Chrome/$LINK" >> $TXT
echo ' > /dev/null 2>&1 &"' >> $TXT
echo "quit" >> $TXT
echo "end run" >> $TXT
test -d "$LAUNCHERS/$SHIM" || osacompile -o "$LAUNCHERS/$SHIM" $TXT

done < $CDI/profiles.txt

echo
echo 'Done with automated portion. Now you should manually:'
echo
echo '1. Add (identical) icons of your choice to each pair of profile Launchers'
echo '   / Runtimes in the folder ~/Library/Application Support/Google/Chrome/'
echo '   cdi-chrome-multiple-profile-instances-in-dock-with-different-icons.d'
echo '   (google for numerous guides on how to change mac os x app icons)'
echo
echo '2. From the finder, drag the "Chrome-Launchers" folder to the stacks area'
echo '   of the dock. Right click on the stack and select "List" for easy viewing.'
echo '   Also select "Display as Folder" and give the folder a nice icon.'
echo
echo '3. BE SURE to only open Chrome via this stack. DO NOT pin the app-area'
echo '   Chrome icon(s) to the app area of the dock! DO NOT run "normal" Chrome!'
echo
echo 'The only exception to (3) is if you need to add a new profile. In that case,'
echo 'close all instances, then open the "normal" Chrome, add profile, close, and'
echo 'then run this script again.'
echo
echo 'Note: when you launch first time you will get "Welcome to Google Chrome"'
echo '      dialog box. This is normal; do not worry. It will ask if you want'
echo '      to set Chrome as default; this applies to that instance of chrome.'
echo '      Choosy - http://www.choosyosx.com/ - works great with this!'
echo

Für Symbole können Sie jedes PNG (oder wahrscheinlich viele andere Formate) verwenden.

Unter "~/Library/Application Support/Google/Chrome/Avatars" - avatar_ninja.png etc. - befinden sich die Chrome-Avatare, an die Sie vielleicht schon gewöhnt sind.

Oder erstellen Sie Ihre eigenen oder verwenden Sie eine der zahlreichen Icon-Sites - ich mag Easyicon .

Auch dies sieht möglicherweise nützlich aus - So erhalten Sie Avatare in Chrome zurück, um Benutzerprofile einfacher zu wechseln -, damit die geöffneten Fenster leichter und schneller identifiziert werden können (ungetestet).

Eine Sache, die noch nicht funktioniert, ist die Möglichkeit, bestimmten Desktops verschiedene Benutzerprofil-Chrome-Instanzen zuzuweisen. Denn wenn das dafür verwendete Attribut geändert wird, kann sich der Browser beim Start des Browsers nicht mehr automatisch bei diesem Profil anmelden. Ich habe einen Forenbeitrag und einen Fehlerbericht zu diesem Problem erstellt; Es ist auch ein Problem für seitenspezifische Browser, sodass das Projekt chrome-ssb-osx dies möglicherweise irgendwann zum Laufen bringt. Ich habe nicht die 10 Reputationspunkte, die erforderlich sind, um mehr als 2 Links in Posts hier einzufügen (Hilfe! :-), also müssen Sie sich die Links zu diesen Dingen im obigen Skript ansehen ("Dieser Abschnitt ist deaktiviert") ).

Da dies etwas komplex wird, werden alle neuen Sachen auf github.com/djbclark/chrome-apartheid gehen