Есть ли простой способ иметь отдельные иконки для разных профилей Chrome?

27

Я использую Google Chrome версии 22 на OS X 10.8. Я использую отдельные профили пользователей (созданные с использованием встроенной функции Chrome в Settings->Users) для своего «обычного» просмотра веб-страниц и веб-разработки, которую я делаю. Я запускаю свой профиль веб-разработки из обычного окна профиля Chrome, нажимая на аватар в верхнем левом углу:

введите описание изображения здесь

На данный момент оба этих профиля имеют общую иконку стыковки. Тем не менее, я бы предпочел, чтобы у каждого профиля Chrome была своя собственная иконка стыковки с окнами, управляемыми отдельно - и в идеале, чтобы значки стыковки были различимы в некотором роде. Это легко возможно? Под «легким» я подразумеваю такие вещи, как восстановление Chrome из исходного кода, который я не рассмотрю.

Примечание . Я хотел бы использовать одну и ту же стабильную версию Chrome для обоих профилей. Было бы хорошо, чтобы одна и та же версия была установлена ​​в два раза дольше, если их можно хранить отдельно, а значок док-станции различался.

Эндрю Ферье
источник
Я просто хочу отметить, что это стандартная функция Chrome для Windows (по крайней мере, в v64). Когда вы создаете новый профиль в Chrome, Settings->UsersChrome запрашивает «Создать ярлык на рабочем столе для этого пользователя», и если вы нажимаете «Да», он создает ярлык, который является значком Chrome с значком профиля пользователя Chrome, наложенным в правом нижнем углу. Когда приложение запущено, у каждого профиля есть свой значок на панели задач. Я упоминаю об этом только потому, что надеюсь, что они в конечном итоге перенесут эту функцию в версию MacOS.
человек

Ответы:

7

Для одновременной работы двух 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каталога. Вы можете установить другой значок, щелкнув правой кнопкой мыши на приложении и выбрав «Получить информацию». Вы увидите, что эта новая версия имеет собственный значок на док-станции и может быть пристыкована там при необходимости.

Maverik
источник
1
Это не похоже на работу. Я создал новый профиль для себя назвал Developmentв Settings -> Users. Это создало каталог ~/Library/Application Support/Google/Chrome/Profile 2. Тем не менее, выполнение open -a "Google Chrome" --args --profile-directory="Profile 2"все равно открывает старый / оригинальный профиль, как я могу судить по аватару в правом верхнем углу.
Эндрю Ферье
@AndrewFerrier Вы пытались закрыть command + qChrome и снова открыть его с помощью рабочего процесса? Это работает со мной.
Maverik
1
это работает, если вы делаете это, да (то есть, если Chrome вообще не запускается, он открывает нужный профиль). Но если один профиль уже запущен, выполнение этой команды повторно открывает окно для этого профиля, независимо от того, какой профиль указан. Это не поможет с вопросом, так как цель состоит в том, чтобы открыть оба одновременно.
Эндрю Ферье
@AndrewFerrier Спасибо за ваши изменения, теперь ответьте лучше! Надеюсь, это помогло вам! Лука
Маверик
1
и я не сейчас! Кажется, я ошибся, теперь все в порядке. Оставлю его работать немного, посмотрим, продолжу ли я испытывать проблемы ...
Эндрю Ферье
4

ОБНОВЛЕНИЕ : я больше не использую этот метод. Вместо этого я теперь использую Epichrome, который намного проще в использовании и работает лучше. Я разместил новый ответ с этой информацией, и я предлагаю людям использовать его вместо этого.


Оригинальный ответ с инструкциями:

Я попробовал скрипт от @Maverick, и он частично работал (спасибо!), Но я столкнулся с некоторыми трудностями. Основная проблема заключается в том, что обернутая копия Chrome, хотя она и независима, имеет собственный значок и работает правильно сама по себе, не может открывать URL-адреса, отправленные из других приложений, поэтому она не работает с Choosy.

Вот что сработало для меня, чтобы получить второй Chrome, который может открывать ссылки через Choosy, например:

  1. Скопировать Library/Application Support/Google/Chromeв Library/Application Support/Google/ChromePersonalв вашем домашнем каталоге. Это необязательно; Я хотел перенести свои профили пользователей Chrome на новый экземпляр. Но если вы в порядке, начиная с нуля, вы можете пропустить это.
  2. Скопируйте Google Chrome.appв другое место. Я использовал /Applications/Google Chrome Personal.app.
  3. Скопируйте мой скрипт wrapper.sh (ниже) в Contents/MacOSкаталог приложения .
  4. chmod +x wrapper.sh
  5. Изменить 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.

