Có cách nào đơn giản để có các biểu tượng dock riêng cho các Cấu hình Chrome khác nhau không?


27

Tôi đang sử dụng Google Chrome phiên bản 22 trên OS X 10.8. Tôi sử dụng các hồ sơ người dùng riêng biệt (được tạo bằng tiện ích Chrome gốc Settings->Users) để duyệt web "thông thường" và phát triển web mà tôi làm. Tôi khởi chạy hồ sơ phát triển web của mình từ cửa sổ hồ sơ Chrome thông thường bằng cách nhấp vào hình đại diện ở góc trên cùng bên trái:

nhập mô tả hình ảnh ở đây

Hiện tại cả hai hồ sơ này đều có chung một biểu tượng dock. Tuy nhiên, tôi rất muốn mỗi cấu hình Chrome có biểu tượng dock riêng, với các cửa sổ được quản lý riêng - và lý tưởng là các biểu tượng dock được phân biệt theo một cách nào đó. Điều này có dễ dàng không? 'Dễ', ý tôi là những thứ như xây dựng lại Chrome từ nguồn không phải là một lựa chọn tôi sẽ xem xét.

Lưu ý : Tôi muốn sử dụng cùng một phiên bản Chrome ổn định cho cả hai cấu hình. Sẽ ổn khi cài đặt cùng một phiên bản miễn là chúng có thể được tách riêng và biểu tượng dock được phân biệt.


Tôi chỉ muốn chỉ ra đây là một tính năng tiêu chuẩn của Chrome trên Windows (ít nhất là trong phiên bản 64). Khi bạn tạo một cấu hình mới trong Chrome, Settings->UsersChrome sẽ hỏi "Tạo lối tắt trên màn hình cho người dùng này" và nếu bạn nhấp vào, nó sẽ tạo một lối tắt đó là biểu tượng Chrome với biểu tượng hồ sơ Chrome của người dùng được phủ ở góc dưới bên phải. Khi ứng dụng đang chạy, mỗi cấu hình có biểu tượng riêng trên thanh tác vụ. Tôi chỉ đưa ra điều này vì tôi hy vọng cuối cùng họ sẽ đưa tính năng đó lên phiên bản macOS.
gman

Câu trả lời:


7

Để có hai Chrome chạy cùng lúc, bạn cần tạo Ứng dụng Google Chrome có thể chạy thứ hai.

Bạn có thể tạo ứng dụng thứ hai đó bằng cách chạy đoạn script sau. Nó xuất phát từ trang web này , tôi sao chép và dán để thuận tiện cho độc giả:

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

Lưu nó trong một tệp (giả sử create_second_chrome.shtrong thư mục Desktop), mở shell và thực hiện nó bằng cách chuyển dưới dạng tham số thư mục hồ sơ bạn muốn liên kết với Ứng dụng Chrome thứ hai. Nó sẽ được gọi Google Chrome profile_folder_name. Hãy giả sử Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

Bây giờ bạn có thể khởi chạy phiên bản Chrome ( Google Chrome Development) mới từ ~/Applicationsthư mục. Bạn có thể đặt biểu tượng khác bằng cách nhấp chuột phải vào ứng dụng và chọn 'Nhận thông tin'. Bạn sẽ thấy phiên bản mới này có biểu tượng riêng trên dock và có thể được neo ở đó nếu cần.


1
Điều đó dường như không hoạt động. Tôi đã tạo một hồ sơ mới cho chính mình được gọi Developmentvào Settings -> Users. Điều này tạo ra thư mục ~/Library/Application Support/Google/Chrome/Profile 2. Tuy nhiên, thực thi open -a "Google Chrome" --args --profile-directory="Profile 2"vẫn mở hồ sơ cũ / gốc, như tôi có thể nói từ hình đại diện ở góc trên bên phải.
Andrew Ferrier

@AndrewFerrier Bạn đã thử đóng command + qChrome và sao lưu nó bằng quy trình công việc chưa? Nó làm việc với tôi.
Maverik

1
nó hoạt động nếu bạn làm điều đó, vâng (nghĩa là nếu Chrome hoàn toàn không bắt đầu, nó sẽ mở cấu hình mong muốn). Nhưng nếu một cấu hình đã được bắt đầu, thực thi lệnh đó sẽ mở lại một cửa sổ cho cấu hình đó, bất kể cấu hình nào được chỉ định. Điều đó không giúp ích gì cho câu hỏi, vì mục tiêu là mở cả hai cùng một lúc.
Andrew Ferrier

