क्या अलग क्रोम प्रोफाइल के लिए अलग डॉक आइकन रखने का एक सरल तरीका है?


27

मैं OS X 10.8 पर Google Chrome संस्करण 22 का उपयोग कर रहा हूं । मैं Settings->Usersअपने "नियमित" वेब ब्राउज़िंग, और मेरे द्वारा किए जाने वाले वेब विकास के लिए अलग-अलग उपयोगकर्ता प्रोफाइल (देशी क्रोम सुविधा का उपयोग करके बनाया गया) का उपयोग करता हूं। मैं शीर्ष-बाएँ-कोने में अवतार पर क्लिक करके नियमित रूप से Chrome प्रोफ़ाइल विंडो से अपना वेब विकास प्रोफ़ाइल लॉन्च करता हूं:

यहाँ छवि विवरण दर्ज करें

फिलहाल ये दोनों प्रोफाइल एक सिंगल डॉक आइकन को साझा करते हैं। हालाँकि, मैं प्रत्येक क्रोम प्रोफ़ाइल के लिए अपना स्वयं का डॉक आइकन रखना पसंद करूंगा, जिसमें विंडोज़ अलग से प्रबंधित हैं - और आदर्श रूप से डॉक आइकन के लिए किसी तरह से अलग होना चाहिए। क्या यह आसानी से संभव है? 'आसान' से, मेरा मतलब है कि स्रोत से क्रोम के पुनर्निर्माण जैसी चीजें एक ऐसा विकल्प नहीं है जिस पर मैं विचार करूंगा।

नोट : मैं दोनों प्रोफाइल के लिए क्रोम के समान, स्थिर, संस्करण का उपयोग करना चाहूंगा। एक ही संस्करण को दो बार स्थापित करना ठीक रहेगा, जब तक कि उन्हें अलग रखा जा सके और डॉक आइकन प्रतिष्ठित न हो जाए।


मैं सिर्फ यह बताना चाहता हूं कि यह विंडोज पर क्रोम का एक मानक फीचर है (कम से कम v64 में)। जब आप क्रोम में एक नया प्रोफ़ाइल बनाते हैं तो Settings->Usersक्रोम पूछता है "इस उपयोगकर्ता के लिए एक डेस्कटॉप शॉर्टकट बनाएं" और यदि आप हाँ पर क्लिक करते हैं तो यह एक शॉर्टकट बनाता है जो नीचे दाएं कोने में उपयोगकर्ता के क्रोम प्रोफ़ाइल आइकन के साथ क्रोम आइकन है। जब ऐप चल रहा होता है तो प्रत्येक प्रोफ़ाइल टास्कबार में अपना एक आइकन होता है। मैं इसे केवल इसलिए लाता हूं क्योंकि मुझे उम्मीद है कि वे अंततः उस सुविधा को macOS संस्करण में लाएंगे।
gman

जवाबों:


7

एक ही समय में दो क्रोम चलने के लिए आपको दूसरा रन करने योग्य 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डेस्कटॉप फ़ोल्डर में कहें ), शेल खोलें और उस प्रोफ़ाइल फ़ोल्डर को पैरामीटर के रूप में पारित करके निष्पादित करें जिसे आप दूसरे क्रोम ऐप से संबद्ध करना चाहते हैं। इसे कहा जाएगा Google Chrome profile_folder_name। चलिए मान लेते हैं Google Chrome Development:

$ cd ~/Desktop
$ . create_second_chrome.sh Development

अब आप डायरेक्ट्री 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 को बंद करने और वर्कफ़्लो के माध्यम से इसे फिर से खोलने की कोशिश की है? यह मेरे साथ काम करता है।
Maverik

1
यदि आप ऐसा करते हैं तो यह काम करता है, हाँ (यदि क्रोम बिल्कुल शुरू नहीं हुआ है, तो यह वांछित प्रोफ़ाइल खोलता है)। लेकिन अगर एक प्रोफ़ाइल पहले से ही चालू है, तो उस कमांड को निष्पादित करने से उस प्रोफ़ाइल के लिए एक विंडो फिर से खुल जाती है, चाहे जो भी प्रोफ़ाइल निर्दिष्ट हो। यह प्रश्न के साथ मदद नहीं करता है, क्योंकि उद्देश्य दोनों को एक साथ खोलना है।
एंड्रयू फेरियर

@AndrewFerrier आपके संपादन के लिए धन्यवाद, अब इसका उत्तर बेहतर है! आशा है कि यह आपकी मदद की! लुका
मावरिक

1
अब मैं नहीं हूं! लगता है मैंने एक गलती की, यह अब ठीक लगता है। इसे थोड़ी देर के लिए चलाना छोड़ देंगे, देखें कि क्या मुझे समस्याओं का सामना करना जारी रहेगा ...
एंड्रयू फेरियर

4