jbyler
источник
Следуя этим инструкциям, я получаю приложение, которое не запускается
Том Дж. Новелл
Извините @ TomJNowell! Наверное, я пропустил шаг. Возможно, вы должны chmod 755 сценарий wrapper.sh? Моя исполняемая. Если вы попробуете это, и это решит проблему для вас, дайте мне знать, чтобы я мог обновить ответ?
Jbyler
chmod + x сделал свое дело
Том Дж. Новелл
Вы можете предотвратить автоматическое обновление, изменив KSProductIDключ Info.plist. Если вы перейдете на страницу about, то увидите «приложение KSOmahaServer» com.google.ChromePersonal «Статус информационного узла» error-unknownApplication '. ... "; ошибка при попытке обновить вручную.
webXL
Продолжение: обновления для меня отключены без изменений KSProductID. Он говорит, что доступно обновление, затем я нажимаю Перезапустить, и он перезапускается к той же версии. У меня не включено автоматическое обновление для всех пользователей, поэтому, возможно, в этом причина или я переименовал исполняемый файл.
webXL
1

Ни один из этих ответов не работал для меня всесторонне под 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 (или, возможно, многие другие форматы).

Хромированные аватары, к которым вы, возможно, уже привыкли, находятся в "~ / Библиотека / Поддержка приложений / Google / Chrome / Аватары" - avatar_ninja.png и т. Д.

Или сделайте свой собственный, или используйте один из многочисленных значков сайтов - мне нравится Easyicon .

Также это выглядит, возможно, полезным - Как вернуть аватары в Chrome для более удобного переключения профилей пользователей - чтобы облегчить быструю идентификацию открытых окон (не проверено).

Одна вещь, которая пока не работает, - это возможность назначать разные экземпляры профиля пользователя Chrome конкретным рабочим столам. Это происходит потому, что если атрибут, используемый для этого, изменяется, браузер больше не может автоматически входить в этот профиль при запуске браузера. Я сделал сообщение на форуме и сообщение об ошибке по этой проблеме; это также проблема для браузеров, специфичных для сайта, поэтому проект chrome-ssb-osx может заставить это работать в какой-то момент. У меня нет 10 очков репутации, необходимых для включения более 2-х ссылок в посты здесь (помогите! :-), поэтому вам придется посмотреть на ссылки на эти вещи в приведенном выше сценарии (раздел «Этот раздел отключен») ).

Даниэль Джей Кларк
источник
Так как это становится немного сложным, все новое пойдет на github.com/djbclark/chrome-apartheid
Дэниел Дж. Кларк
1

Я сейчас использую Epichrome для этой цели. Epichrome предназначен для создания браузеров, специфичных для сайта, но вы можете настроить правила фильтрации и значок так, как вам удобно, поэтому он вполне может просто создать второй Chrome со своим отдельным профилем и значком док-станции. Браузеры, созданные в Epichrome, работают с механизмом обновления Google, поэтому все они будут оставаться в курсе последней версии Chrome.

Он имеет простой графический интерфейс - не требуется кодирование или перекомпиляция Chrome. Я думаю, что это довольно солидное решение этой проблемы.

jbyler
источник
-2

Вы пробовали бета-сборку ? Я не могу проверить прямо сейчас, поэтому я не уверен на 100%, что это другой значок - и если нет, вы также можете попробовать «сборку канареек» -

Это не должно быть так далеко от официальной сборки с точки зрения рендеринга, чтобы вы могли доверять тому, что видите. И вы можете сделать свой профиль разработчика по умолчанию.

Лоик Вольф
источник
Я не понимаю, что вы предлагаете. Вы предлагаете запустить две разные версии Chrome одновременно? (стабильная и бета). Я действительно предпочел бы использовать стабильный по всем направлениям. Спасибо за предложение, хотя.
Эндрю Ферье
FWIW, я скачал Chrome с бета-канала, и у него та же иконка, так что, к сожалению, мне это тоже не особо помогает ...
Эндрю Ферье,
К вашему сведению, Chrome Canary на самом деле имеет другой значок, но он менее стабилен (хотя обычно он работает).
Studgeek