Farklı Chrome Profilleri için ayrı dock simgelerine sahip olmanın basit bir yolu var mı?


27

OS X 10.8'de Google Chrome sürüm 22 kullanıyorum . Settings->Users"Düzenli" web taramam ve yaptığım web geliştirme için ayrı kullanıcı profillerini (yerel Chrome özelliğini kullanarak oluşturulmuş) kullanıyorum . Sol üst köşedeki avatarı tıklayarak web geliştirme profilimi normal Chrome profili penceresinden başlatıyorum:

görüntü tanımını buraya girin

Şu anda bu profillerin her ikisi de tek bir dok simgesini paylaşıyor. Ancak, her Chrome profilinin kendi dock simgesine sahip olmasını, pencerelerin ayrı ayrı yönetilmesini ve ideal olarak dock simgelerinin bir şekilde ayırt edilmesini tercih ederim. Bu kolayca mümkün mü? 'Kolay' derken, Chrome'u kaynaktan yeniden oluşturmak gibi şeylerin düşüneceğim bir seçenek olmadığını kastediyorum.

Not : Her iki profil için de aynı, istikrarlı Chrome sürümünü kullanmak istiyorum. Aynı sürümün ayrı tutulabildikleri ve dock simgesi ayırt edilebildiği sürece iki kez yüklenmiş olması uygun olacaktır.


