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


27

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

inserisci qui la descrizione dell'immagine

Al momento entrambi questi profili condividono una singola icona dock. Tuttavia, preferirei di gran lunga che ogni profilo di Chrome avesse una propria icona dock, con le finestre gestite separatamente - e idealmente per le icone del dock essere distinte in qualche modo. Questo è facilmente possibile? Per "facile", intendo cose come ricostruire Chrome dalla fonte 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 a condizione che possano essere tenute separate e l'icona del dock distinta.


Voglio solo sottolineare che questa è una funzionalità standard di Chrome su Windows (almeno in v64). Quando crei un nuovo profilo in Chrome, Settings->UsersChrome chiede "Crea un collegamento sul desktop per questo utente" e, se fai clic su Sì, crea un collegamento che è l'icona di Chrome con l'icona del profilo di Chrome dell'utente sovrapposta nell'angolo in basso a destra. Quando l'app è in esecuzione, ogni profilo ha la sua icona nella barra delle applicazioni. Lo sollevo solo perché spero che alla fine portino quella funzionalità alla versione macOS.
Gman,

Risposte:


7

Per avere due Chrome in esecuzione contemporaneamente è necessario creare una seconda app Google Chrome eseguibile.

È possibile creare quella 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.shnella cartella Desktop), apri la shell ed eseguilo passando come parametro la cartella del profilo che vuoi associare alla seconda App di Chrome. Si chiamerà Google Chrome profile_folder_name. Supponiamo che Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Ora puoi avviare la nuova versione di Chrome ( Google Chrome Development) dalla ~/Applicationsdirectory. 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 una propria icona sul dock e può essere ancorata lì se necessario.


1
Non sembra funzionare. Ho creato un nuovo profilo per me chiamato Developmentin Settings -> Users. Questo ha creato la directory ~/Library/Application Support/Google/Chrome/Profile 2. Tuttavia, l'esecuzione open -a "Google Chrome" --args --profile-directory="Profile 2"apre ancora il profilo vecchio / originale, come posso dire dall'avatar nell'angolo in alto a destra.
Andrew Ferrier,

@AndrewFerrier Hai provato a chiudere command + qChrome e riaprirlo tramite il flusso di lavoro? Funziona con me
Maverik,

1
funziona se lo fai, sì (cioè se Chrome non viene avviato affatto, apre il profilo desiderato). Ma se un profilo è già stato avviato, l'esecuzione di quel comando riapre una finestra per quel profilo, indipendentemente dal profilo specificato. Questo non aiuta con la domanda, poiché l'obiettivo è quello di avere entrambi aperti contemporaneamente.
Andrew Ferrier,

@AndrewFerrier Grazie per la modifica, ora la risposta è migliore! Spero che ti abbia aiutato! Luca
Maverik,

1
nemmeno io adesso! Sembra che abbia fatto un errore, ora sembra OK. Lo lascerò in funzione per un po ', vedo se continuo a riscontrare problemi ...
Andrew Ferrier,

4

AGGIORNAMENTO : non utilizzo 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 alle persone di usarlo invece.


Risposta originale con istruzioni manuali:

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

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

  1. Copiare Library/Application Support/Google/Chromea Library/Application Support/Google/ChromePersonalnella propria directory home. Questo è facoltativo; Volevo trasferire i miei profili utente Chrome nella nuova istanza. Ma se stai bene ricominciare da capo puoi saltare questo.
  2. Copia Google Chrome.appin un'altra posizione. Ho usato /Applications/Google Chrome Personal.app.
  3. Copia il mio script wrapper.sh (sotto) nella Contents/MacOSdirectory dell'app .
  4. chmod +x wrapper.sh
  5. Modifica Contents/Info.plistin questa nuova app per:
    • puntare allo script wrapper (impostare il CFBundleExecutablevalore su wrapper.sh)
    • avere un unico CFBundleIdentifier(basta aggiungere "Personale" al valore esistente)
    • avere un unico CFBundleName(basta aggiungere "Personale" al valore esistente)
    • avere un unico CFBundleDisplayName(basta aggiungere "Personale" al valore esistente)

