DockNest
Launcher Docka dla narzędzi deweloperskich, który pozwala utrzymać Dock w porządku.
Po co istnieje
Trzymanie każdego IDE, edytora, terminala i narzędzia w Docku kosztuje miejsce i uwagę. DockNest otwiera się jako lekki popover zakotwiczony wokół Docka, wykrywa już zainstalowane narzędzia deweloperskie, grupuje je i pozwala otworzyć plik lub katalog przez upuszczenie go na kafelek.
Co robi
- Popover zakotwiczony wokół krawędzi Docka
- Automatyczne wykrywanie w /Applications, /Applications/Utilities, /System/Applications, /System/Applications/Utilities oraz ~/Applications
- Automatyczne grupowanie na IDE i Terminal
- Przeciągnięcie pliku lub katalogu na kafelek otwiera go w tej aplikacji
- Ustawienia w popoverze do ukrywania i pokazywania wykrytych aplikacji
- Bez telemetrii, bez dostępu do sieci, bez usługi w tle
Stack
- Swift
- AppKit
- UserDefaults
Użycie
open DockNest.xcodeproj
xcodebuild -project DockNest.xcodeproj -scheme DockNest \
-configuration Debug -destination 'platform=macOS' build
Notatki inżynierskie
Wykrywanie opiera się na metadanych, a nie na zaszytej liście — właśnie dlatego działa w różnych konfiguracjach deweloperskich bez utrzymywania stałego zbioru aplikacji: IDE i narzędzia deweloperskie są rozpoznawane po LSApplicationCategoryType równym public.app-category.developer-tools, a terminale po metadanych obsługi dokumentów powiązanych z powłoką, takich jak CFBundleTypeRole równy Shell oraz typ com.apple.terminal.shell-script. Ukryte preferencje aplikacji są zapisywane lokalnie w UserDefaults, a aplikacja nie czyta zawartości żadnych plików.
Ograniczenia
- macOS nie udostępnia publicznego API do wykrywania przeciągania nad ikoną Docka, więc upuszczenie działa, gdy popover jest już otwarty.
- Geometria kafelków Docka nie jest udostępniana publicznie, więc położenie popovera jest przybliżane względem aktywnej krawędzi Docka.