settings.go RawHistoryFolder
1package webkit
2
3// Config holds initialization settings for the WebKit-based browser components.
4// This will map to WebKit2GTK and GTK settings in the real implementation.
5type Config struct {
6 // InitialURL is the first URL to load when creating a WebView.
7 InitialURL string
8
9 // UserAgent allows overriding the default user agent string.
10 UserAgent string
11
12 // EnableDeveloperExtras enables devtools/inspector.
13 EnableDeveloperExtras bool
14
15 // ZoomDefault sets an initial zoom factor (1.0 = 100%).
16 ZoomDefault float64
17
18 // DataDir is the base directory for persistent website data (cookies, localStorage, etc.).
19 DataDir string
20 // CacheDir is the base directory for cache data.
21 CacheDir string
22
23 // Fonts apply to pages that don't specify fonts (browser defaults).
24 DefaultSansFont string
25 DefaultSerifFont string
26 DefaultMonospaceFont string
27 DefaultFontSize int // CSS px (~points)
28
29 // Rendering controls GPU/CPU selection and debug options
30 Rendering RenderingConfig
31
32 // VideoAcceleration controls video hardware acceleration settings
33 VideoAcceleration VideoAccelerationConfig
34
35 // Memory controls memory optimization settings
36 Memory MemoryConfig
37
38 // CodecPreferences for media playback
39 CodecPreferences CodecPreferencesConfig
40}
41
42// CodecPreferencesConfig holds codec preferences for WebKit media playback
43type CodecPreferencesConfig struct {
44 PreferredCodecs []string
45 BlockedCodecs []string
46 ForceAV1 bool
47 CustomUserAgent string
48 DisableTwitchCodecControl bool
49}
50
51// RenderingConfig controls hardware acceleration preferences.
52// Mode accepts: "auto" (default), "gpu", or "cpu".
53// DebugGPU enables compositing indicators if supported.
54type RenderingConfig struct {
55 Mode string
56 DebugGPU bool
57}
58
59// VideoAccelerationConfig controls video hardware acceleration settings.
60type VideoAccelerationConfig struct {
61 EnableVAAPI bool
62 AutoDetectGPU bool
63 VAAPIDriverName string
64 EnableAllDrivers bool
65 LegacyVAAPI bool
66}
67
68// CacheModel represents WebKit cache model options for memory optimization.
69type CacheModel string
70
71const (
72 CacheModelDocumentViewer CacheModel = "document_viewer" // Minimal caching, lowest memory
73 CacheModelWebBrowser CacheModel = "web_browser" // Default, balanced caching
74 CacheModelPrimaryWebBrowser CacheModel = "primary_web_browser" // Maximum caching, highest memory
75)
76
77// MemoryConfig controls memory optimization settings.
78type MemoryConfig struct {
79 // MemoryLimitMB sets the maximum memory limit per WebView in MB (0 = unlimited)
80 MemoryLimitMB int
81
82 // ConservativeThreshold triggers early memory cleanup (0.0-1.0, default 0.33)
83 ConservativeThreshold float64
84
85 // StrictThreshold triggers aggressive memory cleanup (0.0-1.0, default 0.5)
86 StrictThreshold float64
87
88 // KillThreshold kills processes at this memory usage (0.0-1.0, 0 = disabled)
89 KillThreshold float64
90
91 // PollIntervalSeconds sets how often to check memory usage (default 2.0)
92 PollIntervalSeconds float64
93
94 // CacheModel determines caching strategy (default: web_browser)
95 CacheModel CacheModel
96
97 // EnablePageCache enables back/forward page caching (default: true)
98 EnablePageCache bool
99
100 // EnableOfflineAppCache enables offline application caching (default: true)
101 EnableOfflineAppCache bool
102
103 // ProcessRecycleThreshold recycles WebView after N page loads (0 = disabled)
104 ProcessRecycleThreshold int
105
106 // EnableGCInterval enables periodic JS garbage collection in seconds (0 = disabled)
107 EnableGCInterval int
108
109 // EnableMemoryMonitoring logs memory usage and pressure events
110 EnableMemoryMonitoring bool
111}