mirror of
https://github.com/neon443/ShhShell.git
synced 2026-03-11 21:36:17 +00:00
fix scrollback
This commit is contained in:
@@ -23,7 +23,7 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
var sessionID: UUID?
|
var sessionID: UUID?
|
||||||
|
|
||||||
var scrollback: [String] = []
|
var scrollback: [String] = []
|
||||||
var scrollbackSize = 0.0
|
// var scrollbackSize = 0.0
|
||||||
|
|
||||||
@Published var title: String = ""
|
@Published var title: String = ""
|
||||||
@Published var state: SSHState = .idle
|
@Published var state: SSHState = .idle
|
||||||
@@ -142,9 +142,11 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func disconnect() {
|
func disconnect() {
|
||||||
|
Task { @MainActor in
|
||||||
self.hostkeyChanged = false
|
self.hostkeyChanged = false
|
||||||
withAnimation { self.state = .idle }
|
withAnimation { self.state = .idle }
|
||||||
withAnimation { self.testSuceeded = nil }
|
withAnimation { self.testSuceeded = nil }
|
||||||
|
}
|
||||||
|
|
||||||
if let sessionID {
|
if let sessionID {
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
@@ -153,7 +155,7 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
scrollback = []
|
scrollback = []
|
||||||
scrollbackSize = 0
|
// scrollbackSize = 0
|
||||||
|
|
||||||
//send eof if open
|
//send eof if open
|
||||||
if ssh_channel_is_open(channel) == 1 {
|
if ssh_channel_is_open(channel) == 1 {
|
||||||
@@ -371,11 +373,11 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
#endif
|
#endif
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
scrollback.append(string)
|
scrollback.append(string)
|
||||||
if scrollbackSize/1024/1024 > 10 {
|
// if scrollbackSize/1024/1024 > 10 {
|
||||||
scrollback.remove(at: 0)
|
// scrollback.remove(at: 0)
|
||||||
} else {
|
// } else {
|
||||||
scrollbackSize += Double(string.lengthOfBytes(using: .utf8))
|
// scrollbackSize += Double(string.lengthOfBytes(using: .utf8))
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
return string
|
return string
|
||||||
}
|
}
|
||||||
@@ -408,15 +410,15 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
|
|||||||
// print("resized tty to \(toRows)rows and \(toCols)cols")
|
// print("resized tty to \(toRows)rows and \(toCols)cols")
|
||||||
}
|
}
|
||||||
|
|
||||||
func prettyScrollbackSize() -> String {
|
// func prettyScrollbackSize() -> String {
|
||||||
if (scrollbackSize/1024/1024) > 1 {
|
// if (scrollbackSize/1024/1024) > 1 {
|
||||||
return "\(scrollbackSize/1024/1024) MiB scrollback"
|
// return "\(scrollbackSize/1024/1024) MiB scrollback"
|
||||||
} else if scrollbackSize/1024 > 1 {
|
// } else if scrollbackSize/1024 > 1 {
|
||||||
return "\(scrollbackSize/1024) KiB scrollback"
|
// return "\(scrollbackSize/1024) KiB scrollback"
|
||||||
} else {
|
// } else {
|
||||||
return "\(scrollbackSize) B scrollback"
|
// return "\(scrollbackSize) B scrollback"
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
private func logSshGetError() {
|
private func logSshGetError() {
|
||||||
guard var session = self.session else { return }
|
guard var session = self.session else { return }
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
|
|||||||
|
|
||||||
public convenience init(frame: CGRect, handler: SSHHandler, hostsManager: HostsManager) {
|
public convenience init(frame: CGRect, handler: SSHHandler, hostsManager: HostsManager) {
|
||||||
self.init(frame: frame)
|
self.init(frame: frame)
|
||||||
|
|
||||||
self.handler = handler
|
self.handler = handler
|
||||||
self.hostsManager = hostsManager
|
self.hostsManager = hostsManager
|
||||||
}
|
}
|
||||||
@@ -80,6 +81,7 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
|
|||||||
|
|
||||||
public override init(frame: CGRect) {
|
public override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
|
getTerminal().options.scrollback = 10_0000
|
||||||
terminalDelegate = self
|
terminalDelegate = self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user