Làm cách nào tôi có thể thay thế biểu tượng thông báo độ phân giải thấp của Google Chrome?


15

Google Chrome gần đây đã được nâng cấp lên phiên bản 35.0.1916.114 trên bản cài đặt Ubuntu 14.04 của tôi.

Kể từ đó, biểu tượng thông báo đã bắt đầu hiển thị trên khay hệ thống. Tuy nhiên, có vẻ như nó đang sử dụng biểu tượng có độ phân giải thấp - trông có vẻ bị méo:

nhập mô tả hình ảnh ở đây

Làm thế nào tôi có thể sửa chữa / thay thế nó?


1
Các biểu tượng được lưu trữ trong /usr/share/icons, nếu điều đó có ích
MrVaykadji

@MrVaykadji: Cảm ơn sự giúp đỡ! Tôi đã xem trong thư mục đó nhưng tôi không thể tìm thấy bất kỳ biểu tượng thông báo Google Chrome nào. Tôi đoán chúng nằm trong một thư mục khác.
fabiomaia

1
có lẽ /optvậy Đó là nơi google nhị phân được cài đặt.
MrVaykadji

2
Chỉ trích. Và Google-Chrome không phải là nguồn mở, vì vậy nếu điều này được mã hóa cứng (có nghĩa là bên trong các tệp nhị phân), bạn sẽ không thể thay đổi biểu tượng đó. Có thể bạn có thể thử xem tất cả các tệp có "chrome" trong tên của chúng, catfishví dụ, hoặc các phương pháp khác cho phép bạn tìm kiếm trên toàn đĩa.
MrVaykadji

1
Biểu tượng thông báo này sai ở ít nhất 3 điểm: nó không tôn trọng sở thích của người dùng; nó không tôn trọng màu sắc của Ubuntu; đó là sử dụng độ phân giải thực sự thấp.
Rael Gugelmin Cunha

Câu trả lời:


14

Chỉnh sửa: xem bên dưới để cập nhật về việc thay thế biểu tượng thông báo

Nếu nhị phân chrome của bạn được cài đặt ở vị trí thông thường, bạn sẽ tìm thấy chúng ở đó /opt/google/chrome. Trong thư mục đó, bạn sẽ tìm thấy tệp chrome_100_percent.pakchứa biểu tượng thông báo. Đây là các bước tôi đã sử dụng để trích xuất nó, sử dụng thông tin từ câu hỏi tràn ngăn xếp này :

  1. Kiểm tra mã cho dự án grit-i18n với

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

  2. Điều này sẽ cung cấp cho bạn một thư mục trong CWD của bạn được gọi grit-i18n-read-only. CD vào thư mục này

    cd grit-i18n-read-only

  3. Sao chép mô-đun python data_pack vào thư mục này

    cp grit/format/data_pack.py .

  4. Chỉnh sửa data_pack.pytrong trình soạn thảo ưa thích của bạn. Sau khi nhập ban đầu, thêm dòng sau:

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

  5. Đến cuối tập tin trong mainhàm, xóa dòng

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

    (câu trả lời Stack Overflow cho biết điều này xảy ra ở dòng 160, theo kinh nghiệm của tôi, phiên bản hiện tại có ở dòng 201)

  6. Ở vị trí của nó, chèn các dòng sau được thụt vào một cách thích hợp (3 lần):

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

    file.write(text)

  7. Chạy data_pack.pytiện ích trên tệp chrome pak (trước tiên tôi đã sao chép nó vào grit-i18n-read-onlythư mục):

    ./data_pack.py ../chrome_100_percent.pak

Điều này sẽ dẫn đến rất nhiều tệp mới trong thư mục hiện tại, tất cả được đặt tên là số không có phần mở rộng. Trình duyệt tệp của bạn (ví dụ nautilus) sẽ có thể xác định loại tệp và hiển thị hình thu nhỏ của hình ảnh. Tôi tìm thấy các biểu tượng thông báo có tên là 6866 & 6867.


Biên tập

Mặc dù có một số câu trả lời đơn giản hơn dưới đây, tôi đã quản lý để hack một số mã để đóng gói lại các tài nguyên mà bạn có thể thử sau khi chỉnh sửa các biểu tượng. Điều này sẽ tạo ra một .paktệp mới mà tôi đã không cố gắng sử dụng bản thân mình, vì vậy tôi không thể nói chắc chắn điều này sẽ dẫn đến thành công các biểu tượng thông báo mới.