अद्यतन : मैं अब इस विधि का उपयोग नहीं करता। इसके बजाय मैं अब एपिच्रोम का उपयोग करता हूं जो उपयोग करने के लिए बहुत आसान है और बेहतर काम करता है। मैंने इस जानकारी के साथ एक नया उत्तर पोस्ट किया है और मेरा सुझाव है कि लोग इसके बजाय इसका उपयोग करें।


मैनुअल निर्देशों के साथ मूल उत्तर:

मैंने @Maverick से स्क्रिप्ट की कोशिश की और यह आंशिक रूप से काम किया (धन्यवाद!), लेकिन मैं कुछ कठिनाइयों में भाग गया। मुख्य समस्या यह है कि क्रोम की लिपटी हुई प्रतिलिपि, हालांकि यह स्वतंत्र है, इसका अपना आइकन है, और अपने आप ही सही ढंग से काम करता है, अन्य अनुप्रयोगों से भेजे गए URL को नहीं खोल सकता है, इसलिए यह Choosy के साथ काम नहीं करता है।

यहाँ मेरे लिए काम किया गया है, एक दूसरा क्रोम प्राप्त करने के लिए जो चोसे के माध्यम से लिंक खोल सकता है, उदाहरण के लिए:

  1. कॉपी Library/Application Support/Google/Chromeकरने के लिए Library/Application Support/Google/ChromePersonalअपने घर निर्देशिका में। यह वैकल्पिक है; मैं अपने Chrome उपयोगकर्ता प्रोफ़ाइल को नए उदाहरण में स्थानांतरित करना चाहता था। लेकिन अगर आप ठीक हैं तो आप इसे शुरू कर सकते हैं।
  2. Google Chrome.appदूसरे स्थान पर कॉपी करें । मैंने इस्तेमाल किया /Applications/Google Chrome Personal.app
  3. एप्लिकेशन की Contents/MacOSनिर्देशिका में मेरी आवरण सूची (नीचे) को कॉपी करें ।
  4. chmod +x wrapper.sh
  5. Contents/Info.plistइस नए ऐप में संशोधित करें :
    • आवरण स्क्रिप्ट को इंगित करें ( CFBundleExecutableमान सेट करें wrapper.sh)
    • एक अद्वितीय CFBundleIdentifier(मौजूदा मूल्य में "व्यक्तिगत" जोड़ें)
    • एक अद्वितीय CFBundleName(मौजूदा मूल्य में "व्यक्तिगत" जोड़ें)
    • एक अद्वितीय CFBundleDisplayName(मौजूदा मूल्य में "व्यक्तिगत" जोड़ें)

यहाँ मेरी संशोधित आवरण.श लिपि है। इसे रखो /Applications/Google\ Chrome\ Personal.app/Contents/MacOS/wrapper.shऔर फिर चरण 4 में Info.plist को संपादित करें।

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

एक चेतावनी: मेरा मानना ​​है कि क्रोम का ऑटो-अपडेट फीचर हर बार क्रोम अपडेट को तोड़ देगा, जिसका अर्थ है कि आपको हर क्रोम अपडेट के बाद चरण 3 और 4 को फिर से करना होगा।


इन निर्देशों के बाद मुझे एक ऐप मिलेगा जो लॉन्च नहीं होगा
टॉम जे नोवेल

क्षमा करें @TomJNowell! मुझे लगता है कि मैं एक कदम याद किया होगा। संभवत: आपको 755 रैपर.श स्क्रिप्ट को चोदना होगा? मेरा निष्पादन योग्य है। यदि आप ऐसा प्रयास करते हैं और यह आपके लिए समस्या को ठीक करता है, तो मुझे बताएं ताकि मैं उत्तर को अपडेट कर सकूं?
जॉब्लेर

chmod + x ने चाल
चली

आप KSProductIDकुंजी को बदलकर ऑटो अपडेट को रोक सकते हैं Info.plist। यदि आप उस पृष्ठ पर जाते हैं, तो आपको "KSOmahaServer ऐप 'com.google.ChromePersonal' जानकारी नोड स्थिति 'त्रुटि-अज्ञात-भुगतान' ..." "दिखाई देगा। मैन्युअल रूप से अपडेट करने का प्रयास करते समय त्रुटि।
webXL

अनुवर्ती: अपडेट मेरे लिए बिना बदले अक्षम होना प्रतीत होता है KSProductID। यह कहता है कि एक अद्यतन उपलब्ध है, फिर मैं Relaunch पर क्लिक करता हूं, और यह उसी संस्करण में पुनः लॉन्च करता है। मेरे पास सभी उपयोगकर्ताओं के लिए स्वचालित अपडेट सक्षम नहीं हैं, इसलिए शायद यही कारण है कि या मैंने निष्पादन योग्य का नाम बदल दिया है।
webXL

1

मैक ओएस एक्स योसेमाइट के तहत इनमें से किसी भी उत्तर ने मेरे लिए व्यापक रूप से काम नहीं किया। यहां मेरा समाधान है, जो आपको कई उदाहरण देता है, उदाहरणों के लिए एक डॉक लॉन्च मेनू और प्रत्येक उदाहरण के लिए अलग-अलग आइकन। जब आप स्क्रिप्ट चलाते हैं तो यह स्वचालित रूप से आपके सभी प्रोफाइलों से गुजर जाएगा, और फिर आपको बताएगा कि आगे क्या करना है।

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

