it-swarm.com.de

Wie kann ich das Benachrichtigungssymbol für niedrige Auflösung von Google Chrome ersetzen?

Google Chrome wurde kürzlich in meiner Ubuntu 14.04-Installation auf Version 35.0.1916.114 aktualisiert.

Seitdem wird das Benachrichtigungssymbol in der Taskleiste angezeigt. Es scheint jedoch, dass ein Symbol mit niedriger Auflösung verwendet wird - es sieht verzerrt aus:

enter image description here

Wie kann ich es reparieren/ersetzen?

15
fabiomaia

Bearbeiten: Informationen zum Ersetzen des Benachrichtigungssymbols finden Sie weiter unten.

Wenn Sie chrome Binärdateien am typischen Speicherort installiert haben, finden Sie diese in /opt/google/chrome. In diesem Ordner sollte sich die Datei chrome_100_percent.pak befinden, die das Benachrichtigungssymbol enthält. Hier sind die Schritte, die ich zum Extrahieren verwendet habe, unter Verwendung von Informationen aus diese Stapelüberlauf-Frage :

  1. Checke den Code zum grit-i18n Projekt mit

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

  2. Dadurch erhalten Sie einen Ordner in Ihrem CWD mit dem Namen grit-i18n-read-only. CD in diesen Ordner

    cd grit-i18n-read-only

  3. Kopieren Sie das Modul data_pack python in diesen Ordner

    cp grit/format/data_pack.py .

  4. Bearbeiten Sie data_pack.py in Ihrem bevorzugten Editor. Fügen Sie nach dem ersten Import die folgende Zeile hinzu:

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

  5. Entfernen Sie gegen Ende der Datei in der Funktion main die Zeile

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

    (Die Stack Overflow-Antwort besagt, dass dies in Zeile 160 auftritt, meiner Erfahrung nach in der aktuellen Version in Zeile 201)

  6. Fügen Sie stattdessen die folgenden Zeilen ein, die entsprechend eingerückt sind (dreimal):

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

    file.write(text)

  7. Führen Sie das Dienstprogramm data_pack.py in der Pak-Datei chrome aus (ich habe es zuerst in den Ordner grit-i18n-read-only kopiert):

    ./data_pack.py ../chrome_100_percent.pak

Dies führt zu vielen neuen Dateien im aktuellen Verzeichnis, die alle als Nummern ohne Erweiterung benannt sind. Ihr Dateibrowser (z. B. Nautilus) sollte in der Lage sein, die Dateitypen zu bestimmen und Miniaturansichten von Bildern anzuzeigen. Ich habe die Benachrichtigungssymbole 6866 und 6867 gefunden.


Bearbeiten

Nachstehend finden Sie einige einfachere Antworten. Ich habe es jedoch geschafft, Code zu hacken, um die Ressourcen neu zu packen, die Sie nach dem Bearbeiten der Symbole verwenden können. Dies würde eine neue .pak -Datei erzeugen, die ich nicht selbst verwendet habe. Daher kann ich nicht mit Sicherheit sagen, dass dies erfolgreich zu neuen Benachrichtigungssymbolen führen würde.

In der Hauptfunktion in data_pack.py habe ich den gesamten Code im else -Block auskommentiert und die folgenden Zeilen hinzugefügt:

# 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)

Führen Sie dann einfach ./data_pack.py aus. Dies setzt voraus, dass sich chrome_100_percent.pak im aktuellen Verzeichnis befindet und dass Sie eine neue chrome_100_percent_new.pak -Datei erhalten, die Sie über /opt/google/chrome/chrome_100_percent.pak kopieren können.

Ich glaube, einige zusätzliche Symbole im Ressourcenpaket, die sich auf das Benachrichtigungssymbol beziehen, wurden identifiziert. Das obige zu bearbeiten, um diese einzuschließen, sollte ziemlich einfach sein.


Final Edit

Nachdem ich wieder zu Hause bin und die Gelegenheit hatte, daran weiterzuarbeiten, konnte ich das Benachrichtigungssymbol von Chrome erfolgreich ersetzen. Wie @Glutanimate bemerkte, stecken Sie mit einer Auflösung von 16x16 fest, daher bin ich mir nicht sicher, wie viel Verbesserung Sie tatsächlich erreichen können, aber ich nehme an, dass dies subjektiv ist.

Ich habe einfach die oben genannten Symbole (6864 - 6867) in GIMP geöffnet, die sie als Graustufen-PNGs erkannt haben. Ich habe ein neues Symbol in dieselbe Datei in GIMP eingefügt und versucht, dieselben Bildeigenschaften (z. B. Graustufen) beizubehalten. Ich habe diese dann als PNGs exportiert und ALLE von GIMP angebotenen Optionen deaktiviert, aber die Komprimierungsstufe 9 beibehalten. Die resultierenden Dateien hatten die Erweiterung .png, daher habe ich diese entfernt und die Originale ersetzt. Ich habe dann data_pack.py erneut ausgeführt, nachdem ich bereits die oben beschriebenen Änderungen vorgenommen habe.