Trong hàm chính trong data_pack.py, tôi đã nhận xét tất cả các mã trong elsekhối và thêm các dòng sau:

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

Sau đó, chỉ cần chạy ./data_pack.py. Giả định chrome_100_percent.paknày nằm trong thư mục hiện tại và sẽ cung cấp cho bạn một chrome_100_percent_new.paktệp mới mà bạn có thể thử sao chép lại /opt/google/chrome/chrome_100_percent.pak.

Tôi tin rằng một số biểu tượng bổ sung trong tài nguyên pak liên quan đến biểu tượng thông báo đã được xác định; chỉnh sửa ở trên để bao gồm những thứ nên khá đơn giản.


Chỉnh sửa cuối cùng

Bây giờ tôi đã trở về nhà và có cơ hội làm việc này thêm nữa, tôi đã quản lý để thay thế thành công biểu tượng thông báo của chrome. Như @Glutanimate đã lưu ý, bạn bị mắc kẹt với độ phân giải 16x16, vì vậy tôi không chắc bạn có thể đạt được bao nhiêu cải thiện thực sự, nhưng tôi cho rằng điều đó chủ quan.

Tôi chỉ đơn giản là mở các biểu tượng đã nói ở trên (6864 - 6867) trong GIMP, đã phát hiện ra chúng dưới dạng PNG Grayscale. Tôi đã dán một biểu tượng mới vào cùng một tệp trong GIMP, do đó cố gắng giữ các thuộc tính hình ảnh giống nhau (ví dụ: thang độ xám). Sau đó, tôi đã xuất chúng dưới dạng PNG, bỏ chọn TẤT CẢ các tùy chọn mà GIMP cung cấp nhưng vẫn duy trì mức nén 9. Các tệp kết quả có phần mở rộng .png, vì vậy tôi đã xóa chúng và thay thế các bản gốc. Sau đó tôi chạy lại data_pack.py, đã thực hiện các sửa đổi chi tiết ở trên.

Tôi giữ một bản sao lưu của pak gốc mv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bakvà di chuyển tệp .pak đã sửa đổi của tôi vào vị trí của nó. Tôi sẽ đảm bảo chrome được đóng khi thực hiện điều này và kiểm tra kỹ xem không có quá trình chrome nào đang chạy hay chưa và tôi tin rằng chrome có cài đặt mới để cho phép xử lý nền ngay cả khi đóng trình duyệt theo mặc định.

Xin thưa, các biểu tượng thông báo của tôi trong Unity phản ánh những thay đổi của tôi.

Cuối cùng-Final Chỉnh sửa: OK, tôi đã nói dối - Tôi đã thử một PNG 32x32 và nó dường như đã hoạt động tốt. Vì vậy, có bạn đi. Dưới đây là một số ảnh chụp màn hình kết quả.

  • Biểu tượng gốc: Có thể bạn sẽ nhận ra biểu tượng 'không có thông báo chưa đọc' mặc định trong bảng điều khiển của tôi ở đây giữa biểu tượng hình hộp và thời tiết của tôi:

Biểu tượng gốc

  • Biểu tượng mới: Phiên bản sửa đổi 32x32px của tôi ở cùng vị trí:

Biểu tượng mới

(Nguồn: Biểu tượng hàng loạt từ Adam Whitcroft)


Cảm ơn các cập nhật! Tôi có thể xác nhận rằng các biểu tượng 32px đang hoạt động tốt với data_pack.py. Tôi đã sửa đổi đoạn mã bạn đã đăng lên tài khoản cho tất cả các biểu tượng thông báo. Tôi hy vọng bạn không phiền.
Glutimate

1
FWIW, bạn cũng có thể sử dụng phương pháp này để loại bỏ hoàn toàn chỉ báo mà không vô hiệu hóa hệ thống thông báo (xem Askubfox.com/a/473416/81372 ).
Glutimate

Mate, tôi sẽ rất vui nếu bạn dọn dẹp hướng dẫn một chút ... Có phải tất cả các sửa đổi đối với data.py không? Tôi la một chut Nhâm lân. Không có ý xúc phạm, tôi chỉ muốn làm theo nó.
boong

1
Đẹp hack. Chỉ cần thêm, bạn có thể tìm thấy nhiều biểu tượng hơn tại đây thenounproject.com/search/?q=bell
gc5

