Чи є простий спосіб мати окремі значки доків для різних профілів Chrome?


25

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

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

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

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


Я просто хочу зазначити, що це стандартна функція Chrome в Windows (принаймні в v64). Під час створення нового профілю в Chrome Settings->UsersChrome запитується "Створити ярлик робочого столу для цього користувача", а якщо натиснути кнопку "Так", це створить ярлик, який є значком Chrome із значком профілю Chrome, накладеним у нижньому правому куті. Коли програма запущена, кожен профіль має свою піктограму на панелі завдань. Я піднімаю це лише тому, що сподіваюся, що вони зрештою принесуть цю функцію до версії macOS.
gman

Відповіді:


6

Для роботи двох 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каталогу. Ви можете встановити інший значок, клацнувши правою кнопкою миші на програмі та вибравши "Отримати інформацію". Ви побачите, що ця нова версія має власну піктограму на доці, і її можна приєднати там, якщо потрібно.


1
Це, здається, не працює. Я створив новий профіль для себе під назвою Developmentв Settings -> Users. Це створило каталог ~/Library/Application Support/Google/Chrome/Profile 2. Однак виконання open -a "Google Chrome" --args --profile-directory="Profile 2"все ще відкриває старий / оригінальний профіль, як я можу сказати з аватара у верхньому правому куті.
Ендрю Фер'є

@AndrewFerrier Ви намагалися закрити command + qChrome і повернути його за допомогою робочого процесу? Це працює зі мною.
Маверик

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.


Дотримуючись цих інструкцій, я отримую додаток, який не запуститься
Tom J Nowell

Вибачте @TomJNowell! Напевно, я, мабуть, пропустив крок. Можливо, вам доведеться chmod 755 скрипт wrapper.sh? Шахта виконується. Якщо ви спробуєте це, і це вирішить проблему для вас, дайте мені знати, щоб я міг оновити відповідь?
jbyler

chmod + x зробив трюк
Том Дж. Ноуелл

Ви можете запобігти автоматичному оновленню, змінивши KSProductIDключ у Info.plist. Якщо ви перейдете на сторінку про інформацію, ви побачите "додаток KSOmahaServer" com.google.ChromePersonal "стан інформаційного вузла" помилка-невідоме додатка ". ..."; помилка при спробі оновлення вручну.
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-ssb-osx може змусити це працювати в якийсь момент. У мене немає 10 балів репутації, щоб включити сюди більше 2 посилань (довідка! :-), тож вам доведеться переглянути посилання на ці речі в сценарії вище (розділ "Цей розділ вимкнено") ).


Оскільки це стає дещо складним, нові речі перейдуть на сторінку github.com/djbclark/chrome-apartheid
Daniel J Clark

0

Зараз я для цього використовую Епіхром . Epichrome призначений для створення веб-переглядачів, але ви можете налаштувати правила фільтрації та піктограму, як тільки захочете, тому він цілком здатний просто створити другий Chrome зі своїм окремим значком профілю та док-станції. Браузери, створені епіхромом, працюють із механізмом оновлення Google, тому всі вони будуть в курсі останньої версії Chrome.

Він має простий графічний інтерфейс - кодування чи перекомпіляція Chrome не потрібно. Я думаю, що це досить солідне рішення цієї проблеми.


-2

Ви пробували бета-збірку ? Я зараз не можу перевірити, тому я не на 100% впевнений, що це інший значок - а якщо ні, ви також можете спробувати "збірка канарів" -

Це не повинно бути далеко за офіційним складанням в плані надання, щоб ви могли довіряти побаченому. І ви можете зробити свій профіль розробника типовим.


Мені не ясно, що ти пропонуєш. Чи пропонуєте ви одночасно використовувати дві різні версії Chrome? (стабільний і бета). Я дійсно краще використовувати стабільний по всьому борту. Дякую за пропозицію, хоча.
Ендрю Фер'є

FWIW, я завантажив Chrome з бета-каналу, і він має ту саму піктограму, тож, на жаль, мені це теж не дуже допомагає ...
Ендрю Фер'єр

FYI, Chrome Canary насправді має інший значок, але його менш стійкий (він загалом працює).
studgeek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.