@AndrewFerrier Cảm ơn bạn đã chỉnh sửa, bây giờ câu trả lời sẽ tốt hơn! Hy vọng nó đã giúp bạn! Luca
Maverik

1
tôi cũng không Có vẻ như tôi đã phạm sai lầm, có vẻ như bây giờ vẫn ổn. Sẽ để nó chạy một chút, xem tôi có tiếp tục gặp sự cố không ...
Andrew Ferrier

4

CẬP NHẬT : Tôi không còn sử dụng phương pháp này. Thay vào đó bây giờ tôi sử dụng Epichrom dễ sử dụng hơn và hoạt động tốt hơn. Tôi đã đăng một câu trả lời mới với thông tin này và tôi đề nghị mọi người sử dụng nó để thay thế.


Câu trả lời gốc với hướng dẫn thủ công:

Tôi đã thử kịch bản từ @Maverick và nó đã hoạt động một phần (cảm ơn!) Nhưng tôi gặp một số khó khăn. Vấn đề chính là bản sao được bọc của Chrome, mặc dù độc lập nhưng có biểu tượng riêng và hoạt động chính xác, không thể mở URL được gửi từ các ứng dụng khác, do đó, nó không hoạt động với Choosy.

Đây là những gì làm việc cho tôi, để có được một Chrome thứ hai có thể mở các liên kết thông qua Choosy, ví dụ:

  1. Sao chép Library/Application Support/Google/Chromevào Library/Application Support/Google/ChromePersonaltrong thư mục chính của bạn. Đây là tùy chọn; Tôi muốn chuyển qua hồ sơ Người dùng Chrome của mình sang phiên bản mới. Nhưng nếu bạn ổn bắt đầu mới, bạn có thể bỏ qua.
  2. Sao chép Google Chrome.appvào một vị trí khác. Tôi đã sử dụng /Applications/Google Chrome Personal.app.
  3. Sao chép tập lệnh Wrapper.sh của tôi (bên dưới) vào Contents/MacOSthư mục của ứng dụng .
  4. chmod +x wrapper.sh
  5. Sửa đổi Contents/Info.plisttrong ứng dụng mới này để:
    • trỏ đến tập lệnh bao bọc (đặt CFBundleExecutablegiá trị thành wrapper.sh)
    • có một duy nhất CFBundleIdentifier(chỉ cần thêm "Cá nhân" vào giá trị hiện có)
    • có một duy nhất CFBundleName(chỉ cần thêm "Cá nhân" vào giá trị hiện có)
    • có một duy nhất CFBundleDisplayName(chỉ cần thêm "Cá nhân" vào giá trị hiện có)

Đây là kịch bản Wrapper.sh đã sửa đổi của tôi. Đặt nó tại /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.shvà sau đó chỉnh sửa Info.plist như trong bước 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"

Một cảnh báo: Tôi tin rằng tính năng tự động cập nhật của Chrome sẽ phá vỡ điều này mỗi lần cập nhật Chrome, nghĩa là bạn cần thực hiện lại các bước 3 và 4 sau mỗi lần cập nhật Chrome.


Thực hiện theo các hướng dẫn này, tôi nhận được một ứng dụng sẽ không khởi chạy
Tom J Nowell

Xin lỗi @TomJNowell! Tôi đoán tôi đã bỏ lỡ một bước. Có lẽ bạn phải chmod 755 tập lệnh Wrapper.sh? Của tôi là thực thi. Nếu bạn thử điều đó và nó khắc phục vấn đề cho bạn, hãy cho tôi biết để tôi có thể cập nhật câu trả lời?
jbyler

chmod + x đã thực hiện mánh khóe
Tom J Nowell

Bạn có thể ngăn cập nhật tự động bằng cách thay đổi KSProductIDkhóa trong Info.plist. Nếu bạn truy cập trang giới thiệu, bạn sẽ thấy "ứng dụng KSOmahaServer 'com.google.ChromPersonal' trạng thái nút thông tin 'error-unknownApplication'. ..."; lỗi khi cố gắng cập nhật thủ công.
webXL

Theo dõi: Cập nhật dường như bị vô hiệu hóa đối với tôi mà không thay đổi KSProductID. Nó nói có một bản cập nhật có sẵn, sau đó tôi nhấp vào Khởi chạy lại và nó khởi chạy lại cùng một phiên bản. Tôi không bật Cập nhật tự động cho tất cả người dùng, vì vậy có lẽ đó là lý do hoặc tôi đã đổi tên thành thực thi.
webXL