Ecco il mio script wrapper.sh modificato. Inseriscilo in /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.she quindi modifica il Info.plist come nel passaggio 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 aggiorna, il che significa che devi ripetere i passaggi 3 e 4 dopo ogni aggiornamento di Chrome.


Seguendo queste istruzioni ottengo un'app che non si avvia
Tom J Nowell,

Siamo spiacenti @TomJNowell! Immagino di aver perso un passo. Probabilmente devi chmod 755 lo script wrapper.sh? Il mio è eseguibile. Se lo provi e risolve il problema per te, fammi sapere in modo da poter aggiornare la risposta?
jbyler,

chmod + x ha fatto il trucco
Tom J Nowell,

È possibile impedire gli aggiornamenti automatici modificando la KSProductIDchiave Info.plist. Se vai alla pagina delle informazioni, vedrai una "app KSOmahaServer" com.google.ChromePersonale "stato nodo informazioni" errore-sconosciutoApplicazione ". ..."; errore durante il tentativo di aggiornamento manuale.
webXL,

Follow-up: gli aggiornamenti sembrano essere disabilitati per me senza modifiche KSProductID. Dice che c'è un aggiornamento disponibile, quindi faccio clic su Riavvia e si riavvia alla stessa versione. Non ho abilitato Aggiornamenti automatici per tutti gli utenti, quindi forse questo è il motivo o che ho rinominato l'eseguibile.
webXL,

1

Nessuna di queste risposte ha funzionato per me in modo completo con Mac OS X Yosemite. Ecco la mia soluzione, che ti dà più istanze, un menu di avvio dock per le istanze e icone diverse per ogni istanza. Quando esegui lo script, passerà automaticamente attraverso tutti i tuoi profili e 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 in "~ / Libreria / Supporto applicazioni / Google / Chrome / Avatar" - avatar_ninja.png ecc.

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

Anche questo sembra probabilmente utile - Come recuperare avatar in Chrome per cambiare più facilmente i profili utente - per rendere più facile l'identificazione (non testata) delle finestre aperte.

Una cosa che non funziona ancora è la possibilità di assegnare istanze Chrome di diversi profili utente a desktop specifici. Questo perché se l'attributo utilizzato per fare ciò viene modificato, il browser non è più in grado di accedere automaticamente a quel profilo all'avvio del browser. Ho pubblicato un post sul forum e segnalato un 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 collegamenti nei post qui (aiuto! :-), quindi dovrai guardare i collegamenti a queste cose nello script sopra (sezione "Questa sezione disabilitata" ).


Dal momento che sta diventando un po 'complesso, le nuove cose andranno tutte su github.com/djbclark/chrome-apartheid
Daniel J Clark,

1

Ora uso Epichrome per questo scopo. Epichrome è progettato per la creazione di browser specifici del sito, ma è possibile impostare le regole di filtro e l'icona come desiderato, quindi è perfettamente in grado di creare un secondo Chrome con il proprio profilo e icona dock separati. I browser creati da Epichrome funzionano con il meccanismo di aggiornamento di Google, quindi rimarranno tutti aggiornati con l'ultima versione di Chrome.

Ha una semplice GUI: non è richiesta alcuna codifica o ricompilazione di Chrome. Penso che sia una soluzione abbastanza solida per questo problema.


-2

Hai provato la versione beta ? Non posso testare in questo momento, quindi non sono sicuro al 100% che sia un'icona diversa - e in caso contrario, puoi anche provare la "costruzione canaria" -

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


Non sono chiaro su cosa stai suggerendo. Stai suggerendo di eseguire due versioni diverse di Chrome contemporaneamente? (stabile e beta). Preferirei davvero usare stable su tutta la linea. Grazie per il suggerimento, comunque.
Andrew Ferrier,

FWIW, ho scaricato Chrome dal canale Beta e ha la stessa icona, quindi sfortunatamente non mi aiuta molto lì ...
Andrew Ferrier,

Cordiali saluti, Chrome Canary in realtà ha un'icona diversa, ma è meno stabile (funziona in generale però).
Studgeek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.