Ich habe eine Sicherungskopie des ursprünglichen Pakets mit mv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bak aufbewahrt und meine geänderte .pak-Datei an ihre Stelle verschoben. Ich würde sicherstellen, dass chrome geschlossen ist, und überprüfen, dass keine chrome Prozesse ausgeführt werden, und ich glaube, dass chrome eine neue Einstellung für hat Hintergrundprozesse zulassen, auch wenn der Browser jetzt standardmäßig geschlossen ist.

Beachten Sie, dass meine Benachrichtigungssymbole in Unity meine Änderungen widerspiegeln.

Endgültige Bearbeitung: OK, ich habe gelogen - ich habe versucht, ein 32x32-PNG zu erstellen, und es scheint ganz gut funktioniert zu haben. Hier bitteschön. Hier einige Ergebnis-Screenshots.

  • Ursprüngliches Symbol: Wahrscheinlich erkennen Sie in meinem Bedienfeld das standardmäßige Symbol "Keine ungelesenen Benachrichtigungen" zwischen meinen Dropbox- und Wettersymbolen:

Original Icon

  • Neues Icon: Meine 32x32px modifizierte Version am selben Ort:

New Icon

(Quelle: Batch Icons von Adam Whitcroft)

14
rocketman10404

Bearbeiten:

Sieht aus wie das Problem mit node-chrome-pak war. rocketman10404s modifizierter data_pack.py funktioniert auch mit 32px-Icons einwandfrei:

enter image description here

Bitte verwenden Sie stattdessen seine Anweisungen .


Ursprüngliche Antwort :

Die exzellente Antwort von @ rocketman10404 führte mich zu node-chrome-pak , einem node.js-Skript, das bestimmte Ressourcen in den .pak -Dateien von Chrome/ium packen, entpacken und ersetzen kann.

Obwohl es mir gelungen ist, die Benachrichtigungssymbole in chrome_100_percent.pak durch dieses Tool zu ersetzen, muss ich melden, dass ich die Änderungen nicht sichtbar machen konnte. Trotzdem denke ich, dass es sich lohnt, die Schritte zu skizzieren, die ich unternommen habe, um diesen Punkt zu erreichen. Hoffentlich greift jemand anderes das auf und findet einen Weg, es tatsächlich zum Laufen zu bringen.

Installieren von node.js

node-chrome-pak benötigt node.js zum Ausführen. Sie können die neueste Version installieren, indem Sie Chris Leas nodejs PPA hinzufügen:

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

Herunterladen des Skripts und Entpacken der Chrome-Ressourcen

Laden Sie das Skript herunter:

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

Kopieren Sie Ihren lokalen chrome_100_percent.pak über:

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

Entpacke die .pak Datei:

node ./main.js unpack chrome_100_percent.pak

Identifizieren und Ändern der Benachrichtigungssymbole

Die letzte Aktion hat einen neuen Ordner mit dem Namen ./extracted erstellt. Darin finden Sie alle Ressourcen, die in der Pak-Datei enthalten sind. Sie sind nach ihrer Ressourcen-ID benannt. Sie sollten diesen Namen beibehalten, da er für das erneute Packen der Dateien wichtig ist.

Der schwierige Teil besteht nun darin, die richtigen Symbole zu identifizieren. Wenn ich mich nicht völlig irre, sollten die folgenden Dateien im Systray verwendet werden:

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

Nachdem Sie die gesuchten Symbole identifiziert haben, können Sie diese ändern und ersetzen. Wenn Sie möchten, können Sie die Symbole verwenden, die ich für diesen Zweck erstellt habe:

Die Quelldateien und exportierten .pngs in verschiedenen Auflösungen werden über GitHub gehostet.

Hier ist die erste Einschränkung, die ich gefunden habe: Wenn Sie die Symbole durch ein Bild mit einer höheren Auflösung als dem ursprünglichen Google Chrome ersetzen, wird es beschädigt und funktioniert nicht mehr ordnungsgemäß . Für dieses spezielle Projekt müssen Sie eine Auflösung von 16x16 haben. Tatsächlich bedeutet dies, dass Sie die aktuellen Systray-Symbole nicht wesentlich verbessern können, selbst wenn Sie diese Methode zum Laufen bringen.

Natürlich besteht die Möglichkeit, dass diese Einschränkung durch das Design von node-chrome-pak eingeführt wurde. Es ist möglicherweise möglich, die Symbole durch größere zu ersetzen, wenn Sie ein benutzerdefiniertes python -Skript erstellen, das auf der Antwort von @ rocketman10404 basiert.

Umpacken der Ressourcen und Ersetzen der vorhandenen

Nach dem Ändern/Ersetzen der vorhandenen Symbole müssen Sie eine aktualisierte pak -Datei erstellen ...

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

... und benutze es, um das existierende zu ersetzen:

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

Der Kern dieser Methode

Bei meinen Versuchen konnte ich Chrome nicht dazu bringen, die aktualisierten Symbole anzuzeigen. Auch wenn ich sichergestellt habe, dass alle Symbole korrekt ersetzt wurden und tatsächlich in der geänderten pak -Datei vorhanden sind (durch erneutes Entpacken), konnte ich das eigentliche Symbol im Systray immer noch nicht ersetzen.

Leider habe ich keine Ahnung woran das liegt.

8
Glutanimate