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

26

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

Bildbeschreibung hier eingeben

Momentan teilen sich diese beiden Profile ein einzelnes Dock-Symbol. Ich würde es jedoch vorziehen, wenn jedes Chrome-Profil ein eigenes Dock-Symbol hat, wobei die Fenster separat verwaltet werden - und im Idealfall, wenn die Dock-Symbole in irgendeiner Weise voneinander unterschieden werden. Ist das leicht möglich? Mit "einfach" meine ich, dass Dinge wie das Neuerstellen von Chrome aus dem Quellcode keine Option sind, die ich in Betracht ziehen werde.

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 gehalten und das Dock-Symbol unterschieden werden kann.

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

Antworten:

7

Damit zwei Chrome gleichzeitig ausgeführt werden, müssen Sie eine zweite ausführbare 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 der Bequemlichkeit halber 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 (z. B. create_second_chrome.shim Desktop-Ordner), öffnen Sie die Shell und führen Sie es aus, indem Sie den Profilordner, den Sie der zweiten Chrome-App zuordnen möchten, als Parameter übergeben. Es wird gerufen 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 heraus starten . Sie können ein anderes Symbol festlegen, indem Sie mit der rechten Maustaste auf die App klicken und "Informationen" auswählen. Sie werden sehen, dass diese neue Version ein eigenes Symbol im Dock hat und bei Bedarf dort angedockt werden kann.

Maverik
quelle
1
Das scheint nicht zu funktionieren. Ich habe ein neues Profil für mich genannt Developmentin Settings -> Users. Dadurch wurde das Verzeichnis erstellt ~/Library/Application Support/Google/Chrome/Profile 2. Beim Ausführen wird jedoch open -a "Google Chrome" --args --profile-directory="Profile 2"immer noch das alte / ursprüngliche Profil geöffnet, wie ich aus dem Avatar in der oberen rechten Ecke ersehen kann.
Andrew Ferrier
@AndrewFerrier Haben Sie versucht, command + qChrome mithilfe des Workflows zu schließen und erneut zu öffnen? Das funktioniert bei mir.
Maverik
1
es funktioniert, wenn Sie das tun, ja (dh wenn Chrome überhaupt nicht gestartet wird, öffnet es das gewünschte Profil). Wenn jedoch bereits ein Profil gestartet ist, wird durch Ausführen dieses Befehls ein Fenster für dieses Profil erneut geöffnet, unabhängig davon, welches Profil angegeben ist. Das hilft bei der Frage nicht weiter, da das Ziel darin besteht, beide gleichzeitig zu öffnen.
Andrew Ferrier
@ AndrewFerrier Danke für deine Bearbeitung, jetzt ist die Antwort besser! Hoffe es hat dir geholfen! Luca
Maverik
1
bin ich jetzt auch nicht! Scheint, ich habe einen Fehler gemacht, es scheint jetzt in Ordnung. Ich lasse es für eine
Andrew Ferrier
4

UPDATE : Ich benutze 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 ich schlage vor, dass die Leute diese stattdessen verwenden.


