hardcoded a wip jellycursor

This commit is contained in:
neon443
2025-08-29 23:38:31 +01:00
parent dc01156d9c
commit 09a6e5a029
5 changed files with 42 additions and 8 deletions

View File

@@ -81,6 +81,7 @@
A98554632E0587DF009051BD /* HostsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98554622E0587DF009051BD /* HostsView.swift */; };
A98CAB442E4229F7005E4C42 /* HostSymbolPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */; };
A9921DE12E5F5710009F72A8 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9921DE02E5F5710009F72A8 /* WelcomeView.swift */; };
A9921FFF2E61D537009F72A8 /* libssh2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9921FFE2E61D537009F72A8 /* libssh2.xcframework */; };
A994D64A2E5C94E200672395 /* ShaderTestingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A994D6492E5C94E200672395 /* ShaderTestingView.swift */; };
A9A2F4F62E3001D300D0AE9B /* AddSnippetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */; };
A9B1E5852E5F8E86009309E5 /* WelcomeChunk.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B1E5842E5F8E86009309E5 /* WelcomeChunk.swift */; };
@@ -224,6 +225,7 @@
A98554622E0587DF009051BD /* HostsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostsView.swift; sourceTree = "<group>"; };
A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostSymbolPicker.swift; sourceTree = "<group>"; };
A9921DE02E5F5710009F72A8 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = "<group>"; };
A9921FFE2E61D537009F72A8 /* libssh2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = libssh2.xcframework; path = ../blink/xcfs/.build/artifacts/xcfs/libssh2/libssh2.xcframework; sourceTree = SOURCE_ROOT; };
A994D6492E5C94E200672395 /* ShaderTestingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShaderTestingView.swift; sourceTree = "<group>"; };
A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSnippetView.swift; sourceTree = "<group>"; };
A9B1E5842E5F8E86009309E5 /* WelcomeChunk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeChunk.swift; sourceTree = "<group>"; };
@@ -261,6 +263,7 @@
A95FAA542DF4B62900DE2F5A /* LibSSH.xcframework in Frameworks */,
A9E78F422E58BD770079F3CC /* SwiftTerm in Frameworks */,
A93143BE2DF4D0B300FCD5DB /* libpthread.tbd in Frameworks */,
A9921FFF2E61D537009F72A8 /* libssh2.xcframework in Frameworks */,
A9083E402DF2226F0042906E /* libz.tbd in Frameworks */,
A95FAA562DF4B62A00DE2F5A /* openssl.xcframework in Frameworks */,
);
@@ -630,6 +633,7 @@
A9083E3F2DF2225A0042906E /* libz.tbd */,
A95FAA502DF4B62100DE2F5A /* LibSSH.xcframework */,
A95FAA512DF4B62100DE2F5A /* openssl.xcframework */,
A9921FFE2E61D537009F72A8 /* libssh2.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";

View File

@@ -7,6 +7,7 @@
import Foundation
import LibSSH
import libssh2
import OSLog
import SwiftUI
import SwiftTerm

View File

@@ -52,9 +52,18 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
}
}
override func showCursor(source: Terminal) {
super.showCursor(source: source)
print("showcursor called")
}
override func hideCursor(source: Terminal) {
super.hideCursor(source: source)
print("hide cursor called")
}
override func cursorStyleChanged(source: Terminal, newStyle: CursorStyle) {
super.cursorStyleChanged(source: source, newStyle: newStyle)
}
func startFeedLoop() {

View File

@@ -148,10 +148,7 @@ Hostkey fingerprint is \(handler.getHostkey() ?? "nil")
handler.writeToChannel(hostsManager.snippets.first(where: { $0.id == handler.host.startupSnippetID })?.content)
}
} label: {
Label(
handler.connected ? "Disconnect" : "Connect",
systemImage: handler.connected ? "xmark.app.fill" : "power"
)
Label("Connect", systemImage: "power")
}
.disabled(handler.hostInvalid())
}

View File

@@ -11,9 +11,11 @@ import AudioToolbox
struct ShellView: View {
@ObservedObject var handler: SSHHandler
@ObservedObject var hostsManager: HostsManager
@ObservedObject var container = TerminalViewContainer.shared
@State var jellyLoc: (x: Int, y: Int) = (0, 0)
@State var jellyShow: Bool = true
@Environment(\.dismiss) var dismiss
var body: some View {
@@ -22,10 +24,31 @@ struct ShellView: View {
hostsManager.selectedTheme.background.suiColor
.ignoresSafeArea(.all)
ZStack {
ZStack(alignment: .topLeading) {
TerminalController(handler: handler, hostsManager: hostsManager)
// .colorMultiply(Color(red: 0.95, green: 1, blue: 0.95, opacity: 1))
.brightness(hostsManager.settings.filter == .crt ? 0.2 : 0.0)
.onAppear {
let timer = Timer(timeInterval: 0.1, repeats: true) { timer in
DispatchQueue.main.async {
let terminalView = container.sessions[handler.sessionID ?? UUID()]?.terminalView
terminalView?.getTerminal().hideCursor()
jellyLoc = terminalView?.getTerminal().getCursorLocation() ?? (0,0)
jellyShow = terminalView?.getTerminal().buffer.isCursorInViewPort ?? true
}
}
RunLoop.main.add(timer, forMode: .common)
}
Rectangle()
.frame(width: 4.3, height: 12)
.offset(
x: CGFloat(jellyLoc.x)*4.3,
y: CGFloat(jellyLoc.y)*8.66
)
.opacity(jellyShow ? 1 : 0)
.animation(.spring, value: jellyLoc.x)
.animation(.spring, value: jellyLoc.y)
if hostsManager.settings.filter == .crt {
CRTView()
.opacity(0.75)