Google Chromeの低解像度通知アイコンを置き換えるにはどうすればよいですか?


15

Google Chromeは最近、Ubuntu 14.04のインストール時にバージョン35.0.1916.114にアップグレードされました。

それ以来、通知アイコンがシステムトレイに表示され始めました。ただし、低解像度のアイコンを使用しているようです-ゆがんで見えます:

ここに画像の説明を入力してください

どうすれば修正/交換できますか?


1
アイコンがに格納されて/usr/share/iconsいる場合に役立ちます、
MrVaykadji

@MrVaykadji:助けてくれてありがとう!そのディレクトリの下を見ましたが、Google Chromeの通知アイコンが見つかりませんでした。これらは別のディレクトリにあると思います。
ファビオマイア

1
多分/opt?そこでGoogleバイナリがインストールされます。
MrVaykadji

2
くそー。また、Google-Chromeはオープンソースではないため、これがハードコードされている場合(バイナリ内を意味する)、そのアイコンを変更することはできません。catfishたとえば、名前に「chrome」が含まれるすべてのファイルを調べてみたり、ディスク全体を検索できる他の方法を使用したりできます。
MrVaykadji

1
この通知アイコンは、少なくとも3つの点で間違っています。ユーザーの好みを尊重しません。Ubuntuの色を尊重しません。本当に低い解像度を使用しています。
ラエルグゲルミンクーニャ14年

回答:


14

編集:通知アイコンの置換に関する更新については、以下を参照してください

クロムバイナリを通常の場所にインストールしている場合は、にあります/opt/google/chrome。そのフォルダーでchrome_100_percent.pak、通知アイコンを含むファイルを見つける必要があります。このスタックオーバーフローの質問の情報を使用して、抽出に使用した手順を次に示します。

  1. コードをチェックアウトグリット国際化プロジェクト

    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

これにより、現在のディレクトリに多数の新しいファイルが作成され、すべて拡張子なしの番号が付けられます。ファイルブラウザ(nautilusなど)は、ファイルタイプを判別し、画像のサムネイルを表示できる必要があります。6866および6867という名前の通知アイコンが見つかりました。


編集

以下に簡単な回答がいくつかありますが、アイコンを編集した後に試すことができるリソースを再パッケージ化するために、いくつかのコードを一緒にハックすることができました。これにより新しい.pakファイルが作成されますが、自分で使用しようとはしていません。そのため、新しい通知アイコンが正常に作成されるとは断言できません。

のメイン関数でdata_pack.pyelseブロック内のすべてのコードをコメント化し、次の行を追加しました。

# 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を試しましたが、うまく機能したようです。それで、そこに行きます。ここでいくつかの結果のスクリーンショット。

  • 元のアイコン:ドロップボックスと天気アイコンの間にあるパネルのデフォルトの「未読通知なし」アイコンをおそらく認識します。

元のアイコン

  • 新しいアイコン:同じ場所にある32x32pxの修正版:

新しいアイコン

(出典:Adam Whitcroftのバッチアイコン


更新していただきありがとうございます!data_pack.pyで32pxアイコンが正常に機能していることを確認できます。すべての通知アイコンのアカウントに投稿したスニペットを変更しました。気にしないでください。
グルタニメート

1
FWIWでは、このメソッドを使用して、通知システムを無効にすることなくインジケーターを完全に削除することもできます(cf. askubuntu.com/a/473416/81372)。
グルタニメート

メイト、チュートリアルを少し整理していただければ幸いです... data.pyのすべての変更が必要ですか?私は少し混乱しています。違反は意味していません、私はただそれに従いたいです。
デックオフ14年

1
いいハック。ちょうどあなたがここに複数のアイコンを見つけることができ、追加するthenounproject.com/search/?q=bell
GC5

Chrome 36以降では、アイコンは6894 ... 6897
gc5 14

8

編集:

問題はにあったようnode-chrome-pakです。rocketman10404の変更data_pack.pyは、32pxアイコンでも正常に動作しています:

ここに画像の説明を入力してください

代わりに彼の指示を使用してください。


元の回答

@ rocketman10404の優れた答えは、Chrome / iumのファイル内の特定のリソースをパック、アンパック、および置換できるnode.jsスクリプトであるnode-chrome-pakに私を導きました.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ファイルに実際に存在することを確認した場合でも(再度解凍することにより)、システムトレイの実際のアイコンを置き換えることができませんでした。

残念ながら、これがなぜなのかわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.