axed some of them bc i cba to find italic, bold, bolditalc ones

removed the 2nd font enum and switched to a computed property for the font name
updated the loadfonts thing
removed applyselectedtheme from the sshhandler and the init, moved it to didmovetowindow
This commit is contained in:
neon443
2025-07-06 19:13:19 +01:00
parent 0c31a7d7c5
commit 4a98e3e4c9
21 changed files with 122 additions and 67 deletions

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -8,14 +8,15 @@
/* Begin PBXBuildFile section */
A9083E402DF2226F0042906E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A9083E3F2DF2225A0042906E /* libz.tbd */; };
A90936842E1AC31B00856059 /* MesloLGS NF Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936832E1AC31B00856059 /* MesloLGS NF Regular.ttf */; };
A90936882E1AC51100856059 /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90936872E1AC51100856059 /* Fonts.swift */; };
A909368A2E1AC5CA00856059 /* SF-Mono-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = A90936892E1AC5CA00856059 /* SF-Mono-Regular.otf */; };
A909368C2E1AC64400856059 /* Comic Sans MS.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A909368B2E1AC64400856059 /* Comic Sans MS.ttf */; };
A909368E2E1AC8A500856059 /* CascadiaMono.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A909368D2E1AC8A500856059 /* CascadiaMono.ttf */; };
A90936902E1AC96100856059 /* GeistMonoNerdFontMono-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = A909368F2E1AC96100856059 /* GeistMonoNerdFontMono-Regular.otf */; };
A90936922E1AC98E00856059 /* ComicMono.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936912E1AC98E00856059 /* ComicMono.ttf */; };
A90936942E1AC9AF00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936932E1AC9AF00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */; };
A90936A72E1AE9AB00856059 /* CascadiaMono.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936952E1AE9AB00856059 /* CascadiaMono.ttf */; };
A90936A92E1AE9AB00856059 /* SF-Mono-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = A90936A42E1AE9AB00856059 /* SF-Mono-Regular.otf */; };
A90936AA2E1AE9AB00856059 /* SF-Mono-RegularItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A90936A52E1AE9AB00856059 /* SF-Mono-RegularItalic.otf */; };
A90936AB2E1AE9AB00856059 /* MesloLGS NF Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936A22E1AE9AB00856059 /* MesloLGS NF Regular.ttf */; };
A90936AC2E1AE9AB00856059 /* MesloLGS NF Bold Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936A02E1AE9AB00856059 /* MesloLGS NF Bold Italic.ttf */; };
A90936AE2E1AE9AB00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A909369D2E1AE9AB00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */; };
A90936AF2E1AE9AB00856059 /* MesloLGS NF Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A909369F2E1AE9AB00856059 /* MesloLGS NF Bold.ttf */; };
A90936B02E1AE9AB00856059 /* MesloLGS NF Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A90936A12E1AE9AB00856059 /* MesloLGS NF Italic.ttf */; };
A923172A2E07113100ECE1E6 /* TerminalController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92317292E07113100ECE1E6 /* TerminalController.swift */; };
A923172D2E07138000ECE1E6 /* SSHTerminalDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A923172C2E07138000ECE1E6 /* SSHTerminalDelegate.swift */; };
A923172F2E08851200ECE1E6 /* ShellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A923172E2E08851200ECE1E6 /* ShellView.swift */; };
@@ -29,6 +30,9 @@
A93143BE2DF4D0B300FCD5DB /* libpthread.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A93143BD2DF4D0A700FCD5DB /* libpthread.tbd */; };
A93143C02DF61B3200FCD5DB /* Host.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93143BF2DF61B3200FCD5DB /* Host.swift */; };
A93143C62DF61FE300FCD5DB /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93143C52DF61FE300FCD5DB /* ViewModifiers.swift */; };
A9485C712E1AECD000209824 /* JetBrainsMonoNerdFontMono-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A9485C702E1AECD000209824 /* JetBrainsMonoNerdFontMono-Italic.ttf */; };
A9485C722E1AECD000209824 /* JetBrainsMonoNerdFontMono-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A9485C6E2E1AECD000209824 /* JetBrainsMonoNerdFontMono-Bold.ttf */; };
A9485C732E1AECD000209824 /* JetBrainsMonoNerdFontMono-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A9485C6F2E1AECD000209824 /* JetBrainsMonoNerdFontMono-BoldItalic.ttf */; };
A95FAA472DF3884B00DE2F5A /* Config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = A95FAA462DF3884B00DE2F5A /* Config.xcconfig */; };
A95FAA542DF4B62900DE2F5A /* LibSSH.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A95FAA502DF4B62100DE2F5A /* LibSSH.xcframework */; };
A95FAA552DF4B62900DE2F5A /* LibSSH.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A95FAA502DF4B62100DE2F5A /* LibSSH.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -118,15 +122,16 @@
/* Begin PBXFileReference section */
A9083E3F2DF2225A0042906E /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
A90936832E1AC31B00856059 /* MesloLGS NF Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "MesloLGS NF Regular.ttf"; sourceTree = "<group>"; };
A90936852E1AC33C00856059 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
A90936872E1AC51100856059 /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = "<group>"; };
A90936892E1AC5CA00856059 /* SF-Mono-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Mono-Regular.otf"; sourceTree = "<group>"; };
A909368B2E1AC64400856059 /* Comic Sans MS.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Comic Sans MS.ttf"; sourceTree = "<group>"; };
A909368D2E1AC8A500856059 /* CascadiaMono.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = CascadiaMono.ttf; sourceTree = "<group>"; };
A909368F2E1AC96100856059 /* GeistMonoNerdFontMono-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "GeistMonoNerdFontMono-Regular.otf"; sourceTree = "<group>"; };
A90936912E1AC98E00856059 /* ComicMono.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ComicMono.ttf; sourceTree = "<group>"; };
A90936932E1AC9AF00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "JetBrainsMonoNerdFontMono-Regular.ttf"; sourceTree = "<group>"; };
A90936952E1AE9AB00856059 /* CascadiaMono.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = CascadiaMono.ttf; sourceTree = "<group>"; };
A909369D2E1AE9AB00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "JetBrainsMonoNerdFontMono-Regular.ttf"; sourceTree = "<group>"; };
A909369F2E1AE9AB00856059 /* MesloLGS NF Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "MesloLGS NF Bold.ttf"; sourceTree = "<group>"; };
A90936A02E1AE9AB00856059 /* MesloLGS NF Bold Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "MesloLGS NF Bold Italic.ttf"; sourceTree = "<group>"; };
A90936A12E1AE9AB00856059 /* MesloLGS NF Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "MesloLGS NF Italic.ttf"; sourceTree = "<group>"; };
A90936A22E1AE9AB00856059 /* MesloLGS NF Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "MesloLGS NF Regular.ttf"; sourceTree = "<group>"; };
A90936A42E1AE9AB00856059 /* SF-Mono-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Mono-Regular.otf"; sourceTree = "<group>"; };
A90936A52E1AE9AB00856059 /* SF-Mono-RegularItalic.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Mono-RegularItalic.otf"; sourceTree = "<group>"; };
A92317292E07113100ECE1E6 /* TerminalController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TerminalController.swift; sourceTree = "<group>"; };
A923172C2E07138000ECE1E6 /* SSHTerminalDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSHTerminalDelegate.swift; sourceTree = "<group>"; };
A923172E2E08851200ECE1E6 /* ShellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShellView.swift; path = ShhShell/Views/Terminal/ShellView.swift; sourceTree = SOURCE_ROOT; };
@@ -144,6 +149,9 @@
A93143BF2DF61B3200FCD5DB /* Host.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Host.swift; sourceTree = "<group>"; };
A93143C22DF61F5700FCD5DB /* ShhShell.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShhShell.entitlements; sourceTree = "<group>"; };
A93143C52DF61FE300FCD5DB /* ViewModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModifiers.swift; sourceTree = "<group>"; };
A9485C6E2E1AECD000209824 /* JetBrainsMonoNerdFontMono-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "JetBrainsMonoNerdFontMono-Bold.ttf"; sourceTree = "<group>"; };
A9485C6F2E1AECD000209824 /* JetBrainsMonoNerdFontMono-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "JetBrainsMonoNerdFontMono-BoldItalic.ttf"; sourceTree = "<group>"; };
A9485C702E1AECD000209824 /* JetBrainsMonoNerdFontMono-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "JetBrainsMonoNerdFontMono-Italic.ttf"; sourceTree = "<group>"; };
A95FAA462DF3884B00DE2F5A /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = SOURCE_ROOT; };
A95FAA502DF4B62100DE2F5A /* LibSSH.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = LibSSH.xcframework; path = Frameworks/LibSSH.xcframework; sourceTree = "<group>"; };
A95FAA512DF4B62100DE2F5A /* openssl.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = openssl.xcframework; path = Frameworks/openssl.xcframework; sourceTree = "<group>"; };
@@ -232,13 +240,10 @@
A90936822E1AC31100856059 /* fonts */ = {
isa = PBXGroup;
children = (
A90936832E1AC31B00856059 /* MesloLGS NF Regular.ttf */,
A90936892E1AC5CA00856059 /* SF-Mono-Regular.otf */,
A909368D2E1AC8A500856059 /* CascadiaMono.ttf */,
A909368F2E1AC96100856059 /* GeistMonoNerdFontMono-Regular.otf */,
A90936932E1AC9AF00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */,
A90936912E1AC98E00856059 /* ComicMono.ttf */,
A909368B2E1AC64400856059 /* Comic Sans MS.ttf */,
A90936962E1AE9AB00856059 /* cascadiaMono */,
A909369E2E1AE9AB00856059 /* jetbrainsMonoNF */,
A90936A32E1AE9AB00856059 /* mesloLGSNF */,
A90936A62E1AE9AB00856059 /* sfMono */,
);
path = fonts;
sourceTree = "<group>";
@@ -251,6 +256,45 @@
path = Fonts;
sourceTree = "<group>";
};
A90936962E1AE9AB00856059 /* cascadiaMono */ = {
isa = PBXGroup;
children = (
A90936952E1AE9AB00856059 /* CascadiaMono.ttf */,
);
path = cascadiaMono;
sourceTree = "<group>";
};
A909369E2E1AE9AB00856059 /* jetbrainsMonoNF */ = {
isa = PBXGroup;
children = (
A909369D2E1AE9AB00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf */,
A9485C6E2E1AECD000209824 /* JetBrainsMonoNerdFontMono-Bold.ttf */,
A9485C6F2E1AECD000209824 /* JetBrainsMonoNerdFontMono-BoldItalic.ttf */,
A9485C702E1AECD000209824 /* JetBrainsMonoNerdFontMono-Italic.ttf */,
);
path = jetbrainsMonoNF;
sourceTree = "<group>";
};
A90936A32E1AE9AB00856059 /* mesloLGSNF */ = {
isa = PBXGroup;
children = (
A90936A22E1AE9AB00856059 /* MesloLGS NF Regular.ttf */,
A909369F2E1AE9AB00856059 /* MesloLGS NF Bold.ttf */,
A90936A02E1AE9AB00856059 /* MesloLGS NF Bold Italic.ttf */,
A90936A12E1AE9AB00856059 /* MesloLGS NF Italic.ttf */,
);
path = mesloLGSNF;
sourceTree = "<group>";
};
A90936A62E1AE9AB00856059 /* sfMono */ = {
isa = PBXGroup;
children = (
A90936A42E1AE9AB00856059 /* SF-Mono-Regular.otf */,
A90936A52E1AE9AB00856059 /* SF-Mono-RegularItalic.otf */,
);
path = sfMono;
sourceTree = "<group>";
};
A923172B2E0712F200ECE1E6 /* Terminal */ = {
isa = PBXGroup;
children = (
@@ -610,25 +654,29 @@
A96BE6972E10846B00C0FEE9 /* catppuccinMocha.plist in Resources */,
A96BE6982E10846B00C0FEE9 /* ubuntu.plist in Resources */,
A96BE6992E10846B00C0FEE9 /* iTerm2SolarizedDark.plist in Resources */,
A909368A2E1AC5CA00856059 /* SF-Mono-Regular.otf in Resources */,
A96BE69A2E10846B00C0FEE9 /* xcodeDark.plist in Resources */,
A96BE69B2E10846B00C0FEE9 /* iTerm2SolarizedLight.plist in Resources */,
A96BE69C2E10846B00C0FEE9 /* 0x96f.plist in Resources */,
A96BE69D2E10846B00C0FEE9 /* gruvboxDark.plist in Resources */,
A96BE69E2E10846B00C0FEE9 /* xcodeDarkHC.plist in Resources */,
A909368E2E1AC8A500856059 /* CascadiaMono.ttf in Resources */,
A96BE69F2E10846B00C0FEE9 /* tomorrowNight.plist in Resources */,
A96BE6A02E10846B00C0FEE9 /* dracula.plist in Resources */,
A96BE6A12E10846B00C0FEE9 /* catppuccinFrappe.plist in Resources */,
A90936A72E1AE9AB00856059 /* CascadiaMono.ttf in Resources */,
A90936A92E1AE9AB00856059 /* SF-Mono-Regular.otf in Resources */,
A90936AA2E1AE9AB00856059 /* SF-Mono-RegularItalic.otf in Resources */,
A90936AB2E1AE9AB00856059 /* MesloLGS NF Regular.ttf in Resources */,
A90936AC2E1AE9AB00856059 /* MesloLGS NF Bold Italic.ttf in Resources */,
A90936AE2E1AE9AB00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf in Resources */,
A90936AF2E1AE9AB00856059 /* MesloLGS NF Bold.ttf in Resources */,
A90936B02E1AE9AB00856059 /* MesloLGS NF Italic.ttf in Resources */,
A9485C712E1AECD000209824 /* JetBrainsMonoNerdFontMono-Italic.ttf in Resources */,
A9485C722E1AECD000209824 /* JetBrainsMonoNerdFontMono-Bold.ttf in Resources */,
A9485C732E1AECD000209824 /* JetBrainsMonoNerdFontMono-BoldItalic.ttf in Resources */,
A96BE6A22E10846B00C0FEE9 /* xcodeWWDC.plist in Resources */,
A95FAA472DF3884B00DE2F5A /* Config.xcconfig in Resources */,
A92538CA2DEE0742007E0A18 /* Assets.xcassets in Resources */,
A90936942E1AC9AF00856059 /* JetBrainsMonoNerdFontMono-Regular.ttf in Resources */,
A909368C2E1AC64400856059 /* Comic Sans MS.ttf in Resources */,
A92DDDE22E104CB300A87DB2 /* defaultTheme.plist in Resources */,
A90936842E1AC31B00856059 /* MesloLGS NF Regular.ttf in Resources */,
A90936902E1AC96100856059 /* GeistMonoNerdFontMono-Regular.otf in Resources */,
A90936922E1AC98E00856059 /* ComicMono.ttf in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -7,16 +7,26 @@
import Foundation
enum Fonts: String, CaseIterable/*, CustomStringConvertible*/ {
case mesloLGSNF = "MesloLGS-NF-Regular"
case sfMono = "SFMono-Regular"
case cascadiaMono = "CascadiaMono-Regular"
case geistMonoNF = "GeistMonoNFM-Regular"
case jetbrainsMonoNF = "JetBrainsMonoNFM-Regular"
case comicSans = "ComicSansMS"
case comicMono = "ComicMono"
enum FontFamilies: String, CaseIterable, CustomStringConvertible {
case mesloLGSNF = "MesloLGS NF"
case sfMono = "SF Mono"
case cascadiaMono = "Cascadia Mono"
case jetbrainsMonoNF = "JetBrainsMono Nerd Font Mono"
static var fontNames: [String] {
return Fonts.allCases.map { $0.rawValue }
static var allCasesRaw: [String] {
return allCases.map { $0.rawValue }
}
var description: String {
switch self {
case .mesloLGSNF:
"MesloLGS-NF-Regular"
case .sfMono:
"SFMono-Regular"
case .cascadiaMono:
"CascadiaMono-Regular"
case .jetbrainsMonoNF:
"JetBrainsMonoNFM-Regular"
}
}
}

View File

@@ -33,14 +33,16 @@ class HostsManager: ObservableObject, @unchecked Sendable {
func loadFonts() {
var customFonts: [UIFont] = []
for family in UIFont.familyNames.sorted() {
let names = UIFont.fontNames(forFamilyName: family)
if Fonts.fontNames.contains(names) {
print(family)
}
guard let customFont = UIFont(name: names[0], size: UIFont.systemFontSize) else {
fatalError()
if FontFamilies.allCasesRaw.contains(family) {
if let family = FontFamilies(rawValue: family) {
if let customFont = UIFont(name: family.description, size: UIFont.systemFontSize) {
customFonts.append(customFont)
}
}
}
}
print(customFonts)
self.fonts = customFonts
}
func loadThemes() {

View File

@@ -5,12 +5,15 @@
<key>UIAppFonts</key>
<array>
<string>MesloLGS NF Regular.ttf</string>
<string>MesloLGS NF Italic.ttf</string>
<string>MesloLGS NF Bold.ttf</string>
<string>MesloLGS NF Bold Italic.ttf</string>
<string>SF-Mono-Regular.otf</string>
<string>CascadiaMono.ttf</string>
<string>GeistMonoNerdFontMono-Regular.otf</string>
<string>JetBrainsMonoNerdFontMono-Regular.ttf</string>
<string>ComicMono.ttf</string>
<string>Comic Sans MS.ttf</string>
<string>JetBrainsMonoNerdFontMono-Bold.ttf</string>
<string>JetBrainsMonoNerdFontMono-Italic.ttf</string>
<string>JetBrainsMonoNerdFontMono-BoldItalic.ttf</string>
</array>
</dict>
</plist>

View File

@@ -168,14 +168,6 @@ class SSHHandler: @unchecked Sendable, ObservableObject {
}
func applySelectedTheme() {
Task { @MainActor in
guard let sessionID else { return }
guard let session = container.sessions[sessionID] else { return }
session.terminalView.applySelectedTheme()
}
}
func ring() {
Task { @MainActor in
withAnimation(.easeIn(duration: 0.1)) { self.bell = true }

View File

@@ -18,11 +18,21 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
self.init(frame: frame)
self.handler = handler
self.hostsManager = hostsManager
applySelectedTheme()
//fonts here yayy
}
override func didMoveToWindow() {
super.didMoveToWindow()
if window != nil {
restoreScrollback()
if let hostsManager {
// font = hostsManager.fonts.randomElement() ?? UIFont.systemFont(ofSize: UIFont.systemFontSize)
font = UIFont(name: "JetBrainsMono Nerd Font Mono", size: UIFont.systemFontSize)!
}
applySelectedTheme()
}
}
func restoreScrollback() {
guard let scrollback = handler?.scrollback else { return }
guard !scrollback.isEmpty else { return }
@@ -69,13 +79,6 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
// TODO: selectedtext and cursor colors
}
override func didMoveToWindow() {
super.didMoveToWindow()
if window != nil {
restoreScrollback()
}
}
public override init(frame: CGRect) {
super.init(frame: frame)
terminalDelegate = self

View File

@@ -31,9 +31,6 @@ struct ShellView: View {
}
.opacity(handler.bell ? 1 : 0)
}
.onAppear {
handler.applySelectedTheme()
}
}
}
}