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:
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.
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.sh
im 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 ~/Applications
Verzeichnis 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.
Development
angerufen 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.command + q
Chrome zu schließen und über den Workflow erneut zu öffnen? Bei mir funktioniert es.command
+ i
in der neuen App und Drag & Drop rechts neben dem Google Chrome-Entwicklungsnamen) des zweiten Chrome zu ändern, und ich habe dieses Problem nicht.CFBundleIdentifier
, und das hat das Problem nicht behoben.--user-data-dir
Option 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_DATA
oder INSTANCE_DATA
und Sie sollten es unter /Users/$USER/Library/Application Support/Google/Chrome${PROFILE_NAME}
: neben dem vorhandenen Chrome
Verzeichnis ablegen, nicht darin.# 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:
Library/Application Support/Google/Chrome
in Library/Application Support/Google/ChromePersonal
Ihr 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.Google Chrome.app
An einen anderen Ort kopieren . Ich habe verwendet /Applications/Google Chrome Personal.app
.Contents/MacOS
Verzeichnis der App.chmod +x wrapper.sh
Contents/Info.plist
in dieser neuen App zu:
CFBundleExecutable
Wert auf wrapper.sh
)CFBundleIdentifier
(fügen Sie einfach "Personal" zum vorhandenen Wert hinzu)CFBundleName
(fügen Sie einfach "Personal" zum vorhandenen Wert hinzu)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.sh
und 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.
KSProductID
Schlü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.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.
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") ).
Mann
Settings->Users
erstellen, 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.