Apakah ada cara sederhana untuk memiliki ikon dok terpisah untuk Profil Chrome yang berbeda?

27

Saya menggunakan Google Chrome versi 22 di OS X 10.8. Saya menggunakan profil pengguna terpisah (dibuat menggunakan fasilitas Chrome asli Settings->Users) untuk penelusuran web "biasa" saya, dan pengembangan web yang saya lakukan. Saya meluncurkan profil pengembangan web saya dari jendela profil Chrome biasa dengan mengklik avatar di sudut kiri atas:

masukkan deskripsi gambar di sini

Saat ini kedua profil ini berbagi satu ikon dok tunggal. Namun, saya lebih suka untuk setiap profil Chrome memiliki ikon dok sendiri, dengan jendela yang dikelola secara terpisah - dan idealnya untuk ikon dok dibedakan dalam beberapa cara. Apakah ini mudah? Dengan 'mudah', maksud saya hal-hal seperti membangun kembali Chrome dari sumber bukan pilihan yang akan saya pertimbangkan.

Catatan : Saya ingin menggunakan Chrome versi yang sama dan stabil untuk kedua profil. Tidak masalah untuk menginstal versi yang sama dua kali selama mereka dapat dipisahkan dan ikon dok dibedakan.

Andrew Ferrier
sumber
Saya hanya ingin menunjukkan ini adalah fitur standar Chrome di Windows (setidaknya di v64). Saat Anda membuat profil baru di Chrome, Settings->UsersChrome bertanya "Buat Pintasan Desktop untuk Pengguna ini" dan jika Anda mengklik ya, itu menciptakan jalan pintas yang merupakan ikon Chrome dengan ikon profil Chrome pengguna yang dilapis di sudut kanan bawah. Ketika aplikasi sedang berjalan, setiap profil memiliki ikonnya sendiri di taskbar. Saya hanya membahas ini karena saya berharap mereka pada akhirnya membawa fitur itu ke versi macOS.
GM

Jawaban:

7

Untuk menjalankan dua Chrome sekaligus, Anda harus membuat Aplikasi Google Chrome yang dapat dijalankan kedua.

Anda dapat membuat aplikasi kedua dengan menjalankan skrip berikut. Itu berasal dari situs ini , saya salin dan tempel untuk kenyamanan pembaca:

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

Simpan di file (misalkan create_second_chrome.shdi folder Desktop), buka shell dan jalankan dengan mengirimkan parameter folder folder yang ingin Anda kaitkan dengan Aplikasi Chrome kedua. Itu akan dipanggil Google Chrome profile_folder_name. Mari kita anggap Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Sekarang Anda dapat meluncurkan versi baru Chrome ( Google Chrome Development) dari ~/Applicationsdirektori. Anda dapat mengatur ikon yang berbeda dengan mengklik kanan aplikasi dan memilih 'Dapatkan Info'. Anda akan melihat bahwa versi baru ini memiliki ikon sendiri di dok dan dapat merapat di sana jika diperlukan.

Maverik
sumber
1
Sepertinya itu tidak berhasil. Saya membuat sebuah profil baru untuk diriku sendiri disebut Developmentdalam Settings -> Users. Ini menciptakan direktori ~/Library/Application Support/Google/Chrome/Profile 2. Namun, mengeksekusi open -a "Google Chrome" --args --profile-directory="Profile 2"masih membuka profil lama / asli, seperti yang saya tahu dari avatar di sudut kanan atas.
Andrew Ferrier
@AndrewFerrier Sudahkah Anda mencoba menutup command + qChrome dan membukanya kembali melalui alur kerja? Itu bekerja dengan saya.
Maverik
1
itu berfungsi jika Anda melakukannya, ya (yaitu jika Chrome tidak dimulai sama sekali, itu membuka profil yang diinginkan). Tetapi jika satu profil sudah dimulai, mengeksekusi perintah itu membuka kembali jendela untuk profil itu, terlepas dari profil yang ditentukan. Itu tidak membantu dengan pertanyaan, karena tujuannya adalah untuk membuka keduanya secara bersamaan.
Andrew Ferrier
@AndrewFerrier Terima kasih atas hasil edit Anda, sekarang jawabannya lebih baik! Semoga ini bisa membantu Anda! Luca
Maverik
1
aku juga tidak sekarang! Sepertinya saya melakukan kesalahan, sepertinya OK sekarang. Akan membiarkannya berjalan sedikit, lihat apakah saya terus mengalami masalah ...
Andrew Ferrier
4

