mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 21:36:17 +00:00
apply to terimal
This commit is contained in:
@@ -12,102 +12,90 @@ struct ContentView: View {
|
|||||||
@ObservedObject var hostsManager: HostsManager
|
@ObservedObject var hostsManager: HostsManager
|
||||||
@ObservedObject var keyManager: KeyManager
|
@ObservedObject var keyManager: KeyManager
|
||||||
|
|
||||||
@State private var spawnTime: Date = .now
|
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
TimelineView(.animation) { tl in
|
NavigationStack {
|
||||||
let time = tl.date.distance(to: spawnTime)
|
ZStack {
|
||||||
NavigationStack {
|
hostsManager.selectedTheme.background.suiColor.opacity(0.7)
|
||||||
ZStack {
|
.ignoresSafeArea(.all)
|
||||||
hostsManager.selectedTheme.background.suiColor.opacity(0.7)
|
List {
|
||||||
.ignoresSafeArea(.all)
|
SessionsListView(
|
||||||
List {
|
handler: handler,
|
||||||
SessionsListView(
|
hostsManager: hostsManager,
|
||||||
handler: handler,
|
keyManager: keyManager
|
||||||
hostsManager: hostsManager,
|
)
|
||||||
keyManager: keyManager
|
|
||||||
)
|
RecentsView(
|
||||||
|
hostsManager: hostsManager,
|
||||||
RecentsView(
|
keyManager: keyManager
|
||||||
hostsManager: hostsManager,
|
)
|
||||||
keyManager: keyManager
|
|
||||||
)
|
HostsView(
|
||||||
|
handler: handler,
|
||||||
HostsView(
|
hostsManager: hostsManager,
|
||||||
handler: handler,
|
keyManager: keyManager
|
||||||
hostsManager: hostsManager,
|
)
|
||||||
keyManager: keyManager
|
|
||||||
)
|
Section() {
|
||||||
|
|
||||||
Section() {
|
|
||||||
NavigationLink {
|
|
||||||
ThemeManagerView(hostsManager: hostsManager)
|
|
||||||
} label: {
|
|
||||||
Label("Themes", systemImage: "swatchpalette")
|
|
||||||
}
|
|
||||||
NavigationLink {
|
|
||||||
FontManagerView(hostsManager: hostsManager)
|
|
||||||
} label: {
|
|
||||||
Label("Fonts", systemImage: "textformat")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Section {
|
|
||||||
NavigationLink {
|
|
||||||
SnippetManagerView(hostsManager: hostsManager)
|
|
||||||
} label: {
|
|
||||||
Label("Snippets", systemImage: "paperclip")
|
|
||||||
}
|
|
||||||
|
|
||||||
NavigationLink {
|
|
||||||
KeyManagerView(hostsManager: hostsManager, keyManager: keyManager)
|
|
||||||
} label: {
|
|
||||||
Label("Keys", systemImage: "key.fill")
|
|
||||||
}
|
|
||||||
|
|
||||||
NavigationLink {
|
|
||||||
HostkeysView(hostsManager: hostsManager)
|
|
||||||
} label: {
|
|
||||||
Label("Hostkey Fingerprints", systemImage: "lock.display")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Section {
|
|
||||||
NavigationLink {
|
|
||||||
SettingsView(hostsManager: hostsManager, keyManager: keyManager)
|
|
||||||
} label: {
|
|
||||||
Label("Settings", systemImage: "gear")
|
|
||||||
}
|
|
||||||
NavigationLink {
|
|
||||||
AboutView(hostsManager: hostsManager)
|
|
||||||
} label: {
|
|
||||||
Label("About", systemImage: "info.square")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.scrollContentBackground(.hidden)
|
|
||||||
}
|
|
||||||
.navigationTitle("ShhShell")
|
|
||||||
.toolbar {
|
|
||||||
ToolbarItem(placement: .confirmationAction) {
|
|
||||||
NavigationLink {
|
NavigationLink {
|
||||||
ConnectionView(
|
ThemeManagerView(hostsManager: hostsManager)
|
||||||
handler: SSHHandler(host: Host.blank, keyManager: keyManager),
|
|
||||||
hostsManager: hostsManager,
|
|
||||||
keyManager: keyManager
|
|
||||||
)
|
|
||||||
} label: {
|
} label: {
|
||||||
Label("Add", systemImage: "plus")
|
Label("Themes", systemImage: "swatchpalette")
|
||||||
|
}
|
||||||
|
NavigationLink {
|
||||||
|
FontManagerView(hostsManager: hostsManager)
|
||||||
|
} label: {
|
||||||
|
Label("Fonts", systemImage: "textformat")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
NavigationLink {
|
||||||
|
SnippetManagerView(hostsManager: hostsManager)
|
||||||
|
} label: {
|
||||||
|
Label("Snippets", systemImage: "paperclip")
|
||||||
|
}
|
||||||
|
|
||||||
|
NavigationLink {
|
||||||
|
KeyManagerView(hostsManager: hostsManager, keyManager: keyManager)
|
||||||
|
} label: {
|
||||||
|
Label("Keys", systemImage: "key.fill")
|
||||||
|
}
|
||||||
|
|
||||||
|
NavigationLink {
|
||||||
|
HostkeysView(hostsManager: hostsManager)
|
||||||
|
} label: {
|
||||||
|
Label("Hostkey Fingerprints", systemImage: "lock.display")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Section {
|
||||||
|
NavigationLink {
|
||||||
|
SettingsView(hostsManager: hostsManager, keyManager: keyManager)
|
||||||
|
} label: {
|
||||||
|
Label("Settings", systemImage: "gear")
|
||||||
|
}
|
||||||
|
NavigationLink {
|
||||||
|
AboutView(hostsManager: hostsManager)
|
||||||
|
} label: {
|
||||||
|
Label("About", systemImage: "info.square")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.scrollContentBackground(.hidden)
|
||||||
}
|
}
|
||||||
.visualEffect { content, proxy in
|
.navigationTitle("ShhShell")
|
||||||
content
|
.toolbar {
|
||||||
.colorEffect(ShaderLibrary.crt(
|
ToolbarItem(placement: .confirmationAction) {
|
||||||
.float2(proxy.size),
|
NavigationLink {
|
||||||
.float(time)
|
ConnectionView(
|
||||||
))
|
handler: SSHHandler(host: Host.blank, keyManager: keyManager),
|
||||||
|
hostsManager: hostsManager,
|
||||||
|
keyManager: keyManager
|
||||||
|
)
|
||||||
|
} label: {
|
||||||
|
Label("Add", systemImage: "plus")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,7 +103,7 @@ struct ContentView: View {
|
|||||||
|
|
||||||
#Preview {
|
#Preview {
|
||||||
let keymanager = KeyManager()
|
let keymanager = KeyManager()
|
||||||
ContentView(
|
ContentView(
|
||||||
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
|
handler: SSHHandler(host: Host.debug, keyManager: keymanager),
|
||||||
hostsManager: HostsManager(),
|
hostsManager: HostsManager(),
|
||||||
keyManager: keymanager
|
keyManager: keymanager
|
||||||
|
|||||||
@@ -16,32 +16,48 @@ struct ShellView: View {
|
|||||||
|
|
||||||
@Environment(\.dismiss) var dismiss
|
@Environment(\.dismiss) var dismiss
|
||||||
|
|
||||||
|
@State var startTime: Date = .now
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
ZStack {
|
ZStack {
|
||||||
hostsManager.selectedTheme.background.suiColor
|
TimelineView(.animation) { tl in
|
||||||
.ignoresSafeArea(.all)
|
let time = tl.date.distance(to: startTime)
|
||||||
TerminalController(handler: handler, hostsManager: hostsManager)
|
let shaderEnabled = hostsManager.settings.filter == .crt
|
||||||
|
hostsManager.selectedTheme.background.suiColor
|
||||||
Group {
|
.ignoresSafeArea(.all)
|
||||||
Color.gray.opacity(0.2)
|
TerminalController(handler: handler, hostsManager: hostsManager)
|
||||||
.transition(.opacity)
|
|
||||||
Image(systemName: "bell.fill")
|
Group {
|
||||||
.foregroundStyle(
|
Color.gray.opacity(0.2)
|
||||||
hostsManager.selectedTheme.background.luminance > 0.5 ?
|
.transition(.opacity)
|
||||||
.black : .white
|
Image(systemName: "bell.fill")
|
||||||
)
|
.foregroundStyle(
|
||||||
.font(.largeTitle)
|
hostsManager.selectedTheme.background.luminance > 0.5 ?
|
||||||
.shadow(color: .black, radius: 5)
|
.black : .white
|
||||||
}
|
)
|
||||||
.opacity(handler.bell ? 1 : 0)
|
.font(.largeTitle)
|
||||||
.onChange(of: handler.bell) { _ in
|
.shadow(color: .black, radius: 5)
|
||||||
guard handler.bell else { return }
|
|
||||||
if hostsManager.settings.bellHaptic {
|
|
||||||
Haptic.warning.trigger()
|
|
||||||
}
|
}
|
||||||
if hostsManager.settings.bellSound {
|
.opacity(handler.bell ? 1 : 0)
|
||||||
AudioServicesPlaySystemSound(1103)
|
.onChange(of: handler.bell) { _ in
|
||||||
|
guard handler.bell else { return }
|
||||||
|
if hostsManager.settings.bellHaptic {
|
||||||
|
Haptic.warning.trigger()
|
||||||
|
}
|
||||||
|
if hostsManager.settings.bellSound {
|
||||||
|
AudioServicesPlaySystemSound(1103)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.visualEffect { content, proxy in
|
||||||
|
content
|
||||||
|
.colorEffect(
|
||||||
|
ShaderLibrary.crt(
|
||||||
|
.float2(proxy.size),
|
||||||
|
.float(time)
|
||||||
|
),
|
||||||
|
isEnabled: shaderEnabled
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user