Edycja: patrz poniżej, aby zaktualizować informacje o zastępowaniu ikony powiadomienia
Jeśli jesteś chrome, pliki binarne są zainstalowane w typowej lokalizacji, znajdziesz je w /opt/google/chrome
. W tym folderze powinieneś znaleźć plik chrome_100_percent.pak
zawierający ikonę powiadomienia. Oto kroki, które użyłem, aby go wyodrębnić, używając informacji z tego pytania o przepełnienie stosu :
Pobierz kod do projektu grit-i18n za pomocą
svn checkout http://grit-i18n.googlecode.com/svn/trunk/ grit-i18n-read-only
To da ci folder w twojej CWD o nazwie grit-i18n-read-only
. CD do tego folderu
cd grit-i18n-read-only
Skopiuj moduł python data_pack do tego folderu
cp grit/format/data_pack.py .
Edytuj data_pack.py
w preferowanym edytorze. Po początkowym imporcie dodaj następujący wiersz:
sys.path.append(os.getcwd())
Pod koniec pliku w main
funkcji, usuń linię
print '%s: %s' % (resource_id, text)
(odpowiedź Przepełnienie stosu stwierdza, że dzieje się to w wierszu 160, z mojego doświadczenia wynika, że obecna wersja ma to w wierszu 201)
W jego miejsce wstaw odpowiednio następujące wcięcia (3 razy):
file = open(str(resource_id), "wb")
file.write(text)
Uruchom data_pack.py
narzędzie na pliku chrome pak ( grit-i18n-read-only
najpierw skopiowałem go do folderu):
./data_pack.py ../chrome_100_percent.pak
Spowoduje to powstanie wielu nowych plików w bieżącym katalogu, wszystkie nazwane liczbami bez rozszerzenia. Twoja przeglądarka plików (np. Nautilus) powinna być w stanie określić typy plików i wyświetlać miniatury obrazów. Znalazłem ikony powiadomień o nazwach 6866 i 6867.
Edytować
Chociaż poniżej znajdują się prostsze odpowiedzi, udało mi się zhakować trochę kodu, aby ponownie spakować zasoby, które możesz spróbować po edycji ikon. Spowoduje to utworzenie nowego .pak
pliku, którego sam nie próbowałem użyć, więc nie mogę powiedzieć z całą pewnością, że z powodzeniem pojawią się nowe ikony powiadomień.
W głównej funkcji in data_pack.py
skomentowałem cały kod w else
bloku i dodałem następujące wiersze:
# 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)
Więc po prostu biegnij ./data_pack.py
. Zakłada się, że chrome_100_percent.pak
znajduje się w bieżącym katalogu i powinien dać ci nowy chrome_100_percent_new.pak
plik, który możesz spróbować skopiować /opt/google/chrome/chrome_100_percent.pak
.
Uważam, że niektóre dodatkowe ikony w pakiecie zasobów związane z ikoną powiadomienia zostały zidentyfikowane; edycja powyższych elementów w celu włączenia ich powinna być dość prosta.
Ostateczna edycja
Teraz, gdy wróciłem do domu i miałem okazję popracować nad tym, udało mi się z powodzeniem zastąpić ikonę powiadomienia Chrome. Jak zauważył @Glutanimate, utknąłeś w rozdzielczości 16x16, więc nie jestem pewien, ile ulepszeń możesz faktycznie osiągnąć, ale przypuszczam, że to subiektywne.
Po prostu otworzyłem wyżej wymienione ikony (6864 - 6867) w GIMP, które wykryły je jako PNG w skali szarości. Wkleiłem nową ikonę do tego samego pliku w GIMP, próbując w ten sposób zachować te same właściwości obrazu (np. Skalę szarości). Następnie wyeksportowałem je jako pliki PNG, odznaczając WSZYSTKIE opcje oferowane przez GIMP, ale utrzymując poziom kompresji równy 9. Pliki wynikowe miały rozszerzenia .png, więc usunąłem je i zastąpiłem oryginały. Następnie uruchomiłem ponownie data_pack.py
, po wprowadzeniu modyfikacji wyszczególnionych powyżej.
Zachowałem kopię zapasową oryginalnego pakietu mv /opt/google/chrome/chrome_100_percent.pak /opt/google/chrome/chrome_100_percent.bak
i przeniosłem na nią mój zmodyfikowany plik .pak. Upewniam się, że podczas tego procesu Chrome jest zamknięty, i dwukrotnie sprawdź, czy procesy Chrome nie są uruchomione, i uważam, że chrome ma nowe ustawienie, które zezwala na procesy w tle, nawet gdy przeglądarka jest teraz domyślnie zamknięta.
Oto moje ikony powiadomień w Unity odzwierciedlają moje zmiany.
Edycja na koniec: OK, skłamałem - próbowałem PNG 32x32 i wygląda na to, że zadziałało dobrze. A więc proszę bardzo. Oto kilka zrzutów ekranu wyników.
- Oryginalna ikona: Prawdopodobnie rozpoznasz domyślną ikonę „brak nieprzeczytanych powiadomień” w moim panelu tutaj między moim dropboxem a ikonami pogody:
- Nowa ikona: Moja zmodyfikowana wersja 32x32px w tej samej lokalizacji:
(Źródło: Ikony partii od Adama Whitcrofta)
/usr/share/icons
, jeśli to pomaga