PEMBARUAN : Saya tidak lagi menggunakan metode ini. Sebaliknya saya sekarang menggunakan Epichrome yang jauh lebih mudah digunakan dan bekerja lebih baik. Saya mengirim jawaban baru dengan informasi ini dan saya menyarankan orang menggunakannya.


Jawaban asli dengan instruksi manual:

Saya mencoba skrip dari @Maverick dan sebagian berhasil (terima kasih!) Tetapi saya mengalami beberapa kesulitan. Masalah utama adalah bahwa salinan Chrome yang dibungkus, meskipun independen, memiliki ikon sendiri, dan berfungsi dengan benar sendiri, tidak dapat membuka URL yang dikirim dari aplikasi lain, sehingga tidak bekerja dengan Choosy.

Inilah yang berhasil bagi saya, untuk mendapatkan Chrome kedua yang dapat membuka tautan melalui Choosy, misalnya:

  1. Salin Library/Application Support/Google/Chromeke Library/Application Support/Google/ChromePersonaldalam direktori home Anda. Ini opsional; Saya ingin mentransfer profil Pengguna Chrome saya ke instance baru. Tetapi jika Anda baik-baik saja, Anda dapat melewati ini.
  2. Salin Google Chrome.appke lokasi lain. Saya menggunakan /Applications/Google Chrome Personal.app.
  3. Salin skrip wrapper.sh saya (di bawah) ke Contents/MacOSdirektori aplikasi .
  4. chmod +x wrapper.sh
  5. Ubah Contents/Info.plistdalam aplikasi baru ini untuk:
    • arahkan ke skrip wrapper (setel CFBundleExecutablenilai ke wrapper.sh)
    • miliki yang unik CFBundleIdentifier(cukup tambahkan "Pribadi" ke nilai yang ada)
    • miliki yang unik CFBundleName(cukup tambahkan "Pribadi" ke nilai yang ada)
    • miliki yang unik CFBundleDisplayName(cukup tambahkan "Pribadi" ke nilai yang ada)

Berikut ini skrip wrapper.sh saya yang dimodifikasi. Letakkan di /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.shlalu edit Info.plist seperti pada langkah 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"

Satu peringatan: Saya yakin fitur pembaruan otomatis Chrome akan mematahkan ini setiap kali pembaruan Chrome, artinya Anda perlu melakukan kembali langkah 3 dan 4 setelah setiap pembaruan Chrome.

jbyler
sumber
Mengikuti petunjuk ini, saya mendapatkan aplikasi yang tidak akan diluncurkan
Tom J Nowell
Maaf @ TomJNowell! Saya kira saya pasti melewatkan satu langkah. Mungkin Anda harus chmod 755 skrip wrapper.sh? Milik saya dapat dieksekusi. Jika Anda mencobanya dan itu memperbaiki masalah Anda, beri tahu saya agar saya dapat memperbarui jawabannya?
jbyler
chmod + x melakukan trik
Tom J Nowell
Anda dapat mencegah pembaruan otomatis dengan mengubah KSProductIDkunci masuk Info.plist. Jika Anda pergi ke halaman tentang, Anda akan melihat "com.google app KSOmahaServer aplikasi 'status simpul info' kesalahan-unknownApplication '. ..."; kesalahan saat mencoba memperbarui secara manual.
webXL
Tindak lanjut: Pembaruan tampaknya dinonaktifkan untuk saya tanpa mengubah KSProductID. Dikatakan ada pembaruan yang tersedia, lalu saya klik Luncurkan Ulang, dan diluncurkan kembali ke versi yang sama. Saya tidak memiliki Pembaruan Otomatis untuk Semua Pengguna yang diaktifkan, jadi mungkin itulah alasannya atau saya mengganti namanya menjadi yang dapat dieksekusi.
webXL
1

