Я использую Google Chrome версии 22 на OS X 10.8. Я использую отдельные профили пользователей (созданные с помощью встроенной функции Chrome в Settings->Users
) для «обычного» просмотра веб-страниц и веб-разработки, которой я занимаюсь. Я запускаю свой профиль веб-разработки из обычного окна профиля Chrome, щелкнув аватарку в верхнем левом углу:
На данный момент оба этих профиля имеют один и тот же значок в доке. Тем не менее, я бы предпочел, чтобы каждый профиль Chrome имел свой собственный значок в доке с окнами, управляемыми отдельно, и в идеале, чтобы значки в доке каким-то образом различались. Это легко возможно? Под «простым» я подразумеваю такие вещи, как восстановление Chrome из исходного кода, которые я не рассматриваю.
Примечание . Я хотел бы использовать одну и ту же стабильную версию Chrome для обоих профилей. Было бы нормально, если бы одна и та же версия была установлена дважды, если их можно хранить отдельно, а значок док-станции различать.
Для одновременного запуска двух Chrome вам необходимо создать второе работающее приложение Google Chrome.
Вы можете создать это второе приложение, запустив следующий скрипт. Это взято с этого сайта , я копирую и вставляю для удобства читателей:
#!/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"
Сохраните его в файле (скажем, create_second_chrome.sh
в папке «Рабочий стол»), откройте оболочку и запустите его, передав в качестве параметра папку профиля, которую вы хотите связать со вторым приложением Chrome. Он будет называться Google Chrome profile_folder_name
. Предположим Google Chrome Development
:
$ cd ~/Desktop
$ . create_second_chrome.sh Development
Теперь вы можете запустить новую версию Chrome ( Google Chrome Development
) из ~/Applications
каталога. Вы можете установить другой значок, щелкнув правой кнопкой мыши приложение и выбрав «Получить информацию». Вы увидите, что эта новая версия имеет собственный значок в доке и при необходимости может быть прикреплена к нему.
Development
названием Settings -> Users
. Это создало каталог ~/Library/Application Support/Google/Chrome/Profile 2
. Однако выполнение open -a "Google Chrome" --args --profile-directory="Profile 2"
по-прежнему открывает старый/исходный профиль, как я могу судить по аватару в правом верхнем углу.command + q
Chrome и снова открыть его с помощью рабочего процесса? Это работает со мной.command
+ i
в новом приложении и перетащить справа от имени разработки Google Chrome) второго Chrome, и у меня нет этой проблемы.CFBundleIdentifier
, и это не решило проблему.--user-data-dir
указывает опция. Он указывает на то, что вызывается PROFILE_DIR
, /Users/$USER/Library/Application Support/Google/Chrome/${PROFILE_NAME}
как если бы профиль был пользователем Chrome. Но на самом деле это должно быть на один уровень выше. Я думаю, вы должны назвать это CHROME_DATA
или INSTANCE_DATA
и вы должны поместить его в /Users/$USER/Library/Application Support/Google/Chrome${PROFILE_NAME}
: рядом с существующим Chrome
каталогом, а не внутри него.# Create a symlink in the Google Chrome app so we control the process name SYMLINK="$CHROME_APP/Contents/MacOS/Google Chrome ${PROFILE_NAME}" if [[ ! -e "$SYMLINK" ]]; then ln -s "$CHROME_APP/Contents/MacOS/Google Chrome" "$SYMLINK" fi # Start me up! exec "$SYMLINK" --enable-udd-profiles --user-data-dir="$PROFILE_DIR"
ОБНОВЛЕНИЕ : я больше не использую этот метод. Вместо этого я теперь использую Epichrome , который намного проще в использовании и работает лучше. Я опубликовал новый ответ с этой информацией и предлагаю людям использовать его вместо этого.
Оригинальный ответ с ручными инструкциями:
Я попробовал скрипт от @Maverick, и он частично сработал (спасибо!), но столкнулся с некоторыми трудностями. Основная проблема заключается в том, что обернутая копия Chrome хоть и независима, но имеет собственную иконку и корректно работает сама по себе, но не может открывать URL-адреса, отправленные из других приложений, поэтому не работает с Choosy.
Вот что сработало для меня, чтобы получить второй Chrome, который может открывать ссылки через Choosy, например:
Library/Application Support/Google/Chrome
в Library/Application Support/Google/ChromePersonal
свой домашний каталог. Это необязательно; Я хотел перенести свои профили пользователей Chrome в новый экземпляр. Но если вы согласны начать заново, вы можете пропустить это.Google Chrome.app
в другое место. я использовал /Applications/Google Chrome Personal.app
.Contents/MacOS
каталог приложения.chmod +x wrapper.sh
Contents/Info.plist
в этом новом приложении, чтобы:
CFBundleExecutable
значение wrapper.sh
)CFBundleIdentifier
(просто добавьте «Личное» к существующему значению)CFBundleName
(просто добавьте «Личное» к существующему значению)CFBundleDisplayName
(просто добавьте «Личное» к существующему значению)Вот мой модифицированный скрипт wrapper.sh. Поместите его в , /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.sh
а затем отредактируйте Info.plist, как на шаге 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"
Одно предостережение: я считаю, что функция автоматического обновления Chrome сломает это каждый раз при обновлении Chrome, а это означает, что вам нужно повторно выполнять шаги 3 и 4 после каждого обновления Chrome.
KSProductID
ключ в Info.plist
. Если вы перейдете на страницу сведений, вы увидите статус информационного узла «приложение KSOmahaServer 'com.google.ChromePersonal' 'error-unknownApplication'. ..."; ошибка при попытке обновления вручную.KSProductID
. Он говорит, что доступно обновление, затем я нажимаю «Перезапустить», и он перезапускается с той же версией. У меня не включены автоматические обновления для всех пользователей, возможно, причина в этом или в том, что я переименовал исполняемый файл.Я сейчас использую Epichrome для этой цели. Epichrome предназначен для создания браузеров для конкретных сайтов, но вы можете настроить правила фильтрации и значок по своему усмотрению, поэтому он вполне способен просто создать второй Chrome с собственным отдельным профилем и значком в доке. Браузеры, созданные Epichrome, работают с механизмом обновлений Google, поэтому все они будут обновляться до последней версии Chrome.
Он имеет простой графический интерфейс — не требуется кодирование или перекомпиляция Chrome. Я думаю, что это довольно надежное решение этой проблемы.
Ни один из этих ответов не работал у меня всесторонне под Mac OS X Yosemite. Вот мое решение, которое дает вам несколько экземпляров, меню запуска док-станции для экземпляров и разные значки для каждого экземпляра. Когда вы запустите скрипт, он автоматически просмотрит все ваши профили, а затем скажет вам, что делать дальше.
#!/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
Для иконок вы можете использовать любой PNG (или, возможно, многие другие форматы).
Хромированные аватары, к которым вы, возможно, уже привыкли, находятся в папке «~/Library/Application Support/Google/Chrome/Avatars» — avatar_ninja.png и т. д.
Или сделайте свой собственный, или воспользуйтесь одним из многочисленных сайтов с иконками — мне нравится Easyicon .
Также это выглядит, возможно, полезным — Как вернуть аватары в Chrome для более простого переключения профилей пользователей — чтобы упростить быструю идентификацию открытых окон (непроверено).
Одна вещь, которая еще не работает, — это возможность назначать разные экземпляры хрома профиля пользователя для определенных рабочих столов. Это связано с тем, что если атрибут, используемый для этого, изменен, браузер больше не сможет автоматически входить в этот профиль при запуске браузера. Я сделал сообщение на форуме и отчет об ошибке по этой проблеме; это также проблема для браузеров для конкретных сайтов, поэтому проект chrome-ssb-osx может заставить это работать в какой-то момент. У меня нет 10 очков репутации, необходимых для размещения здесь более 2 ссылок в сообщениях (помогите! :-), поэтому вам придется посмотреть ссылки на эти вещи в приведенном выше скрипте (раздел «Этот раздел отключен» ).
человек
Settings->Users
Chrome предлагает «Создать ярлык на рабочем столе для этого пользователя», и если вы нажмете «Да», он создаст ярлык, который представляет собой значок Chrome со значком профиля пользователя Chrome, наложенным в правом нижнем углу. Когда приложение запущено, у каждого профиля есть свой значок на панели задач. Я упоминаю об этом только потому, что надеюсь, что они в конечном итоге добавят эту функцию в версию для macOS.