Skip to content

Commit f574029

Browse files
committed
added borderless setting
1 parent f59eb4f commit f574029

File tree

5 files changed

+41
-8
lines changed

5 files changed

+41
-8
lines changed

Nook/Components/Browser/Window/WindowView.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ struct WindowView: View {
7575
WebsiteLoadingIndicator()
7676
WebsiteView()
7777
}
78-
.padding(.bottom, 8)
78+
.padding(.bottom, browserManager.settingsManager.borderless ? 0 : 8)
7979
.zIndex(2000)
8080

8181
}
@@ -100,10 +100,12 @@ struct WindowView: View {
100100
.environmentObject(windowState)
101101
case .windowVStack:
102102
VStack(spacing: 0) {
103-
WebsiteLoadingIndicator()
103+
if !(windowState.isFullScreen || browserManager.settingsManager.borderless) {
104+
WebsiteLoadingIndicator()
105+
}
104106
WebsiteView()
105107
}
106-
.padding(.bottom, 8)
108+
.padding(.bottom, browserManager.settingsManager.borderless ? 0 : 8)
107109
.zIndex(2000)
108110

109111
}

Nook/Components/Settings/SettingsView.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,22 @@ struct GeneralSettingsView: View {
197197
.foregroundStyle(.secondary)
198198
}
199199
}
200+
201+
Divider().opacity(0.4)
202+
203+
Toggle(
204+
isOn: $browserManager.settingsManager
205+
.borderless
206+
) {
207+
VStack(alignment: .leading, spacing: 2) {
208+
Text("Borderless")
209+
Text(
210+
"Remove the window border for a cleaner look"
211+
)
212+
.font(.caption)
213+
.foregroundStyle(.secondary)
214+
}
215+
}
200216
}
201217

202218
SettingsSectionCard(

Nook/Components/WebsiteView/EmptyWebsiteView.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ struct EmptyWebsiteView: View {
2121
if windowState.isFullScreen {
2222
return 0
2323
}
24+
if browserManager.settingsManager.borderless {
25+
return 0
26+
}
2427
if #available(macOS 26.0, *) {
2528
return 12
2629
} else {
@@ -40,8 +43,8 @@ struct EmptyWebsiteView: View {
4043
}
4144
}
4245
// Match the exact same padding/margins as the real webview
43-
.padding(.trailing, windowState.isFullScreen ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .right ? 0 : 8))
44-
.padding(.leading, windowState.isFullScreen ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .left ? 0 : 8))
46+
.padding(.trailing, (windowState.isFullScreen || browserManager.settingsManager.borderless) ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .right ? 0 : 8))
47+
.padding(.leading, (windowState.isFullScreen || browserManager.settingsManager.borderless) ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .left ? 0 : 8))
4548
.frame(maxWidth: .infinity, maxHeight: .infinity)
4649
}
4750
}

Nook/Components/WebsiteView/WebsiteView.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ struct WebsiteView: View {
7373
if windowState.isFullScreen {
7474
return 0
7575
}
76+
if browserManager.settingsManager.borderless {
77+
return 0
78+
}
7679
if #available(macOS 26.0, *) {
7780
return 12
7881
} else {
@@ -92,8 +95,8 @@ struct WebsiteView: View {
9295
// Restore visual margins around the web content card
9396
// - Keep webview flush with the sidebar when visible (left or right)
9497
// - Add margins when the sidebar is hidden
95-
.padding(.trailing, windowState.isFullScreen ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .right ? 0 : 8))
96-
.padding(.leading, windowState.isFullScreen ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .left ? 0 : 8))
98+
.padding(.trailing, (windowState.isFullScreen || browserManager.settingsManager.borderless) ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .right ? 0 : 8))
99+
.padding(.leading, (windowState.isFullScreen || browserManager.settingsManager.borderless) ? 0 : (windowState.isSidebarVisible && browserManager.settingsManager.sidebarPosition == .left ? 0 : 8))
97100
}
98101
.contextMenu {
99102
// Divider + close buttons overlay when split is active

Nook/Managers/SettingsManager/SettingsManager.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class SettingsManager {
2525
private let geminiApiKeyKey = "settings.geminiApiKey"
2626
private let geminiModelKey = "settings.geminiModel"
2727
private let showAIAssistantKey = "settings.showAIAssistant"
28+
private let borderlessKey = "settings.borderless"
2829
var currentSettingsTab: SettingsTabs = .general
2930

3031
// Stored properties
@@ -116,6 +117,12 @@ class SettingsManager {
116117
userDefaults.set(showAIAssistant, forKey: showAIAssistantKey)
117118
}
118119
}
120+
121+
var borderless: Bool {
122+
didSet {
123+
userDefaults.set(borderless, forKey: borderlessKey)
124+
}
125+
}
119126

120127
init() {
121128
// Register default values
@@ -133,7 +140,8 @@ class SettingsManager {
133140
experimentalExtensionsKey: false,
134141
geminiApiKeyKey: "",
135142
geminiModelKey: GeminiModel.flash.rawValue,
136-
showAIAssistantKey: true
143+
showAIAssistantKey: true,
144+
borderlessKey: false
137145
])
138146

139147
// Initialize properties from UserDefaults
@@ -161,6 +169,7 @@ class SettingsManager {
161169
self.geminiApiKey = userDefaults.string(forKey: geminiApiKeyKey) ?? ""
162170
self.geminiModel = GeminiModel(rawValue: userDefaults.string(forKey: geminiModelKey) ?? GeminiModel.flash.rawValue) ?? .flash
163171
self.showAIAssistant = userDefaults.bool(forKey: showAIAssistantKey)
172+
self.borderless = userDefaults.bool(forKey: borderlessKey)
164173
}
165174
}
166175

0 commit comments

Comments
 (0)