Originalantwort mit manuellen Anweisungen:

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 umschlossene Kopie von Chrome, obwohl sie unabhängig ist, ein eigenes Symbol hat und von sich aus ordnungsgemäß funktioniert, keine von anderen Anwendungen gesendeten URLs öffnen kann und daher nicht mit Choosy funktioniert.

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

  1. Kopieren Sie Library/Application Support/Google/Chromeauf Library/Application Support/Google/ChromePersonalin Ihrem Home - Verzeichnis. Dies ist optional. Ich wollte meine Chrome-Nutzerprofile auf die neue Instanz übertragen. Aber wenn Sie in Ordnung 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:
    • zeige auf das Wrapper-Skript (setze den CFBundleExecutableWert auf wrapper.sh)
    • haben ein einzigartiges CFBundleIdentifier(fügen Sie einfach "Persönlich" zum vorhandenen Wert hinzu)
    • haben ein einzigartiges CFBundleName(fügen Sie einfach "Persönlich" zum vorhandenen Wert hinzu)
    • haben ein einzigartiges CFBundleDisplayName(fügen Sie einfach "Persönlich" 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 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, die automatische Aktualisierungsfunktion von Chrome wird dies jedes Mal unterbrechen, wenn Chrome aktualisiert wird. Dies bedeutet, dass Sie die Schritte 3 und 4 nach jedem Chrome-Update erneut ausführen müssen.

jbyler
quelle
Tom J Nowell,
Entschuldigung @TomJNowell! Ich muss wohl einen Schritt verpasst haben. Wahrscheinlich müssen Sie das wrapper.sh-Skript chmod 755? Meins 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?
jbyler
chmod + x hat den Trick gemacht
Tom J Nowell
Sie können automatische Updates verhindern, indem Sie die KSProductIDTastatureingabe ändern Info.plist. Wenn Sie zur About-Seite wechseln, wird eine "KSOmahaServer-App" mit dem Status "error-unknownApplication" für den Info-Node "com.google.ChromePersonal" angezeigt. ... "; Fehler beim Versuch, manuell zu aktualisieren.
webXL
Follow-up: Updates scheinen für mich deaktiviert zu sein, ohne sie zu ändern KSProductID. Es heißt, dass ein Update verfügbar ist, dann klicke ich auf "Neu starten" und es wird auf die gleiche Version zurückgesetzt. Ich habe keine automatischen Updates für alle Benutzer aktiviert. Vielleicht ist dies der Grund, oder ich habe die ausführbare Datei umbenannt.
webXL
1

Keine dieser Antworten funktionierte für mich unter Mac OS X Yosemite auf umfassende Weise. 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, werden automatisch alle Ihre Profile durchsucht, und Sie erfahren, 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 ein beliebiges PNG (oder wahrscheinlich viele andere Formate) verwenden.

Die Chrome-Avatare, mit denen Sie möglicherweise bereits vertraut sind, befinden sich unter "~ / Library / Application Support / Google / Chrome / Avatars" - avatar_ninja.png usw.

Oder erstellen Sie Ihre eigenen oder nutzen Sie eine der zahlreichen Icon-Sites - Easyicon gefällt mir .

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

Eine Sache, die noch nicht funktioniert, ist die Möglichkeit, bestimmten Desktops unterschiedliche Chrome-Instanzen für Benutzerprofile zuzuweisen. Dies liegt daran, dass sich der Browser beim Starten des Browsers nicht mehr automatisch bei diesem Profil anmelden kann, wenn das dazu verwendete Attribut geändert wird. Ich habe einen Forumsbeitrag und einen Fehlerbericht zu diesem Problem verfasst. Dies ist auch ein Problem für sitespezifische Browser, sodass das chrome-ssb-osx-Projekt möglicherweise irgendwann zum Laufen kommt. Ich habe nicht die 10 Reputationspunkte, die benötigt werden, um mehr als 2 Links in Posts hier aufzunehmen (Hilfe! :-), also musst du dir die Links zu diesen Dingen im obigen Skript ansehen (Abschnitt "Dieser Abschnitt ist deaktiviert") ).

Daniel J Clark
quelle
Da dies etwas komplexer wird, werden alle neuen Inhalte auf github.com/djbclark/chrome-apartheid
Daniel J Clark,
0

Ich benutze jetzt Epichrome für diesen Zweck. Epichrome wurde für die Erstellung von Website-spezifischen Browsern entwickelt. Sie können jedoch die Filterregeln und das Symbol nach Belieben einrichten, sodass Sie problemlos ein zweites Chrome mit einem eigenen Profil und einem eigenen Dock-Symbol erstellen können. Von Epichrome erstellte Browser arbeiten mit dem Aktualisierungsmechanismus von Google, sodass alle mit der neuesten Version von Chrome auf dem neuesten Stand sind.

Es hat eine einfache Benutzeroberfläche - keine Kodierung oder Neukompilierung von Chrome erforderlich. Ich denke, es ist eine ziemlich solide Lösung für dieses Problem.

jbyler
quelle
-2

Hast du die Beta- Version ausprobiert ? Ich kann derzeit keine Tests durchführen, daher bin ich mir nicht 100% sicher, ob es sich um ein anderes Symbol handelt. Wenn nicht, können Sie auch den "Canary Build" ausprobieren.

Es sollte in Bezug auf das Rendering nicht so weit vom offiziellen Build entfernt sein, damit Sie dem vertrauen können, was Sie sehen. Und Sie können Ihr Entwicklerprofil zum Standardprofil machen.

Loïc Wolff
quelle
Mir ist nicht klar, was Sie vorschlagen. Schlagen Sie vor, zwei verschiedene Chrome-Versionen gleichzeitig auszuführen? (stabil und beta). Ich würde wirklich lieber Stall auf ganzer Linie verwenden. Vielen Dank für den Vorschlag.
Andrew Ferrier
FWIW, ich habe Chrome vom Beta-Kanal heruntergeladen und es hat das gleiche Symbol, also hilft mir das leider auch dort nicht viel ...
Andrew Ferrier
Zu Ihrer Information, Chrome Canary hat tatsächlich ein anderes Symbol, aber es ist weniger stabil (es funktioniert aber im Allgemeinen).
Studgeek