Google Chromeは最近、Ubuntu 14.04のインストール時にバージョン35.0.1916.114にアップグレードされました。
それ以来、通知アイコンがシステムトレイに表示され始めました。ただし、低解像度のアイコンを使用しているようです-ゆがんで見えます:
どうすれば修正/交換できますか?
編集:通知アイコンの置換に関する更新については以下を参照してください
chromeバイナリが通常の場所にインストールされている場合、それらは/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
Data_pack pythonモジュールをこのフォルダーにコピーします
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)
chrome pakファイルでdata_pack.py
ユーティリティを実行します(最初に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
ファイルを提供することを前提としています。
通知アイコンに関連するリソースパック内の追加のアイコンがいくつか特定されたと思います。上記を編集してそれらを含めることは非常に簡単です。
私は家に戻り、これについてさらに作業する機会を得たので、クロムの通知アイコンを無事に置き換えることができました。 @Glutanimateが指摘したように、あなたは16x16の解像度にこだわっているので、実際にどれだけ改善できるかはわかりませんが、それは主観的なものだと思います。
前述のアイコン(6864-6867)をGIMPで開くと、グレースケールPNGとして検出されました。 GIMPの同じファイルに新しいアイコンを貼り付けたため、同じ画像プロパティ(グレースケールなど)を維持しようとしました。次に、これらをPNGとしてエクスポートし、GIMPが提供するすべてのオプションをオフにしますが、圧縮レベル9を維持しました。結果のファイルには.png拡張子が付いていたため、それらを削除して元のファイルを置き換えました。次に、data_pack.py
を再実行しました。既に上記で詳述した変更を行っています。
元のpakのバックアップコピーをmv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bak
で保持し、変更した.pakファイルをその場所に移動しました。これを行うときにchromeが閉じていることを確認し、chromeプロセスが実行されていないことを再確認し、chromeに新しい設定があると信じていますブラウザがデフォルトで閉じられている場合でもバックグラウンドプロセスを許可するようになりました。
見よ、Unityの通知アイコンは私の変更を反映しています。
最終編集:OK、嘘をつきました-32x32 PNGを試しましたが、うまく機能したようです。それで、そこに行きます。ここでいくつかの結果のスクリーンショット。
(出典: バッチアイコン Adam Whitcroftから)
編集:
問題はnode-chrome-pak
にあったようです。 rocketman10404の修正されたdata_pack.py
は、32pxアイコンでも正常に動作しています:
代わりに his instructions を使用してください。
元の答え:
@ rocketman10404の優れた答えは、Chrome/iumの.pak
ファイル内の特定のリソースをパック、アンパック、および置換できるnode.jsスクリプトである node-chrome-pak に導きました。
chrome_100_percent.pak
の通知アイコンをこのツールに置き換えることができましたが、変更を表示できなかったことを報告する必要があります。それでも、この点を得るために私がとったステップを概説することは努力する価値があると思います。うまくいけば、他の誰かがこれを取り上げて、実際に機能させる方法を見つけるでしょう。
node.jsのインストール
node-chrome-pak
を実行するにはnode.jsが必要です。 Chris Leaのnodejs PPAを追加して、最新バージョンをインストールできます。
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ファイルに含まれるすべてのリソースがあります。リソースIDに基づいて名前が付けられます。この名前はファイルの再パッケージ化に重要なので、この名前を保持する必要があります。
難しい部分は、正しいアイコンを識別することにあります。私が完全に間違っていない場合、次のファイルはシステムトレイで使用されているはずです。
6864.png
6865.png
6866.png
6867.png
探しているアイコンを特定したら、それらを変更および置換することができます。必要に応じて、この目的で作成したアイコンを使用できます。
ソースファイルとエクスポートされた異なる解像度の.png
sは、 GitHub でホストされます。
最初に見つけた最初の制限があります:元のGoogle Chromeよりも高い解像度のアイコンをアイコンに置き換えると、破損して正しく動作しなくなります。この特定のプロジェクトでは、16x16の解像度を維持する必要があります。事実上、これは、たとえこのメソッドを機能させても、現在のシステムトレイアイコンを大幅に改善することができないことを意味します。
もちろん、この制限はnode-chrome-pak
の設計方法によって導入された可能性があります。 @ rocketman10404の回答に基づいてカスタムpythonスクリプトを作成すると、アイコンをより大きなアイコンに置き換えることができる場合があります。
リソースを再パッケージし、既存のリソースを置き換える
既存のアイコンを変更/置換した後、更新された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
ファイルに実際に存在することを確認した場合でも(再度解凍することにより)、システムトレイの実際のアイコンを置き換えることができませんでした。
残念ながら、これがなぜなのかわかりません。