Rules-based browser launcher for TUI + GNOME. switchyard.aly.codes
tui gnome bowser go
0

Configure Feed

Select the types of activity you want to include in your feed.

Fix darkmode (#18) * make ForceDarkMode apply to all windows * window/settings: clarify force drk mode

Aly Raffauf (Jan 16, 2026, 1:42 AM EST) 5cf03465 7e9e8928

+22 -16
+11 -7
src/main.go
··· 23 23 app := adw.NewApplication(getAppID(), gio.ApplicationHandlesOpen) 24 24 25 25 app.ConnectActivate(func() { 26 - // Add host icon paths for Flatpak compatibility 27 - setupIconPaths() 26 + setupApp() 28 27 showSettingsWindow(app) 29 28 }) 30 29 31 30 app.ConnectOpen(func(files []gio.Filer, hint string) { 32 - // Add host icon paths for Flatpak compatibility 33 - setupIconPaths() 31 + setupApp() 34 32 35 33 if len(files) == 0 { 36 34 showSettingsWindow(app) ··· 47 45 } 48 46 } 49 47 50 - // setupIconPaths adds host system icon paths when running in Flatpak 51 - func setupIconPaths() { 48 + // setupApp initializes app-wide settings like dark mode and icon paths 49 + func setupApp() { 50 + cfg := loadConfig() 51 + 52 + // Apply dark mode app-wide 53 + if cfg.ForceDarkMode { 54 + adw.StyleManagerGetDefault().SetColorScheme(adw.ColorSchemeForceDark) 55 + } 56 + 52 57 // Add host system icon paths when running in Flatpak 53 58 if os.Getenv("FLATPAK_ID") != "" { 54 59 iconTheme := gtk.IconThemeGetForDisplay(gdk.DisplayGetDefault()) 55 60 if iconTheme != nil { 56 - // Add Flatpak export paths for system and user flatpaks 57 61 iconTheme.AddSearchPath("/var/lib/flatpak/exports/share/icons") 58 62 home, _ := os.UserHomeDir() 59 63 if home != "" {
-4
src/window_picker.go
··· 19 19 func showPickerWindow(app *adw.Application, url string, browsers []*Browser) { 20 20 cfg := loadConfig() 21 21 22 - if cfg.ForceDarkMode { 23 - adw.StyleManagerGetDefault().SetColorScheme(adw.ColorSchemeForceDark) 24 - } 25 - 26 22 // Filter hidden_browsers from the list 27 23 hiddenSet := make(map[string]bool) 28 24 for _, id := range cfg.HiddenBrowsers {
+11 -5
src/window_settings.go
··· 265 265 clamp.SetChild(content) 266 266 scrolled.SetChild(clamp) 267 267 268 - // Browser Picker section 269 - pickerGroup := adw.NewPreferencesGroup() 270 - pickerGroup.SetTitle("Picker Window") 268 + // App-wide appearance settings 269 + appearanceGroup := adw.NewPreferencesGroup() 270 + appearanceGroup.SetTitle("General") 271 271 272 272 forceDarkRow := adw.NewSwitchRow() 273 273 forceDarkRow.SetTitle("Force dark mode") 274 - forceDarkRow.SetSubtitle("Always use dark mode for the picker window") 274 + forceDarkRow.SetSubtitle("Always use dark mode") 275 275 forceDarkRow.SetActive(cfg.ForceDarkMode) 276 - pickerGroup.Add(forceDarkRow) 276 + appearanceGroup.Add(forceDarkRow) 277 + 278 + content.Append(appearanceGroup) 279 + 280 + // Picker Window section 281 + pickerGroup := adw.NewPreferencesGroup() 282 + pickerGroup.SetTitle("Picker Window") 277 283 278 284 showNamesRow := adw.NewSwitchRow() 279 285 showNamesRow.SetTitle("Show browser names")