mirror of
https://github.com/mmacierzanka/second-display.git
synced 2026-11-06 12:41:45 +01:00
2.5 KiB
2.5 KiB
Second Display – brief
Cel
Aplikacja natywna na macOS, która wyświetla w oknie obraz z urządzenia przechwytującego (kamerki / capture card) oraz odtwarza dźwięk z wybranego źródła (wejścia) dźwięku. Ma służyć jako "drugi monitor".
Wymagania
- Menu (główne menu aplikacji u góry ekranu, nie ikona statusowa po prawej): wybór źródła obrazu, wybór źródła dźwięku oraz opcja wyłączenia dźwięku.
- Opcjonalna (włączana/wyłączana) blokada usypiania ekranu w trakcie aktywności aplikacji. Domyślnie włączona, wybór zapamiętywany.
- Opcjonalne uruchamianie na pełnym ekranie. Domyślnie włączone, wybór zapamiętywany.
- Lokalizacja: angielski i polski (
Resources/{en,pl}.lproj), język wg ustawień systemu. - Dodatki: wybór formatu (rozdzielczość/FPS) per urządzenie, tryby skalowania (dopasuj/wypełnij/rozciągnij), okno zawsze na wierzchu, wyciszenie (⇧⌘M), menu Okno (kafelkowanie systemowe, pełny ekran ⌃⌘F), automatyczne wznawianie po odpięciu/wpięciu urządzenia.
- Poza zakresem (na razie): start przy logowaniu, nagrywanie, zrzuty ekranu, suwak głośności.
Struktura
Sources/– kod aplikacji (AppKit + AVFoundation, jedna sesjaAVCaptureSession, dźwięk przezAVCaptureAudioPreviewOutput), klasaApprozbita na rozszerzenia:main.swift(start),App.swift(stan, okno, cykl życia),Capture.swift(urządzenia, formaty, hot-plug),Menu.swift(menu i akcje),Power.swift(blokada usypiania),Preferences.swift(ustawienia z UserDefaults).Config/Info.plist,Config/SecondDisplay.entitlements– wersja, uprawnienia (kamera, mikrofon; hardened runtime).Resources/–AppIcon.icon(Icon Composer, Liquid Glass; kompilowana przezactool),{en,pl}.lproj(Localizable.strings,InfoPlist.strings),uninstall.sh(kopiowany do bundla; usuwa aplikację, preferencje, cache, uprawnienia TCC). Bundle ID:com.mmacierzanka.seconddisplay.scripts/check-strings.sh– spójność tłumaczeń en/pl.Makefile–make(build dobuild/SecondDisplay.app),run,check,install,uninstall,clean,help.SIGN_IDdomyślnie ad-hoc (-).
Konwencje
- Ustawienia w
UserDefaults(klucze:video,audio,keepAwake,startFull,onTop,gravity,format.<id>). - Nowe napisy dodawaj przez
NSLocalizedStringoraz do obu plikówLocalizable.strings. - Przed commitem:
make check. Wersja wConfig/Info.plist, numer buildu = liczba commitów. - Commity: małe, osobne na funkcję, z linią
Co-Authored-By.