Với Chrome 36+ giờ các biểu tượng là 6894 ... 6897
gc5

8

Biên tập:

Có vẻ như vấn đề là với node-chrome-pak. Sửa đổi của rocketman10404 data_pack.pyđang hoạt động tốt, ngay cả với các biểu tượng 32px:

nhập mô tả hình ảnh ở đây

Vui lòng sử dụng hướng dẫn của mình để thay thế.


Câu trả lời gốc :

Câu trả lời tuyệt vời của @ rocketman10404 dẫn tôi đến nút-chrome-pak , tập lệnh node.js có thể đóng gói, giải nén và thay thế các tài nguyên cụ thể trong .pakcác tệp của Chrome / ium .

Mặc dù tôi đã quản lý để thay thế các biểu tượng thông báo chrome_100_percent.pakbằng công cụ này, tôi phải báo cáo rằng tôi không thể thực hiện các thay đổi. Tuy nhiên, tôi nghĩ rằng nó đáng nỗ lực để phác thảo các bước tôi đã thực hiện để có được điểm này. Hy vọng rằng ai đó sẽ làm điều này và tìm cách để thực sự làm cho nó hoạt động.

Cài đặt node.js

node-chrome-paksẽ cần node.js để chạy. Bạn có thể cài đặt phiên bản mới nhất bằng cách thêm PPA của Chris Lea:

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

Tải xuống tập lệnh và giải nén tài nguyên của Chrome

Tải xuống tập lệnh:

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

Sao chép địa phương của bạn chrome_100_percent.pakqua:

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

Giải nén .paktập tin:

node ./main.js unpack chrome_100_percent.pak

Xác định và sửa đổi các biểu tượng thông báo

Hành động cuối cùng sẽ tạo ra một thư mục mới gọi là ./extracted. Trong đó bạn sẽ tìm thấy tất cả các tài nguyên có trong tệp pak. Chúng được đặt tên theo ID tài nguyên của chúng. Bạn sẽ muốn giữ tên này vì nó rất quan trọng để đóng gói lại các tệp.

Phần khó bây giờ nằm ​​ở việc xác định các biểu tượng chính xác. Nếu tôi không hoàn toàn nhầm, các tệp sau đây sẽ là những tệp được sử dụng trong systray:

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

Khi đã xác định các biểu tượng bạn đang tìm kiếm, bạn có thể tiến hành sửa đổi và thay thế chúng. Nếu bạn muốn, bạn có thể sử dụng các biểu tượng tôi đã tạo cho mục đích này:

      

      

Các tệp nguồn và .pngs được xuất ở các độ phân giải khác nhau được lưu trữ tại GitHub .

Ở đây có giới hạn đầu tiên tôi tìm thấy: Nếu bạn thay thế các biểu tượng bằng một hình ảnh ở bất kỳ độ phân giải nào cao hơn Google Chrome ban đầu sẽ bị hỏng và ngừng hoạt động bình thường . Đối với dự án cụ thể này, bạn sẽ phải ở độ phân giải 16x16. Trên thực tế, điều này có nghĩa là bạn sẽ không thể cải thiện đáng kể các biểu tượng systray hiện tại, ngay cả khi bạn muốn phương thức này hoạt động.

Tất nhiên, có khả năng giới hạn này được đưa ra theo cách node-chrome-pakđược thiết kế. Có thể thay thế các biểu tượng bằng các biểu tượng lớn hơn nếu bạn tạo tập lệnh python tùy chỉnh dựa trên câu trả lời của @ rocketman10404.

Đóng gói lại các tài nguyên và thay thế các tài nguyên hiện có

Sau khi sửa đổi / thay thế các biểu tượng hiện có, bạn sẽ phải tạo một paktệp cập nhật ...

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

... và sử dụng nó để thay thế cái hiện có:

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

Mấu chốt của phương pháp này

Trong nỗ lực của mình, tôi đã không thể khiến Chrome hiển thị các biểu tượng được cập nhật. Ngay cả khi tôi chắc chắn rằng tất cả các biểu tượng đã được thay thế chính xác và thực sự có trong paktệp đã sửa đổi (bằng cách giải nén lại), tôi vẫn không thể thay thế biểu tượng thực tế trong systray.

Thật không may, tôi không biết tại sao điều này là.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.