Tidak satu pun dari jawaban ini yang bekerja untuk saya secara komprehensif di bawah Mac OS X Yosemite. Inilah solusi saya, yang memberi Anda beberapa instance, menu peluncuran dock untuk instance, dan ikon berbeda untuk setiap instance. Saat Anda menjalankan skrip, skrip akan secara otomatis menelusuri semua profil Anda, dan kemudian memberi tahu Anda apa yang harus dilakukan selanjutnya.

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

Untuk ikon, Anda dapat menggunakan PNG (atau mungkin banyak format lainnya).

Avatar chrome yang mungkin sudah Anda gunakan berada di bawah "~ / Perpustakaan / Dukungan Aplikasi / Google / Chrome / Avatar" - avatar_ninja.png dll.

Atau buat sendiri, atau gunakan salah satu dari banyak situs ikon - Saya suka Easyicon .

Ini juga mungkin terlihat berguna - Cara Mendapatkan Kembali Avatar di Chrome untuk Mengubah Profil Pengguna dengan Lebih Mudah - untuk membuat jendela yang terbuka lebih mudah untuk dengan cepat diidentifikasi (tidak diuji).

Satu hal yang belum berfungsi adalah kemampuan untuk menetapkan instance chrome profil pengguna yang berbeda untuk desktop tertentu. Ini karena jika atribut yang digunakan untuk melakukan ini diubah, browser tidak lagi dapat secara otomatis masuk ke profil itu ketika browser mulai. Saya telah membuat posting forum dan laporan bug tentang masalah ini; itu juga masalah untuk browser khusus situs, sehingga proyek chrome-ssb-osx mungkin bisa berfungsi di beberapa titik. Saya tidak memiliki 10 poin reputasi yang diperlukan untuk memasukkan lebih dari 2 tautan di pos di sini (tolong! :-), jadi Anda harus melihat tautan ke hal-hal ini dalam skrip di atas (bagian "Bagian ini dinonaktifkan" ).

Daniel J Clark
sumber
Karena ini semakin rumit, barang-barang baru semuanya akan masuk ke github.com/djbclark/chrome-apartheid
Daniel J Clark
1

Saya sekarang menggunakan Epichrome untuk tujuan ini. Epichrome dirancang untuk membuat browser khusus situs, tetapi Anda dapat mengatur aturan pemfilteran dan ikon sesuai keinginan Anda, sehingga sangat mampu hanya menciptakan Chrome kedua dengan profil terpisah dan ikon dok. Peramban yang dibuat Epichrome berfungsi dengan mekanisme pembaruan Google, sehingga mereka semua akan tetap terbarui dengan Chrome versi terbaru.

Ia memiliki GUI sederhana — tidak diperlukan pengodean atau kompilasi ulang Chrome. Saya pikir ini solusi yang cukup solid untuk masalah ini.

jbyler
sumber
-2

Sudahkah Anda mencoba versi beta ? Saya tidak dapat menguji sekarang, jadi saya tidak 100% yakin itu ikon yang berbeda - dan jika tidak, Anda juga dapat mencoba "membangun kenari" -

Seharusnya tidak terlalu jauh dari bangunan resmi dalam hal rendering sehingga Anda dapat mempercayai apa yang Anda lihat. Dan Anda dapat menjadikan profil pengembang Anda sebagai default.

Loïc Wolff
sumber
Saya tidak jelas tentang apa yang Anda sarankan. Apakah Anda menyarankan menjalankan dua versi Chrome yang berbeda secara bersamaan? (stabil dan beta). Saya lebih suka menggunakan stabil di seluruh papan. Terima kasih atas sarannya.
Andrew Ferrier
FWIW, saya mengunduh Chrome dari saluran Beta dan memiliki ikon yang sama, jadi sayangnya itu tidak banyak membantu saya di sana ...
Andrew Ferrier
FYI, Chrome Canary sebenarnya memiliki ikon yang berbeda, tetapi kurang stabil (umumnya berfungsi).
Studgeek