How ginj-capture/ginj works
Ginj is a Java desktop screen-capture and recording application centered on a capture → annotate → share workflow. The visible launcher initializes preferences and creates the persistent StarWindow UI; that window references capture selection and history. Annotation tools and undoable overlay actions form a distinct editing stage, while exports have disk, clipboard, and OAuth-backed service implementations. The README documents recording and supported sharing services, but sampled source does not show their full runtime wiring, so those branches are kept separate. Connections below are limited to README statements and relationships visible in the provided source index or excerpts.
Main entry points: ExportFrame.java Export interface · StarWindow.java Desktop hub · Ginj.java App launcher · CaptureEditingFrame.java Capture editor
Components 25
Application UI
- App launcher
src/main/java/info/ginj/Ginj.java - Desktop hub
src/main/java/info/ginj/ui/StarWindow.java - Capture history
src/main/java/info/ginj/ui/HistoryFrame.java
Capture and editing
- Capture selection
src/main/java/info/ginj/ui/CaptureSelectionFrame.java - Capture editor
src/main/java/info/ginj/ui/CaptureEditingFrame.java - Annotation tools
src/main/java/info/ginj/tool - Overlay actions
src/main/java/info/ginj/action - Video recording
src/main/java/info/ginj/ui/VideoControlFrame.java
Export and sharing
- Export interface
src/main/java/info/ginj/ui/ExportFrame.java - Export context
src/main/java/info/ginj/export/ExportContext.java - Disk export
src/main/java/info/ginj/export/disk/DiskExporter.java - Clipboard export
src/main/java/info/ginj/export/clipboard/ClipboardExporter.java - OAuth workflow
src/main/java/info/ginj/export/online/AbstractOAuth2Exporter.java - Dropbox export
src/main/java/info/ginj/export/online/dropbox/DropboxExporter.java - Drive export
src/main/java/info/ginj/export/online/google/GoogleDriveExporter.java - Photos export
src/main/java/info/ginj/export/online/google/GooglePhotosExporter.java - YouTube export
src/main/java/info/ginj/export/online/google/YoutubeExporter.java
Models and settings
- Capture data
src/main/java/info/ginj/model/Capture.java - Preferences
src/main/java/info/ginj/model/Prefs.java - Accounts
src/main/java/info/ginj/model/Account.java - History files
src/main/java/info/ginj/Ginj.java
Other components
- User
- Dropbox
- Google services
- Desktop
Connections 26
- User → Desktop hub: uses
- App launcher → Preferences: loads
src/main/java/info/ginj/Ginj.java - App launcher → Desktop hub: starts
src/main/java/info/ginj/Ginj.java - Desktop hub → Capture selection: opens
src/main/java/info/ginj/ui/StarWindow.java - Desktop hub → Capture history: opens
src/main/java/info/ginj/ui/StarWindow.java - User → Capture selection: selects screen
- User → Capture editor: annotates
- Capture editor → Annotation tools: uses tools
src/main/java/info/ginj/tool/Overlay.java - Capture editor → Overlay actions: uses actions
- User → Video recording: records video
- User → Export interface: shares capture
- Export interface → Export context: provides context
- Export context → Desktop hub: references
src/main/java/info/ginj/export/ExportContext.java - Export interface → Disk export: exports to disk
- Export interface → Clipboard export: copies image
- Export interface → Dropbox export: selects service
- Export interface → Drive export: selects service
- Export interface → Photos export: selects service
- Export interface → YouTube export: selects service
- Dropbox export → OAuth workflow: uses authorization
src/main/java/info/ginj/export/online/dropbox/DropboxExporter.java - Drive export → Google services: uploads to
- Photos export → Google services: uploads to
- Dropbox export → Dropbox: uploads to
- OAuth workflow → Accounts: creates account
src/main/java/info/ginj/export/online/AbstractOAuth2Exporter.java - App launcher → History files: provides history folder
src/main/java/info/ginj/Ginj.java - Desktop hub → Desktop: positions on display