Как я могу заменить с низким разрешением значок уведомления Google Chrome?

Google Chrome был недавно обновлен до версии 35.0.1916.114 на моей установке Ubuntu 14.04.

С тех пор значок уведомления начал обнаруживаться на системном лотке. Однако кажется, что это использует с низким разрешением значок - это выглядит искаженным:

enter image description here

Как я могу фиксировать/заменять его?

15
задан 25 May 2014 в 00:10

2 ответа

Править: посмотрите ниже для обновления при замене значка уведомления

Если Вы - хромовые двоичные файлы, установлены в типичном месте, Вы найдете их в /opt/google/chrome. В той папке необходимо найти файл chrome_100_percent.pak который содержит значок уведомления. Вот шаги, я раньше извлекал его, с помощью информации от этого вопроса о переполнении стека:

  1. Контроль код к проекту песка-i18n с

    svn checkout http://grit-i18n.googlecode.com/svn/trunk/ grit-i18n-read-only

  2. Это даст Вам папку в Вашей названной CWD grit-i18n-read-only. CD в эту папку

    cd grit-i18n-read-only

  3. Скопируйте data_pack модуль Python в эту папку

    cp grit/format/data_pack.py .

  4. Править data_pack.py в Вашем предпочтительном редакторе. После начального импорта добавьте следующую строку:

    sys.path.append(os.getcwd())

  5. К концу файла в main функционируйте, удалите строку

    print '%s: %s' % (resource_id, text)

    (ответ Переполнения стека указывает, что это происходит в строке 160, по моему опыту, текущая версия имеет его в строке 201),

  6. В его месте вставьте следующие строки, расположенные с отступом соответственно (3 раза):

    file = open(str(resource_id), "wb")

    file.write(text)

  7. Работайте data_pack.py утилита на хроме pak файл (я скопировал его в grit-i18n-read-only папка сначала):

    ./data_pack.py ../chrome_100_percent.pak

Это приведет к большому количеству новых файлов в текущем каталоге, все названные как числа без расширения. Ваш файловый браузер (например, наутилус) должен смочь определить типы файлов и показать миниатюры изображения. Я нашел значки уведомления названными как 6 866 и 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.

Я полагаю, что некоторые дополнительные значки в ресурсе pak связанный со значком уведомления были определены; редактирование вышеупомянутого для включения их должно быть довольно простым.


Заключительное редактирование

Теперь, когда я вернулся домой и имел шанс работать над этим еще немного, мне удалось успешно заменить значок уведомления хрома. Как @Glutanimate отмеченный, Вы застреваете с 16x16 разрешение, таким образом, я не уверен, какого количества улучшения можно на самом деле достигнуть, но я предполагаю, что это субъективно.

Я просто открыл вышеупомянутые значки (6864 - 6867) в GIMP, который обнаружил их как Полутоновый PNGs. Я вставил новый значок в тот же файл в GIMP, таким образом пытаясь сохранить те же свойства изображения (например, шкала полутонов). Я затем экспортировал их как PNGs, сняв флажок со ВСЕМИ опциями, которые GIMP предлагает только поддержание уровня сжатия 9. Получающиеся файлы имели .png расширения, таким образом, я удалил их и заменил оригиналы. Я затем повторно выполнился data_pack.py, уже сделав модификации подробными выше.

Я сохранил резервную копию исходного pak с mv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bak и перемещенный мой измененный .pak файл в его место. Я удостоверился бы, что хром закрывается при выполнении этого, и перепроверьте это нет никакого хромового выполнения процессов, и я полагаю, что хром имеет новую установку для разрешения фоновых процессов, даже когда браузер закрывается по умолчанию теперь.

О чудо мои значки уведомления в Единице отражают мои изменения.

Наконец заключительное Редактирование: хорошо, я лгал - я попытался 32x32 PNG, и это, кажется, работало просто великолепно. Так, там Вы идете. Здесь некоторые снимки экрана результата.

  • Исходный Значок: Вы, вероятно, распознаете значение по умолчанию 'никакие непрочитанные уведомления' значок в моей панели здесь между моим Dropbox и погодными значками:

Original Icon

  • Новый Значок: Мои 32x32 пкс изменили версию в том же месте:

New Icon

(Источник: Пакетные значки от Adam Whitcroft)

14
ответ дан 16 November 2019 в 13:26

Править:

Похож на проблему, был с node-chrome-pak. rocketman10404 изменил data_pack.py хорошо работает, даже со значками на 32 пкс:

enter image description here

Используйте его инструкции вместо этого.


Исходный ответ:

Превосходный ответ @rocketman10404 приводит меня к node-chrome-pak, node.js сценарий, который может упаковать, распаковывает и заменяет определенные ресурсы в Chrome/ium's .pak файлы.

Хотя мне удалось заменить значки уведомления в chrome_100_percent.pak с этим инструментом я должен сообщить, что не смог делать изменения видимыми. Тем не менее я думаю, что это стоит усилия обрисовать в общих чертах шаги, которые я сделал для понимания этой мысли. Надо надеяться, кто-то еще поднимет это и найдет способ на самом деле заставить его работать.

Установка node.js

node-chrome-pak будет нуждаться в node.js для выполнения. Можно установить последнюю версию путем добавления nodejs PPA Chris Lea:

sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Загрузка сценария и распаковка ресурсов Chrome

Загрузите сценарий:

git clone https://bitbucket.org/hikipro/node-chrome-pak.git
cd node-chrome-pak

Скопируйте свое локальное chrome_100_percent.pak :

cp /opt/google/chrome/chrome_100_percent.pak ./chrome_100_percent.pak

Распакуйте .pak файл:

node ./main.js unpack chrome_100_percent.pak

Идентификация и изменение значков уведомления

Последнее действие создаст новую названную папку ./extracted. В нем Вы найдете все ресурсы содержавшимися в pak файле. Их называют в честь их идентификатора ресурса. Вы захотите сохранить это имя, поскольку это важно для переупаковки файлов.

Трудная часть теперь заключается в идентификации корректных значков. Если я не абсолютно ошибаюсь, следующие файлы должны быть теми используемыми в systray:

6864.png
6865.png
6866.png
6867.png

Определив значки, которые Вы искали, можно продолжить изменять и заменять их. Если Вы хотите Вас, может использовать значки, которые я создал с этой целью:

      

      

Исходные файлы и экспортируемый .pngs в различных разрешениях размещаются в GitHub.

Здесь прибывает первое ограничение, которое я нашел: Если Вы заменяете значки изображением в разрешении выше, чем исходный Google Chrome будет поврежден и прекратит работать правильно. Для этого конкретного проекта необходимо будет остаться с 16x16 разрешение. В действительности это означает, что Вы не смогли бы значительно изменить к лучшему текущие systray значки, даже если бы необходимо было получить эту работу метода.

Конечно, существует возможность, что это ограничение было представлено между прочим node-chrome-pak был разработан. Могло бы быть возможно заменить значки большими при создании пользовательского сценария Python на основе ответа @rocketman10404.

Переупаковка ресурсов и замена существующих

После изменения/замены существующих значков необходимо будет создать обновленный pak файл...

node ./main.js pack ./extracted ./chrome_100_percent_modified.pak

... и используйте его для замены существующего:

sudo cp ./chrome_100_percent_modified.pak /opt/google/chrome/chrome_100_percent.pak

Затруднение этого метода

В моих попытках я не смог заставить Chrome показывать обновленные значки. Даже если я удостоверился, что все значки были заменены правильно и на самом деле существующие в измененном pak файл (путем распаковки его снова) я все еще не смог заменить фактический значок в systray.

К сожалению, я понятия не имею, почему это.

8
ответ дан 16 November 2019 в 13:26

Другие вопросы по тегам:

Похожие вопросы: