Dlaczego Dropbox dostaje ikonę na pasku bocznym Findera?

40

Dlaczego Dropbox dostaje nietypową ikonę na pasku bocznym Findera, skoro inne katalogi, takie jak Dysk Google i Witryny (natywne w OS X przed Lionem), mają tę samą ogólną?

wprowadź opis zdjęcia tutaj

Jak mogę dostosować ikony używane przez foldery na pasku bocznym? OS X wyświetlał poszczególne ikony wszystkich folderów - już nie.

Baumr
źródło

Odpowiedzi:

36

Jak zauważyłeś, najnowsze wersje OS X wyświetlają tylko ogólne ikony folderów na pasku bocznym. Dlaczego więc Dropbox korzysta ze specjalnego traktowania?

Krótka odpowiedź jest taka, że ​​Dropbox używa nieudokumentowanego API, aby to osiągnąć. Mówiąc nietechnicznie, jest to specjalny hack instalowany przez aplikację Dropbox.


Niektórzy ciekawi ludzie na StackOverflow znaleźli specyficzny mechanizm wykorzystywany przez Dropbox: good ol 'mach_inject. Ten sam pakiet zawiera zarówno element paska narzędzi, jak i ikonę paska bocznego.

Jeśli jesteś ciekawy, pliki zasobów znajdują się tutaj (przynajmniej w moim systemie):

/Library/DropboxHelperTools/Dropbox_u502/DropboxBundle.bundle/Contents/Resources

Oczywiście Dropbox dokłada wszelkich starań, aby bezproblemowo zintegrować się z Finderem. Brak zwykłego traktowania, inne zwykłe foldery mają tylko ogólne ikony na pasku bocznym.


Edytuj 10.01.2015: Od Yosemite (10.10) istnieje nowy, usankcjonowany interfejs API Finder Sync do integracji, jak wskazują na to inne doniesienia. W El Capitan (10.11) ochrona integralności systemu nie zezwala na stare podejście typu mach_inject.

jmk
źródło
5
Google powinien zrobić to samo z Dyskiem :)
Baumr
Integracja Dropbox Finder współpracuje z El Capitan. Mam menu kontekstowe, odznaki i ikonę niestandardową na pasku bocznym. Z jakiej wersji klienta korzystasz?
Matteo,
@Matteo: To ciekawe, kiedy poszedłem sprawdzić wersję (v3.10.6), zaczęło działać! Zapewniam cię, że wcześniej nie działało. Ciekawe ...
Jmk
1
@Matteo: Aha, czytanie ze zrozumieniem zawodzi z mojej strony. Ktoś już opublikował zaktualizowany interfejs API poniżej. Dziękuję za poprawienie mnie!
Jmk
10

Zgodnie z dokumentacją rozszerzenia Finder Sync :

Możesz także użyć interfejsu API punktu rozszerzenia, aby dodać przycisk paska narzędzi do okna Findera lub ikonę paska bocznego dla monitorowanego folderu .

Sądzę, że właśnie tego używa Dropbox, aby to osiągnąć i niektóre inne funkcje ułatwione przez to rozszerzenie. Na przykład możesz także:

  • Zarejestruj zestaw folderów do monitorowania.
  • Odbieraj powiadomienia, gdy użytkownik rozpocznie lub zakończy przeglądanie zawartości monitorowanego folderu. Na przykład rozszerzenie otrzymuje powiadomienie, gdy użytkownik otworzy monitorowany folder w Finderze lub w oknie dialogowym Otwórz lub Zapisz.
  • Dodawaj, usuwaj i aktualizuj odznaki i etykiety na elementach w monitorowanym folderze.
  • Wyświetl menu kontekstowe, gdy użytkownik kliknie z wciśniętym klawiszem Control element w monitorowanym folderze.
  • Dodaj niestandardowy przycisk do paska narzędzi Findera.

Edytować:

Jak wspomina Mugen poniżej, El Capitan nie zezwala na wstrzykiwanie kodu, co czyni FinderSync jedyną opcją. W przypadku FinderSync dostępnego tylko od 10.10+ najlepszą opcją byłoby rozróżnienie:

if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_10) { ... }
doovers
źródło
To wydaje się kolidować z najwyżej ocenianą odpowiedzią, jakieś komentarze?
Baumr
3
@ Baumr Spekuluję tylko tutaj, ale zakładam, że odpowiedź jmk była prawdopodobnie poprawna w tym czasie (i nadal może być), ale teraz bardziej prawdopodobne jest, że Dropbox używa „oficjalnego” rozszerzenia Finder Sync od czasu wydania Yosemite. Dodatkowo sądzę, że dla kogoś, kto próbuje osiągnąć tę samą funkcjonalność we własnej aplikacji, byłoby to bardziej przydatne rozwiązanie, ponieważ jest to udokumentowane.
doovers
Wygląda na to, że masz rację - jakikolwiek sposób na potwierdzenie?
Baumr,
2
W El-Capitan nie będziemy już mogli wstrzykiwać kodu, więc opcja FinderSync jest jedyna
Mugen
1
@ Baumr, ponieważ rozszerzenie FinderSync jest dostępne tylko w wersji 10.10+, myślę, że najlepiej byłoby to zrobić:if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_10) { ... }
Mugen
2

Zainstaluj najnowszą aplikację Xtra Finder z - http://www.trankynam.com/xtrafinder/

Włącz „Pokaż kolorowe ikony na pasku bocznym” Znajduje się poniżej pola tekstowego „Maksymalna szerokość”

Dla innych ikon na pasku bocznym

Wymień pliki tutaj: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ folder zawiera używane szare ICNS oprócz [nieużywanych] 1024 x 1024 kolorowych plików ICNS. Każdy plik ICNS musi obsługiwać następujące rozmiary:

  • 16x16 72 DPI
  • 18x18 72 DPI
  • 32x32 144 i 72 DPI
  • 36x36 144 DPI
  • 64x64 144 DPI

Jeśli dodałeś folder niestandardowy do paska bocznego, możesz również zmienić jego ikonę. Powiedzmy, że nazwa folderu nazywa się „Oprogramowanie”. Przygotuj plik ICNS o nazwie SidebarSoftwareres.icns w wyżej wymienionym katalogu.

Zasadniczo plik icns musi mieć nazwę SidebarFoldername.icns, gdzie Sidebar pozostaje stały, a Ty wprowadzasz odpowiednią nazwę folderu.

Dla DropBox

Zastosuj plik ICNS do / Users / admin / Dropbox /Applications/Dropbox.app /Applications/Dropbox.app/Contents/Resources/box.icns (należy zastąpić ten plik tym, który chcesz)

Ikony paska bocznego Findera DropBox

Przejdź do /Library/DropboxHelperTools/Dropbox_u502/DropboxBundle.bundle/Contents/Resources

Tutaj musisz zastąpić następujące: toolbar.tiff (32x32 pikseli 72 DPI)

sidebar.tiff (64x64 piksele 72 DPI)

contextmenu.tiff (32x32 piksele 72 DPI)

toolbar_large.png (19x19 pikseli 72 DPI)

sidebar_blue.png (16x16 pikseli 72 DPI)

Tech One
źródło
Czy trochę o dodawaniu niestandardowej ikony paska bocznego do folderu wymaga zainstalowania aplikacji, czy może to zrobić samodzielnie? Czy wiesz też, czy to zadziała z Yosemite, kiedy zostanie wydany?
dhruveonmars
1
Właśnie próbowałem dodać własną ikonę i to nie działało. Następnie zainstalowałem aplikację SideEffect, która sprawia, że ​​ikony są kolorowe i pojawia się moja ikona niestandardowa. Odinstalowałem aplikację i moja ikona zniknęła.
Pahnev
1

Dropbox używa techniki wstrzykiwania kodu Findera, aby dostosować ikonę paska bocznego (i dodać elementy do menu klikniętego prawym przyciskiem myszy, a także dodać przycisk do górnego paska Findera). Od 10.7 nie ma dobrego sposobu na dostosowanie ikony paska bocznego.

W Yosemite Apple dodało niektóre interfejsy API, aby móc dostosować menu Findera prawym przyciskiem myszy i element paska narzędzi, ale nie jestem pewien co do paska bocznego.

Nickolay Olshevsky
źródło
Mówiąc o Yosemite, uważam, że Dropbox używa teraz rozszerzenia Finder Sync do integracji z Finderem ... ale nie widzę nic oczywistego w dokumentach tej funkcji dotyczących udostępniania niestandardowej ikony paska bocznego (obsługiwane są niestandardowe ikony paska narzędzi) ... Więc hack może być nadal na miejscu.
Dan J
Jasne, to się nazywa rozszerzenie synchronizacji Findera. Ale nie pozwala na ikonę paska bocznego. Jednak czytałem dokumentację po przekątnej, więc prawdopodobnie coś przeoczyłem.
Nickolay Olshevsky
0

Instalator Dropbox umieszcza go tam, a instalator dysku Google nie.

Po prostu przeciągnij folder na pasek boczny, a zostanie on przyklejony, nie jest wymagany instalator.

Hiltmon
źródło
10
Myślę, że pytanie dotyczy konkretnie ikony.
asmeurer
Tak, to nie dotyczy pytania
Baumr
2
Dałbym temu kolejny głos, jeśli bym mógł. To tylko kod, a instalator Dropbox instaluje tę funkcję, gdy działa w tle. To jak impreza, na którą zapraszasz dwóch gości. Jeden pozostawia wizytówkę na komodzie, a drugi nie. To nie właściciel dokonał wyboru, to goście zachowywali się inaczej.
bmike
2
@bike, druga część pytania brzmiała: „Jak dostosować ikony używane przez foldery na pasku bocznym?”
Baumr
0

Udało mi się uzyskać natywną ikonę Pobierz na pasku bocznym dla przeniesionego folderu Pobrane. Proces nie był łatwy i jest opisany tutaj: https://github.com/w0lfschild/colorfulSidebar_9/issues/1 Opiera się na mySIMB i colorfulSidebar. 3 lata temu zrezygnowałem z ustawiania natywnej ikony pobierania. Dziś postanowiłem dać kolejną szansę i ostatecznie działa.

Sassan
źródło