Изменить: см. Ниже обновление для замены значка уведомления
Если у вас установлены хромированные двоичные файлы в типичном месте, вы найдете их в /opt/google/chrome
. В этой папке вы должны найти файл, chrome_100_percent.pak
который содержит значок уведомления. Вот шаги, которые я использовал для его извлечения, используя информацию из этого вопроса переполнения стека :
Получите код для проекта grit-i18n с
svn checkout http://grit-i18n.googlecode.com/svn/trunk/ grit-i18n-read-only
Это даст вам папку в вашем CWD под названием grit-i18n-read-only
. CD в эту папку
cd grit-i18n-read-only
Скопируйте модуль Python data_pack в эту папку
cp grit/format/data_pack.py .
Отредактируйте data_pack.py
в предпочитаемом вами редакторе. После первоначального импорта добавьте следующую строку:
sys.path.append(os.getcwd())
Ближе к концу файла в main
функции убери строку
print '%s: %s' % (resource_id, text)
(ответ Stack Overflow утверждает, что это происходит в строке 160, в моем опыте текущая версия имеет его в строке 201)
Вместо него вставьте следующие строки с соответствующим отступом (3 раза):
file = open(str(resource_id), "wb")
file.write(text)
Запустите data_pack.py
утилиту для файла Chrome Pak ( grit-i18n-read-only
сначала я скопировал ее в папку):
./data_pack.py ../chrome_100_percent.pak
Это приведет к большому количеству новых файлов в текущем каталоге, все имена будут названы как числа без расширения. Ваш файловый браузер (например, nautilus) должен уметь определять типы файлов и показывать миниатюры изображений. Я нашел значки уведомлений с именами 6866 и 6867.
редактировать
Хотя ниже приведены некоторые более простые ответы, мне удалось собрать воедино некоторый код, чтобы повторно упаковать ресурсы, которые вы можете попробовать после редактирования значков. Это приведет к созданию нового .pak
файла, который я не пытался использовать сам, поэтому я не могу сказать наверняка, что это успешно приведет к появлению новых значков уведомлений.
В основной функции data_pack.py
я закомментировал весь код в else
блоке и добавил следующие строки:
# Read in the modified icon resource files
file = open('6864', 'r')
icon1 = file.read()
file.close()
file = open('6865', 'r')
icon2 = file.read()
file.close()
file = open('6866', 'r')
icon3 = file.read()
file.close()
file = open('6867', 'r')
icon4 = file.read()
file.close()
# Write resource pak of only notification icons
iconData = {6864: icon1, 6865: icon2, 6866: icon3, 6867: icon4}
WriteDataPack(iconData, 'tmp.pak', BINARY)
# Create copy of original pak without notification icons
dataPack = ReadDataPack('chrome_100_percent.pak')
# List of icon resources to remove
toRemove = set([6864,6865,6866,6867])
whiteList = set(dataPack.resources.keys()).difference(toRemove)
whiteListFile = open('whitelist.txt', 'w')
for i in whiteList:
whiteListFile.write(str(i)+'\n')
whiteListFile.close()
newDataPack = RePack('tmp2.pak', ['chrome_100_percent.pak'], 'whitelist.txt')
# Merge the two paks together
combinedPack = RePack('chrome_100_percent_new.pak', ['tmp2.pak', 'tmp.pak'], None)
Тогда просто беги ./data_pack.py
. Предполагается, что он chrome_100_percent.pak
находится в текущем каталоге и должен дать вам новый chrome_100_percent_new.pak
файл, который вы можете попытаться скопировать /opt/google/chrome/chrome_100_percent.pak
.
Я полагаю, что некоторые дополнительные значки в пакете ресурсов, связанные со значком уведомления, были идентифицированы; редактирование вышеупомянутого, чтобы включить те, должно быть довольно простым.
Окончательное редактирование
Теперь, когда я вернулся домой и имел возможность еще немного поработать над этим, мне удалось успешно заменить значок уведомления Chrome. Как заметил @Glutanimate, вы застряли с разрешением 16x16, поэтому я не уверен, насколько вы можете добиться улучшения, но полагаю, что это субъективно.
Я просто открыл вышеупомянутые значки (6864 - 6867) в GIMP, который обнаружил их как PNG в градациях серого. Я вставил новый значок в тот же файл в GIMP, пытаясь таким образом сохранить те же свойства изображения (например, оттенки серого). Затем я экспортировал их в формате PNG, сняв отметку со ВСЕХ опций, которые предлагает GIMP, но сохранив уровень сжатия 9. Полученные файлы имели расширения .png, поэтому я удалил их и заменил оригиналы. Затем я перезапустил data_pack.py
, сделав изменения, описанные выше.
Я сохранил резервную копию оригинального пакета с mv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bak
и переместил мой измененный файл .pak на его место. При этом я должен убедиться, что chrome закрыт, и еще раз проверить, не запущены ли процессы chrome, и я считаю, что в chrome есть новый параметр, разрешающий фоновые процессы, даже если браузер по умолчанию закрыт сейчас.
И вот, мои значки уведомлений в Unity отражают мои изменения.
Окончательно-финальное редактирование: ОК, я солгал - я попытался 32x32 PNG, и, похоже, он работал нормально. Итак, поехали. Вот некоторые результаты скриншотов.
- Исходная иконка: Вы, вероятно, узнаете иконку по умолчанию «нет непрочитанных уведомлений» на моей панели между иконками выпадающего меню и погодой:
- Новая иконка: Моя модифицированная версия 32x32px в том же месте:
(Источник: пакетные иконки от Адама Уиткрофта)
/usr/share/icons
, если это поможет