50 votes

Existe-t-il un moyen simple d'avoir des icônes de dock distinctes pour les différents profils Chrome ?

J'utilise Google Chrome version 22 sur OS X 10.8. J'utilise des profils d'utilisateurs distincts (créés à l'aide de la fonction native de Chrome dans Settings->Users ) pour ma navigation web "normale" et le développement web que je fais. Je lance mon profil de développement web à partir de la fenêtre de profil normale de Chrome en cliquant sur l'avatar dans le coin supérieur gauche :

enter image description here

Pour l'instant, ces deux profils partagent une même icône dans le dock. Cependant, je préférerais que chaque profil Chrome ait sa propre icône de dock, avec Windows géré séparément - et idéalement que les icônes de dock soient distinguées d'une manière ou d'une autre. Est-ce facilement réalisable ? Par "facile", je veux dire que des choses comme reconstruire Chrome à partir des sources ne sont pas une option que j'envisagerai.

Note : J'aimerais utiliser la même version stable de Chrome pour les deux profils. Il n'y a pas de problème à ce que la même version soit installée deux fois, à condition qu'elles soient séparées et que l'icône du dock soit distincte.

19voto

Ilya Ryzhenkov Points 5731

Pour faire fonctionner deux Chrome en même temps, vous devez créer une deuxième application Google Chrome exécutable.

Vous pouvez créer cette deuxième application en exécutant le script suivant. Il provient de ce site Je fais un copier-coller pour faciliter la tâche des lecteurs :

#!/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"

Enregistrez-le dans un fichier (disons create_second_chrome.sh dans le dossier Desktop), ouvrez le shell et exécutez-le en passant en paramètre le dossier de profil que vous souhaitez associer à la deuxième application Chrome. Il s'appellera Google Chrome profile_folder_name . Supposons que Google Chrome Development :

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Vous pouvez maintenant lancer la nouvelle version de Chrome ( Google Chrome Development ) de l ~/Applications répertoire. Vous pouvez définir une icône différente en cliquant avec le bouton droit de la souris sur l'application et en sélectionnant "Get Info". Vous verrez que cette nouvelle version a sa propre icône sur le dock et qu'elle peut y être ancrée si nécessaire.

6voto

jbyler Points 211

MISE À JOUR : Je n'utilise plus cette méthode. J'utilise maintenant Epichrome qui est beaucoup plus facile à utiliser et fonctionne mieux. J'ai posté un nouvelle réponse avec cette information et je suggère aux gens de l'utiliser à la place.


Réponse originale avec instructions manuelles :

J'ai essayé le script de @Maverick et cela a partiellement fonctionné (merci !) mais j'ai rencontré quelques difficultés. Le principal problème est que la copie enveloppée de Chrome, bien qu'elle soit indépendante, qu'elle ait sa propre icône et qu'elle fonctionne correctement toute seule, ne peut pas ouvrir les URL envoyées par d'autres applications, et ne fonctionne donc pas avec Choosy.

Voici ce qui a fonctionné pour moi, pour obtenir un deuxième Chrome qui peut ouvrir des liens via Choosy, par exemple :

  1. Copie Library/Application Support/Google/Chrome a Library/Application Support/Google/ChromePersonal dans votre répertoire personnel. Cette opération est facultative ; j'ai voulu transférer mes profils d'utilisateur Chrome vers la nouvelle instance. Mais si vous voulez repartir à zéro, vous pouvez sauter cette étape.
  2. Copie Google Chrome.app à un autre endroit. J'ai utilisé /Applications/Google Chrome Personal.app .
  3. Copier mon wrapper.sh script (ci-dessous) dans le fichier Contents/MacOS répertoire.
  4. chmod +x wrapper.sh
  5. Modifier Contents/Info.plist dans cette nouvelle application pour :
    • pointe vers le wrapper script (set CFBundleExecutable à la valeur wrapper.sh )
    • disposent d'un CFBundleIdentifier (il suffit d'ajouter "Personnel" à la valeur existante)
    • disposent d'un CFBundleName (il suffit d'ajouter "Personnel" à la valeur existante)
    • disposent d'un CFBundleDisplayName (il suffit d'ajouter "Personnel" à la valeur existante)

Voici mon wrapper.sh modifié script. Je l'ai placé à /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.sh puis modifiez le fichier Info.plist comme à l'étape 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"

Une mise en garde : je pense que la fonction de mise à jour automatique de Chrome interrompt ce processus à chaque mise à jour de Chrome, ce qui signifie que vous devez refaire les étapes 3 et 4 après chaque mise à jour de Chrome.

3voto

jbyler Points 211

J'utilise maintenant Epichrome à cette fin. Epichrome est conçu pour créer des navigateurs spécifiques à un site, mais vous pouvez configurer les règles de filtrage et l'icône comme vous le souhaitez, de sorte qu'il est parfaitement capable de créer un second Chrome avec son propre profil et sa propre icône de dock. Les navigateurs créés par Epichrome fonctionnent avec le mécanisme de mise à jour de Google, de sorte qu'ils restent tous à jour avec la dernière version de Chrome.

Il dispose d'une interface graphique simple - aucun codage ou recompilation de Chrome n'est nécessaire. Je pense que c'est une solution assez solide pour ce problème.

2voto

Daniel J Clark Points 41

Aucune de ces réponses n'a fonctionné pour moi de manière complète sous Mac OS X Yosemite. Voici ma solution, qui vous donne plusieurs instances, un menu de lancement du dock pour les instances, et des icônes différentes pour chaque instance. Lorsque vous exécutez le script, il passe automatiquement en revue tous vos profils et vous indique la marche à suivre.

#!/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

Pour les icônes, vous pouvez utiliser n'importe quel format PNG (ou probablement d'autres formats).

Les avatars chrome auxquels vous êtes peut-être déjà habitué se trouvent dans "~/Library/Application Support/Google/Chrome/Avatars" - avatar_ninja.png etc.

Vous pouvez également créer votre propre icône ou utiliser l'un des nombreux sites d'icônes - j'aime bien Easyicon .

Ceci semble également utile - Comment récupérer les avatars dans Chrome pour changer plus facilement de profil d'utilisateur ? - pour faciliter l'identification rapide des fenêtres ouvertes (non testé).

Une chose qui ne fonctionne pas encore est la possibilité d'assigner des instances de chrome de profils d'utilisateurs différents à des bureaux spécifiques. En effet, si l'attribut utilisé pour ce faire est modifié, le navigateur n'est plus en mesure de se connecter automatiquement à ce profil lorsqu'il démarre. J'ai publié un message sur le forum et un rapport de bogue à ce sujet ; c'est également un problème pour les navigateurs spécifiques à un site, de sorte que le projet chrome-ssb-osx pourrait y remédier à un moment ou à un autre. Je n'ai pas les 10 points de réputation nécessaires pour inclure plus de 2 liens dans les messages ici (au secours ! :-), donc vous devrez regarder les liens vers ces choses dans le script ci-dessus (section "Cette section est désactivée").

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