आइकन के लिए, आप किसी भी पीएनजी (या शायद कई अन्य स्वरूपों) का उपयोग कर सकते हैं।

आपके द्वारा पहले से उपयोग किए जा सकने वाले क्रोम अवतार "~ / Library / Application Support / Google / Chrome / Avatars" - avatar_ninja.png आदि के अंतर्गत स्थित हैं।

या अपना खुद का बनाएं, या कई आइकन साइटों में से एक का उपयोग करें - मुझे ईज़ीकॉन पसंद है ।

यह भी संभवतः उपयोगी लगता है - उपयोगकर्ता प्रोफाइल को अधिक आसानी से स्विच करने के लिए क्रोम में वापस अवतार कैसे प्राप्त करें - खुली खिड़कियों को जल्दी से पहचानने के लिए आसान बनाने के लिए (अप्रयुक्त)।

एक चीज जो अभी तक काम नहीं कर रही है वह विशिष्ट डेस्कटॉप के लिए अलग-अलग उपयोगकर्ता प्रोफ़ाइल क्रोम इंस्टेंसेस को असाइन करने की क्षमता है। ऐसा इसलिए है क्योंकि यदि ऐसा करने के लिए उपयोग की जाने वाली विशेषता को बदल दिया जाता है, तो ब्राउज़र अब उस प्रोफ़ाइल पर स्वचालित रूप से लॉग इन करने में सक्षम नहीं होता है जब ब्राउज़र शुरू होता है। मैंने इस मुद्दे पर एक फोरम पोस्ट और बग रिपोर्ट बनाई है; यह साइट-विशिष्ट ब्राउज़रों के लिए भी एक समस्या है, इसलिए कुछ बिंदु पर क्रोम-एसएसबी-ओएक्सएक्स प्रोजेक्ट को यह काम मिल सकता है। मेरे पास पदों में 2 से अधिक लिंक शामिल करने के लिए आवश्यक 10 प्रतिष्ठा बिंदु नहीं हैं (सहायता! :-), इसलिए आपको इन बातों के लिंक ऊपर की स्क्रिप्ट में देखना होगा ("यह अनुभाग अक्षम") )।


चूंकि यह थोड़ा जटिल हो रहा है, नया सामान सभी के लिए github.com/djbclark/chrome-apartheid पर जाएगा
डैनियल जे क्लार्क

1

मैं अब इस उद्देश्य के लिए एपिच्रोम का उपयोग करता हूं । एपिच्रोम को साइट-विशिष्ट ब्राउज़र बनाने के लिए डिज़ाइन किया गया है, लेकिन आप फ़िल्टरिंग नियमों और अपने इच्छित आइकन को सेट कर सकते हैं, इसलिए यह अपनी अलग प्रोफ़ाइल और डॉक आइकन के साथ दूसरा क्रोम बनाने में पूरी तरह सक्षम है। एपिच्रोम-निर्मित ब्राउज़र Google के अपडेट तंत्र के साथ काम करते हैं, इसलिए वे सभी क्रोम के नवीनतम संस्करण के साथ अद्यतित रहेंगे।

इसमें एक साधारण GUI है- Chrome की कोई कोडिंग या पुन: गणना आवश्यक नहीं है। मुझे लगता है कि यह इस समस्या का एक बहुत ही ठोस समाधान है।


-2

क्या आपने बीटा बनाने की कोशिश की है ? मैं अभी परीक्षण नहीं कर सकता, इसलिए मैं 100% निश्चित नहीं हूं कि यह एक अलग आइकन है - और यदि नहीं, तो आप "कैनरी बिल्ड" भी आज़मा सकते हैं -

यह अब तक आधिकारिक बिल्ड ऑफ रेंडरिंग से दूर नहीं होना चाहिए ताकि आप जो देखते हैं उस पर भरोसा कर सकें। और आप अपने डेवलपर प्रोफाइल को डिफ़ॉल्ट बना सकते हैं।


मैं सुझाव नहीं दे रहा हूं कि आप क्या सुझाव दे रहे हैं। क्या आप उसी समय Chrome के दो अलग-अलग संस्करण चलाने का सुझाव दे रहे हैं? (स्थिर और बीटा)। मैं वास्तव में बोर्ड भर में स्थिर उपयोग करना चाहता हूं। फिर भी सुझाव के लिए धन्यवाद।
एंड्रयू फेरियर

FWIW, मैंने Chrome को बीटा चैनल से डाउनलोड किया है और इसमें एक ही आइकन है, इसलिए दुर्भाग्यवश यह मेरी बहुत मदद नहीं करता है ...
एंड्रयू फेरियर

FYI करें, क्रोम कैनरी का वास्तव में एक अलग आइकन है, लेकिन इसका कम स्थिर (हालांकि यह सामान्य काम करता है)।
स्टडजेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.