Sadece bunun Windows'taki Chrome'un standart bir özelliği olduğunu (en azından v64'te) belirtmek istiyorum. Chrome Settings->UsersChrome'da yeni bir profil oluşturduğunuzda "Bu Kullanıcı için Masaüstü Kısayolu Oluştur" sorulur ve evet'i tıklatırsanız, kullanıcının sağ alt köşesinde yer alan kullanıcının Chrome profil simgesi olan Chrome simgesi olan bir kısayol oluşturur. Uygulama çalışırken, her profilin görev çubuğunda kendi simgesi vardır. Bunu sadece ortaya çıkardım çünkü sonunda bu özelliği macOS versiyonuna getirmelerini umuyorum.
gman

Yanıtlar:


7

İki Chrome'un aynı anda çalışması için ikinci bir çalıştırılabilir Google Chrome Uygulaması oluşturmanız gerekir.

Aşağıdaki betiği çalıştırarak bu ikinci uygulamayı oluşturabilirsiniz. Bu siteden geliyor, okuyucuların rahatlığı için kopyalayıp yapıştırıyorum:

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

Bir dosyaya kaydedin ( create_second_chrome.shMasaüstü klasöründe diyelim ), kabuğu açın ve ikinci Chrome App ile ilişkilendirmek istediğiniz profil klasörünü parametre olarak geçirerek çalıştırın. Çağrılacak Google Chrome profile_folder_name. Diyelim ki Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Şimdi Chrome'un yeni sürümü (başlatabilir Google Chrome Developmentitibaren) ~/Applicationsdizinine. Uygulamaya sağ tıklayıp 'Bilgi Al'ı seçerek farklı bir simge ayarlayabilirsiniz. Bu yeni sürümün dock'ta kendi simgesine sahip olduğunu ve gerekirse oraya yerleştirilebileceğini göreceksiniz.


1
Bu işe görünmüyor. Kendim denilen için ben yeni bir profil oluşturdu Developmentiçinde Settings -> Users. Bu dizini yarattı ~/Library/Application Support/Google/Chrome/Profile 2. Ancak, yürütme open -a "Google Chrome" --args --profile-directory="Profile 2"hala sağ / üst köşedeki avatardan anlatabildiğim gibi eski / orijinal profili açar.
Andrew Ferrier

@AndrewFerrier command + qChrome'u kapatmayı ve iş akışı aracılığıyla yeniden açmayı denediniz mi? Benimle çalışıyor.
Maverik

1
bunu yaparsanız çalışır, evet (yani, Chrome hiç başlatılmadıysa, istenen profili açar). Ancak bir profil zaten başlatılmışsa, bu komutun çalıştırılması, hangi profilin belirtildiğine bakılmaksızın o profil için bir pencere açar. Amaç, her ikisinin de aynı anda açılmasını sağlamak olduğundan, bu soruya yardımcı olmaz.
Andrew Ferrier

@AndrewFerrier Düzenlemeniz için teşekkürler, şimdi cevabı daha iyi! Umarım size yardımcı oldu! Luca
Maverik

1
ben de şimdi değilim! Bir hata yaptım, şimdi iyi görünüyor. Biraz çalışıp çalışmayacak, sorun yaşamaya devam edip etmediğime bakın ...
Andrew Ferrier

4

GÜNCELLEME : Artık bu yöntemi kullanmıyorum. Onun yerine şimdi kullanımı çok daha kolay olan ve daha iyi çalışan Epichrome kullanıyorum. Bu bilgiyle yeni bir cevap gönderdim ve insanların bunu kullanmasını öneriyorum.


Manuel talimatlarla orijinal cevap:

Senaryoyu @Maverick'ten denedim ve kısmen çalıştı (teşekkürler!) Ama bazı zorluklarla karşılaştım. Asıl sorun, Chrome'un sarılmış kopyasının bağımsız olmasına rağmen, kendi simgesine sahip olması ve kendi başına doğru çalışması, diğer uygulamalardan gönderilen URL'leri açmaması, yani Seçici ile çalışmadığıdır.

İşte benim için işe yarayan, örneğin Choosy ile bağlantılar açabilecek ikinci bir Chrome almak için, örneğin:

  1. Kopya Library/Application Support/Google/Chromeiçin Library/Application Support/Google/ChromePersonalev dizininde. Bu isteğe bağlıdır; Chrome Kullanıcı profillerimi yeni örneğe aktarmak istedim. Ancak, yeni bir başlangıç ​​yapmaya başlamanız durumunda bunu atlayabilirsiniz.
  2. Google Chrome.appBaşka bir yere kopyala . Ben kullanılan /Applications/Google Chrome Personal.app.
  3. Wrapper.sh komut dosyasını (altta) uygulamanın Contents/MacOSdizinine kopyala .
  4. chmod +x wrapper.sh
  5. Değiştir Contents/Info.plistbu yeni uygulamada:
    • sarıcı komut dosyasının üzerine gelin ( CFBundleExecutabledeğeri ayarlayın wrapper.sh)
    • benzersiz CFBundleIdentifier(mevcut değere sadece "Kişisel" ekleyin)
    • benzersiz CFBundleName(mevcut değere sadece "Kişisel" ekleyin)
    • benzersiz CFBundleDisplayName(mevcut değere sadece "Kişisel" ekleyin)

İşte benim değiştirilmiş wrapper.sh betiğim. Koyun /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.shve sonra Info.plist'i 4. adımdaki gibi düzenleyin.

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

Bir uyarı: Chrome'un otomatik güncelleme özelliğinin, Chrome güncellemelerinde her seferinde bunu kıracağına inanıyorum; bu, her Chrome güncellemesinden sonra 3. ve 4. adımları tekrar yapmanız gerektiği anlamına geliyor.


Bu talimatların ardından, başlatılmayacak bir uygulama alıyorum
Tom J Nowell,

Üzgünüm @TomJNowell! Sanırım bir adımı kaçırmış olmalıyım. Muhtemelen 755'i wrapper.sh betiğini chmod etmeniz gerekir Benimki çalıştırılabilir. Bunu denerseniz ve sorunu sizin için düzeltirse, cevabı güncelleyebilmem için bana bildirin.
jbyler

chmod + x hile yaptı
Tom J Nowell,

KSProductIDAnahtarı değiştirerek otomatik güncellemeleri önleyebilirsiniz Info.plist. Hakkında sayfasına giderseniz, "KSOmahaServer uygulaması" com.google.ChromePersonal "bilgi düğümü durumu" hatasıyla bilinmeyenApplication '. ... "; el ile güncellemeye çalışırken hata.
webXL

Takip: Güncellemeler benim için değişmeden engellenmiş gibi görünüyor KSProductID. Kullanılabilir bir güncelleme olduğunu söylüyor, ardından Yeniden Başlat'ı tıklatıyorum ve aynı sürüme geri geliyor. Tüm Kullanıcılar İçin Otomatik Güncelleştirmeler özelliği etkin değil, bu yüzden belki de nedeni veya yürütülebilir dosyayı yeniden adlandırdım.
webXL

1

Bu cevapların hiçbiri Mac OS X Yosemite altında kapsamlı bir şekilde benim için çalıştı. İşte size çözümüm, size birden çok örnek, örnekler için bir yerleştirme menüsü ve her örnek için farklı simgeler. Komut dosyasını çalıştırdığınızda otomatik olarak tüm profillerinizden geçer ve sonra ne yapacağınızı söyler.

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

Simgeler için, herhangi bir PNG'yi (veya muhtemelen birçok başka formatı) kullanabilirsiniz.

Daha önce kullanabileceğiniz krom avatarları "~ / Library / Application Support / Google / Chrome / Avatars" - avatar_ninja.png vb.

Ya da kendinizinkini yapın ya da sayısız simge sitelerinden birini kullanın - Easyicon'u seviyorum .

Ayrıca bu muhtemelen yararlı görünüyor - Kullanıcı Profillerini Daha Kolay Bir Şekilde Değiştirmek İçin Chrome'daki Avatarların Nasıl Geri Alınması - açık pencerelerin hızlı bir şekilde tanımlanmasını (denenmemesini) kolaylaştırmak için.

Henüz çalışmayan bir şey, belirli masaüstlerine farklı kullanıcı profili krom örnekleri atama yeteneğidir. Bunun için kullanılan öznitelik değiştirilmişse, tarayıcı başlatıldığında tarayıcının bu profile otomatik olarak giriş yapamaması nedeniyle. Bir forum yazısı ve bu konuda hata raporu yaptım; Aynı zamanda siteye özgü tarayıcılar için de bir problemdir, bu nedenle chrome-ssb-osx projesi bu noktada bir noktada çalışmaya başlayabilir. Buradaki yayınlara 2'den fazla bağlantı eklemeniz gereken 10 itibar puanına sahip değilim (yardım! :-), yukarıdaki komut dosyasındaki bu bağlantılara göz atmanız gerekir ("Bu bölüm devre dışı" bölümü) ).


Bu biraz daha karmaşık bir hal aldığından
Daniel J Clark

1

Şimdi Epichrome'u bu amaç için kullanıyorum . Epichrome, siteye özgü tarayıcılar oluşturmak için tasarlanmıştır, ancak filtreleme kurallarını ve simgesini istediğiniz şekilde ayarlayabilirsiniz, bu nedenle kendi ayrı profili ve dok simgesiyle yalnızca ikinci bir Chrome oluşturabilir. Epichrome tarafından oluşturulan tarayıcılar Google’ın güncelleme mekanizmasıyla birlikte çalışır, bu nedenle hepsi Chrome'un en son sürümüyle güncel kalır.

Basit bir GUI'ye sahiptir - Chrome'un kodlanması veya yeniden derlenmesi gerekmez. Bence bu problem için oldukça sağlam bir çözüm.


-2

Beta sürümünü denediniz mi? Şu anda test edemiyorum, bu yüzden% 100 farklı bir simge olduğundan emin değilim - ve değilse, "canary build" i de deneyebilirsiniz -

Resmi olarak yapının oluşturulmasında o kadar uzak olmamalı, böylece gördüklerinize güvenebilirsiniz. Ve geliştirici profilinizi varsayılan profil haline getirebilirsiniz.


Ne önerdiğin konusunda net değilim. Aynı anda iki farklı Chrome sürümü çalıştırmayı mı öneriyorsunuz? (kararlı ve beta). Gerçekten tahta üzerinde istikrarlı kullanmayı tercih ederim. Yine de önerin için teşekkürler.
Andrew Ferrier

FWIW, Chrome'u Beta kanalından indirdim ve aynı simgeye sahipti, bu yüzden ne yazık ki bu da bana pek yardımcı olmuyor ...
Andrew Ferrier

Bilginize, Chrome Canary aslında farklı bir simge var, ancak daha az kararlı (genel olsa da çalışır).
studgeek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.