1

Không có câu trả lời nào trong số này trả lời cho tôi một cách toàn diện theo Mac OS X Yosemite. Đây là giải pháp của tôi, cung cấp cho bạn nhiều phiên bản, menu khởi chạy dock cho các phiên bản và các biểu tượng khác nhau cho mỗi phiên bản. Khi bạn chạy tập lệnh, nó sẽ tự động đi qua tất cả các cấu hình của bạn và sau đó cho bạn biết phải làm gì tiếp theo.

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

Đối với các biểu tượng, bạn có thể sử dụng bất kỳ PNG (hoặc có thể nhiều định dạng khác).

Các avatar chrome mà bạn có thể đã được sử dụng được đặt trong "~ / Thư viện / Hỗ trợ ứng dụng / Google / Chrome / Avatars" - avatar_ninja.png, v.v.

Hoặc tự tạo hoặc sử dụng một trong nhiều trang web biểu tượng - Tôi thích Easyicon .

Ngoài ra, điều này có vẻ hữu ích - Cách lấy lại Avatars trong Chrome để chuyển đổi hồ sơ người dùng dễ dàng hơn - để giúp các cửa sổ mở dễ dàng xác định nhanh hơn (chưa được kiểm tra).

Một điều chưa hoạt động là khả năng gán các phiên bản chrome hồ sơ người dùng khác nhau cho các máy tính để bàn cụ thể. Điều này là do nếu thuộc tính được sử dụng để làm điều này bị thay đổi, trình duyệt không còn có thể tự động đăng nhập vào hồ sơ đó khi trình duyệt khởi động. Tôi đã thực hiện một bài viết diễn đàn và báo cáo lỗi về vấn đề này; nó cũng là một vấn đề đối với các trình duyệt dành riêng cho trang web, vì vậy dự án chrome-ssb-osx có thể khiến điều này hoạt động vào một lúc nào đó. Tôi không có 10 điểm danh tiếng cần thiết để bao gồm hơn 2 liên kết trong các bài đăng ở đây (trợ giúp! :-), vì vậy bạn sẽ phải xem các liên kết đến những điều này trong tập lệnh ở trên (phần "Phần này bị vô hiệu hóa" ).


Vì việc này hơi phức tạp, mọi thứ mới sẽ được chuyển đến github.com/djbclark/chrome-apartheid
Daniel J Clark

1

Bây giờ tôi sử dụng Epichrome cho mục đích này. Epichrom được thiết kế để tạo các trình duyệt dành riêng cho trang web, nhưng bạn có thể thiết lập quy tắc lọc và biểu tượng theo ý muốn, do đó, nó hoàn toàn có khả năng tạo Chrome thứ hai với biểu tượng dock và cấu hình riêng biệt. Các trình duyệt được tạo bằng Epichrom hoạt động với cơ chế cập nhật của Google, vì vậy tất cả chúng sẽ luôn cập nhật với phiên bản Chrome mới nhất.

Nó có GUI GUI đơn giản không cần mã hóa hoặc biên dịch lại Chrome. Tôi nghĩ đó là một giải pháp khá vững chắc cho vấn đề này.


-2

Bạn đã thử bản beta chưa? Tôi không thể kiểm tra ngay bây giờ, vì vậy tôi không chắc chắn 100% đó là một biểu tượng khác - và nếu không, bạn cũng có thể thử "xây dựng hoàng yến" -

Không nên đi quá xa bản dựng chính thức về mặt kết xuất để bạn có thể tin tưởng vào những gì bạn nhìn thấy. Và bạn có thể làm cho hồ sơ nhà phát triển của bạn là mặc định.


Tôi không rõ những gì bạn đang đề xuất. Bạn có đề xuất chạy hai phiên bản Chrome khác nhau cùng một lúc không? (ổn định và beta). Tôi thực sự muốn sử dụng ổn định trên bảng. Nhờ đề nghị mặc dù.
Andrew Ferrier

FWIW, tôi đã tải xuống Chrome từ kênh Beta và nó có cùng một biểu tượng, thật không may, điều đó cũng không giúp tôi nhiều ở đó ...
Andrew Ferrier

FYI, Chrome Canary thực sự có một biểu tượng khác, nhưng nó kém ổn định hơn (mặc dù nó hoạt động chung).
studgeek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.