Esiste un modo semplice per avere icone di dock separate per i diversi profili Chrome?

24

Sto utilizzando Google Chrome versione 22 su OS X 10.8. Io uso profili utente separati (creati utilizzando la funzione nativa di Chrome in Settings->Users ) per la mia navigazione web "regolare" e lo sviluppo web che faccio. Lancio il mio profilo di sviluppo web dalla normale finestra del profilo di Chrome facendo clic sull'avatar nell'angolo in alto a sinistra:

Almomentoentrambiquestiprofilicondividonoun'unicaiconadeldock.Tuttavia,preferireicheciascunprofilodiChromeavesselapropriaiconadeldock,conlefinestregestiteseparatamente-eidealmenteperdistinguereleiconedeldockinqualchemodo.Èfacilmentepossibile?Per"facile", voglio dire che cose come la ricostruzione di Chrome dal sorgente non sono un'opzione che prenderò in considerazione.

Nota : vorrei utilizzare la stessa versione stabile di Chrome per entrambi i profili. Sarebbe OK avere la stessa versione installata due volte il tempo in cui possono essere mantenute separate e l'icona del dock distinta.

    
posta Andrew Ferrier 08.10.2012 - 15:37
fonte

5 risposte

6

Per avere due Chrome in esecuzione allo stesso tempo devi creare una seconda app Google Chrome eseguibile.

È possibile creare la seconda applicazione eseguendo il seguente script. Viene da questo sito , copio e incollo per comodità dei lettori:

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

Salvalo in un file (diciamo create_second_chrome.sh nella cartella Desktop), apri la shell ed eseguila passando come parametro la cartella del profilo che desideri associare alla seconda app di Chrome. Sarà chiamato Google Chrome profile_folder_name . Supponiamo che Google Chrome Development :

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Ora puoi lanciare la nuova versione di Chrome ( Google Chrome Development ) dalla directory ~/Applications . Puoi impostare un'icona diversa facendo clic con il pulsante destro del mouse sull'app e selezionando "Ottieni informazioni". Vedrai che questa nuova versione ha la sua icona sul dock e può essere ancorata lì, se necessario.

    
risposta data 11.10.2012 - 16:09
fonte
4

UPDATE : non uso più questo metodo. Invece ora uso Epichrome che è molto più facile da usare e funziona meglio. Ho pubblicato una nuova risposta con queste informazioni e suggerisco che le persone lo usino invece.

Risposta originale con istruzioni manuali:

Ho provato la sceneggiatura di @Maverick e in parte ha funzionato (grazie!), ma ho incontrato alcune difficoltà. Il problema principale è che la copia avvolta di Chrome, sebbene sia indipendente, ha una sua icona e funziona correttamente da sola, non può aprire URL inviati da altre applicazioni, quindi non funziona con Choosy.

Ecco cosa ha funzionato per me, per ottenere un secondo Chrome che può aprire link tramite Choosy, ad esempio:

  1. Copia Library/Application Support/Google/Chrome in Library/Application Support/Google/ChromePersonal nella tua home directory. Questo è opzionale; Volevo trasferire i miei profili utente di Chrome nella nuova istanza. Ma se stai andando bene, puoi saltare questo passaggio.
  2. Copia Google Chrome.app in un'altra posizione. Ho usato /Applications/Google Chrome Personal.app .
  3. Copia il mio script wrapper.sh (sotto) nella directory Contents/MacOS dell'app.
  4. chmod +x wrapper.sh
  5. Modifica Contents/Info.plist in questa nuova app per:
    • punta allo script wrapper (imposta CFBundleExecutable valore su wrapper.sh )
    • ha un CFBundleIdentifier unico (aggiungi semplicemente "Personale" al valore esistente)
    • ha un CFBundleName unico (aggiungi semplicemente "Personale" al valore esistente)
    • ha un CFBundleDisplayName unico (aggiungi semplicemente "Personale" al valore esistente)

Ecco il mio script wrapper.sh modificato. Mettilo su /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.sh e poi modifica Info.plist come al punto 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"

Un avvertimento: credo che la funzione di aggiornamento automatico di Chrome interromperà ogni volta che Chrome si aggiorna, il che significa che devi ripetere i passaggi 3 e 4 dopo ogni aggiornamento di Chrome.

    
risposta data 29.08.2014 - 01:53
fonte
1

Nessuna di queste risposte ha funzionato per me in modo completo con Mac OS X Yosemite. Ecco la mia soluzione, che offre più istanze, un menu di avvio dock per le istanze e icone diverse per ogni istanza. Quando esegui lo script, passerà automaticamente a tutti i tuoi profili e poi ti dirà cosa fare dopo.

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

Per le icone, puoi usare qualsiasi PNG (o probabilmente molti altri formati).

Gli avatar di Chrome a cui potresti già essere abituato si trovano sotto "~ / Libreria / Supporto applicazioni / Google / Chrome / Avatars" - avatar_ninja.png ecc.

Oppure creane uno tuo o utilizza uno dei numerosi siti di icone: mi piace Easyicon .

Anche questo sembra utile - Come recuperare gli avatar in Chrome per cambiare i profili utente in modo più semplice - per rendere le finestre aperte più facili da identificare rapidamente (non testate).

Una cosa che non funziona ancora è la possibilità di assegnare diverse istanze di chrome del profilo utente a desktop specifici. Questo perché se l'attributo utilizzato per farlo viene modificato, il browser non è più in grado di accedere automaticamente a quel profilo all'avvio del browser. Ho creato un post sul forum e una segnalazione di bug su questo problema; è anche un problema per i browser specifici del sito, quindi il progetto chrome-ssb-osx potrebbe farlo funzionare a un certo punto. Non ho i 10 punti reputazione necessari per includere più di 2 link nei post qui (help! :-), quindi dovrai guardare i link a queste cose nello script sopra (sezione "Questa sezione disabilitata" ).

    
risposta data 17.02.2015 - 01:20
fonte
0

Ora utilizzo Epichrome per questo scopo. Epichrome è progettato per la creazione di browser specifici del sito, ma puoi impostare le regole di filtro e l'icona come preferisci, quindi è perfettamente in grado di creare solo un secondo Chrome con il suo profilo separato e l'icona del dock. I browser creati da Epicromo funzionano con il meccanismo di aggiornamento di Google, quindi saranno tutti aggiornati con l'ultima versione di Chrome.

Ha una semplice interfaccia grafica: non richiede la codifica o la ricompilazione di Chrome. Penso che sia una soluzione piuttosto solida per questo problema.

    
risposta data 15.05.2018 - 00:53
fonte
-2

Hai provato la versione beta ? Non posso testare adesso, quindi non sono sicuro al 100% che sia un'icona diversa - e se no, puoi anche provare la "build canary" -

Non dovrebbe essere così lontano dalla build ufficiale in termini di rendering, così puoi fidarti di quello che vedi. E puoi impostare il tuo profilo sviluppatore come predefinito.

    
risposta data 08.10.2012 - 16:14
fonte

Leggi altre domande sui tag