diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Autoupdate b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Autoupdate new file mode 120000 index 0000000..1a4fc02 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Autoupdate @@ -0,0 +1 @@ +Versions/Current/Autoupdate \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Resources b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Sparkle b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Sparkle new file mode 120000 index 0000000..b2c5273 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Sparkle @@ -0,0 +1 @@ +Versions/Current/Sparkle \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Updater.app b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Updater.app new file mode 120000 index 0000000..18f3223 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Updater.app @@ -0,0 +1 @@ +Versions/Current/Updater.app \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Autoupdate b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Autoupdate new file mode 100755 index 0000000..7094f14 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Autoupdate differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings new file mode 100644 index 0000000..5bc44c6 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Base.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Info.plist b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Info.plist new file mode 100644 index 0000000..7e05804 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 25D125 + CFBundleDevelopmentRegion + en + CFBundleExecutable + Sparkle + CFBundleIdentifier + org.sparkle-project.Sparkle + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sparkle + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.9.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2053 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25C57 + DTPlatformName + macosx + DTPlatformVersion + 26.2 + DTSDKBuild + 25C57 + DTSDKName + macosx26.2 + DTXcode + 2620 + DTXcodeBuild + 17C52 + LSMinimumSystemVersion + 10.13 + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css new file mode 100644 index 0000000..bcd84a2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ReleaseNotesColorStyle.css @@ -0,0 +1,13 @@ +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + color: white; + background: transparent; + } + :link { + color: #419CFF; + } + :link:active { + color: #FF1919; + } +} diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUStatus.nib b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUStatus.nib new file mode 100644 index 0000000..a0a1e4d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUStatus.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdateAlert.nib b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdateAlert.nib new file mode 100644 index 0000000..8a31004 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdateAlert.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib new file mode 100644 index 0000000..ccd9e5e Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib new file mode 100644 index 0000000..b8d5298 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings new file mode 100644 index 0000000..290f858 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ar.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings new file mode 100644 index 0000000..ad056b7 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ca.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings new file mode 100644 index 0000000..4c1e6ef Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/cs.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings new file mode 100644 index 0000000..51a2624 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/da.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings new file mode 100644 index 0000000..6f0e63b Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/de.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings new file mode 100644 index 0000000..d2e41b3 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/el.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings new file mode 100644 index 0000000..5744e8d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/es.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings new file mode 100644 index 0000000..ae6bead Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fa.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings new file mode 100644 index 0000000..5fa6ec0 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fi.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings new file mode 100644 index 0000000..9a4a701 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/fr.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings new file mode 100644 index 0000000..c3c6874 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/he.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings new file mode 100644 index 0000000..3f22e94 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hr.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings new file mode 100644 index 0000000..5c0504b Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/hu.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings new file mode 100644 index 0000000..cc74944 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/is.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings new file mode 100644 index 0000000..57f5be6 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/it.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings new file mode 100644 index 0000000..954cb25 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ja.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings new file mode 100644 index 0000000..d4f8d2d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ko.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings new file mode 100644 index 0000000..7a518c9 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nb.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings new file mode 100644 index 0000000..cd9f48d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nl.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nn.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nn.lproj/Sparkle.strings new file mode 100644 index 0000000..ab54f02 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/nn.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings new file mode 100644 index 0000000..b2a184c Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pl.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings new file mode 100644 index 0000000..d907004 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-BR.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings new file mode 100644 index 0000000..307b323 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/pt-PT.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings new file mode 100644 index 0000000..478e683 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ro.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings new file mode 100644 index 0000000..693f938 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/ru.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings new file mode 100644 index 0000000..fea743a Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sk.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings new file mode 100644 index 0000000..8efec24 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sl.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings new file mode 100644 index 0000000..ae267f7 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/sv.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings new file mode 100644 index 0000000..e859a28 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/th.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings new file mode 100644 index 0000000..6beeb10 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/tr.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings new file mode 100644 index 0000000..e6687f8 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/uk.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/vi.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/vi.lproj/Sparkle.strings new file mode 100644 index 0000000..99160b4 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/vi.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings new file mode 100644 index 0000000..8f735c1 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_CN.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings new file mode 100644 index 0000000..c156895 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_HK.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings new file mode 100644 index 0000000..1d77bb6 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Resources/zh_TW.lproj/Sparkle.strings differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle new file mode 100755 index 0000000..b605f5d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist new file mode 100644 index 0000000..6c0b235 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Info.plist @@ -0,0 +1,93 @@ + + + + + BuildMachineOSBuild + 25D125 + CFBundleDevelopmentRegion + en + CFBundleExecutable + Updater + CFBundleIdentifier + org.sparkle-project.Sparkle.Updater + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + ca + ar + cs + da + de + el + es + fa + fi + fr + he + hr + hu + is + it + ja + ko + nb + nl + nn + pl + pt-BR + pt-PT + ro + ru + sk + sl + sv + th + tr + uk + vi + zh_CN + zh_HK + zh_TW + + CFBundleName + Updater + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.9.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2053 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25C57 + DTPlatformName + macosx + DTPlatformVersion + 26.2 + DTSDKBuild + 25C57 + DTSDKName + macosx26.2 + DTXcode + 2620 + DTXcodeBuild + 17C52 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + 10.13 + LSUIElement + 1 + NSPrincipalClass + NSApplication + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater new file mode 100755 index 0000000..ed5c027 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/MacOS/Updater differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib new file mode 100644 index 0000000..a0a1e4d Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/Resources/SUStatus.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..e0e4528 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app/Contents/_CodeSignature/CodeResources @@ -0,0 +1,128 @@ + + + + + files + + Resources/SUStatus.nib + + 4v8P2HfH6ueONuvXrQq9XN2iUUQ= + + + files2 + + Resources/SUStatus.nib + + hash2 + + Qw/E5n9JX0l4RAAjHNKNPlL01zSswWCEFb2cX29ws70= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist new file mode 100644 index 0000000..a53685c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/Info.plist @@ -0,0 +1,62 @@ + + + + + BuildMachineOSBuild + 25D125 + CFBundleDevelopmentRegion + en + CFBundleExecutable + Downloader + CFBundleIdentifier + org.sparkle-project.DownloaderService + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Downloader + CFBundlePackageType + XPC! + CFBundleShortVersionString + 2.9.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2053 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25C57 + DTPlatformName + macosx + DTPlatformVersion + 26.2 + DTSDKBuild + 25C57 + DTSDKName + macosx26.2 + DTXcode + 2620 + DTXcodeBuild + 17C52 + LSMinimumSystemVersion + 10.13 + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSHumanReadableCopyright + Copyright © 2016 Sparkle Project. All rights reserved. + XPCService + + RunLoopType + NSRunLoop + ServiceType + Application + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader new file mode 100755 index 0000000..9ef12cb Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/MacOS/Downloader differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..d5d0fd7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc/Contents/_CodeSignature/CodeResources @@ -0,0 +1,115 @@ + + + + + files + + files2 + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist new file mode 100644 index 0000000..5c2cd5b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/Info.plist @@ -0,0 +1,57 @@ + + + + + BuildMachineOSBuild + 25D125 + CFBundleDevelopmentRegion + en + CFBundleExecutable + Installer + CFBundleIdentifier + org.sparkle-project.InstallerLauncher + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Installer + CFBundlePackageType + XPC! + CFBundleShortVersionString + 2.9.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2053 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25C57 + DTPlatformName + macosx + DTPlatformVersion + 26.2 + DTSDKBuild + 25C57 + DTSDKName + macosx26.2 + DTXcode + 2620 + DTXcodeBuild + 17C52 + LSMinimumSystemVersion + 10.13 + NSHumanReadableCopyright + Copyright © 2016 Sparkle Project. All rights reserved. + XPCService + + JoinExistingSession + + ServiceType + Application + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer new file mode 100755 index 0000000..7154103 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/MacOS/Installer differ diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources new file mode 100644 index 0000000..d5d0fd7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Installer.xpc/Contents/_CodeSignature/CodeResources @@ -0,0 +1,115 @@ + + + + + files + + files2 + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/_CodeSignature/CodeResources b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/_CodeSignature/CodeResources new file mode 100644 index 0000000..32fe389 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/B/_CodeSignature/CodeResources @@ -0,0 +1,1084 @@ + + + + + files + + Resources/Base.lproj/Sparkle.strings + + VWAAPBUBu7+Ww7TPio08JCwUDo8= + + Resources/Info.plist + + Qbrf9kkQtNhX8Jyiz2oVvjRF8/Y= + + Resources/ReleaseNotesColorStyle.css + + NjIvb1z7eJuLCKf9HS15O5heg50= + + Resources/SUStatus.nib + + 4v8P2HfH6ueONuvXrQq9XN2iUUQ= + + Resources/SUUpdateAlert.nib + + 6M789C1QB9aMJ8C+60BqTx4LYfo= + + Resources/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib + + WvVFSfsT0e++XdBux8poSyKUOTw= + + Resources/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib + + n8qGRQ/94o0kcJ7ztQVGZFAXQxs= + + Resources/ar.lproj/Sparkle.strings + + hash + + T7fNcqHlJUnjYfupB4g4wM7Eagk= + + optional + + + Resources/ca.lproj/Sparkle.strings + + hash + + cEAmpjo27zR+JhuaUXN0UQr3QK4= + + optional + + + Resources/cs.lproj/Sparkle.strings + + hash + + SMVp5lfHi/lfNXmw6lJYSrSwU/M= + + optional + + + Resources/da.lproj/Sparkle.strings + + hash + + W+QsOXYRxKh4cMvK6JkwZvN+IVI= + + optional + + + Resources/de.lproj/Sparkle.strings + + hash + + JlyR7ml9yE5p/lWP3dDeO49yr18= + + optional + + + Resources/el.lproj/Sparkle.strings + + hash + + /Fqwo/qEklmldCP6iVh/6v/hRtA= + + optional + + + Resources/es.lproj/Sparkle.strings + + hash + + MrnoX4qJOfgIVq3M6x24fUAx9lI= + + optional + + + Resources/fa.lproj/Sparkle.strings + + hash + + voU8aUJaurOIaAdtV33OM6YmtEg= + + optional + + + Resources/fi.lproj/Sparkle.strings + + hash + + 2Emh5JDGV5uqAvja/ExFDMHAIuo= + + optional + + + Resources/fr.lproj/Sparkle.strings + + hash + + rYSw5ov8cR5YOqzXnWRZZAXrsHg= + + optional + + + Resources/he.lproj/Sparkle.strings + + hash + + eNe6/Ewhtf0h3uHopz6L6dK8/yA= + + optional + + + Resources/hr.lproj/Sparkle.strings + + hash + + PijrXJOIU6kJbybmO9H6692KXDE= + + optional + + + Resources/hu.lproj/Sparkle.strings + + hash + + 2Ksks8It17APw4bY49SNRY+2Thw= + + optional + + + Resources/is.lproj/Sparkle.strings + + hash + + 2/3AFNWHP6LviaOgYOiM8rEqa4o= + + optional + + + Resources/it.lproj/Sparkle.strings + + hash + + PNYw/afpNtOrmCNC8SWxaJTWSgQ= + + optional + + + Resources/ja.lproj/Sparkle.strings + + hash + + myJp0ElupCpG4phEI8Q8ALK1czc= + + optional + + + Resources/ko.lproj/Sparkle.strings + + hash + + +rLWeKh8N/PJndmu/vE/a0ZZ//4= + + optional + + + Resources/nb.lproj/Sparkle.strings + + hash + + 7T4tgFrl8L5HKxsa3BqpxwlCbhk= + + optional + + + Resources/nl.lproj/Sparkle.strings + + hash + + 5LcVaHg0grJ0vDggCaXx7l1KTwI= + + optional + + + Resources/nn.lproj/Sparkle.strings + + hash + + 6TKcfDjDXy2w/l+WpcyN3q33OSs= + + optional + + + Resources/pl.lproj/Sparkle.strings + + hash + + kwySQYkh8n0leATrIoAeyTZy1+A= + + optional + + + Resources/pt-BR.lproj/Sparkle.strings + + hash + + VopPIMLshPYiYuKljquuZzNGJVY= + + optional + + + Resources/pt-PT.lproj/Sparkle.strings + + hash + + NEDnlPEQQ+nDbGRR+eWfCulsTxU= + + optional + + + Resources/ro.lproj/Sparkle.strings + + hash + + x4LCBI0pkdA2fEOdYtnSRj/IVsI= + + optional + + + Resources/ru.lproj/Sparkle.strings + + hash + + 8OsJ6WTQeMTV06mnU6nIp1Wyilc= + + optional + + + Resources/sk.lproj/Sparkle.strings + + hash + + 6LpsH87uTuP3IDgICCnsls9ljF0= + + optional + + + Resources/sl.lproj/Sparkle.strings + + hash + + sMh8m/GbzigzKc4IWFynhJZgZZw= + + optional + + + Resources/sv.lproj/Sparkle.strings + + hash + + G2RCHl7W/Db88nHDTgDF9txwpeI= + + optional + + + Resources/th.lproj/Sparkle.strings + + hash + + lhtsbCs8a/YN8USZqRzAu6l+WKM= + + optional + + + Resources/tr.lproj/Sparkle.strings + + hash + + nQVohktMItLSG//uX50V1Q3tjNQ= + + optional + + + Resources/uk.lproj/Sparkle.strings + + hash + + JGzTZrZVOFEmdPUU2nGug8+1Egg= + + optional + + + Resources/vi.lproj/Sparkle.strings + + hash + + qoHngT/p/Zvmf/tpQ3XQdQBGaLg= + + optional + + + Resources/zh_CN.lproj/Sparkle.strings + + hash + + y6gXzs0x9sm68yiEJTGg8h8w+SY= + + optional + + + Resources/zh_HK.lproj/Sparkle.strings + + hash + + twyTX9DzpgoJDvTFdkPXfvuGo6Q= + + optional + + + Resources/zh_TW.lproj/Sparkle.strings + + hash + + 6ltKBe6A8F5/DrkTElCM58gP9iA= + + optional + + + + files2 + + Autoupdate + + cdhash + + QAt8e+k/T2ropno3pW4yL2Lbj4M= + + requirement + cdhash H"400b7c7be93f4f6ae8a67a37a56e322f62db8f83" or cdhash H"3946a1eb11f303554ec07ea8c3550fca4d4ea35a" + + Headers/SPUAppcastSigningValidationStatus.h + + hash2 + + UT1GB6yboDwiA7A98wf0BCFsPOfzQ2eE+77xhCx0J0k= + + + Headers/SPUDownloadData.h + + hash2 + + WBhMLAaKjUOx7oVlH57dMKap5YmayTa69KXxWmCB17c= + + + Headers/SPUStandardUpdaterController.h + + hash2 + + 9F398jFWZMWJG5etDX/86asJ0Gfv+9KSGxC1i0gx7w8= + + + Headers/SPUStandardUserDriver.h + + hash2 + + Cg5Ha2GTIZYCfde5TnjRh/gQ+Ax5ABaOtKWVa2PVSnc= + + + Headers/SPUStandardUserDriverDelegate.h + + hash2 + + 2QblSfexCJeXJ/pW8TwCmQb+SMVgJThROktIC7RajC0= + + + Headers/SPUUpdateCheck.h + + hash2 + + H30F2i5GYmOu/j4JEw5WsuZbiGJXnge5gpyb9e2SHAM= + + + Headers/SPUUpdatePermissionRequest.h + + hash2 + + jCJyRsLqdGF0Hbi9cnSTbDy8vHN1/oFGVNR5smUM1r0= + + + Headers/SPUUpdater.h + + hash2 + + owuHbcciooYfuPJxoL8Mlb1mTbTPKvV9IW0ZDy4BDuc= + + + Headers/SPUUpdaterDelegate.h + + hash2 + + IOpL9Sc+qmVgFglB1oCs7GVlllFic39Q6kJAhFp93iQ= + + + Headers/SPUUpdaterSettings.h + + hash2 + + rXvfxxl3X+TN8UkPRe+QLe1NyzdWQC5kiEOXvuQl7f8= + + + Headers/SPUUserDriver.h + + hash2 + + 25/mz3isoPL3mpmJjTja/1Zvlsgj3iuyuYVRGtdwF9w= + + + Headers/SPUUserUpdateState.h + + hash2 + + Wflekz+LWys5wefEZao5rwIaLIiCC0sJ28/FWx3RnDA= + + + Headers/SUAppcast.h + + hash2 + + JR1v+ny8iQmZ3do0BoNPRTls+IenHlvp/1gYg1Wd8KA= + + + Headers/SUAppcastItem.h + + hash2 + + leFSMeOWXUgPixT1yRHjkrcoSVSfMUdQyFESi/ZqwxQ= + + + Headers/SUErrors.h + + hash2 + + 5+hPpu+FtUmBBoLsiDWT9WDXm3duvsX7EdlVim8feOU= + + + Headers/SUExport.h + + hash2 + + XO8CQmbFThLbYg949NEGhg3g+iouIw3/3+BCCLtEdFE= + + + Headers/SUStandardVersionComparator.h + + hash2 + + fUB7nOch1cZQ50HstpLnfxLvO14Y6oE29yRI6NcgjGw= + + + Headers/SUUpdatePermissionResponse.h + + hash2 + + +TVcgETH3BaL2u+jesLphgAuwyiJXxcRkpPghNrZbyE= + + + Headers/SUUpdater.h + + hash2 + + lvb1mNWCyofJ0X88zXvMsK5PBXrG6Pr7hUrY0E3jNvY= + + + Headers/SUUpdaterDelegate.h + + hash2 + + oaCMM/1B690QWRbYGB0iJBf5/toBzcQq+moxURBs3jY= + + + Headers/SUVersionComparisonProtocol.h + + hash2 + + KLu0JKx6uB4rk/YeNZ/vo+0J1qONCyZQBNIQPA9GvbQ= + + + Headers/SUVersionDisplayProtocol.h + + hash2 + + PyPE+5u9vBlxRYDuTdf3P/wxQ26nM8m7MIw/dOerUSw= + + + Headers/Sparkle.h + + hash2 + + OkQqMusip3u1oI5hrGeNr/32xpfTMCC4Kmg7r0Aijgw= + + + Modules/module.modulemap + + hash2 + + K8rh62bVXcSfWKz+hWN1pbvJHG6DvbKY0ZRCrmJkz6Y= + + + Modules/module.private.modulemap + + hash2 + + 2x1g9XtDqesX81UPVyCsU0ZtQ4U2hnD7UUjaW3H0Pzo= + + + PrivateHeaders/SPUAppcastItemStateResolver.h + + hash2 + + HDvimACMGXV647Jwg2IqAFvOgJoB8G0sdPbeoW8yFO4= + + + PrivateHeaders/SPUGentleUserDriverReminders.h + + hash2 + + 9W2dJ38WQX151mpIS0r8/EfCqZV6jEh621xwna2JVAI= + + + PrivateHeaders/SPUInstallationType.h + + hash2 + + UqGkRfWOfG3pSsVYwjkT+AgWR6SZJir/6aw4/3kJcdQ= + + + PrivateHeaders/SPUStandardUserDriver+Private.h + + hash2 + + rMdk5zH+nm0wf+Mt6k0GtFGWQiXCsql0WiPwNanN6q0= + + + PrivateHeaders/SPUUserAgent+Private.h + + hash2 + + DD6nxqq6syhA5BxWuyLPq03uTd4zAmA7b0q6msG1hQw= + + + PrivateHeaders/SUAppcastItem+Private.h + + hash2 + + ZC7L7ssyP3IBpzK1lT1g/v76E8+JSvKJNt0NfQAaEBo= + + + PrivateHeaders/SUInstallerLauncher+Private.h + + hash2 + + yy6cRl8IqwMJwr86TS98NdnHb/WkSAaUcAoiKYUg3ZQ= + + + Resources/Base.lproj/Sparkle.strings + + hash2 + + v5O93orQIPK6IQ7PoOhLU2XQNCNVo8o52I/sCsseSkA= + + + Resources/Info.plist + + hash2 + + 8ugzftgfDFuxZ/6Ra5Qx5QdM9gc3l8qUFB0M5Z8KyHQ= + + + Resources/ReleaseNotesColorStyle.css + + hash2 + + dr1pmXWP2OUdF+a0gttDT5tHaMArA3r2vS46AAzoy8E= + + + Resources/SUStatus.nib + + hash2 + + Qw/E5n9JX0l4RAAjHNKNPlL01zSswWCEFb2cX29ws70= + + + Resources/SUUpdateAlert.nib + + hash2 + + OYejM9p8JyjvLLllbl7q8IMohIc8q/eDU/y5CZxdj74= + + + Resources/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib + + hash2 + + NRSVEbqdeM1jGYlApNXox/bhLhjCQ8ACFdRe6rhEi3k= + + + Resources/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib + + hash2 + + jYG53rCQvIJkK3ltvcVxUa+iMpeNw7sW7PgQ8prCHEw= + + + Resources/ar.lproj/Sparkle.strings + + hash2 + + RBGCeHRxo5mJCARFFf4T6SIw7ap+JzBjjnKklhD1bLo= + + optional + + + Resources/ca.lproj/Sparkle.strings + + hash2 + + ftDVyjAGSafxMwQBUAjy3t6YrXQ6YlwX1aX+2swaOxo= + + optional + + + Resources/cs.lproj/Sparkle.strings + + hash2 + + meZt7Pm8Rs9WIu6tTmWztQLjd1pOjg8D7xtBaD6o1Rg= + + optional + + + Resources/da.lproj/Sparkle.strings + + hash2 + + jQ/2m3lGAYX5QTcmVUM7rTk09J5jvvC0FxvWbaceVfA= + + optional + + + Resources/de.lproj/Sparkle.strings + + hash2 + + MRA1oVIn+xLoXroqRvP2GY2YrFWQ0dOMQ8T/dDDQZZk= + + optional + + + Resources/el.lproj/Sparkle.strings + + hash2 + + Y4mBpPCV2LHau2Iw1FLkcDWXEbgYA7xd+MIeEhH9N1c= + + optional + + + Resources/es.lproj/Sparkle.strings + + hash2 + + MM8rGNMHlpYdiNookp0IxizkWQRVPQBHAod9x0Sb8N8= + + optional + + + Resources/fa.lproj/Sparkle.strings + + hash2 + + 7Z3anicfepe4p/Mn5xobbQbl4GGzZ+faPRU+R9wxkmM= + + optional + + + Resources/fi.lproj/Sparkle.strings + + hash2 + + wUr5usP85DYiKk6id6emwPm0Ky2ErO6nXnWM51OKyuI= + + optional + + + Resources/fr.lproj/Sparkle.strings + + hash2 + + PVVNzRZ7CF4lp1JIUz8h84lZOurOkSq5lSyCX/4UHOE= + + optional + + + Resources/he.lproj/Sparkle.strings + + hash2 + + HXlb1zKdBLfOhLa9yEX5FzaehYsrKS8Re4mmZmoYVyM= + + optional + + + Resources/hr.lproj/Sparkle.strings + + hash2 + + kgBBOAoIs7pQ1E6Kg/Wd5VETmEWnJ0jVjyOHxlkgszo= + + optional + + + Resources/hu.lproj/Sparkle.strings + + hash2 + + zCoW5NSHxvqzV7T30Pu/fsiCNxshMEE//LG2nNVA0s8= + + optional + + + Resources/is.lproj/Sparkle.strings + + hash2 + + QD/rpQNBDpRVzQ6q/lkqJXbu2yQTDM8s2xPdpLEB+H4= + + optional + + + Resources/it.lproj/Sparkle.strings + + hash2 + + VqdEXBto12hJrFm5iqXCDJAC1eB+nwonIEhhYPhbc2Y= + + optional + + + Resources/ja.lproj/Sparkle.strings + + hash2 + + 5ASRACivcFec+iCLtPrdnjWSUF/ImvII9AcfIwlVP7I= + + optional + + + Resources/ko.lproj/Sparkle.strings + + hash2 + + piaes/WgfQxPXXRn1QZTcgha73SExRip14T/1sj1quQ= + + optional + + + Resources/nb.lproj/Sparkle.strings + + hash2 + + 728NyukMRAtH7OCZCenN818zg/NOcqYUyMXAdS7L/+A= + + optional + + + Resources/nl.lproj/Sparkle.strings + + hash2 + + yprfNPuT/j85TMySEUv2prH4oSi7XzYsufMkfXwmx30= + + optional + + + Resources/nn.lproj/Sparkle.strings + + hash2 + + HbjGhTpVCqJTgtotVUMaHB0wjWo3Z2xPhZPMFjP4pa4= + + optional + + + Resources/pl.lproj/Sparkle.strings + + hash2 + + XFSz+OHrMCbhQucQ4hZ/L4Obc6ta1/GHGSMPM65oKqk= + + optional + + + Resources/pt-BR.lproj/Sparkle.strings + + hash2 + + ApLK3CrPw0h1weC1Ti1Q3jgzzV4gyGYMjv/iuFmqyEw= + + optional + + + Resources/pt-PT.lproj/Sparkle.strings + + hash2 + + /JWFMtJqjh50Yi0/VY/CahKADoxJ+2FK/Q4Yg6zORwA= + + optional + + + Resources/ro.lproj/Sparkle.strings + + hash2 + + sr8GQiLDijZysB/glAb3mXGMsPxOcVEhZiY51v3+pu0= + + optional + + + Resources/ru.lproj/Sparkle.strings + + hash2 + + cZOvKOsqCbn+cRnPYGWiFQxlkJcbIvmMVvNWzZCFGSM= + + optional + + + Resources/sk.lproj/Sparkle.strings + + hash2 + + 4Vjaqk8/kbV87gWriW8sG8RnMXkyzFO7fAHn2u6eUjg= + + optional + + + Resources/sl.lproj/Sparkle.strings + + hash2 + + xidwxgSmyMieKDNXyLMi2M5qhfTYXAkAIEgzH2X42YA= + + optional + + + Resources/sv.lproj/Sparkle.strings + + hash2 + + SiGtW8+Ng20mVxDC5KCmTwfJVR8cSWlNZzSpMdI+/Tk= + + optional + + + Resources/th.lproj/Sparkle.strings + + hash2 + + S2yNwqtpoEJd46qdw4bGU5NI45g+R6oQ+UwX40WhV6U= + + optional + + + Resources/tr.lproj/Sparkle.strings + + hash2 + + sEDT8C00HroEfBXfyvtgQG0IRwlqlEZuyrUS3PsWq7U= + + optional + + + Resources/uk.lproj/Sparkle.strings + + hash2 + + /0TVhjWz6ECdVLQrcsh2pD4X+pj26pazJYO56Ix0erY= + + optional + + + Resources/vi.lproj/Sparkle.strings + + hash2 + + KztKy631NM0OgSuX5Yn4Ck4WVbB8iQfpjMMd9Fj/2Lc= + + optional + + + Resources/zh_CN.lproj/Sparkle.strings + + hash2 + + 5/VDuSl36avJByQcQR2NsPWcT+5ICFmz6I5LSV4Jdsg= + + optional + + + Resources/zh_HK.lproj/Sparkle.strings + + hash2 + + P8IQEy8z2Jrz0l0nx+oZQmz20wS+UCVFOEVuDsT7eFg= + + optional + + + Resources/zh_TW.lproj/Sparkle.strings + + hash2 + + djIeHdhEybZWjLSvfGO7V9nRtwAQmu7dflch14cnsS0= + + optional + + + Updater.app + + cdhash + + iNyiq376glRowSCRsPeKscFWFbg= + + requirement + cdhash H"88dca2ab7efa825468c12091b0f78ab1c15615b8" or cdhash H"5337117b499668f5d3d8073375f092563805e3a5" + + XPCServices/Downloader.xpc + + cdhash + + zqRIXaRQFr+9/5zx8TnHIbiiIDY= + + requirement + cdhash H"cea4485da45016bfbdff9cf1f139c721b8a22036" or cdhash H"9f0ddf3c668165a6f4fcb4781ae3b845c62b15b6" + + XPCServices/Installer.xpc + + cdhash + + gzpHxda3qMqe2gkt0vaFkxOTkAk= + + requirement + cdhash H"833a47c5d6b7a8ca9eda092dd2f6859313939009" or cdhash H"6f286ab57a6d1eb11e333867e36c0ebf6cca7108" + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/Current b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/Current new file mode 120000 index 0000000..7371f47 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/Versions/Current @@ -0,0 +1 @@ +B \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/XPCServices b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/XPCServices new file mode 120000 index 0000000..99c46ea --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Frameworks/Sparkle.framework/XPCServices @@ -0,0 +1 @@ +Versions/Current/XPCServices \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Info.plist b/ghostty-template/Ghostty.app/Contents/Info.plist new file mode 100644 index 0000000..5f0a5f9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Info.plist @@ -0,0 +1,203 @@ + + + + + BuildMachineOSBuild + 25F80 + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Ghostty + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + command + tool + sh + zsh + csh + pl + + CFBundleTypeIconFile + AppIcon.icns + CFBundleTypeName + Terminal scripts + CFBundleTypeRole + Editor + + + CFBundleTypeName + Folders + CFBundleTypeRole + Editor + LSHandlerRank + Alternate + LSItemContentTypes + + public.directory + + + + CFBundleTypeRole + Shell + LSItemContentTypes + + public.unix-executable + + + + CFBundleExecutable + ghostty + CFBundleIconFile + Ghostty + CFBundleIconName + Ghostty + CFBundleIdentifier + com.mitchellh.ghostty + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Ghostty + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.1 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25F70 + DTPlatformName + macosx + DTPlatformVersion + 26.5 + DTSDKBuild + 25F70 + DTSDKName + macosx26.5 + DTXcode + 2650 + DTXcodeBuild + 17F42 + GhosttyBuild + + GhosttyCommit + + LSApplicationCategoryType + public.app-category.developer-tools + LSEnvironment + + GHOSTTY_MAC_LAUNCH_SOURCE + app + + LSMinimumSystemVersion + 13.0 + MDItemKeywords + Terminal + NSAppleEventsUsageDescription + A program running within Ghostty would like to use AppleScript. + NSAppleScriptEnabled + + NSAutoFillRequiresTextContentTypeForOneTimeCodeOnMac + + NSBluetoothAlwaysUsageDescription + A program running within Ghostty would like to use Bluetooth. + NSCalendarsUsageDescription + A program running within Ghostty would like to access your Calendar. + NSCameraUsageDescription + A program running within Ghostty would like to use the camera. + NSContactsUsageDescription + A program running within Ghostty would like to access your Contacts. + NSDockTilePlugIn + DockTilePlugin.plugin + NSHighResolutionCapable + + NSLocalNetworkUsageDescription + A program running within Ghostty would like to access the local network. + NSLocationUsageDescription + A program running within Ghostty would like to access your location information. + NSMainNibFile + MainMenu + NSMicrophoneUsageDescription + A program running within Ghostty would like to use your microphone. + NSMotionUsageDescription + A program running within Ghostty would like to access motion data. + NSPhotoLibraryUsageDescription + A program running within Ghostty would like to access your Photo Library. + NSRemindersUsageDescription + A program running within Ghostty would like to access your reminders. + NSServices + + + NSMenuItem + + default + New Ghostty Tab Here + + NSMessage + openTab + NSRequiredContext + + NSTextContent + FilePath + + NSSendTypes + + NSFilenamesPboardType + public.plain-text + + + + NSMenuItem + + default + New Ghostty Window Here + + NSMessage + openWindow + NSRequiredContext + + NSTextContent + FilePath + + NSSendTypes + + NSFilenamesPboardType + public.plain-text + + + + NSSpeechRecognitionUsageDescription + A program running within Ghostty would like to use speech recognition. + NSSystemAdministrationUsageDescription + A program running within Ghostty requires elevated privileges. + OSAScriptingDefinition + Ghostty.sdef + SUEnableAutomaticChecks + + SUPublicEDKey + wsNcGf5hirwtdXMVnYoxRIX/SqZQLMOsYlD3q3imeok= + UTExportedTypeDeclarations + + + UTTypeConformsTo + + public.data + + UTTypeDescription + Ghostty Surface Identifier + UTTypeIdentifier + com.mitchellh.ghosttySurfaceId + UTTypeTagSpecification + + + + + diff --git a/ghostty-template/Ghostty.app/Contents/MacOS/ghostty b/ghostty-template/Ghostty.app/Contents/MacOS/ghostty new file mode 100755 index 0000000..3c4ee55 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/MacOS/ghostty differ diff --git a/ghostty-template/Ghostty.app/Contents/PkgInfo b/ghostty-template/Ghostty.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Info.plist b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Info.plist new file mode 100644 index 0000000..1811064 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 25F80 + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Ghostty Dock Tile Plugin + CFBundleExecutable + DockTilePlugin + CFBundleIdentifier + com.mitchellh.ghostty-dock-tile + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + DockTilePlugin + CFBundlePackageType + BNDL + CFBundleShortVersionString + 0.1 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 25F70 + DTPlatformName + macosx + DTPlatformVersion + 26.5 + DTSDKBuild + 25F70 + DTSDKName + macosx26.5 + DTXcode + 2650 + DTXcodeBuild + 17F42 + LSMinimumSystemVersion + 13.0 + + diff --git a/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/MacOS/DockTilePlugin b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/MacOS/DockTilePlugin new file mode 100755 index 0000000..c54e35b Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/MacOS/DockTilePlugin differ diff --git a/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Resources/Assets.car b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Resources/Assets.car new file mode 100644 index 0000000..34461c2 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/PlugIns/DockTilePlugin.plugin/Contents/Resources/Assets.car differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/About.nib b/ghostty-template/Ghostty.app/Contents/Resources/About.nib new file mode 100644 index 0000000..a8fd6b4 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/About.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Assets.car b/ghostty-template/Ghostty.app/Contents/Resources/Assets.car new file mode 100644 index 0000000..c0a1e39 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/Assets.car differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ClipboardConfirmation.nib b/ghostty-template/Ghostty.app/Contents/Resources/ClipboardConfirmation.nib new file mode 100644 index 0000000..861d259 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/ClipboardConfirmation.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ConfigurationErrors.nib b/ghostty-template/Ghostty.app/Contents/Resources/ConfigurationErrors.nib new file mode 100644 index 0000000..d239597 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/ConfigurationErrors.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.icns b/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.icns new file mode 100644 index 0000000..f57c6db Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.icns differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.sdef b/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.sdef new file mode 100644 index 0000000..bdfc501 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/Ghostty.sdef @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ghostty-template/Ghostty.app/Contents/Resources/MainMenu.nib b/ghostty-template/Ghostty.app/Contents/Resources/MainMenu.nib new file mode 100644 index 0000000..ffacfa3 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/MainMenu.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/extract.actionsdata b/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/extract.actionsdata new file mode 100644 index 0000000..3e05ce3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/extract.actionsdata @@ -0,0 +1 @@ +{"actions":{"CloseTerminalIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Close an existing terminal."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.CloseTerminalIntent","identifier":"CloseTerminalIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty19CloseTerminalIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty19CloseTerminalIntentV","openAppWhenRun":false,"outputFlags":0,"parameters":[{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to close."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Close Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"CommandPaletteIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameMACOS":{"introducedVersion":"14.2"},"LNPlatformNameWildcard":{"introducedVersion":"*"}},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.CommandPaletteIntent","identifier":"CommandPaletteIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty20CommandPaletteIntentV","openAppWhenRun":false,"outputFlags":0,"outputType":{"primitive":{"wrapper":{"typeIdentifier":1}}},"parameters":[{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to base available commands from."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}},{"capabilities":8,"dynamicOptionsSupport":1,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"command","parameterDescription":{"alternatives":[],"key":"The command to invoke."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Command"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"CommandEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Invoke Command Palette Action"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"FocusTerminalIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Move focus to an existing terminal."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.FocusTerminalIntent","identifier":"FocusTerminalIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty19FocusTerminalIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty19FocusTerminalIntentV","openAppWhenRun":false,"outputFlags":0,"parameters":[{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to focus."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Focus Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"GetTerminalDetailsIntent":{"actionConfiguration":{"actionSummary":{"wrapper":{"otherParameterIdentifiers":[],"summaryString":{"formatString":"Get ${detail} from ${terminal}","parameterIdentifiers":["detail","terminal"]}}}},"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.GetTerminalDetailsIntent","identifier":"GetTerminalDetailsIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty24GetTerminalDetailsIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty24GetTerminalDetailsIntentV","openAppWhenRun":false,"outputFlags":0,"outputType":{"primitive":{"wrapper":{"typeIdentifier":0}}},"parameters":[{"capabilities":0,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"detail","parameterDescription":{"alternatives":[],"key":"The detail to extract about a terminal."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Detail"},"typeSpecificMetadata":[],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"TerminalDetail"}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to extract information about."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Get Details of Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"InputTextIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.InputTextIntent","identifier":"InputTextIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty15InputTextIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty15InputTextIntentV","openAppWhenRun":true,"outputFlags":0,"parameters":[{"capabilities":0,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"text","parameterDescription":{"alternatives":[],"key":"The text to input to the terminal. The text will be inputted as if it was pasted."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"Text"},"typeSpecificMetadata":["LNValueTypeMetadataKeyStringCapitalizationType",{"int":{"wrapper":0}},"LNValueTypeMetadataKeyStringMultiline",{"int":{"wrapper":1}},"LNValueTypeMetadataKeyStringAutocorrect",{"int":{"wrapper":0}},"LNValueTypeMetadataKeyStringSmartQuotes",{"int":{"wrapper":0}},"LNValueTypeMetadataKeyStringSmartDashes",{"int":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to scope this action to."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Input Text to Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"KeyEventIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Simulate a keyboard event. This will not handle text encoding; use the 'Input Text' action for that."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.KeyEventIntent","identifier":"KeyEventIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty14KeyEventIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty14KeyEventIntentV","openAppWhenRun":true,"outputFlags":0,"parameters":[{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"key","parameterDescription":{"alternatives":[],"key":"The key to send to the terminal."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Key"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"enter"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"Key"}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"mods","parameterDescription":{"alternatives":[],"key":"The modifiers to send with the key event."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Modifier(s)"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"array":{"elements":[]}}],"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"linkEnumeration":{"wrapper":{"identifier":"KeyEventMods"}}}}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"action","parameterDescription":{"alternatives":[],"key":"A key press or release."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Event Type"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"press"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"Action"}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to scope this action to."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Send Keyboard Event to Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"KeybindIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.KeybindIntent","identifier":"KeybindIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty13KeybindIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty13KeybindIntentV","openAppWhenRun":true,"outputFlags":0,"outputType":{"primitive":{"wrapper":{"typeIdentifier":1}}},"parameters":[{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to invoke the action on."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}},{"capabilities":0,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"action","parameterDescription":{"alternatives":[],"key":"The keybind action to invoke. This can be any valid keybind action you could put in a configuration file."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"Action"},"typeSpecificMetadata":[],"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Invoke a Keybind Action"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"MouseButtonIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.MouseButtonIntent","identifier":"MouseButtonIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty17MouseButtonIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty17MouseButtonIntentV","openAppWhenRun":true,"outputFlags":0,"parameters":[{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"button","parameterDescription":{"alternatives":[],"key":"The mouse button to press or release."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Button"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"left"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"MouseButton"}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"action","parameterDescription":{"alternatives":[],"key":"Whether to press or release the button."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Action"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"press"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"MouseState"}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"mods","parameterDescription":{"alternatives":[],"key":"The modifiers to send with the mouse event."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Modifier(s)"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"array":{"elements":[]}}],"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"linkEnumeration":{"wrapper":{"identifier":"KeyEventMods"}}}}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to scope this action to."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Send Mouse Button Event to Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"MousePosIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Send a mouse position event to the terminal. This reports the cursor position for mouse tracking."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.MousePosIntent","identifier":"MousePosIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty14MousePosIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty14MousePosIntentV","openAppWhenRun":true,"outputFlags":0,"parameters":[{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"x","parameterDescription":{"alternatives":[],"key":"The horizontal position of the mouse cursor in pixels."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"X Position"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"double":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"y","parameterDescription":{"alternatives":[],"key":"The vertical position of the mouse cursor in pixels."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"Y Position"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"double":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"mods","parameterDescription":{"alternatives":[],"key":"The modifiers to send with the mouse position event."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Modifier(s)"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"array":{"elements":[]}}],"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"linkEnumeration":{"wrapper":{"identifier":"KeyEventMods"}}}}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to scope this action to."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Send Mouse Position Event to Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"MouseScrollIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Send a mouse scroll event to the terminal with configurable precision and momentum."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.MouseScrollIntent","identifier":"MouseScrollIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty17MouseScrollIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty17MouseScrollIntentV","openAppWhenRun":true,"outputFlags":0,"parameters":[{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"x","parameterDescription":{"alternatives":[],"key":"The horizontal scroll amount."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"X Scroll Delta"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"double":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"y","parameterDescription":{"alternatives":[],"key":"The vertical scroll amount."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"Y Scroll Delta"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"double":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":7}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"precision","parameterDescription":{"alternatives":[],"key":"Whether this is a high-precision scroll event (e.g., from trackpad)."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":1}}}}],"title":{"alternatives":[],"key":"High Precision"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"int":{"wrapper":0}}],"valueType":{"primitive":{"wrapper":{"typeIdentifier":1}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"momentum","parameterDescription":{"alternatives":[],"key":"The momentum phase for inertial scrolling."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Momentum Phase"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"0"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"Momentum"}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"terminal","parameterDescription":{"alternatives":[],"key":"The terminal to scope this action to."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":3,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Send Mouse Scroll Event to Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"NewTerminalIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameMACOS":{"introducedVersion":"15.0"},"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Create a new terminal."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.NewTerminalIntent","identifier":"NewTerminalIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty17NewTerminalIntentV","openAppWhenRun":false,"outputFlags":0,"outputType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}},"parameters":[{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"location","parameterDescription":{"alternatives":[],"key":"The location that the terminal should be created."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Location"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"string":{"wrapper":"window"}}],"valueType":{"linkEnumeration":{"wrapper":{"identifier":"NewTerminalLocation"}}}},{"capabilities":0,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":true,"name":"command","parameterDescription":{"alternatives":[],"key":"Command to execute within your configured shell."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}},{"kindValue":0,"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"primitive":{"wrapper":{"typeIdentifier":2}}}}}}},{"kindValue":0,"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"title":{"alternatives":[],"key":"Command"},"typeSpecificMetadata":[],"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":true,"name":"workingDirectory","parameterDescription":{"alternatives":[],"key":"The working directory to open in the terminal."},"resolvableInputTypes":[{"kindValue":0,"valueType":{"intents":{"wrapper":{"typeIdentifier":12}}}}],"title":{"alternatives":[],"key":"Working Directory"},"typeSpecificMetadata":["LNValueTypeMetadataKeyFileSupportedTypes",{"array":{"elements":[{"string":{"wrapper":"public.folder"}}]}}],"valueType":{"intents":{"wrapper":{"typeIdentifier":12}}}},{"capabilities":1,"dynamicOptionsSupport":0,"inputConnectionBehavior":0,"isInput":false,"isOptional":false,"name":"env","parameterDescription":{"alternatives":[],"key":"Environment variables in `KEY=VALUE` format."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Environment Variables"},"typeSpecificMetadata":["LNValueTypeSpecificMetadataKeyDefaultValue",{"array":{"elements":[]}}],"valueType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}}}},{"capabilities":0,"dynamicOptionsSupport":2,"inputConnectionBehavior":0,"isInput":false,"isOptional":true,"name":"parent","parameterDescription":{"alternatives":[],"key":"The terminal to inherit the base configuration from."},"resolvableInputTypes":[],"title":{"alternatives":[],"key":"Parent Terminal"},"typeSpecificMetadata":[],"valueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"New Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"QuickTerminalIntent":{"assistantDefinedSchemaTraits":[],"assistantDefinedSchemas":[],"authenticationPolicy":0,"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"descriptionMetadata":{"descriptionText":{"alternatives":[],"key":"Open the Quick Terminal. If it is already open, then do nothing."},"searchKeywords":[]},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.QuickTerminalIntent","identifier":"QuickTerminalIntent","isAuthPolExplicit":false,"isDiscoverable":true,"mangledTypeName":"7Ghostty19QuickTerminalIntentV","mangledTypeNameByBundleIdentifier":{},"mangledTypeNameByBundleIdentifierV2":{},"mangledTypeNameV2":"7Ghostty19QuickTerminalIntentV","openAppWhenRun":false,"outputFlags":0,"outputType":{"array":{"wrapper":{"capabilities":3,"memberValueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}}}}},"parameters":[],"presentationStyle":0,"requiredCapabilities":[],"supportedModes":1,"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"systemProtocols":[],"title":{"alternatives":[],"key":"Open the Quick Terminal"},"typeSpecificMetadata":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}}},"assistantEntities":[],"assistantIntentNegativePhrases":[],"assistantIntents":[],"autoShortcuts":[],"entities":{"CommandEntity":{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameMACOS":{"introducedVersion":"14.0"},"LNPlatformNameWildcard":{"introducedVersion":"*"}},"defaultQueryIdentifier":"Ghostty.CommandQuery","displayTypeName":{"alternatives":[],"key":"Command Palette Command"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.CommandEntity","mangledTypeName":"7Ghostty13CommandEntityV","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Command Palette Command"},"properties":[{"capabilities":0,"identifier":"title","isOptional":false,"title":{"alternatives":[],"key":"Title"},"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"identifier":"description","isOptional":false,"title":{"alternatives":[],"key":"Description"},"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"identifier":"action","isOptional":false,"title":{"alternatives":[],"key":"Action"},"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}}],"requiredCapabilities":[],"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"transient":false,"typeName":"CommandEntity","visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"TerminalEntity":{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"defaultQueryIdentifier":"Ghostty.TerminalQuery","displayTypeName":{"alternatives":[],"key":"Terminal"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.TerminalEntity","mangledTypeName":"7Ghostty14TerminalEntityV","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Terminal"},"properties":[{"capabilities":0,"identifier":"title","isOptional":false,"title":{"alternatives":[],"key":"Title"},"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"identifier":"workingDirectory","isOptional":true,"title":{"alternatives":[],"key":"Working Directory"},"valueType":{"primitive":{"wrapper":{"typeIdentifier":0}}}},{"capabilities":0,"identifier":"kind","isOptional":false,"title":{"alternatives":[],"key":"Kind"},"valueType":{"linkEnumeration":{"wrapper":{"identifier":"Kind"}}}}],"requiredCapabilities":[],"systemProtocolMetadata":[],"systemProtocolMetadataV2":[],"transient":false,"typeName":"TerminalEntity","visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}}},"enums":[{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Release"}},"identifier":"release"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Press"}},"identifier":"press"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Repeat"}},"identifier":"repeat"}],"displayTypeName":{"alternatives":[],"key":"Key Action"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.Ghostty.Input.Action","identifier":"Action","isSystem":false,"mangledTypeName":"7GhosttyAAO5InputV6ActionO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Key Action"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Normal"}},"identifier":"normal"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Quick"}},"identifier":"quick"}],"displayTypeName":{"alternatives":[],"key":"Terminal Kind"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.TerminalEntity.Kind","identifier":"Kind","isSystem":false,"mangledTypeName":"7Ghostty14TerminalEntityV4KindO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Terminal Kind"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"None"}},"identifier":"0"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Began"}},"identifier":"1"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Stationary"}},"identifier":"2"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Changed"}},"identifier":"3"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Ended"}},"identifier":"4"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Cancelled"}},"identifier":"5"},{"displayRepresentation":{"title":{"alternatives":[],"key":"May Begin"}},"identifier":"6"}],"displayTypeName":{"alternatives":[],"key":"Scroll Momentum"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.Ghostty.Input.Momentum","identifier":"Momentum","isSystem":false,"mangledTypeName":"7GhosttyAAO5InputV8MomentumO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Scroll Momentum"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Shift"}},"identifier":"shift"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Control"}},"identifier":"control"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Option"}},"identifier":"option"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Command"}},"identifier":"command"}],"displayTypeName":{"alternatives":[],"key":"Modifier Key"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.KeyEventMods","identifier":"KeyEventMods","isSystem":false,"mangledTypeName":"7Ghostty12KeyEventModsO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Modifier Key"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Release"}},"identifier":"release"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Press"}},"identifier":"press"}],"displayTypeName":{"alternatives":[],"key":"Mouse State"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.Ghostty.Input.MouseState","identifier":"MouseState","isSystem":false,"mangledTypeName":"7GhosttyAAO5InputV10MouseStateO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Mouse State"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Backtick (`)"}},"identifier":"backquote"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Backslash (\\)"}},"identifier":"backslash"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Bracket ([)"}},"identifier":"bracketLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Bracket (])"}},"identifier":"bracketRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Comma (,)"}},"identifier":"comma"},{"displayRepresentation":{"title":{"alternatives":[],"key":"0"}},"identifier":"digit0"},{"displayRepresentation":{"title":{"alternatives":[],"key":"1"}},"identifier":"digit1"},{"displayRepresentation":{"title":{"alternatives":[],"key":"2"}},"identifier":"digit2"},{"displayRepresentation":{"title":{"alternatives":[],"key":"3"}},"identifier":"digit3"},{"displayRepresentation":{"title":{"alternatives":[],"key":"4"}},"identifier":"digit4"},{"displayRepresentation":{"title":{"alternatives":[],"key":"5"}},"identifier":"digit5"},{"displayRepresentation":{"title":{"alternatives":[],"key":"6"}},"identifier":"digit6"},{"displayRepresentation":{"title":{"alternatives":[],"key":"7"}},"identifier":"digit7"},{"displayRepresentation":{"title":{"alternatives":[],"key":"8"}},"identifier":"digit8"},{"displayRepresentation":{"title":{"alternatives":[],"key":"9"}},"identifier":"digit9"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Equal (=)"}},"identifier":"equal"},{"displayRepresentation":{"title":{"alternatives":[],"key":"International Backslash"}},"identifier":"intlBackslash"},{"displayRepresentation":{"title":{"alternatives":[],"key":"International Ro"}},"identifier":"intlRo"},{"displayRepresentation":{"title":{"alternatives":[],"key":"International Yen"}},"identifier":"intlYen"},{"displayRepresentation":{"title":{"alternatives":[],"key":"A"}},"identifier":"a"},{"displayRepresentation":{"title":{"alternatives":[],"key":"B"}},"identifier":"b"},{"displayRepresentation":{"title":{"alternatives":[],"key":"C"}},"identifier":"c"},{"displayRepresentation":{"title":{"alternatives":[],"key":"D"}},"identifier":"d"},{"displayRepresentation":{"title":{"alternatives":[],"key":"E"}},"identifier":"e"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F"}},"identifier":"f"},{"displayRepresentation":{"title":{"alternatives":[],"key":"G"}},"identifier":"g"},{"displayRepresentation":{"title":{"alternatives":[],"key":"H"}},"identifier":"h"},{"displayRepresentation":{"title":{"alternatives":[],"key":"I"}},"identifier":"i"},{"displayRepresentation":{"title":{"alternatives":[],"key":"J"}},"identifier":"j"},{"displayRepresentation":{"title":{"alternatives":[],"key":"K"}},"identifier":"k"},{"displayRepresentation":{"title":{"alternatives":[],"key":"L"}},"identifier":"l"},{"displayRepresentation":{"title":{"alternatives":[],"key":"M"}},"identifier":"m"},{"displayRepresentation":{"title":{"alternatives":[],"key":"N"}},"identifier":"n"},{"displayRepresentation":{"title":{"alternatives":[],"key":"O"}},"identifier":"o"},{"displayRepresentation":{"title":{"alternatives":[],"key":"P"}},"identifier":"p"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Q"}},"identifier":"q"},{"displayRepresentation":{"title":{"alternatives":[],"key":"R"}},"identifier":"r"},{"displayRepresentation":{"title":{"alternatives":[],"key":"S"}},"identifier":"s"},{"displayRepresentation":{"title":{"alternatives":[],"key":"T"}},"identifier":"t"},{"displayRepresentation":{"title":{"alternatives":[],"key":"U"}},"identifier":"u"},{"displayRepresentation":{"title":{"alternatives":[],"key":"V"}},"identifier":"v"},{"displayRepresentation":{"title":{"alternatives":[],"key":"W"}},"identifier":"w"},{"displayRepresentation":{"title":{"alternatives":[],"key":"X"}},"identifier":"x"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Y"}},"identifier":"y"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Z"}},"identifier":"z"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Minus (-)"}},"identifier":"minus"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Period (.)"}},"identifier":"period"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Quote (')"}},"identifier":"quote"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Semicolon (;)"}},"identifier":"semicolon"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Slash (\/)"}},"identifier":"slash"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Alt"}},"identifier":"altLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Alt"}},"identifier":"altRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Backspace"}},"identifier":"backspace"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Caps Lock"}},"identifier":"capsLock"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Context Menu"}},"identifier":"contextMenu"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Control"}},"identifier":"controlLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Control"}},"identifier":"controlRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Enter"}},"identifier":"enter"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Command"}},"identifier":"metaLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Command"}},"identifier":"metaRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Shift"}},"identifier":"shiftLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Shift"}},"identifier":"shiftRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Space"}},"identifier":"space"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Tab"}},"identifier":"tab"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Delete"}},"identifier":"delete"},{"displayRepresentation":{"title":{"alternatives":[],"key":"End"}},"identifier":"end"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Home"}},"identifier":"home"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Insert"}},"identifier":"insert"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Page Down"}},"identifier":"pageDown"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Page Up"}},"identifier":"pageUp"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Down Arrow"}},"identifier":"arrowDown"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Left Arrow"}},"identifier":"arrowLeft"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right Arrow"}},"identifier":"arrowRight"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Up Arrow"}},"identifier":"arrowUp"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Num Lock"}},"identifier":"numLock"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 0"}},"identifier":"numpad0"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 1"}},"identifier":"numpad1"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 2"}},"identifier":"numpad2"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 3"}},"identifier":"numpad3"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 4"}},"identifier":"numpad4"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 5"}},"identifier":"numpad5"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 6"}},"identifier":"numpad6"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 7"}},"identifier":"numpad7"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 8"}},"identifier":"numpad8"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad 9"}},"identifier":"numpad9"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Add (+)"}},"identifier":"numpadAdd"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Comma"}},"identifier":"numpadComma"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Decimal"}},"identifier":"numpadDecimal"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Divide (÷)"}},"identifier":"numpadDivide"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Enter"}},"identifier":"numpadEnter"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Equal"}},"identifier":"numpadEqual"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Multiply (×)"}},"identifier":"numpadMultiply"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Numpad Subtract (-)"}},"identifier":"numpadSubtract"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Escape"}},"identifier":"escape"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F1"}},"identifier":"f1"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F2"}},"identifier":"f2"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F3"}},"identifier":"f3"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F4"}},"identifier":"f4"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F5"}},"identifier":"f5"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F6"}},"identifier":"f6"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F7"}},"identifier":"f7"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F8"}},"identifier":"f8"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F9"}},"identifier":"f9"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F10"}},"identifier":"f10"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F11"}},"identifier":"f11"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F12"}},"identifier":"f12"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F13"}},"identifier":"f13"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F14"}},"identifier":"f14"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F15"}},"identifier":"f15"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F16"}},"identifier":"f16"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F17"}},"identifier":"f17"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F18"}},"identifier":"f18"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F19"}},"identifier":"f19"},{"displayRepresentation":{"title":{"alternatives":[],"key":"F20"}},"identifier":"f20"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Volume Down"}},"identifier":"audioVolumeDown"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Volume Mute"}},"identifier":"audioVolumeMute"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Volume Up"}},"identifier":"audioVolumeUp"}],"displayTypeName":{"alternatives":[],"key":"Key"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.Ghostty.Input.Key","identifier":"Key","isSystem":false,"mangledTypeName":"7GhosttyAAO5InputV3KeyO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Key"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Left"}},"identifier":"left"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Right"}},"identifier":"right"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Middle"}},"identifier":"middle"}],"displayTypeName":{"alternatives":[],"key":"Mouse Button"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.Ghostty.Input.MouseButton","identifier":"MouseButton","isSystem":false,"mangledTypeName":"7GhosttyAAO5InputV11MouseButtonO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Mouse Button"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Title"}},"identifier":"title"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Working Directory"}},"identifier":"workingDirectory"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Full Contents"}},"identifier":"allContents"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Selected Text"}},"identifier":"selectedText"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Visible Text"}},"identifier":"visibleText"}],"displayTypeName":{"alternatives":[],"key":"Terminal Detail"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.TerminalDetail","identifier":"TerminalDetail","isSystem":false,"mangledTypeName":"7Ghostty14TerminalDetailO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Terminal Detail"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},{"assistantDefinedSchemas":[],"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"cases":[{"displayRepresentation":{"title":{"alternatives":[],"key":"Tab"}},"identifier":"tab"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Window"}},"identifier":"window"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Split Left"}},"identifier":"split:left"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Split Right"}},"identifier":"split:right"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Split Up"}},"identifier":"split:up"},{"displayRepresentation":{"title":{"alternatives":[],"key":"Split Down"}},"identifier":"split:down"}],"displayTypeName":{"alternatives":[],"key":"Terminal Location"},"effectiveBundleIdentifiers":[],"fullyQualifiedTypeName":"Ghostty.NewTerminalLocation","identifier":"NewTerminalLocation","isSystem":false,"mangledTypeName":"7Ghostty19NewTerminalLocationO","mangledTypeNameByBundleIdentifier":{},"numericFormatTypeName":{"alternatives":[],"key":"Terminal Location"},"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}}],"generator":{"name":"xcode-tools","version":"17F42"},"negativePhrases":[],"queries":{"CommandQuery":{"availabilityAnnotations":{"LNPlatformNameMACOS":{"introducedVersion":"14.0"},"LNPlatformNameWildcard":{"introducedVersion":"*"}},"capabilities":66,"defaultQueryForEntity":true,"effectiveBundleIdentifiers":[],"entityType":"CommandEntity","fullyQualifiedIdentifier":"Ghostty.CommandQuery","identifier":"CommandQuery","mangledTypeName":"7Ghostty12CommandQueryV","mangledTypeNameByBundleIdentifier":{},"parameters":[],"queryType":"CommandQuery","resultValueType":{"entity":{"wrapper":{"typeName":"CommandEntity"}}},"sortingOptions":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}},"TerminalQuery":{"availabilityAnnotations":{"LNPlatformNameWildcard":{"introducedVersion":"*"}},"capabilities":71,"defaultQueryForEntity":true,"effectiveBundleIdentifiers":[],"entityType":"TerminalEntity","fullyQualifiedIdentifier":"Ghostty.TerminalQuery","identifier":"TerminalQuery","mangledTypeName":"7Ghostty13TerminalQueryV","mangledTypeNameByBundleIdentifier":{},"parameters":[],"queryType":"TerminalQuery","resultValueType":{"entity":{"wrapper":{"typeName":"TerminalEntity"}}},"sortingOptions":[],"visibilityMetadata":{"assistantOnly":false,"isDiscoverable":true}}},"shortcutTileColor":14,"version":1} \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/version.json b/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/version.json new file mode 100644 index 0000000..7e56c4b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/Metadata.appintents/version.json @@ -0,0 +1,4 @@ +{ + "version" : "3.0", + "toolsVersion" : "17F42" +} \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Resources/QuickTerminal.nib b/ghostty-template/Ghostty.app/Contents/Resources/QuickTerminal.nib new file mode 100644 index 0000000..623a0b4 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/QuickTerminal.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/Terminal.nib b/ghostty-template/Ghostty.app/Contents/Resources/Terminal.nib new file mode 100644 index 0000000..6c61e1a Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/Terminal.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/TerminalHiddenTitlebar.nib b/ghostty-template/Ghostty.app/Contents/Resources/TerminalHiddenTitlebar.nib new file mode 100644 index 0000000..61162b3 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/TerminalHiddenTitlebar.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarTahoe.nib b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarTahoe.nib new file mode 100644 index 0000000..ed832ba Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarTahoe.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarVentura.nib b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarVentura.nib new file mode 100644 index 0000000..a19be96 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTabsTitlebarVentura.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/TerminalTransparentTitlebar.nib b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTransparentTitlebar.nib new file mode 100644 index 0000000..eabd62f Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/TerminalTransparentTitlebar.nib differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/bash-completion/completions/ghostty.bash b/ghostty-template/Ghostty.app/Contents/Resources/bash-completion/completions/ghostty.bash new file mode 100644 index 0000000..bc8e9f5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/bash-completion/completions/ghostty.bash @@ -0,0 +1,642 @@ +_ghostty() { + + # compat: mapfile -t COMPREPLY < <( "$@" ) + _compreply() { + COMPREPLY=() + while IFS='' read -r line; do COMPREPLY+=("$line"); done < <( "$@" ) + } + + # -o nospace requires we add back a space when a completion is finished + # and not part of a --key= completion + _add_spaces() { + for idx in "${!COMPREPLY[@]}"; do + [ -n "${COMPREPLY[idx]}" ] && COMPREPLY[idx]="${COMPREPLY[idx]} "; + done + } + + _fonts() { + local IFS=$'\n' + COMPREPLY=() + while read -r line; do COMPREPLY+=("$line"); done < <( compgen -P '"' -S '"' -W "$($ghostty +list-fonts | grep '^[A-Z]' )" -- "$cur") + } + + _themes() { + local IFS=$'\n' + COMPREPLY=() + while read -r line; do COMPREPLY+=("$line"); done < <( compgen -P '"' -S '"' -W "$($ghostty +list-themes | sed -E 's/^(.*) \(.*$/\1/')" -- "$cur") + } + + _files() { + _compreply compgen -o filenames -f -- "$cur" + for i in "${!COMPREPLY[@]}"; do + if [[ -d "${COMPREPLY[i]}" ]]; then + COMPREPLY[i]="${COMPREPLY[i]}/"; + fi + if [[ -f "${COMPREPLY[i]}" ]]; then + COMPREPLY[i]="${COMPREPLY[i]} "; + fi + done + } + + _dirs() { + _compreply compgen -o dirnames -d -- "$cur" + for i in "${!COMPREPLY[@]}"; do + if [[ -d "${COMPREPLY[i]}" ]]; then + COMPREPLY[i]="${COMPREPLY[i]}/"; + fi + done + if [[ "${#COMPREPLY[@]}" == 0 && -d "$cur" ]]; then + COMPREPLY=( "$cur " ) + fi + } + + _handle_config() { + local config="--help" + config+=" --version" + config+=" --language=" + config+=" --font-family=" + config+=" --font-family-bold=" + config+=" --font-family-italic=" + config+=" --font-family-bold-italic=" + config+=" --font-style=" + config+=" --font-style-bold=" + config+=" --font-style-italic=" + config+=" --font-style-bold-italic=" + config+=" --font-synthetic-style=" + config+=" --font-feature=" + config+=" --font-size=" + config+=" --font-variation=" + config+=" --font-variation-bold=" + config+=" --font-variation-italic=" + config+=" --font-variation-bold-italic=" + config+=" --font-codepoint-map=" + config+=" --clipboard-codepoint-map=" + config+=" '--font-thicken '" + config+=" --font-thicken-strength=" + config+=" --font-shaping-break=" + config+=" --alpha-blending=" + config+=" --adjust-cell-width=" + config+=" --adjust-cell-height=" + config+=" --adjust-font-baseline=" + config+=" --adjust-underline-position=" + config+=" --adjust-underline-thickness=" + config+=" --adjust-strikethrough-position=" + config+=" --adjust-strikethrough-thickness=" + config+=" --adjust-overline-position=" + config+=" --adjust-overline-thickness=" + config+=" --adjust-cursor-thickness=" + config+=" --adjust-cursor-height=" + config+=" --adjust-box-thickness=" + config+=" --adjust-icon-height=" + config+=" --grapheme-width-method=" + config+=" --freetype-load-flags=" + config+=" --theme=" + config+=" --background=" + config+=" --foreground=" + config+=" --background-image=" + config+=" --background-image-opacity=" + config+=" --background-image-position=" + config+=" --background-image-fit=" + config+=" '--background-image-repeat '" + config+=" --selection-foreground=" + config+=" --selection-background=" + config+=" '--selection-clear-on-typing '" + config+=" '--selection-clear-on-copy '" + config+=" --selection-word-chars=" + config+=" --minimum-contrast=" + config+=" --palette=" + config+=" '--palette-generate '" + config+=" '--palette-harmonious '" + config+=" --cursor-color=" + config+=" --cursor-opacity=" + config+=" --cursor-style=" + config+=" '--cursor-style-blink '" + config+=" --cursor-text=" + config+=" '--cursor-click-to-move '" + config+=" '--mouse-hide-while-typing '" + config+=" --scroll-to-bottom=" + config+=" --mouse-shift-capture=" + config+=" '--mouse-reporting '" + config+=" --mouse-scroll-multiplier=" + config+=" --background-opacity=" + config+=" '--background-opacity-cells '" + config+=" --background-blur=" + config+=" --unfocused-split-opacity=" + config+=" --unfocused-split-fill=" + config+=" --split-divider-color=" + config+=" --split-preserve-zoom=" + config+=" --search-foreground=" + config+=" --search-background=" + config+=" --search-selected-foreground=" + config+=" --search-selected-background=" + config+=" --command=" + config+=" --initial-command=" + config+=" --notify-on-command-finish=" + config+=" --notify-on-command-finish-action=" + config+=" --notify-on-command-finish-after=" + config+=" --env=" + config+=" --input=" + config+=" '--wait-after-command '" + config+=" --abnormal-command-exit-runtime=" + config+=" --scrollback-limit=" + config+=" --scrollbar=" + config+=" --link=" + config+=" '--link-url '" + config+=" --link-previews=" + config+=" '--maximize '" + config+=" --fullscreen=" + config+=" --title=" + config+=" --class=" + config+=" --x11-instance-name=" + config+=" --working-directory=" + config+=" --keybind=" + config+=" --key-remap=" + config+=" --window-padding-x=" + config+=" --window-padding-y=" + config+=" '--window-padding-balance '" + config+=" --window-padding-color=" + config+=" '--window-vsync '" + config+=" '--window-inherit-working-directory '" + config+=" '--tab-inherit-working-directory '" + config+=" '--split-inherit-working-directory '" + config+=" '--window-inherit-font-size '" + config+=" --window-decoration=" + config+=" --window-title-font-family=" + config+=" --window-subtitle=" + config+=" --window-theme=" + config+=" --window-colorspace=" + config+=" --window-height=" + config+=" --window-width=" + config+=" --window-position-x=" + config+=" --window-position-y=" + config+=" --window-save-state=" + config+=" '--window-step-resize '" + config+=" --window-new-tab-position=" + config+=" --window-show-tab-bar=" + config+=" --window-titlebar-background=" + config+=" --window-titlebar-foreground=" + config+=" --resize-overlay=" + config+=" --resize-overlay-position=" + config+=" --resize-overlay-duration=" + config+=" '--focus-follows-mouse '" + config+=" --clipboard-read=" + config+=" --clipboard-write=" + config+=" '--clipboard-trim-trailing-spaces '" + config+=" '--clipboard-paste-protection '" + config+=" '--clipboard-paste-bracketed-safe '" + config+=" '--title-report '" + config+=" --image-storage-limit=" + config+=" --copy-on-select=" + config+=" --right-click-action=" + config+=" --click-repeat-interval=" + config+=" --config-file=" + config+=" '--config-default-files '" + config+=" --confirm-close-surface=" + config+=" '--quit-after-last-window-closed '" + config+=" --quit-after-last-window-closed-delay=" + config+=" '--initial-window '" + config+=" --undo-timeout=" + config+=" --quick-terminal-position=" + config+=" --quick-terminal-size=" + config+=" --gtk-quick-terminal-layer=" + config+=" --gtk-quick-terminal-namespace=" + config+=" --quick-terminal-screen=" + config+=" --quick-terminal-animation-duration=" + config+=" '--quick-terminal-autohide '" + config+=" --quick-terminal-space-behavior=" + config+=" --quick-terminal-keyboard-interactivity=" + config+=" --shell-integration=" + config+=" --shell-integration-features=" + config+=" --command-palette-entry=" + config+=" --osc-color-report-format=" + config+=" '--vt-kam-allowed '" + config+=" --custom-shader=" + config+=" --custom-shader-animation=" + config+=" --bell-features=" + config+=" --bell-audio-path=" + config+=" --bell-audio-volume=" + config+=" --app-notifications=" + config+=" --macos-non-native-fullscreen=" + config+=" --macos-window-buttons=" + config+=" --macos-titlebar-style=" + config+=" --macos-titlebar-proxy-icon=" + config+=" --macos-dock-drop-behavior=" + config+=" --macos-option-as-alt=" + config+=" '--macos-window-shadow '" + config+=" --macos-hidden=" + config+=" '--macos-auto-secure-input '" + config+=" '--macos-secure-input-indication '" + config+=" '--macos-applescript '" + config+=" --macos-icon=" + config+=" --macos-custom-icon=" + config+=" --macos-icon-frame=" + config+=" --macos-icon-ghost-color=" + config+=" --macos-icon-screen-color=" + config+=" --macos-shortcuts=" + config+=" --linux-cgroup=" + config+=" --linux-cgroup-memory-limit=" + config+=" --linux-cgroup-processes-limit=" + config+=" '--linux-cgroup-hard-fail '" + config+=" '--gtk-opengl-debug '" + config+=" --gtk-single-instance=" + config+=" '--gtk-titlebar '" + config+=" --gtk-tabs-location=" + config+=" '--gtk-titlebar-hide-when-maximized '" + config+=" --gtk-toolbar-style=" + config+=" --gtk-titlebar-style=" + config+=" '--gtk-wide-tabs '" + config+=" --gtk-custom-css=" + config+=" '--desktop-notifications '" + config+=" '--progress-style '" + config+=" --bold-color=" + config+=" --faint-opacity=" + config+=" --term=" + config+=" --enquiry-response=" + config+=" --async-backend=" + config+=" --auto-update=" + config+=" --auto-update-channel=" + + case "$prev" in + --language) return ;; + --font-family) _fonts ;; + --font-family-bold) _fonts ;; + --font-family-italic) _fonts ;; + --font-family-bold-italic) _fonts ;; + --font-style) return ;; + --font-style-bold) return ;; + --font-style-italic) return ;; + --font-style-bold-italic) return ;; + --font-synthetic-style) _compreply compgen -W "bold no-bold italic no-italic bold-italic no-bold-italic" -- "$cur"; _add_spaces ;; + --font-feature) return ;; + --font-size) return ;; + --font-variation) return ;; + --font-variation-bold) return ;; + --font-variation-italic) return ;; + --font-variation-bold-italic) return ;; + --font-codepoint-map) return ;; + --clipboard-codepoint-map) return ;; + --font-thicken) return ;; + --font-thicken-strength) return ;; + --font-shaping-break) _compreply compgen -W "cursor no-cursor" -- "$cur"; _add_spaces ;; + --alpha-blending) _compreply compgen -W "native linear linear-corrected" -- "$cur"; _add_spaces ;; + --adjust-cell-width) return ;; + --adjust-cell-height) return ;; + --adjust-font-baseline) return ;; + --adjust-underline-position) return ;; + --adjust-underline-thickness) return ;; + --adjust-strikethrough-position) return ;; + --adjust-strikethrough-thickness) return ;; + --adjust-overline-position) return ;; + --adjust-overline-thickness) return ;; + --adjust-cursor-thickness) return ;; + --adjust-cursor-height) return ;; + --adjust-box-thickness) return ;; + --adjust-icon-height) return ;; + --grapheme-width-method) _compreply compgen -W "legacy unicode" -- "$cur"; _add_spaces ;; + --freetype-load-flags) _compreply compgen -W "hinting no-hinting force-autohint no-force-autohint monochrome no-monochrome autohint no-autohint light no-light" -- "$cur"; _add_spaces ;; + --theme) _themes ;; + --background) return ;; + --foreground) return ;; + --background-image) return ;; + --background-image-opacity) return ;; + --background-image-position) _compreply compgen -W "top-left top-center top-right center-left center-center center-right bottom-left bottom-center bottom-right center" -- "$cur"; _add_spaces ;; + --background-image-fit) _compreply compgen -W "contain cover stretch none" -- "$cur"; _add_spaces ;; + --background-image-repeat) return ;; + --selection-foreground) return ;; + --selection-background) return ;; + --selection-clear-on-typing) return ;; + --selection-clear-on-copy) return ;; + --selection-word-chars) return ;; + --minimum-contrast) return ;; + --palette) return ;; + --palette-generate) return ;; + --palette-harmonious) return ;; + --cursor-color) return ;; + --cursor-opacity) return ;; + --cursor-style) _compreply compgen -W "bar block underline block_hollow" -- "$cur"; _add_spaces ;; + --cursor-style-blink) return ;; + --cursor-text) return ;; + --cursor-click-to-move) return ;; + --mouse-hide-while-typing) return ;; + --scroll-to-bottom) _compreply compgen -W "keystroke no-keystroke output no-output" -- "$cur"; _add_spaces ;; + --mouse-shift-capture) _compreply compgen -W "false true always never" -- "$cur"; _add_spaces ;; + --mouse-reporting) return ;; + --mouse-scroll-multiplier) return ;; + --background-opacity) return ;; + --background-opacity-cells) return ;; + --background-blur) return ;; + --unfocused-split-opacity) return ;; + --unfocused-split-fill) return ;; + --split-divider-color) return ;; + --split-preserve-zoom) _compreply compgen -W "navigation no-navigation" -- "$cur"; _add_spaces ;; + --search-foreground) return ;; + --search-background) return ;; + --search-selected-foreground) return ;; + --search-selected-background) return ;; + --command) return ;; + --initial-command) return ;; + --notify-on-command-finish) _compreply compgen -W "never unfocused always" -- "$cur"; _add_spaces ;; + --notify-on-command-finish-action) _compreply compgen -W "bell no-bell notify no-notify" -- "$cur"; _add_spaces ;; + --notify-on-command-finish-after) return ;; + --env) return ;; + --input) return ;; + --wait-after-command) return ;; + --abnormal-command-exit-runtime) return ;; + --scrollback-limit) return ;; + --scrollbar) _compreply compgen -W "system never" -- "$cur"; _add_spaces ;; + --link) return ;; + --link-url) return ;; + --link-previews) _compreply compgen -W "false true osc8" -- "$cur"; _add_spaces ;; + --maximize) return ;; + --fullscreen) _compreply compgen -W "false true non-native non-native-visible-menu non-native-padded-notch" -- "$cur"; _add_spaces ;; + --title) return ;; + --class) return ;; + --x11-instance-name) return ;; + --working-directory) _dirs ;; + --keybind) return ;; + --key-remap) return ;; + --window-padding-x) return ;; + --window-padding-y) return ;; + --window-padding-balance) return ;; + --window-padding-color) _compreply compgen -W "background extend extend-always" -- "$cur"; _add_spaces ;; + --window-vsync) return ;; + --window-inherit-working-directory) return ;; + --tab-inherit-working-directory) return ;; + --split-inherit-working-directory) return ;; + --window-inherit-font-size) return ;; + --window-decoration) _compreply compgen -W "auto client server none" -- "$cur"; _add_spaces ;; + --window-title-font-family) return ;; + --window-subtitle) _compreply compgen -W "false working-directory" -- "$cur"; _add_spaces ;; + --window-theme) _compreply compgen -W "auto system light dark ghostty" -- "$cur"; _add_spaces ;; + --window-colorspace) _compreply compgen -W "srgb display-p3" -- "$cur"; _add_spaces ;; + --window-height) return ;; + --window-width) return ;; + --window-position-x) return ;; + --window-position-y) return ;; + --window-save-state) _compreply compgen -W "default never always" -- "$cur"; _add_spaces ;; + --window-step-resize) return ;; + --window-new-tab-position) _compreply compgen -W "current end" -- "$cur"; _add_spaces ;; + --window-show-tab-bar) _compreply compgen -W "always auto never" -- "$cur"; _add_spaces ;; + --window-titlebar-background) return ;; + --window-titlebar-foreground) return ;; + --resize-overlay) _compreply compgen -W "always never after-first" -- "$cur"; _add_spaces ;; + --resize-overlay-position) _compreply compgen -W "center top-left top-center top-right bottom-left bottom-center bottom-right" -- "$cur"; _add_spaces ;; + --resize-overlay-duration) return ;; + --focus-follows-mouse) return ;; + --clipboard-read) _compreply compgen -W "allow deny ask" -- "$cur"; _add_spaces ;; + --clipboard-write) _compreply compgen -W "allow deny ask" -- "$cur"; _add_spaces ;; + --clipboard-trim-trailing-spaces) return ;; + --clipboard-paste-protection) return ;; + --clipboard-paste-bracketed-safe) return ;; + --title-report) return ;; + --image-storage-limit) return ;; + --copy-on-select) _compreply compgen -W "false true clipboard" -- "$cur"; _add_spaces ;; + --right-click-action) _compreply compgen -W "ignore paste copy copy-or-paste context-menu" -- "$cur"; _add_spaces ;; + --click-repeat-interval) return ;; + --config-file) _files ;; + --config-default-files) return ;; + --confirm-close-surface) _compreply compgen -W "false true always" -- "$cur"; _add_spaces ;; + --quit-after-last-window-closed) return ;; + --quit-after-last-window-closed-delay) return ;; + --initial-window) return ;; + --undo-timeout) return ;; + --quick-terminal-position) _compreply compgen -W "top bottom left right center" -- "$cur"; _add_spaces ;; + --quick-terminal-size) return ;; + --gtk-quick-terminal-layer) _compreply compgen -W "overlay top bottom background" -- "$cur"; _add_spaces ;; + --gtk-quick-terminal-namespace) return ;; + --quick-terminal-screen) _compreply compgen -W "main mouse macos-menu-bar" -- "$cur"; _add_spaces ;; + --quick-terminal-animation-duration) return ;; + --quick-terminal-autohide) return ;; + --quick-terminal-space-behavior) _compreply compgen -W "remain move" -- "$cur"; _add_spaces ;; + --quick-terminal-keyboard-interactivity) _compreply compgen -W "none on-demand exclusive" -- "$cur"; _add_spaces ;; + --shell-integration) _compreply compgen -W "none detect bash elvish fish nushell zsh" -- "$cur"; _add_spaces ;; + --shell-integration-features) _compreply compgen -W "cursor no-cursor sudo no-sudo title no-title ssh-env no-ssh-env ssh-terminfo no-ssh-terminfo path no-path" -- "$cur"; _add_spaces ;; + --command-palette-entry) return ;; + --osc-color-report-format) _compreply compgen -W "none 8-bit 16-bit" -- "$cur"; _add_spaces ;; + --vt-kam-allowed) return ;; + --custom-shader) _files ;; + --custom-shader-animation) _compreply compgen -W "false true always" -- "$cur"; _add_spaces ;; + --bell-features) _compreply compgen -W "system no-system audio no-audio attention no-attention title no-title border no-border" -- "$cur"; _add_spaces ;; + --bell-audio-path) return ;; + --bell-audio-volume) return ;; + --app-notifications) _compreply compgen -W "clipboard-copy no-clipboard-copy config-reload no-config-reload" -- "$cur"; _add_spaces ;; + --macos-non-native-fullscreen) _compreply compgen -W "false true visible-menu padded-notch" -- "$cur"; _add_spaces ;; + --macos-window-buttons) _compreply compgen -W "visible hidden" -- "$cur"; _add_spaces ;; + --macos-titlebar-style) _compreply compgen -W "native transparent tabs hidden" -- "$cur"; _add_spaces ;; + --macos-titlebar-proxy-icon) _compreply compgen -W "visible hidden" -- "$cur"; _add_spaces ;; + --macos-dock-drop-behavior) _compreply compgen -W "new-tab new-window" -- "$cur"; _add_spaces ;; + --macos-option-as-alt) return ;; + --macos-window-shadow) return ;; + --macos-hidden) _compreply compgen -W "never always" -- "$cur"; _add_spaces ;; + --macos-auto-secure-input) return ;; + --macos-secure-input-indication) return ;; + --macos-applescript) return ;; + --macos-icon) _compreply compgen -W "official blueprint chalkboard microchip glass holographic paper retro xray custom custom-style" -- "$cur"; _add_spaces ;; + --macos-custom-icon) return ;; + --macos-icon-frame) _compreply compgen -W "aluminum beige plastic chrome" -- "$cur"; _add_spaces ;; + --macos-icon-ghost-color) return ;; + --macos-icon-screen-color) return ;; + --macos-shortcuts) _compreply compgen -W "allow deny ask" -- "$cur"; _add_spaces ;; + --linux-cgroup) _compreply compgen -W "never always single-instance" -- "$cur"; _add_spaces ;; + --linux-cgroup-memory-limit) return ;; + --linux-cgroup-processes-limit) return ;; + --linux-cgroup-hard-fail) return ;; + --gtk-opengl-debug) return ;; + --gtk-single-instance) _compreply compgen -W "false true detect" -- "$cur"; _add_spaces ;; + --gtk-titlebar) return ;; + --gtk-tabs-location) _compreply compgen -W "top bottom" -- "$cur"; _add_spaces ;; + --gtk-titlebar-hide-when-maximized) return ;; + --gtk-toolbar-style) _compreply compgen -W "flat raised raised-border" -- "$cur"; _add_spaces ;; + --gtk-titlebar-style) _compreply compgen -W "native tabs" -- "$cur"; _add_spaces ;; + --gtk-wide-tabs) return ;; + --gtk-custom-css) _files ;; + --desktop-notifications) return ;; + --progress-style) return ;; + --bold-color) return ;; + --faint-opacity) return ;; + --term) return ;; + --enquiry-response) return ;; + --async-backend) _compreply compgen -W "auto epoll io_uring" -- "$cur"; _add_spaces ;; + --auto-update) return ;; + --auto-update-channel) return ;; + *) _compreply compgen -W "$config" -- "$cur" ;; + esac + + return 0 + } + + _handle_actions() { + local help="'--help ' --help" + local list_fonts="--family= --style= '--bold ' '--italic ' --help" + local list_keybinds="'--default ' '--docs ' '--plain ' --help" + local list_themes="'--path ' '--plain ' --color= --help" + local list_colors="'--plain ' --help" + local list_actions="'--docs ' --help" + local ssh_cache="'--clear ' --add= --remove= --host= --expire-days= --help" + local show_config="'--default ' '--changes-only ' '--docs ' --help" + local validate_config="--config-file= --help" + local show_face="--cp= --string= --style= --presentation= --help" + local new_window="--class= --help" + + case "${COMP_WORDS[1]}" in + +help) + case $prev in + --help) return ;; + *) _compreply compgen -W "$help" -- "$cur" ;; + esac + ;; + +list-fonts) + case $prev in + --family) return;; + --style) return;; + --bold) return ;; + --italic) return ;; + *) _compreply compgen -W "$list_fonts" -- "$cur" ;; + esac + ;; + +list-keybinds) + case $prev in + --default) return ;; + --docs) return ;; + --plain) return ;; + *) _compreply compgen -W "$list_keybinds" -- "$cur" ;; + esac + ;; + +list-themes) + case $prev in + --path) return ;; + --plain) return ;; + --color) _compreply compgen -W "all dark light" -- "$cur"; _add_spaces ;; + *) _compreply compgen -W "$list_themes" -- "$cur" ;; + esac + ;; + +list-colors) + case $prev in + --plain) return ;; + *) _compreply compgen -W "$list_colors" -- "$cur" ;; + esac + ;; + +list-actions) + case $prev in + --docs) return ;; + *) _compreply compgen -W "$list_actions" -- "$cur" ;; + esac + ;; + +ssh-cache) + case $prev in + --clear) return ;; + --add) return;; + --remove) return;; + --host) return;; + --expire-days) return;; + *) _compreply compgen -W "$ssh_cache" -- "$cur" ;; + esac + ;; + +show-config) + case $prev in + --default) return ;; + --changes-only) return ;; + --docs) return ;; + *) _compreply compgen -W "$show_config" -- "$cur" ;; + esac + ;; + +validate-config) + case $prev in + --config-file) return ;; + *) _compreply compgen -W "$validate_config" -- "$cur" ;; + esac + ;; + +show-face) + case $prev in + --cp) return;; + --string) return;; + --style) _compreply compgen -W "regular bold italic bold_italic" -- "$cur"; _add_spaces ;; + --presentation) _compreply compgen -W "text emoji" -- "$cur"; _add_spaces ;; + *) _compreply compgen -W "$show_face" -- "$cur" ;; + esac + ;; + +new-window) + case $prev in + --class) return;; + *) _compreply compgen -W "$new_window" -- "$cur" ;; + esac + ;; + *) _compreply compgen -W "--help" -- "$cur" ;; + esac + + return 0 + } + + # begin main logic + local topLevel="-e" + topLevel+=" --help" + topLevel+=" --version" + topLevel+=" +version" + topLevel+=" +help" + topLevel+=" +list-fonts" + topLevel+=" +list-keybinds" + topLevel+=" +list-themes" + topLevel+=" +list-colors" + topLevel+=" +list-actions" + topLevel+=" +ssh-cache" + topLevel+=" +edit-config" + topLevel+=" +show-config" + topLevel+=" +validate-config" + topLevel+=" +show-face" + topLevel+=" +crash-report" + topLevel+=" +boo" + topLevel+=" +new-window" + + local cur=""; local prev=""; local prevWasEq=false; COMPREPLY=() + local ghostty="$1" + + # script assumes default COMP_WORDBREAKS of roughly $' \t\n"\'><=;|&(:' + # if = is missing this script will degrade to matching on keys only. + # eg: --key= + # this can be improved if needed see: https://github.com/ghostty-org/ghostty/discussions/2994 + + if [ "$2" = "=" ]; then cur="" + else cur="$2" + fi + + if [ "$3" = "=" ]; then prev="${COMP_WORDS[COMP_CWORD-2]}"; prevWasEq=true; + else prev="${COMP_WORDS[COMP_CWORD-1]}" + fi + + # current completion is double quoted add a space so the cursor progresses + if [[ "$2" == \"*\" ]]; then + COMPREPLY=( "$cur " ); + return; + fi + + case "$COMP_CWORD" in + 1) + case "${COMP_WORDS[1]}" in + -e | --help | --version) return 0 ;; + --*) _handle_config ;; + *) _compreply compgen -W "${topLevel}" -- "$cur"; _add_spaces ;; + esac + ;; + *) + case "$prev" in + -e | --help | --version) return 0 ;; + *) + if [[ "=" != "${COMP_WORDS[COMP_CWORD]}" && $prevWasEq != true ]]; then + # must be completing with a space after the key eg: '-- ' + # clear out prev so we don't run any of the key specific completions + prev="" + fi + + case "${COMP_WORDS[1]}" in + --*) _handle_config ;; + +*) _handle_actions ;; + esac + ;; + esac + ;; + esac + + return 0 +} + +complete -o nospace -o bashdefault -F _ghostty ghostty diff --git a/ghostty-template/Ghostty.app/Contents/Resources/bat/syntaxes/ghostty.sublime-syntax b/ghostty-template/Ghostty.app/Contents/Resources/bat/syntaxes/ghostty.sublime-syntax new file mode 100644 index 0000000..08a0e2b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/bat/syntaxes/ghostty.sublime-syntax @@ -0,0 +1,17 @@ +%YAML 1.2 +--- +# See http://www.sublimetext.com/docs/syntax.html +name: Ghostty Config +file_extensions: + - ghostty +scope: source.ghostty + +contexts: + main: + # Comments + - match: '^\s*#.*$' + scope: comment.line.number-sign.ghostty + + # Keywords + - match: '\b(language|font-family|font-family-bold|font-family-italic|font-family-bold-italic|font-style|font-style-bold|font-style-italic|font-style-bold-italic|font-synthetic-style|font-feature|font-size|font-variation|font-variation-bold|font-variation-italic|font-variation-bold-italic|font-codepoint-map|clipboard-codepoint-map|font-thicken|font-thicken-strength|font-shaping-break|alpha-blending|adjust-cell-width|adjust-cell-height|adjust-font-baseline|adjust-underline-position|adjust-underline-thickness|adjust-strikethrough-position|adjust-strikethrough-thickness|adjust-overline-position|adjust-overline-thickness|adjust-cursor-thickness|adjust-cursor-height|adjust-box-thickness|adjust-icon-height|grapheme-width-method|freetype-load-flags|theme|background|foreground|background-image|background-image-opacity|background-image-position|background-image-fit|background-image-repeat|selection-foreground|selection-background|selection-clear-on-typing|selection-clear-on-copy|selection-word-chars|minimum-contrast|palette|palette-generate|palette-harmonious|cursor-color|cursor-opacity|cursor-style|cursor-style-blink|cursor-text|cursor-click-to-move|mouse-hide-while-typing|scroll-to-bottom|mouse-shift-capture|mouse-reporting|mouse-scroll-multiplier|background-opacity|background-opacity-cells|background-blur|unfocused-split-opacity|unfocused-split-fill|split-divider-color|split-preserve-zoom|search-foreground|search-background|search-selected-foreground|search-selected-background|command|initial-command|notify-on-command-finish|notify-on-command-finish-action|notify-on-command-finish-after|env|input|wait-after-command|abnormal-command-exit-runtime|scrollback-limit|scrollbar|link|link-url|link-previews|maximize|fullscreen|title|class|x11-instance-name|working-directory|keybind|key-remap|window-padding-x|window-padding-y|window-padding-balance|window-padding-color|window-vsync|window-inherit-working-directory|tab-inherit-working-directory|split-inherit-working-directory|window-inherit-font-size|window-decoration|window-title-font-family|window-subtitle|window-theme|window-colorspace|window-height|window-width|window-position-x|window-position-y|window-save-state|window-step-resize|window-new-tab-position|window-show-tab-bar|window-titlebar-background|window-titlebar-foreground|resize-overlay|resize-overlay-position|resize-overlay-duration|focus-follows-mouse|clipboard-read|clipboard-write|clipboard-trim-trailing-spaces|clipboard-paste-protection|clipboard-paste-bracketed-safe|title-report|image-storage-limit|copy-on-select|right-click-action|click-repeat-interval|config-file|config-default-files|confirm-close-surface|quit-after-last-window-closed|quit-after-last-window-closed-delay|initial-window|undo-timeout|quick-terminal-position|quick-terminal-size|gtk-quick-terminal-layer|gtk-quick-terminal-namespace|quick-terminal-screen|quick-terminal-animation-duration|quick-terminal-autohide|quick-terminal-space-behavior|quick-terminal-keyboard-interactivity|shell-integration|shell-integration-features|command-palette-entry|osc-color-report-format|vt-kam-allowed|custom-shader|custom-shader-animation|bell-features|bell-audio-path|bell-audio-volume|app-notifications|macos-non-native-fullscreen|macos-window-buttons|macos-titlebar-style|macos-titlebar-proxy-icon|macos-dock-drop-behavior|macos-option-as-alt|macos-window-shadow|macos-hidden|macos-auto-secure-input|macos-secure-input-indication|macos-applescript|macos-icon|macos-custom-icon|macos-icon-frame|macos-icon-ghost-color|macos-icon-screen-color|macos-shortcuts|linux-cgroup|linux-cgroup-memory-limit|linux-cgroup-processes-limit|linux-cgroup-hard-fail|gtk-opengl-debug|gtk-single-instance|gtk-titlebar|gtk-tabs-location|gtk-titlebar-hide-when-maximized|gtk-toolbar-style|gtk-titlebar-style|gtk-wide-tabs|gtk-custom-css|desktop-notifications|progress-style|bold-color|faint-opacity|term|enquiry-response|async-backend|auto-update|auto-update-channel)\b' + scope: keyword.other.ghostty diff --git a/ghostty-template/Ghostty.app/Contents/Resources/fish/vendor_completions.d/ghostty.fish b/ghostty-template/Ghostty.app/Contents/Resources/fish/vendor_completions.d/ghostty.fish new file mode 100644 index 0000000..f5b3390 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/fish/vendor_completions.d/ghostty.fish @@ -0,0 +1,233 @@ +set -l commands "+version +help +list-fonts +list-keybinds +list-themes +list-colors +list-actions +ssh-cache +edit-config +show-config +validate-config +show-face +crash-report +boo +new-window" +complete -c ghostty -f +complete -c ghostty -s e -l help -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l version -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l language -r -f -d "Set Ghostty's graphical user interface language to a language other than the system default language." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-family -r -f -a "(ghostty +list-fonts | grep '^[A-Z]')" -d "The font families to use." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-family-bold -r -f -a "(ghostty +list-fonts | grep '^[A-Z]')" +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-family-italic -r -f -a "(ghostty +list-fonts | grep '^[A-Z]')" +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-family-bold-italic -r -f -a "(ghostty +list-fonts | grep '^[A-Z]')" +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-style -r -f -d "The named font style to use for each of the requested terminal font styles." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-style-bold -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-style-italic -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-style-bold-italic -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-synthetic-style -r -f -a "bold no-bold italic no-italic bold-italic no-bold-italic" -d "Control whether Ghostty should synthesize a style if the requested style is not available in the specified font-family." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-feature -r -f -d "Apply a font feature." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-size -r -f -d "Font size in points." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-variation -r -f -d "A repeatable configuration to set one or more font variations values for a variable font." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-variation-bold -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-variation-italic -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-variation-bold-italic -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-codepoint-map -r -f -d "Force one or a range of Unicode codepoints to map to a specific named font." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-codepoint-map -r -f -d "Map specific Unicode codepoints to replacement values when copying text to clipboard." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-thicken -f -d "Draw fonts with a thicker stroke, if supported." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-thicken-strength -r -f -d "Strength of thickening when `font-thicken` is enabled." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l font-shaping-break -r -f -a "cursor no-cursor" -d "Locations to break font shaping into multiple runs." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l alpha-blending -r -f -a "native linear linear-corrected" -d "What color space to use when performing alpha blending." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-cell-width -r -f -d "All of the configurations behavior adjust various metrics determined by the font." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-cell-height -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-font-baseline -r -f -d "Distance in pixels or percentage adjustment from the bottom of the cell to the text baseline." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-underline-position -r -f -d "Distance in pixels or percentage adjustment from the top of the cell to the top of the underline." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-underline-thickness -r -f -d "Thickness in pixels of the underline." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-strikethrough-position -r -f -d "Distance in pixels or percentage adjustment from the top of the cell to the top of the strikethrough." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-strikethrough-thickness -r -f -d "Thickness in pixels or percentage adjustment of the strikethrough." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-overline-position -r -f -d "Distance in pixels or percentage adjustment from the top of the cell to the top of the overline." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-overline-thickness -r -f -d "Thickness in pixels or percentage adjustment of the overline." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-cursor-thickness -r -f -d "Thickness in pixels or percentage adjustment of the bar cursor and outlined rect cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-cursor-height -r -f -d "Height in pixels or percentage adjustment of the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-box-thickness -r -f -d "Thickness in pixels or percentage adjustment of box drawing characters." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l adjust-icon-height -r -f -d "Height in pixels or percentage adjustment of maximum height for nerd font icons." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l grapheme-width-method -r -f -a "legacy unicode" -d "The method to use for calculating the cell width of a grapheme cluster." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l freetype-load-flags -r -f -a "hinting no-hinting force-autohint no-force-autohint monochrome no-monochrome autohint no-autohint light no-light" -d "FreeType load flags to enable." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l theme -r -f -a "(ghostty +list-themes | sed -E 's/^(.*) \(.*\$/\1/')" -d "A theme to use." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background -r -f -d "Background color for the window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l foreground -r -f -d "Foreground color for the window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-image -r -f -d "Background image for the terminal." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-image-opacity -r -f -d "Background image opacity." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-image-position -r -f -a "top-left top-center top-right center-left center-center center-right bottom-left bottom-center bottom-right center" -d "Background image position." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-image-fit -r -f -a "contain cover stretch none" -d "Background image fit." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-image-repeat -f -d "Whether to repeat the background image or not." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l selection-foreground -r -f -d "The foreground and background color for selection." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l selection-background -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l selection-clear-on-typing -f -d "Whether to clear selected text when typing." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l selection-clear-on-copy -f -d "Whether to clear selected text after copying." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l selection-word-chars -r -f -d "Characters that mark word boundaries during text selection operations such as double-clicking." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l minimum-contrast -r -f -d "The minimum contrast ratio between the foreground and background colors." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l palette -r -f -d "Color palette for the 256 color form that many terminal applications use." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l palette-generate -f -d "Whether to automatically generate the extended 256 color palette (indices 16–255) from the base 16 ANSI colors." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l palette-harmonious -f -d "Invert the palette colors generated when `palette-generate` is enabled, so that the colors go in reverse order." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-color -r -f -d "The color of the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-opacity -r -f -d "The opacity level (opposite of transparency) of the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-style -r -f -a "bar block underline block_hollow" -d "The style of the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-style-blink -r -f -d "Sets the default blinking state of the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-text -r -f -d "The color of the text under the cursor." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l cursor-click-to-move -f -d "Enables the ability to move the cursor at prompts by clicking on a location in the prompt text." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l mouse-hide-while-typing -f -d "Hide the mouse immediately when typing." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l scroll-to-bottom -r -f -a "keystroke no-keystroke output no-output" -d "When to scroll the surface to the bottom." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l mouse-shift-capture -r -f -a "false true always never" -d "Determines whether running programs can detect the shift key pressed with a mouse click." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l mouse-reporting -f -d "Enable or disable mouse reporting." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l mouse-scroll-multiplier -r -f -d "Multiplier for scrolling distance with the mouse wheel." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-opacity -r -f -d "The opacity level (opposite of transparency) of the background." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-opacity-cells -f -d "Applies background opacity to cells with an explicit background color set." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l background-blur -r -f -d "Whether to blur the background when `background-opacity` is less than 1." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l unfocused-split-opacity -r -f -d "The opacity level (opposite of transparency) of an unfocused split." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l unfocused-split-fill -r -f -d "The color to dim the unfocused split." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l split-divider-color -r -f -d "The color of the split divider." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l split-preserve-zoom -r -f -a "navigation no-navigation" -d "Control when Ghostty preserves a zoomed split." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l search-foreground -r -f -d "The foreground and background color for search matches." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l search-background -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l search-selected-foreground -r -f -d "The foreground and background color for the currently selected search match." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l search-selected-background -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l command -r -f -d "The command to run, usually a shell." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l initial-command -r -f -d "This is the same as \"command\", but only applies to the first terminal surface created when Ghostty starts." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l notify-on-command-finish -r -f -a "never unfocused always" -d "Controls when command finished notifications are sent." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l notify-on-command-finish-action -r -f -a "bell no-bell notify no-notify" -d "If command finished notifications are enabled, this controls how the user is notified." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l notify-on-command-finish-after -r -f -d "If command finished notifications are enabled, this controls how long a command must have been running before a notification will be sent." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l env -r -f -d "Extra environment variables to pass to commands launched in a terminal surface." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l input -r -f -d "Data to send as input to the command on startup." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l wait-after-command -f -d "If true, keep the terminal open after the command exits." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l abnormal-command-exit-runtime -r -f -d "The number of milliseconds of runtime below which we consider a process exit to be abnormal." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l scrollback-limit -r -f -d "The size of the scrollback buffer in bytes." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l scrollbar -r -f -a "system never" -d "Control when the scrollbar is shown to scroll the scrollback buffer." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l link -r -f -d "Match a regular expression against the terminal text and associate clicking it with an action." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l link-url -f -d "Enable URL matching." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l link-previews -r -f -a "false true osc8" -d "Show link previews for a matched URL." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l maximize -f -d "Whether to start the window in a maximized state." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l fullscreen -r -f -a "false true non-native non-native-visible-menu non-native-padded-notch" -d "Start new windows in fullscreen." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l title -r -f -d "The title Ghostty will use for the window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l class -r -f -d "The setting that will change the application class value." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l x11-instance-name -r -f -d "This controls the instance name field of the `WM_CLASS` X11 property when running under X11." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l working-directory -r -f -k -a "(__fish_complete_directories)" -d "The directory to change to after starting the command." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l keybind -r -f -d "Key bindings." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l key-remap -r -f -d "Remap modifier keys within Ghostty." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-padding-x -r -f -d "Horizontal window padding." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-padding-y -r -f -d "Vertical window padding." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-padding-balance -f -d "The viewport dimensions are usually not perfectly divisible by the cell size." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-padding-color -r -f -a "background extend extend-always" -d "The color of the padding area of the window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-vsync -f -d "Synchronize rendering with the screen refresh rate." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-inherit-working-directory -f -d "If true, new windows will inherit the working directory of the previously focused window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l tab-inherit-working-directory -f -d "If true, new tabs will inherit the working directory of the previously focused tab." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l split-inherit-working-directory -f -d "If true, new split panes will inherit the working directory of the previously focused split." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-inherit-font-size -f -d "If true, new windows and tabs will inherit the font size of the previously focused window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-decoration -r -f -a "auto client server none" -d "Configure a preference for window decorations." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-title-font-family -r -f -d "The font that will be used for the application's window and tab titles." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-subtitle -r -f -a "false working-directory" -d "The text that will be displayed in the subtitle of the window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-theme -r -f -a "auto system light dark ghostty" -d "The theme to use for the windows." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-colorspace -r -f -a "srgb display-p3" -d "The color space to use when interpreting terminal colors." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-height -r -f -d "The initial window size." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-width -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-position-x -r -f -d "The starting window position." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-position-y -r -f +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-save-state -r -f -a "default never always" -d "Whether to enable saving and restoring window state." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-step-resize -f -d "Resize the window in discrete increments of the focused surface's cell size." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-new-tab-position -r -f -a "current end" -d "The position where new tabs are created." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-show-tab-bar -r -f -a "always auto never" -d "Whether to show the tab bar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-titlebar-background -r -f -d "Background color for the window titlebar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l window-titlebar-foreground -r -f -d "Foreground color for the window titlebar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l resize-overlay -r -f -a "always never after-first" -d "This controls when resize overlays are shown." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l resize-overlay-position -r -f -a "center top-left top-center top-right bottom-left bottom-center bottom-right" -d "If resize overlays are enabled, this controls the position of the overlay." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l resize-overlay-duration -r -f -d "If resize overlays are enabled, this controls how long the overlay is visible on the screen before it is hidden." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l focus-follows-mouse -f -d "If true, when there are multiple split panes, the mouse selects the pane that is focused." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-read -r -f -a "allow deny ask" -d "Whether to allow programs running in the terminal to read/write to the system clipboard (OSC 52, for googling)." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-write -r -f -a "allow deny ask" +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-trim-trailing-spaces -f -d "Trims trailing whitespace on data that is copied to the clipboard." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-paste-protection -f -d "Require confirmation before pasting text that appears unsafe." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l clipboard-paste-bracketed-safe -f -d "If true, bracketed pastes will be considered safe." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l title-report -f -d "Enables or disabled title reporting (CSI 21 t)." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l image-storage-limit -r -f -d "The total amount of bytes that can be used for image data (e.g." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l copy-on-select -r -f -a "false true clipboard" -d "Whether to automatically copy selected text to the clipboard." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l right-click-action -r -f -a "ignore paste copy copy-or-paste context-menu" -d "The action to take when the user right-clicks on the terminal surface." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l click-repeat-interval -r -f -d "The time in milliseconds between clicks to consider a click a repeat (double, triple, etc.) or an entirely new single click." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l config-file -r -F -d "Additional configuration files to read." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l config-default-files -f -d "When this is true, the default configuration file paths will be loaded." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l confirm-close-surface -r -f -a "false true always" -d "Confirms that a surface should be closed before closing it." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quit-after-last-window-closed -f -d "Whether or not to quit after the last surface is closed." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quit-after-last-window-closed-delay -r -f -d "Controls how long Ghostty will stay running after the last open surface has been closed." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l initial-window -f -d "This controls whether an initial window is created when Ghostty is run." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l undo-timeout -r -f -d "The duration that undo operations remain available." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-position -r -f -a "top bottom left right center" -d "The position of the \"quick\" terminal window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-size -r -f -d "The size of the quick terminal." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-quick-terminal-layer -r -f -a "overlay top bottom background" -d "The layer of the quick terminal window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-quick-terminal-namespace -r -f -d "The namespace for the quick terminal window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-screen -r -f -a "main mouse macos-menu-bar" -d "The screen where the quick terminal should show up." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-animation-duration -r -f -d "Duration (in seconds) of the quick terminal enter and exit animation." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-autohide -f -d "Automatically hide the quick terminal when focus shifts to another window." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-space-behavior -r -f -a "remain move" -d "This configuration option determines the behavior of the quick terminal when switching between macOS spaces." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l quick-terminal-keyboard-interactivity -r -f -a "none on-demand exclusive" -d "Determines under which circumstances that the quick terminal should receive keyboard input." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l shell-integration -r -f -a "none detect bash elvish fish nushell zsh" -d "Whether to enable shell integration auto-injection or not." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l shell-integration-features -r -f -a "cursor no-cursor sudo no-sudo title no-title ssh-env no-ssh-env ssh-terminfo no-ssh-terminfo path no-path" -d "Shell integration features to enable." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l command-palette-entry -r -f -d "Custom entries into the command palette." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l osc-color-report-format -r -f -a "none 8-bit 16-bit" -d "Sets the reporting format for OSC sequences that request color information." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l vt-kam-allowed -f -d "If true, allows the \"KAM\" mode (ANSI mode 2) to be used within the terminal." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l custom-shader -r -F -d "Custom shaders to run after the default shaders." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l custom-shader-animation -r -f -a "false true always" -d "If `true` (default), the focused terminal surface will run an animation loop when custom shaders are used." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l bell-features -r -f -a "system no-system audio no-audio attention no-attention title no-title border no-border" -d "Bell features to enable if bell support is available in your runtime." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l bell-audio-path -r -f -d "If `audio` is an enabled bell feature, this is a path to an audio file." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l bell-audio-volume -r -f -d "If `audio` is an enabled bell feature, this is the volume to play the audio file at (relative to the system volume)." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l app-notifications -r -f -a "clipboard-copy no-clipboard-copy config-reload no-config-reload" -d "Control the in-app notifications that Ghostty shows." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-non-native-fullscreen -r -f -a "false true visible-menu padded-notch" -d "If anything other than false, fullscreen mode on macOS will not use the native fullscreen, but make the window fullscreen without animations and using a new space." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-window-buttons -r -f -a "visible hidden" -d "Whether the window buttons in the macOS titlebar are visible." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-titlebar-style -r -f -a "native transparent tabs hidden" -d "The style of the macOS titlebar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-titlebar-proxy-icon -r -f -a "visible hidden" -d "Whether the proxy icon in the macOS titlebar is visible." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-dock-drop-behavior -r -f -a "new-tab new-window" -d "Controls the windowing behavior when dropping a file or folder onto the Ghostty icon in the macOS dock." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-option-as-alt -r -f -d "macOS doesn't have a distinct \"alt\" key and instead has the \"option\" key which behaves slightly differently." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-window-shadow -f -d "Whether to enable the macOS window shadow." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-hidden -r -f -a "never always" -d "If true, the macOS icon in the dock and app switcher will be hidden." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-auto-secure-input -f -d "If true, Ghostty on macOS will automatically enable the \"Secure Input\" feature when it detects that a password prompt is being displayed." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-secure-input-indication -f -d "If true, Ghostty will show a graphical indication when secure input is enabled." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-applescript -f -d "If true, Ghostty exposes and handles the built-in AppleScript dictionary on macOS." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-icon -r -f -a "official blueprint chalkboard microchip glass holographic paper retro xray custom custom-style" -d "Customize the macOS app icon." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-custom-icon -r -f -d "The absolute path to the custom icon file." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-icon-frame -r -f -a "aluminum beige plastic chrome" -d "The material to use for the frame of the macOS app icon." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-icon-ghost-color -r -f -d "The color of the ghost in the macOS app icon." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-icon-screen-color -r -f -d "The color of the screen in the macOS app icon." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l macos-shortcuts -r -f -a "allow deny ask" -d "Whether macOS Shortcuts are allowed to control Ghostty." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l linux-cgroup -r -f -a "never always single-instance" -d "Put every surface (tab, split, window) into a transient `systemd` scope." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l linux-cgroup-memory-limit -r -f -d "Memory limit for any individual terminal process (tab, split, window, etc.) in bytes." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l linux-cgroup-processes-limit -r -f -d "Number of processes limit for any individual terminal process (tab, split, window, etc.)." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l linux-cgroup-hard-fail -f -d "If this is false, then creating a transient `systemd` scope (for `linux-cgroup`) will be allowed to fail and the failure is ignored." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-opengl-debug -f -d "Enable or disable GTK's OpenGL debugging logs." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-single-instance -r -f -a "false true detect" -d "If `true`, the Ghostty GTK application will run in single-instance mode: each new `ghostty` process launched will result in a new window if there is already a running process." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-titlebar -f -d "When enabled, the full GTK titlebar is displayed instead of your window manager's simple titlebar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-tabs-location -r -f -a "top bottom" -d "Determines the side of the screen that the GTK tab bar will stick to." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-titlebar-hide-when-maximized -f -d "If this is `true`, the titlebar will be hidden when the window is maximized, and shown when the titlebar is unmaximized." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-toolbar-style -r -f -a "flat raised raised-border" -d "Determines the appearance of the top and bottom bars tab bar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-titlebar-style -r -f -a "native tabs" -d "The style of the GTK titlebar." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-wide-tabs -f -d "If `true` (default), then the Ghostty GTK tabs will be \"wide.\" Wide tabs are the new typical Gnome style where tabs fill their available space." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l gtk-custom-css -r -F -d "Custom CSS files to be loaded." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l desktop-notifications -f -d "If `true` (default), applications running in the terminal can show desktop notifications using certain escape sequences such as OSC 9 or OSC 777." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l progress-style -f -d "If `true` (default), applications running in the terminal can show graphical progress bars using the ConEmu OSC 9;4 escape sequence." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l bold-color -r -f -d "Modifies the color used for bold text in the terminal." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l faint-opacity -r -f -d "The opacity level (opposite of transparency) of the faint text." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l term -r -f -d "This will be used to set the `TERM` environment variable." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l enquiry-response -r -f -d "String to send when we receive `ENQ` (`0x05`) from the command that we are running." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l async-backend -r -f -a "auto epoll io_uring" -d "Configures the low-level API to use for async IO, eventing, etc." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l auto-update -r -f -d "Control the auto-update functionality of Ghostty." +complete -c ghostty -n "not __fish_seen_subcommand_from $commands" -l auto-update-channel -r -f -d "The release channel to use for auto-updates." +complete -c ghostty -n "string match -q -- '+*' (commandline -pt)" -f -a "+version +help +list-fonts +list-keybinds +list-themes +list-colors +list-actions +ssh-cache +edit-config +show-config +validate-config +show-face +crash-report +boo +new-window" +complete -c ghostty -n "__fish_seen_subcommand_from +list-fonts" -l family -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-fonts" -l style -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-fonts" -l bold -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-fonts" -l italic -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-keybinds" -l default -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-keybinds" -l docs -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-keybinds" -l plain -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-themes" -l path -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-themes" -l plain -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-themes" -l color -r -f -a "all dark light" +complete -c ghostty -n "__fish_seen_subcommand_from +list-colors" -l plain -f +complete -c ghostty -n "__fish_seen_subcommand_from +list-actions" -l docs -f +complete -c ghostty -n "__fish_seen_subcommand_from +ssh-cache" -l clear -f +complete -c ghostty -n "__fish_seen_subcommand_from +ssh-cache" -l add -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +ssh-cache" -l remove -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +ssh-cache" -l host -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +ssh-cache" -l expire-days -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +show-config" -l default -f +complete -c ghostty -n "__fish_seen_subcommand_from +show-config" -l changes-only -f +complete -c ghostty -n "__fish_seen_subcommand_from +show-config" -l docs -f +complete -c ghostty -n "__fish_seen_subcommand_from +validate-config" -l config-file -r -F +complete -c ghostty -n "__fish_seen_subcommand_from +show-face" -l cp -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +show-face" -l string -r -f +complete -c ghostty -n "__fish_seen_subcommand_from +show-face" -l style -r -f -a "regular bold italic bold_italic" +complete -c ghostty -n "__fish_seen_subcommand_from +show-face" -l presentation -r -f -a "text emoji" +complete -c ghostty -n "__fish_seen_subcommand_from +new-window" -l class -r -f diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.html b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.html new file mode 100644 index 0000000..b7cdd44 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.html @@ -0,0 +1,4226 @@ + + + + + + + GHOSTTY(1) Version 1.3.1 | Ghostty terminal emulator + + + +
+

GHOSTTY(1) Version 1.3.1 | Ghostty terminal +emulator

+
+

NAME

+

ghostty - Ghostty terminal emulator

+

DESCRIPTION

+

Ghostty is a cross-platform, GPU-accelerated terminal emulator that +aims to push the boundaries of what is possible with a terminal emulator +by exposing modern, opt-in features that enable CLI tool developers to +build more feature rich, interactive applications.

+

There are a number of excellent terminal emulator options that exist +today. The unique goal of Ghostty is to have a platform for +experimenting with modern, optional, non-standards-compliant features to +enhance the capabilities of CLI applications. We aim to be the best in +this category, and competitive in the rest.

+

While aiming for this ambitious goal, Ghostty is a fully standards +compliant terminal emulator that aims to remain compatible with all +existing shells and software. You can use this as a drop-in replacement +for your existing terminal emulator.

+

COMMAND LINE ACTIONS

+
+
--version
+
+

The version command is used to display information about +Ghostty. Recognized as either +version or +--version.

+
+
--help
+
+

The help command shows general help about Ghostty. +Recognized as either +-h,–help, or like other actions+help`.

+

You can also specify --help or -h along +with any action such as +list-themes to see help for a +specific action.

+
+
+list-fonts
+
+

The list-fonts command is used to list all the available +fonts for Ghostty. This uses the exact same font discovery mechanism +Ghostty uses to find fonts to use.

+

When executed with no arguments, this will list all available fonts, +sorted by family name, then font name. If a family name is given with +--family, the sorting will be disabled and the results +instead will be shown in the same priority order Ghostty would use to +pick a font.

+

Flags:

+
    +
  • --bold: Filter results to specific bold styles. It +is not guaranteed that only those styles are returned. They are only +prioritized.

  • +
  • --italic: Filter results to specific italic styles. +It is not guaranteed that only those styles are returned. They are only +prioritized.

  • +
  • --style: Filter results based on the style string +advertised by a font. It is not guaranteed that only those styles are +returned. They are only prioritized.

  • +
  • --family: Filter results to a specific font family. +The family handling is identical to the font-family set of +Ghostty configuration values, so this can be used to debug why your +desired font may not be loading.

  • +
+
+
+list-keybinds
+
+

The list-keybinds command is used to list all the +available keybinds for Ghostty.

+

When executed without any arguments this will list the current +keybinds loaded by the config file. If no config file is found or there +aren’t any changes to the keybinds it will print out the default ones +configured for Ghostty

+

Flags:

+
    +
  • --default: will print out all the default +keybinds

  • +
  • --docs: currently does nothing, intended to print +out documentation about the action associated with the keybinds

  • +
  • --plain: will disable formatting and make the output +more friendly for Unix tooling. This is default when not printing to a +tty.

  • +
+
+
+list-themes
+
+

The list-themes command is used to preview or list all +the available themes for Ghostty.

+

If this command is run from a TTY, a TUI preview of the themes will +be shown. While in the preview, F1 will bring up a help +screen and ESC will exit the preview. Other keys that can +be used to navigate the preview are listed in the help screen.

+

If this command is not run from a TTY, or the output is piped to +another command, a plain list of theme names will be printed to the +screen. A plain list can be forced using the --plain CLI +flag.

+

Two different directories will be searched for themes.

+

The first directory is the themes subdirectory of your +Ghostty configuration directory. This is +$XDG_CONFIG_HOME/ghostty/themes or +~/.config/ghostty/themes.

+

The second directory is the themes subdirectory of the +Ghostty resources directory. Ghostty ships with a multitude of themes +that will be installed into this directory. On macOS, this directory is +the Ghostty.app/Contents/Resources/ghostty/themes. On +Linux, this directory is the share/ghostty/themes (wherever +you installed the Ghostty “share” directory). If you’re running Ghostty +from the source, this is the zig-out/share/ghostty/themes +directory.

+

You can also set the GHOSTTY_RESOURCES_DIR environment +variable to point to the resources directory.

+

Flags:

+
    +
  • --path: Show the full path to the theme.

  • +
  • --plain: Force a plain listing of themes.

  • +
  • --color: Specify the color scheme of the themes +included in the list. This can be dark, light, +or all. The default is all.

  • +
+
+
+list-colors
+
+

The list-colors command is used to list all the named +RGB colors in Ghostty.

+

Flags:

+
    +
  • --plain: will disable formatting and make the output +more friendly for Unix tooling. This is default when not printing to a +tty.
  • +
+
+
+list-actions
+
+

The list-actions command is used to list all the +available keybind actions for Ghostty. These are distinct from the CLI +Actions which can be listed via +help

+

Flags:

+
    +
  • --docs: will print out the documentation for each +action.
  • +
+
+
+ssh-cache
+
+

Manage the SSH terminfo cache for automatic remote host setup.

+

When SSH integration is enabled with +shell-integration-features = ssh-terminfo, Ghostty +automatically installs its terminfo on remote hosts. This command +manages the cache of successful installations to avoid redundant +uploads.

+

The cache stores hostnames (or user@hostname combinations) along with +timestamps. Entries older than the expiration period are automatically +removed during cache operations. By default, entries never expire.

+

Only one of --clear, --add, +--remove, or --host can be specified. If +multiple are specified, one of the actions will be executed but it isn’t +guaranteed which one. This is entirely unsafe so you should split +multiple actions into separate commands.

+

Examples: ghostty +ssh-cache # List all cached hosts ghostty ++ssh-cache –host=example.com # Check if host is cached ghostty ++ssh-cache –add=example.com # Manually add host to cache ghostty ++ssh-cache –add=user@example.com # Add user@host combination ghostty ++ssh-cache –remove=example.com # Remove host from cache ghostty ++ssh-cache –clear # Clear entire cache ghostty +ssh-cache +–expire-days=30 # Set custom expiration period

+
+
+edit-config
+
+

The edit-config command opens the Ghostty configuration +file in the editor specified by the $VISUAL or +$EDITOR environment variables.

+

IMPORTANT: This command will not reload the configuration after +editing. You will need to manually reload the configuration using the +application menu, configured keybind, or by restarting Ghostty. We plan +to auto-reload in the future, but Ghostty isn’t capable of this yet.

+

The filepath opened is the default user-specific configuration file, +which is typically located at +$XDG_CONFIG_HOME/ghostty/config.ghostty. On macOS, this may +also be located at +~/Library/Application Support/com.mitchellh.ghostty/config.ghostty. +On macOS, whichever path exists and is non-empty will be prioritized, +prioritizing the Application Support directory if neither are +non-empty.

+

This command prefers the $VISUAL environment variable +over $EDITOR, if both are set. If neither are set, it will +print an error and exit.

+
+
+show-config
+
+

The show-config command shows the current configuration +in a valid Ghostty configuration file format.

+

When executed without any arguments this will output the current +configuration that is different from the default configuration. If +you’re using the default configuration this will output nothing.

+

If you are a new user and want to see all available options with +documentation, run +ghostty +show-config --default --docs.

+

The output is not in any specific order, but the order should be +consistent between runs. The output is not guaranteed to be exactly +match the input configuration files, but it will result in the same +behavior. Comments, whitespace, and other formatting is not preserved +from user configuration files.

+

Flags:

+
    +
  • --default: Show the default configuration instead of +loading the user configuration.

  • +
  • --changes-only: Only show the options that have been +changed from the default. This has no effect if --default +is specified.

  • +
  • --docs: Print the documentation above each option as +a comment, This is very noisy but is very useful to learn about +available options, especially paired with +--default.

  • +
+
+
+validate-config
+
+

The validate-config command is used to validate a +Ghostty config file.

+

When executed without any arguments, this will load the config from +the default location.

+

Flags:

+
    +
  • --config-file: can be passed to validate a specific +target config file in a non-default location
  • +
+
+
+show-face
+
+

The show-face command shows what font face Ghostty will +use to render a specific codepoint. Note that this command does not take +into consideration grapheme clustering or any other Unicode features +that might modify the presentation of a codepoint, so this may show a +different font face than Ghostty uses to render a codepoint in a +terminal session.

+

Flags:

+
    +
  • --cp: Find the face for a single codepoint. The +codepoint may be specified in decimal (--cp=65), +hexadecimal (--cp=0x41), octal (--cp=0o101), +or binary (--cp=0b1000001).

  • +
  • --string: Find the face for all of the codepoints in +a string. The string must be a valid UTF-8 sequence.

  • +
  • --style: Search for a specific style. Valid options +are regular, bold, italic, and +bold_italic.

  • +
  • --presentation: If set, force searching for a +specific presentation style. Valid options are text and +emoji. If unset, the presentation style of a codepoint will +be inferred from the Unicode standard.

  • +
+
+
+crash-report
+
+

The crash-report command is used to inspect and send +crash reports.

+

When executed without any arguments, this will list existing crash +reports.

+

This command currently only supports listing crash reports. Viewing +and sending crash reports is unimplemented and will be added in the +future.

+
+
+boo
+
+

The boo command is used to display the animation from +the Ghostty website in the terminal

+
+
+new-window
+
+

The new-window will use native platform IPC to open up a +new window in a running instance of Ghostty.

+

If the --class flag is not set, the +new-window command will try and connect to a running +instance of Ghostty based on what optimizations the Ghostty CLI was +compiled with. Otherwise the new-window command will try +and contact a running Ghostty instance that was configured with the same +class as was given on the command line.

+

All of the arguments after the +new-window argument +(except for the --class flag) will be sent to the remote +Ghostty instance and will be parsed as command line flags. These flags +will override certain settings when creating the first surface in the +new window. Currently, only --working-directory, +--command, and --title are supported. +-e will also work as an alias for --command, +except that if -e is found on the command line all +following arguments will become part of the command and no more +arguments will be parsed for configuration settings.

+

If --working-directory is found on the command line and +is a relative path (i.e. doesn’t start with /) it will be +resolved to an absolute path relative to the current working directory +that the ghostty +new-window command is run from. +~/ prefixes will also be expanded to the user’s home +directory.

+

If --working-directory is not found on the +command line, the working directory that +ghostty +new-window is run from will be passed to +Ghostty.

+

GTK uses an application ID to identify instances of applications. If +Ghostty is compiled with release optimizations, the default application +ID will be com.mitchellh.ghostty. If Ghostty is compiled +with debug optimizations, the default application ID will be +com.mitchellh.ghostty-debug. The class +configuration entry can be used to set up a custom application ID. The +class name must follow the requirements defined in +the GTK documentation or it will be ignored and Ghostty will use the +default as defined above.

+

On GTK, D-Bus activation must be properly configured. Ghostty does +not need to be running for this to open a new window, making it suitable +for binding to keys in your window manager (if other methods for +configuring global shortcuts are unavailable). D-Bus will handle +launching a new instance of Ghostty if it is not already running. See +the Ghostty website for information on properly configuring D-Bus +activation.

+

Only supported on GTK.

+

Flags:

+
    +
  • --class=<class>: If set, open up a new window +in a custom instance of Ghostty. The class must be a valid GTK +application ID.

  • +
  • --command: The command to be executed in the first +surface of the new window.

  • +
  • --working-directory=<directory>: The working +directory to pass to Ghostty.

  • +
  • --title: A title that will override the title of the +first surface in the new window. The title override may be edited or +removed later.

  • +
  • -e: Any arguments after this will be interpreted as +a command to execute inside the first surface of the new window instead +of the default command.

  • +
+

Available since: 1.2.0

+
+
+

CONFIGURATION OPTIONS

+
+
--language
+
+

Set Ghostty’s graphical user interface language to a language other +than the system default language. For example:

+
language = de
+

will force the strings in Ghostty’s graphical user interface to be in +German rather than the system default.

+

This will not affect the language used by programs run +within Ghostty. Those will continue to use the default system +language. There are also many non-GUI elements in Ghostty that are not +translated - this setting will have no effect on those.

+

Warning: This setting cannot be reloaded at runtime. To change the +language you must fully restart Ghostty.

+

GTK only. Available since 1.3.0.

+
+
--font-family
+
+

The font families to use.

+

You can generate the list of valid values using the CLI:

+
ghostty +list-fonts
+

This configuration can be repeated multiple times to specify +preferred fallback fonts when the requested codepoint is not available +in the primary font. This is particularly useful for multiple languages, +symbolic fonts, etc.

+

Notes on emoji specifically: On macOS, Ghostty by default will always +use Apple Color Emoji and on Linux will always use Noto Emoji. You can +override this behavior by specifying a font family here that contains +emoji glyphs.

+

The specific styles (bold, italic, bold italic) do not need to be +explicitly set. If a style is not set, then the regular style +(font-family) will be searched for stylistic variants. If a stylistic +variant is not found, Ghostty will use the regular style. This prevents +falling back to a different font family just to get a style such as +bold. This also applies if you explicitly specify a font family for a +style. For example, if you set font-family-bold = FooBar +and “FooBar” cannot be found, Ghostty will use whatever font is set for +font-family for the bold style.

+

Finally, some styles may be synthesized if they are not supported. +For example, if a font does not have an italic style and no alternative +italic font is specified, Ghostty will synthesize an italic style by +applying a slant to the regular style. If you want to disable these +synthesized styles then you can use the font-style +configurations as documented below.

+

You can disable styles completely by using the +font-style set of configurations. See the documentation for +font-style for more information.

+

If you want to overwrite a previous set value rather than append a +fallback, specify the value as "" (empty string) to reset +the list and then set the new values. For example:

+
font-family = ""
+font-family = "My Favorite Font"
+

Setting any of these as CLI arguments will automatically clear the +values set in configuration files so you don’t need to specify +--font-family="" before setting a new value. You only need +to specify this within config files if you want to clear previously set +values in configuration files or on the CLI if you want to clear values +set on the CLI.

+
+
+

--font-family-bold

+

--font-family-italic

+

--font-family-bold-italic

+
+
--font-style
+
+

The named font style to use for each of the requested terminal font +styles. This looks up the style based on the font style string +advertised by the font itself. For example, “Iosevka Heavy” has a style +of “Heavy”.

+

You can also use these fields to completely disable a font style. If +you set the value of the configuration below to literal +false then that font style will be disabled. If the running +program in the terminal requests a disabled font style, the regular font +style will be used instead.

+

These are only valid if its corresponding font-family is also +specified. If no font-family is specified, then the font-style is +ignored unless you’re disabling the font style.

+
+
+

--font-style-bold

+

--font-style-italic

+

--font-style-bold-italic

+
+
--font-synthetic-style
+
+

Control whether Ghostty should synthesize a style if the requested +style is not available in the specified font-family.

+

Ghostty can synthesize bold, italic, and bold italic styles if the +font does not have a specific style. For bold, this is done by drawing +an outline around the glyph of varying thickness. For italic, this is +done by applying a slant to the glyph. For bold italic, both of these +are applied.

+

Synthetic styles are not perfect and will generally not look as good +as a font that has the style natively. However, they are useful to +provide styled text when the font does not have the style.

+

Set this to “false” or “true” to disable or enable synthetic styles +completely. You can disable specific styles using “no-bold”, +“no-italic”, and “no-bold-italic”. You can disable multiple styles by +separating them with a comma. For example, “no-bold,no-italic”.

+

Available style keys are: bold, italic, +bold-italic.

+

If synthetic styles are disabled, then the regular style will be used +instead if the requested style is not available. If the font has the +requested style, then the font will be used as-is since the style is not +synthetic.

+

Warning: An easy mistake is to disable bold or +italic but not bold-italic. Disabling only +bold or italic will NOT disable either in the +bold-italic style. If you want to disable +bold-italic, you must explicitly disable it. You cannot +partially disable bold-italic.

+

By default, synthetic styles are enabled.

+
+
--font-feature
+
+

Apply a font feature. To enable multiple font features you can repeat +this multiple times or use a comma-separated list of feature +settings.

+

The syntax for feature settings is as follows, where +feat is a feature:

+
    +
  • Enable features with e.g. feat, +feat, +feat on, feat=1.
  • +
  • Disabled features with e.g. -feat, +feat off, feat=0.
  • +
  • Set a feature value with e.g. feat=2, +feat = 3, feat 4.
  • +
  • Feature names may be wrapped in quotes, meaning this config should +be syntactically compatible with the font-feature-settings +CSS property.
  • +
+

The syntax is fairly loose, but invalid settings will be silently +ignored.

+

The font feature will apply to all fonts rendered by Ghostty. A +future enhancement will allow targeting specific faces.

+

To disable programming ligatures, use -calt since this +is the typical feature name for programming ligatures. To look into what +font features your font has and what they do, use a font inspection tool +such as fontdrop.info.

+

To generally disable most ligatures, use +-calt, -liga, -dlig.

+
+
--font-size
+
+

Font size in points. This value can be a non-integer and the nearest +integer pixel size will be selected. If you have a high dpi display +where 1pt = 2px then you can get an odd numbered pixel size by +specifying a half point.

+

For example, 13.5pt @ 2px/pt = 27px

+

Changing this configuration at runtime will only affect existing +terminals that have NOT manually adjusted their font size in some way +(e.g. increased or decreased the font size). Terminals that have +manually adjusted their font size will retain their manually adjusted +size. Otherwise, the font size of existing terminals will be updated on +reload.

+

On Linux with GTK, font size is scaled according to both display-wide +and text-specific scaling factors, which are often managed by your +desktop environment (e.g. the GNOME display scale and large text +settings).

+
+
--font-variation
+
+

A repeatable configuration to set one or more font variations values +for a variable font. A variable font is a single font, usually with a +filename ending in -VF.ttf or -VF.otf that +contains one or more configurable axes for things such as weight, slant, +etc. Not all fonts support variations; only fonts that explicitly state +they are variable fonts will work.

+

The format of this is id=value where id is +the axis identifier. An axis identifier is always a 4 character string, +such as wght. To get the list of supported axes, look at +your font documentation or use a font inspection tool.

+

Invalid ids and values are usually ignored. For example, if a font +only supports weights from 100 to 700, setting wght=800 +will do nothing (it will not be clamped to 700). You must consult your +font’s documentation to see what values are supported.

+

Common axes are: wght (weight), slnt +(slant), ital (italic), opsz (optical size), +wdth (width), GRAD (gradient), etc.

+
+
+

--font-variation-bold

+

--font-variation-italic

+

--font-variation-bold-italic

+
+
--font-codepoint-map
+
+

Force one or a range of Unicode codepoints to map to a specific named +font. This is useful if you want to support special symbols or if you +want to use specific glyphs that render better for your specific +font.

+

The syntax is codepoint=fontname where +codepoint is either a single codepoint or a range. +Codepoints must be specified as full Unicode hex values, such as +U+ABCD. Codepoints ranges are specified as +U+ABCD-U+DEFG. You can specify multiple ranges for the same +font separated by commas, such as +U+ABCD-U+DEFG,U+1234-U+5678=fontname. The font name is the +same value as you would use for font-family.

+

This configuration can be repeated multiple times to specify multiple +codepoint mappings.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+
+
--clipboard-codepoint-map
+
+

Map specific Unicode codepoints to replacement values when copying +text to clipboard.

+

This configuration allows you to replace specific Unicode characters +with other characters or strings when copying terminal content to the +clipboard. This is useful for converting special terminal symbols to +more compatible characters for pasting into other applications.

+

The syntax is similar to font-codepoint-map: - Single +codepoint: U+1234=U+ABCD or +U+1234=replacement_text - Codepoint range: +U+1234-U+5678=U+ABCD

+

Examples: - clipboard-codepoint-map = U+2500=U+002D (box +drawing horizontal → hyphen) - +clipboard-codepoint-map = U+2502=U+007C (box drawing +vertical → pipe) - clipboard-codepoint-map = U+03A3=SUM +(Greek sigma → “SUM”)

+

This configuration can be repeated multiple times to specify multiple +mappings. Later entries take priority over earlier ones for overlapping +ranges.

+

Note: This only applies to text copying operations, not URL +copying.

+
+
--font-thicken
+
+

Draw fonts with a thicker stroke, if supported. This is currently +only supported on macOS.

+
+
--font-thicken-strength
+
+

Strength of thickening when font-thicken is enabled.

+

Valid values are integers between 0 and +255. 0 does not correspond to no +thickening, rather it corresponds to the lightest available +thickening.

+

Has no effect when font-thicken is set to +false.

+

This is currently only supported on macOS.

+
+
--font-shaping-break
+
+

Locations to break font shaping into multiple runs.

+

A “run” is a contiguous segment of text that is shaped together. +“Shaping” is the process of converting text (codepoints) into glyphs +(renderable characters). This is how ligatures are formed, among other +things. For example, if a coding font turns “!=” into a single glyph, +then it must see “!” and “=” next to each other in a single run. When a +run is broken, the text is shaped separately. To continue our example, +if “!” is at the end of one run and “=” is at the start of the next run, +then the ligature will not be formed.

+

Ghostty breaks runs at certain points to improve readability or +usability. For example, Ghostty by default will break runs under the +cursor so that text editing can see the individual characters rather +than a ligature. This configuration lets you configure this +behavior.

+

Combine values with a comma to set multiple options. Prefix an option +with “no-” to disable it. Enabling and disabling options can be done at +the same time.

+

Available options:

+
    +
  • cursor - Break runs under the cursor.
  • +
+

Available since: 1.2.0

+
+
--alpha-blending
+
+

What color space to use when performing alpha blending.

+

This affects the appearance of text and of any images with +transparency. Additionally, custom shaders will receive colors in the +configured space.

+

On macOS the default is native, on all other platforms +the default is linear-corrected.

+

Valid values:

+
    +
  • native - Perform alpha blending in the native color +space for the OS. On macOS this corresponds to Display P3, and on Linux +it’s sRGB.

  • +
  • linear - Perform alpha blending in linear space. +This will eliminate the darkening artifacts around the edges of text +that are very visible when certain color combinations are used (e.g. red +/ green), but makes dark text look much thinner than normal and light +text much thicker. This is also sometimes known as “gamma +correction”.

  • +
  • linear-corrected - Same as linear, but +with a correction step applied for text that makes it look nearly or +completely identical to native, but without any of the +darkening artifacts.

  • +
+

Available since: 1.1.0

+
+
--adjust-cell-width
+
+

All of the configurations behavior adjust various metrics determined +by the font. The values can be integers (1, -1, etc.) or a percentage +(20%, -15%, etc.). In each case, the values represent the amount to +change the original value.

+

For example, a value of 1 increases the value by 1; it +does not set it to literally 1. A value of 20% increases +the value by 20%. And so on.

+

There is little to no validation on these values so the wrong values +(e.g. -100%) can cause the terminal to be unusable. Use +with caution and reason.

+

Some values are clamped to minimum or maximum values. This can make +it appear that certain values are ignored. For example, many +*-thickness adjustments cannot go below 1px.

+

adjust-cell-height has some additional behaviors to +describe:

+
    +
  • The font will be centered vertically in the cell.

  • +
  • The cursor will remain the same size as the font, but may be +adjusted separately with adjust-cursor-height.

  • +
  • Powerline glyphs will be adjusted along with the cell height so +that things like status lines continue to look aligned.

  • +
+
+
+

--adjust-cell-height

+
+
--adjust-font-baseline
+
+

Distance in pixels or percentage adjustment from the bottom of the +cell to the text baseline. Increase to move baseline UP, decrease to +move baseline DOWN. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-underline-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the underline. Increase to move underline DOWN, decrease +to move underline UP. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-underline-thickness
+
+

Thickness in pixels of the underline. See the notes about adjustments +in adjust-cell-width.

+
+
--adjust-strikethrough-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the strikethrough. Increase to move strikethrough DOWN, +decrease to move strikethrough UP. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-strikethrough-thickness
+
+

Thickness in pixels or percentage adjustment of the strikethrough. +See the notes about adjustments in adjust-cell-width.

+
+
--adjust-overline-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the overline. Increase to move overline DOWN, decrease to +move overline UP. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-overline-thickness
+
+

Thickness in pixels or percentage adjustment of the overline. See the +notes about adjustments in adjust-cell-width.

+
+
--adjust-cursor-thickness
+
+

Thickness in pixels or percentage adjustment of the bar cursor and +outlined rect cursor. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-cursor-height
+
+

Height in pixels or percentage adjustment of the cursor. Currently +applies to all cursor types: bar, rect, and outlined rect. See the notes +about adjustments in adjust-cell-width.

+
+
--adjust-box-thickness
+
+

Thickness in pixels or percentage adjustment of box drawing +characters. See the notes about adjustments in +adjust-cell-width.

+
+
--adjust-icon-height
+
+

Height in pixels or percentage adjustment of maximum height for nerd +font icons.

+

A positive (negative) value will increase (decrease) the maximum icon +height. This may not affect all icons equally: the effect depends on +whether the default size of the icon is height-constrained, which in +turn depends on the aspect ratio of both the icon and your primary +font.

+

Certain icons designed for box drawing and terminal graphics, such as +Powerline symbols, are not affected by this option.

+

See the notes about adjustments in +adjust-cell-width.

+

Available in: 1.2.0

+
+
--grapheme-width-method
+
+

The method to use for calculating the cell width of a grapheme +cluster. The default value is unicode which uses the +Unicode standard to determine grapheme width. This results in correct +grapheme width but may result in cursor-desync issues with some programs +(such as shells) that may use a legacy method such as +wcswidth.

+

Valid values are:

+
    +
  • legacy - Use a legacy method to determine grapheme +width, such as wcswidth This maximizes compatibility with legacy +programs but may result in incorrect grapheme width for certain +graphemes such as skin-tone emoji, non-English characters, etc.

    +

    This is called “legacy” and not something more specific because the +behavior is undefined and we want to retain the ability to modify it. +For example, we may or may not use libc wcswidth now or in +the future.

  • +
  • unicode - Use the Unicode standard to determine +grapheme width.

  • +
+

If a running program explicitly enables terminal mode 2027, then +unicode width will be forced regardless of this +configuration. When mode 2027 is reset, this configuration will be used +again.

+

This configuration can be changed at runtime but will not affect +existing terminals. Only new terminals will use the new +configuration.

+
+
--freetype-load-flags
+
+

FreeType load flags to enable. The format of this is a list of flags +to enable separated by commas. If you prefix a flag with +no- then it is disabled. If you omit a flag, its default +value is used, so you must explicitly disable flags you don’t want. You +can also use true or false to turn all flags +on or off.

+

This configuration only applies to Ghostty builds that use FreeType. +This is usually the case only for Linux builds. macOS uses CoreText and +does not have an equivalent configuration.

+

Available flags:

+
    +
  • hinting - Enable or disable hinting. Enabled by +default.

  • +
  • force-autohint - Always use the freetype auto-hinter +instead of the font’s native hinter. Disabled by default.

  • +
  • monochrome - Instructs renderer to use 1-bit +monochrome rendering. This will disable anti-aliasing, and probably not +look very good unless you’re using a pixel font. Disabled by +default.

  • +
  • autohint - Enable the freetype auto-hinter. Enabled +by default.

  • +
  • light - Use a light hinting style, better preserving +glyph shapes. This is the most common setting in GTK apps and therefore +also Ghostty’s default. This has no effect if monochrome is +enabled. Enabled by default.

  • +
+

Example: hinting, no-hinting, +force-autohint, no-force-autohint

+
+
--theme
+
+

A theme to use. This can be a built-in theme name, a custom theme +name, or an absolute path to a custom theme file. Ghostty also supports +specifying a different theme to use for light and dark mode. Each option +is documented below.

+

If the theme is an absolute pathname, Ghostty will attempt to load +that file as a theme. If that file does not exist or is inaccessible, an +error will be logged and no other directories will be searched.

+

If the theme is not an absolute pathname, two different directories +will be searched for a file name that matches the theme. This is case +sensitive on systems with case-sensitive filesystems. It is an error for +a theme name to include path separators unless it is an absolute +pathname.

+

The first directory is the themes subdirectory of your +Ghostty configuration directory. This is +$XDG_CONFIG_HOME/ghostty/themes or +~/.config/ghostty/themes.

+

The second directory is the themes subdirectory of the +Ghostty resources directory. Ghostty ships with a multitude of themes +that will be installed into this directory. On macOS, this list is in +the Ghostty.app/Contents/Resources/ghostty/themes +directory. On Linux, this list is in the +share/ghostty/themes directory (wherever you installed the +Ghostty “share” directory.

+

To see a list of available themes, run +ghostty +list-themes.

+

A theme file is simply another Ghostty configuration file. They share +the same syntax and same configuration options. A theme can set any +valid configuration option so please do not use a theme file from an +untrusted source. The built-in themes are audited to only set safe +configuration options.

+

Some options cannot be set within theme files. The reason these are +not supported should be self-evident. A theme file cannot set +theme or config-file. At the time of writing +this, Ghostty will not show any warnings or errors if you set these +options in a theme file but they will be silently ignored.

+

Any additional colors specified via background, foreground, palette, +etc. will override the colors specified in the theme.

+

To specify a different theme for light and dark mode, use the +following syntax: light:theme-name,dark:theme-name. For +example: light:Rose Pine Dawn,dark:Rose Pine. Whitespace +around all values are trimmed and order of light and dark does not +matter. Both light and dark must be specified in this form. In this +form, the theme used will be based on the current desktop environment +theme.

+

There are some known bugs with light/dark mode theming. These will be +fixed in a future update:

+
    +
  • macOS: titlebar tabs style is not updated when switching +themes.
  • +
+
+
--background
+
+

Background color for the window. Specified as either hex +(#RRGGBB or RRGGBB) or a named X11 color.

+
+
--foreground
+
+

Foreground color for the window. Specified as either hex +(#RRGGBB or RRGGBB) or a named X11 color.

+
+
--background-image
+
+

Background image for the terminal.

+

This should be a path to a PNG or JPEG file, other image formats are +not yet supported.

+

The background image is currently per-terminal, not per-window. If +you are a heavy split user, the background image will be repeated across +splits. A future improvement to Ghostty will address this.

+

WARNING: Background images are currently duplicated in VRAM +per-terminal. For sufficiently large images, this could lead to a large +increase in memory usage (specifically VRAM usage). A future Ghostty +improvement will resolve this by sharing image textures across +terminals.

+

Available since: 1.2.0

+
+
--background-image-opacity
+
+

Background image opacity.

+

This is relative to the value of background-opacity.

+

A value of 1.0 (the default) will result in the +background image being placed on top of the general background color, +and then the combined result will be adjusted to the opacity specified +by background-opacity.

+

A value less than 1.0 will result in the background +image being mixed with the general background color before the combined +result is adjusted to the configured +background-opacity.

+

A value greater than 1.0 will result in the background +image having a higher opacity than the general background color. For +instance, if the configured background-opacity is +0.5 and background-image-opacity is set to +1.5, then the final opacity of the background image will be +0.5 * 1.5 = 0.75.

+

Available since: 1.2.0

+
+
--background-image-position
+
+

Background image position.

+

Valid values are: * top-left * top-center * +top-right * center-left * center +* center-right * bottom-left * +bottom-center * bottom-right

+

The default value is center.

+

Available since: 1.2.0

+
+
--background-image-fit
+
+

Background image fit.

+

Valid values are:

+
    +
  • contain

    +

    Preserving the aspect ratio, scale the background image to the +largest size that can still be contained within the terminal, so that +the whole image is visible.

  • +
  • cover

    +

    Preserving the aspect ratio, scale the background image to the +smallest size that can completely cover the terminal. This may result in +one or more edges of the image being clipped by the edge of the +terminal.

  • +
  • stretch

    +

    Stretch the background image to the full size of the terminal, +without preserving the aspect ratio.

  • +
  • none

    +

    Don’t scale the background image.

  • +
+

The default value is contain.

+

Available since: 1.2.0

+
+
--background-image-repeat
+
+

Whether to repeat the background image or not.

+

If this is set to true, the background image will be repeated if +there would otherwise be blank space around it because it doesn’t +completely fill the terminal area.

+

The default value is false.

+

Available since: 1.2.0

+
+
--selection-foreground
+
+

The foreground and background color for selection. If this is not +set, then the selection color is just the inverted window background and +foreground (note: not to be confused with the cell bg/fg). Specified as +either hex (#RRGGBB or RRGGBB) or a named X11 +color. Since version 1.2.0, this can also be set to +cell-foreground to match the cell foreground color, or +cell-background to match the cell background color.

+
+
+

--selection-background

+
+
--selection-clear-on-typing
+
+

Whether to clear selected text when typing. This defaults to +true. This is typical behavior for most terminal emulators +as well as text input fields. If you set this to false, +then the selected text will not be cleared when typing.

+

“Typing” is specifically defined as any non-modifier (shift, control, +alt, etc.) keypress that produces data to be sent to the application +running within the terminal (e.g. the shell). Additionally, selection is +cleared when any preedit or composition state is started (e.g. when +typing languages such as Japanese).

+

If this is false, then the selection can still be +manually cleared by clicking once or by pressing +escape.

+

Available since: 1.2.0

+
+
--selection-clear-on-copy
+
+

Whether to clear selected text after copying. This defaults to +false.

+

When set to true, the selection will be automatically +cleared after any copy operation that invokes the +copy_to_clipboard keyboard binding. Importantly, this will +not clear the selection if the copy operation was invoked via +copy-on-select.

+

When set to false, the selection remains visible after +copying, allowing to see what was copied and potentially perform +additional operations on the same selection.

+
+
--selection-word-chars
+
+

Characters that mark word boundaries during text selection operations +such as double-clicking. When selecting a word, the selection will stop +at any of these characters.

+

This is similar to the WORDCHARS environment variable in +zsh, except this specifies the boundary characters rather than the word +characters. The default includes common delimiters and punctuation that +typically separate words in code and prose.

+

Each character in this string becomes a word boundary. Multi-byte +UTF-8 characters are supported, but only single codepoints can be +specified. Multi-codepoint sequences (e.g. emoji) are not supported.

+

The null character (U+0000) is always treated as a boundary and does +not need to be included in this configuration.

+

Default: \t'"│`|:;,()[]{}<>$

+

To add or remove specific characters, you can set this to a custom +value. For example, to treat semicolons as part of words:

+
selection-word-chars = " \t'\"│`|:,()[]{}<>$"
+

Available since: 1.3.0

+
+
--minimum-contrast
+
+

The minimum contrast ratio between the foreground and background +colors. The contrast ratio is a value between 1 and 21. A value of 1 +allows for no contrast (e.g. black on black). This value is the contrast +ratio as defined by the WCAG 2.0 +specification.

+

If you want to avoid invisible text (same color as background), a +value of 1.1 is a good value. If you want to avoid text that is +difficult to read, a value of 3 or higher is a good value. The higher +the value, the more likely that text will become black or white.

+

This value does not apply to Emoji or images.

+
+
--palette
+
+

Color palette for the 256 color form that many terminal applications +use. The syntax of this configuration is N=COLOR where +N is 0 to 255 (for the 256 colors in the terminal color +table) and COLOR is a typical RGB color code such as +#AABBCC or AABBCC, or a named X11 color. For +example, palette = 5=#BB78D9 will set the ‘purple’ +color.

+

The palette index can be in decimal, binary, octal, or hexadecimal. +Decimal is assumed unless a prefix is used: 0b for binary, +0o for octal, and 0x for hexadecimal.

+

For definitions on the color indices and what they canonically map +to, see this +cheat sheet.

+

For most themes, you only need to set the first 16 colors (0–15) +since the rest of the palette (16–255) will be automatically generated +by default (see palette-generate for more details).

+
+
--palette-generate
+
+

Whether to automatically generate the extended 256 color palette +(indices 16–255) from the base 16 ANSI colors.

+

This lets theme authors specify only the base 16 colors and have the +rest of the palette be automatically generated in a consistent and +aesthetic way.

+

When enabled, the 6×6×6 color cube and 24-step grayscale ramp are +derived from interpolations of the base palette, giving a more cohesive +look. Colors that have been explicitly set via palette are +never overwritten.

+

The default value is false (disabled), because many legacy programs +using the 256-color palette hardcode assumptions about what these colors +are (mostly assuming the xterm 256 color palette). However, this is +still a very useful tool for theme authors and users who want to +customize their palette without having to specify all 256 colors.

+

For more information on how the generation works, see here: +https://gist.github.com/jake-stewart/0a8ea46159a7da2c808e5be2177e1783

+

Available since: 1.3.0

+
+
--palette-harmonious
+
+

Invert the palette colors generated when +palette-generate is enabled, so that the colors go in +reverse order. This allows palette-based applications to work well in +both light and dark mode since the palettes are always relatively good +colors.

+

This defaults to off because some legacy terminal applications +hardcode the assumption that palette indices 16–231 are ordered from +darkest to lightest, so enabling this would make them unreadable. This +is not a generally good assumption and we encourage modern terminal +applications to use the indices in a more semantic way.

+

This has no effect if palette-generate is disabled.

+

For more information see palette-generate.

+

Available since: 1.3.0

+
+
--cursor-color
+
+

The color of the cursor. If this is not set, a default will be +chosen.

+

Direct colors can be specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color.

+

Additionally, special values can be used to set the color to match +other colors at runtime:

+
    +
  • cell-foreground - Match the cell foreground color. +(Available since: 1.2.0)

  • +
  • cell-background - Match the cell background color. +(Available since: 1.2.0)

  • +
+
+
--cursor-opacity
+
+

The opacity level (opposite of transparency) of the cursor. A value +of 1 is fully opaque and a value of 0 is fully transparent. A value less +than 0 or greater than 1 will be clamped to the nearest valid value. +Note that a sufficiently small value such as 0.3 may be effectively +invisible and may make it difficult to find the cursor.

+
+
--cursor-style
+
+

The style of the cursor. This sets the default style. A running +program can still request an explicit cursor style using escape +sequences (such as CSI q). Shell configurations will often +request specific cursor styles.

+

Note that shell integration will automatically set the cursor to a +bar at a prompt, regardless of this configuration. You can disable that +behavior by specifying +shell-integration-features = no-cursor or disabling shell +integration entirely.

+

Valid values are:

+
    +
  • block
  • +
  • bar
  • +
  • underline
  • +
  • block_hollow
  • +
+
+
--cursor-style-blink
+
+

Sets the default blinking state of the cursor. This is just the +default state; running programs may override the cursor style using +DECSCUSR (CSI q).

+

If this is not set, the cursor blinks by default. Note that this is +not the same as a “true” value, as noted below.

+

If this is not set at all (null), then Ghostty will +respect DEC Mode 12 (AT&T cursor blink) as an alternate approach to +turning blinking on/off. If this is set to any value other than null, +DEC mode 12 will be ignored but DECSCUSR will still be +respected.

+

Valid values are:

+
    +
  • (blank)
  • +
  • true
  • +
  • false
  • +
+
+
--cursor-text
+
+

The color of the text under the cursor. If this is not set, a default +will be chosen. Specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color. Since version 1.2.0, this can +also be set to cell-foreground to match the cell foreground +color, or cell-background to match the cell background +color.

+
+
--cursor-click-to-move
+
+

Enables the ability to move the cursor at prompts by clicking on a +location in the prompt text.

+

This feature requires shell integration, specifically prompt marking +via OSC 133. Some shells like Fish (v4) and Nu (0.111+) +natively support this while others may require additional configuration +or Ghostty’s shell integration features to be enabled.

+

Depending on the shell, this works either by translating your click +position into a series of synthetic arrow key movements or by sending a +click event directly to the shell. In either case, some unexpected +behavior around edge cases is possible.

+
+
--mouse-hide-while-typing
+
+

Hide the mouse immediately when typing. The mouse becomes visible +again when the mouse is used (button, movement, etc.). Platform-specific +behavior may dictate other scenarios where the mouse is shown. For +example on macOS, the mouse is shown again when a new window, tab, or +split is created.

+
+
--scroll-to-bottom
+
+

When to scroll the surface to the bottom. The format of this is a +list of options to enable separated by commas. If you prefix an option +with no- then it is disabled. If you omit an option, its +default value is used.

+

Available options:

+
    +
  • keystroke If set, scroll the surface to the bottom +when the user presses a key that results in data being sent to the PTY +(basically anything but modifiers or keybinds that are processed by +Ghostty).

  • +
  • output If set, scroll the surface to the bottom if +there is new data to display (e.g., when new lines are printed to the +terminal).

  • +
+

The default is keystroke, no-output.

+
+
--mouse-shift-capture
+
+

Determines whether running programs can detect the shift key pressed +with a mouse click. Typically, the shift key is used to extend mouse +selection.

+

The default value of false means that the shift key is +not sent with the mouse protocol and will extend the selection. This +value can be conditionally overridden by the running program with the +XTSHIFTESCAPE sequence.

+

The value true means that the shift key is sent with the +mouse protocol but the running program can override this behavior with +XTSHIFTESCAPE.

+

The value never is the same as false but +the running program cannot override this behavior with +XTSHIFTESCAPE. The value always is the same as +true but the running program cannot override this behavior +with XTSHIFTESCAPE.

+

If you always want shift to extend mouse selection even if the +program requests otherwise, set this to never.

+

Valid values are:

+
    +
  • true
  • +
  • false
  • +
  • always
  • +
  • never
  • +
+
+
--mouse-reporting
+
+

Enable or disable mouse reporting. When set to false, +mouse events will not be reported to terminal applications even if they +request it. This allows you to always use the mouse for selection and +other terminal UI interactions without applications capturing mouse +input.

+

When set to true (the default), terminal applications +can request mouse reporting and will receive mouse events according to +their requested mode.

+

This can be toggled at runtime using the +toggle_mouse_reporting keybind action.

+
+
--mouse-scroll-multiplier
+
+

Multiplier for scrolling distance with the mouse wheel.

+

A prefix of precision: or discrete: can be +used to set the multiplier only for scrolling with the specific type of +devices. These can be comma-separated to set both types of multipliers +at the same time, e.g. precision:0.1,discrete:3. If no +prefix is used, the multiplier applies to all scrolling devices. +Specifying a prefix was introduced in Ghostty 1.2.1.

+

The value will be clamped to [0.01, 10,000]. Both of these are +extreme and you’re likely to have a bad experience if you set either +extreme.

+

The default value is “3” for discrete devices and “1” for precision +devices.

+
+
--background-opacity
+
+

The opacity level (opposite of transparency) of the background. A +value of 1 is fully opaque and a value of 0 is fully transparent. A +value less than 0 or greater than 1 will be clamped to the nearest valid +value.

+

On macOS, background opacity is disabled when the terminal enters +native fullscreen. This is because the background becomes gray and it +can cause widgets to show through which isn’t generally desirable.

+

On macOS, changing this configuration requires restarting Ghostty +completely.

+
+
--background-opacity-cells
+
+

Applies background opacity to cells with an explicit background color +set.

+

Normally, background-opacity is only applied to the +window background. If a cell has an explicit background color set, such +as red, then that background color will be fully opaque. An effect of +this is that some terminal applications that repaint the background +color of the terminal such as a Neovim and Tmux may not respect the +background-opacity (by design).

+

Setting this to true will apply the +background-opacity to all cells regardless of whether they +have an explicit background color set or not.

+

Available since: 1.2.0

+
+
--background-blur
+
+

Whether to blur the background when background-opacity +is less than 1.

+

Valid values are:

+
    +
  • a nonnegative integer specifying the blur intensity
  • +
  • false, equivalent to a blur intensity of 0
  • +
  • true, equivalent to the default blur intensity of 20, +which is reasonable for a good looking blur. Higher blur intensities may +cause strange rendering and performance issues.
  • +
+

On macOS 26.0 and later, there are additional special values that can +be set to use the native macOS glass effects:

+
    +
  • macos-glass-regular - Standard glass effect with some +opacity
  • +
  • macos-glass-clear - Highly transparent glass +effect
  • +
+

If the macOS values are set, then this implies +background-blur = true on non-macOS platforms.

+

Supported on macOS and on some Linux desktop environments, +including:

+
    +
  • KDE Plasma (Wayland and X11)
  • +
+

Warning: the exact blur intensity is ignored under KDE +Plasma, and setting this setting to either true or any +positive blur intensity value would achieve the same effect. The reason +is that KWin, the window compositor powering Plasma, only has one global +blur setting and does not allow applications to specify individual blur +settings.

+

To configure KWin’s global blur setting, open System Settings and go +to “Apps & Windows” > “Window Management” > “Desktop Effects” +and select the “Blur” plugin. If disabled, enable it by ticking the +checkbox to the left. Then click on the “Configure” button and there +will be two sliders that allow you to set background blur and noise +intensities for all apps, including Ghostty.

+

All other Linux desktop environments are as of now unsupported. Users +may need to set environment-specific settings and/or install third-party +plugins in order to support background blur, as there isn’t a unified +interface for doing so.

+
+
--unfocused-split-opacity
+
+

The opacity level (opposite of transparency) of an unfocused split. +Unfocused splits by default are slightly faded out to make it easier to +see which split is focused. To disable this feature, set this value to +1.

+

A value of 1 is fully opaque and a value of 0 is fully transparent. +Because “0” is not useful (it makes the window look very weird), the +minimum value is 0.15. This value still looks weird but you can at least +see what’s going on. A value outside of the range 0.15 to 1 will be +clamped to the nearest valid value.

+
+
--unfocused-split-fill
+
+

The color to dim the unfocused split. Unfocused splits are dimmed by +rendering a semi-transparent rectangle over the split. This sets the +color of that rectangle and can be used to carefully control the dimming +effect.

+

This will default to the background color.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
--split-divider-color
+
+

The color of the split divider. If this is not set, a default will be +chosen. Specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color.

+

Available since: 1.1.0

+
+
--split-preserve-zoom
+
+

Control when Ghostty preserves a zoomed split. Under normal +circumstances, any operation that changes focus or layout of the split +tree in a window will unzoom any zoomed split. This configuration allows +you to control this behavior.

+

This can be set to navigation to preserve the zoomed +split state when navigating to another split (e.g. via +goto_split). This will change the zoomed split to the newly +focused split instead of unzooming.

+

Any options can also be prefixed with no- to disable +that option.

+

Example: split-preserve-zoom = navigation

+

Available since: 1.3.0

+
+
--search-foreground
+
+

The foreground and background color for search matches. This only +applies to non-focused search matches, also known as candidate +matches.

+

Valid values:

+
    +
  • Hex (#RRGGBB or RRGGBB)
  • +
  • Named X11 color
  • +
  • “cell-foreground” to match the cell foreground color
  • +
  • “cell-background” to match the cell background color
  • +
+

The default value is black text on a golden yellow background.

+
+
+

--search-background

+
+
--search-selected-foreground
+
+

The foreground and background color for the currently selected search +match. This is the focused match that will be jumped to when using +next/previous search navigation.

+

Valid values:

+
    +
  • Hex (#RRGGBB or RRGGBB)
  • +
  • Named X11 color
  • +
  • “cell-foreground” to match the cell foreground color
  • +
  • “cell-background” to match the cell background color
  • +
+

The default value is black text on a soft peach background.

+
+
+

--search-selected-background

+
+
--command
+
+

The command to run, usually a shell. If this is not an absolute path, +it’ll be looked up in the PATH. If this is not set, a +default will be looked up from your system. The rules for the default +lookup are:

+
    +
  • SHELL environment variable

  • +
  • passwd entry (user information)

  • +
+

This can contain additional arguments to run the command with. If +additional arguments are provided, the command will be executed using +/bin/sh -c to offload shell argument expansion.

+

To avoid shell expansion altogether, prefix the command with +direct:, e.g. direct:nvim foo. This will avoid +the roundtrip to /bin/sh but will also not support any +shell parsing such as arguments with spaces, filepaths with +~, globs, etc. (Available since: 1.2.0)

+

You can also explicitly prefix the command with shell: +to always wrap the command in a shell. This can be used to ensure our +heuristics to choose the right mode are not used in case they are wrong. +(Available since: 1.2.0)

+

This command will be used for all new terminal surfaces, i.e. new +windows, tabs, etc. If you want to run a command only for the first +terminal surface created when Ghostty starts, use the +initial-command configuration.

+

Ghostty supports the common -e flag for executing a +command with arguments. For example, +ghostty -e fish --with --custom --args. This flag sets the +initial-command configuration, see that for more +information.

+
+
--initial-command
+
+

This is the same as “command”, but only applies to the first terminal +surface created when Ghostty starts. Subsequent terminal surfaces will +use the command configuration.

+

After the first terminal surface is created (or closed), there is no +way to run this initial command again automatically. As such, setting +this at runtime works but will only affect the next terminal surface if +it is the first one ever created.

+

If you’re using the ghostty CLI there is also a shortcut +to set this with arguments directly: you can use the -e +flag. For example: ghostty -e fish --with --custom --args. +The -e flag automatically forces some other behaviors as +well:

+
    +
  • Disables shell expansion since the input is expected to already +be shell-expanded by the upstream (e.g. the shell used to type in the +ghostty -e command).

  • +
  • gtk-single-instance=false - This ensures that a new +instance is launched and the CLI args are respected.

  • +
  • quit-after-last-window-closed=true - This ensures +that the Ghostty process will exit when the command exits. Additionally, +the quit-after-last-window-closed-delay is unset.

  • +
  • shell-integration=detect (if not none) +- This prevents forcibly injecting any configured shell integration into +the command’s environment. With -e its highly unlikely that +you’re executing a shell and forced shell integration is likely to cause +problems (e.g. by wrapping your command in a shell, setting env vars, +etc.). This is a safety measure to prevent unexpected behavior. If you +want shell integration with a -e-executed command, you must +either name your binary appropriately or source the shell integration +script manually.

  • +
+
+
--notify-on-command-finish
+
+

Controls when command finished notifications are sent. There are +three options:

+
    +
  • never - Never send notifications (the default).
  • +
  • unfocused - Only send notifications if the surface that +the command is running in is not focused.
  • +
  • always - Always send notifications.
  • +
+

Command finished notifications requires that either shell integration +is enabled, or that your shell sends OSC 133 escape sequences to mark +the start and end of commands.

+

On GTK, there is a context menu item that will enable command +finished notifications for a single command, overriding the +never and unfocused options.

+

Available since 1.3.0.

+
+
--notify-on-command-finish-action
+
+

If command finished notifications are enabled, this controls how the +user is notified.

+

Available options:

+
    +
  • bell - enabled by default
  • +
  • notify - disabled by default
  • +
+

Options can be combined by listing them as a comma separated list. +Options can be negated by prefixing them with no-. For +example no-bell,notify.

+

Available since 1.3.0.

+
+
--notify-on-command-finish-after
+
+

If command finished notifications are enabled, this controls how long +a command must have been running before a notification will be sent. The +default is five seconds.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

Available since 1.3.0

+
+
--env
+
+

Extra environment variables to pass to commands launched in a +terminal surface. The format is env=KEY=VALUE.

+

env = foo=bar env = bar=baz

+

Setting env to an empty string will reset the entire map +to default (empty).

+

env =

+

Setting a key to an empty string will remove that particular key and +corresponding value from the map.

+

env = foo=bar env = foo=

+

will result in foo not being passed to the launched +commands.

+

Setting a key multiple times will overwrite previous entries.

+

env = foo=bar env = foo=baz

+

will result in foo=baz being passed to the launched +commands.

+

These environment variables will override any existing environment +variables set by Ghostty. For example, if you set +GHOSTTY_RESOURCES_DIR then the value you set here will +override the value Ghostty typically automatically injects.

+

These environment variables will not be passed to commands +run by Ghostty for other purposes, like open or +xdg-open used to open URLs in your browser.

+

Available since: 1.2.0

+
+
--input
+
+

Data to send as input to the command on startup.

+

The configured command will be launched using the +typical rules, then the data specified as this input will be written to +the pty before any other input can be provided.

+

The bytes are sent as-is with no additional encoding. Therefore, be +cautious about input that can contain control characters, because this +can be used to execute programs in a shell.

+

The format of this value is:

+
    +
  • raw:<string> - Send raw text as-is. This uses +Zig string literal syntax so you can specify control characters and +other standard escapes.

  • +
  • path:<path> - Read a filepath and send the +contents. The path must be to a file with finite length. e.g. don’t use +a device such as /dev/stdin or /dev/urandom as +these will block terminal startup indefinitely. Files are limited to +10MB in size to prevent excessive memory usage. If you have files larger +than this you should write a script to read the file and send it to the +terminal.

  • +
+

If no valid prefix is found, it is assumed to be a raw: +input. This is an ergonomic choice to allow you to simply write +input = "Hello, world!" (a common case) without needing to +prefix every value with raw:.

+

This can be repeated multiple times to send more data. The data is +concatenated directly with no separator characters in between (e.g. no +newline).

+

If any of the input sources do not exist, then none of the input will +be sent. Input sources are not verified until the terminal is starting, +so missing paths will not show up in config validation.

+

Changing this configuration at runtime will only affect new +terminals.

+

Available since: 1.2.0

+
+
--wait-after-command
+
+

If true, keep the terminal open after the command exits. Normally, +the terminal window closes when the running command (such as a shell) +exits. With this true, the terminal window will stay open until any +keypress is received.

+

This is primarily useful for scripts or debugging.

+
+
--abnormal-command-exit-runtime
+
+

The number of milliseconds of runtime below which we consider a +process exit to be abnormal. This is used to show an error message when +the process exits too quickly.

+

On Linux, this must be paired with a non-zero exit code. On macOS, we +allow any exit code because of the way shell processes are launched via +the login command.

+
+
--scrollback-limit
+
+

The size of the scrollback buffer in bytes. This also includes the +active screen. No matter what this is set to, enough memory will always +be allocated for the visible screen and anything leftover is the limit +for the scrollback.

+

When this limit is reached, the oldest lines are removed from the +scrollback.

+

Scrollback currently exists completely in memory. This means that the +larger this value, the larger potential memory usage. Scrollback is +allocated lazily up to this limit, so if you set this to a very large +value, it will not immediately consume a lot of memory.

+

This size is per terminal surface, not for the entire +application.

+

It is not currently possible to set an unlimited scrollback buffer. +This is a future planned feature.

+

This can be changed at runtime but will only affect new terminal +surfaces.

+
+
--scrollbar
+
+

Control when the scrollbar is shown to scroll the scrollback +buffer.

+

The default value is system.

+

Valid values:

+
    +
  • system - Respect the system settings for when to +show scrollbars. For example, on macOS, this will respect the “Scrollbar +behavior” system setting which by default usually only shows scrollbars +while actively scrolling or hovering the gutter.

  • +
  • never - Never show a scrollbar. You can still scroll +using the mouse, keybind actions, etc. but you will not have a visual UI +widget showing a scrollbar.

  • +
+
+
--link
+
+

Match a regular expression against the terminal text and associate +clicking it with an action. This can be used to match URLs, file paths, +etc. Actions can be opening using the system opener +(e.g. open or xdg-open) or executing any +arbitrary binding action.

+

Links that are configured earlier take precedence over links that are +configured later.

+

A default link that matches a URL and opens it in the system opener +always exists. This can be disabled using link-url.

+

TODO: This can’t currently be set!

+
+
--link-url
+
+

Enable URL matching. URLs are matched on hover with control (Linux) +or command (macOS) pressed and open using the default system application +for the linked URL.

+

The URL matcher is always lowest priority of any configured links +(see link). If you want to customize URL matching, use +link and disable this.

+
+
--link-previews
+
+

Show link previews for a matched URL.

+

When true, link previews are shown for all matched URLs. When false, +link previews are never shown. When set to “osc8”, link previews are +only shown for hyperlinks created with the OSC 8 sequence (in this case, +the link text can differ from the link destination).

+

Available since: 1.2.0

+
+
--maximize
+
+

Whether to start the window in a maximized state. This setting +applies to new windows and does not apply to tabs, splits, etc. However, +this setting will apply to all new windows, not just the first one.

+

Available since: 1.1.0

+
+
--fullscreen
+
+

Start new windows in fullscreen. This setting applies to new windows +and does not apply to tabs, splits, etc. However, this setting will +apply to all new windows, not just the first one.

+

Allowable values are:

+
    +
  • false - Don’t start in fullscreen (default)
  • +
  • true - Start in native fullscreen
  • +
  • non-native - (macOS only) Start in non-native +fullscreen, hiding the menu bar. This is faster than native fullscreen +since it doesn’t use animations. On non-macOS platforms, this behaves +the same as true.
  • +
  • non-native-visible-menu - (macOS only) Start in +non-native fullscreen, keeping the menu bar visible. On non-macOS +platforms, behaves like true.
  • +
  • non-native-padded-notch - (macOS only) Start in +non-native fullscreen, hiding the menu bar but padding for the notch on +applicable devices. On non-macOS platforms, behaves like +true.
  • +
+

Important: tabs DO NOT WORK with non-native fullscreen modes. +Non-native fullscreen removes the titlebar and macOS native tabs require +the titlebar. If you use tabs, use true (native) +instead.

+

On macOS, true (native fullscreen) does not work if +window-decoration is set to false, because +native fullscreen on macOS requires window decorations.

+
+
--title
+
+

The title Ghostty will use for the window. This will force the title +of the window to be this title at all times and Ghostty will ignore any +set title escape sequences programs (such as Neovim) may send.

+

If you want a blank title, set this to one or more spaces by quoting +the value. For example, title = " ". This effectively hides +the title. This is necessary because setting a blank value resets the +title to the default value of the running program.

+

This configuration can be reloaded at runtime. If it is set, the +title will update for all windows. If it is unset, the next title change +escape sequence will be honored but previous changes will not +retroactively be set. This latter case may require you to restart +programs such as Neovim to get the new title.

+
+
--class
+
+

The setting that will change the application class value.

+

This controls the class field of the WM_CLASS X11 +property (when running under X11), the Wayland application ID (when +running under Wayland), and the bus name that Ghostty uses to connect to +DBus.

+

Note that changing this value between invocations will create new, +separate instances, of Ghostty when running with +gtk-single-instance=true. See that option for more +details.

+

Changing this value may break launching Ghostty from +.desktop files, via DBus activation, or systemd user +services as the system is expecting Ghostty to connect to DBus using the +default class when it is launched.

+

The class name must follow the requirements defined in +the GTK documentation.

+

The default is com.mitchellh.ghostty.

+

This only affects GTK builds.

+
+
--x11-instance-name
+
+

This controls the instance name field of the WM_CLASS +X11 property when running under X11. It has no effect otherwise.

+

The default is ghostty.

+

This only affects GTK builds.

+
+
--working-directory
+
+

The directory to change to after starting the command.

+

This setting is secondary to the +window-inherit-working-directory setting. If a previous +Ghostty terminal exists in the same process, +window-inherit-working-directory will take precedence. +Otherwise, this setting will be used. Typically, this setting is used +only for the first window.

+

The default is inherit except in special scenarios +listed next. On macOS, if Ghostty can detect it is launched from launchd +(double-clicked) or open, then it defaults to +home. On Linux with GTK, if Ghostty can detect it was +launched from a desktop launcher, then it defaults to +home.

+

The value of this must be an absolute path, a path prefixed with +~/ (the tilde will be expanded to the user’s home +directory), or one of the special values below:

+
    +
  • home - The home directory of the executing +user.

  • +
  • inherit - The working directory of the launching +process.

  • +
+
+
--keybind
+
+

Key bindings. The format is trigger=action. Duplicate +triggers will overwrite previously set values. The list of actions is +available in the documentation or using the +ghostty +list-actions command.

+

Trigger: +-separated list of keys and modifiers. +Example: ctrl+a, ctrl+shift+b, +up.

+

If the key is a single Unicode codepoint, the trigger will match any +presses that produce that codepoint. These are impacted by keyboard +layouts. For example, a will match the a key +on a QWERTY keyboard, but will match the q key on a AZERTY +keyboard (assuming US physical layout).

+

For Unicode codepoints, matching is done by comparing the set of +modifiers with the unmodified codepoint. The unmodified codepoint is +sometimes called an “unshifted character” in other software, but all +modifiers are considered, not only shift. For example, +ctrl+a will match a but not +ctrl+shift+a (which is A on a US +keyboard).

+

Further, codepoint matching is case-insensitive and the unmodified +codepoint is always case folded for comparison. As a result, +ctrl+A configured will match when ctrl+a is +pressed. Note that this means some key combinations are impossible +depending on keyboard layout. For example, ctrl+_ is +impossible on a US keyboard because _ is +shift+- and ctrl+shift+- is not equal to +ctrl+_ (because the modifiers don’t match!). More details +on impossible key combinations can be found at this excellent source +written by Qt developers: +https://doc.qt.io/qt-6/qkeysequence.html#keyboard-layout-issues

+

Physical key codes can be specified by using any of the key codes as +specified by the W3C +specification. For example, KeyA will match the +physical a key on a US standard keyboard regardless of the +keyboard layout. These are case-sensitive.

+

For aesthetic reasons, the w3c codes also support snake case. For +example, key_a is equivalent to KeyA. The only +exceptions are function keys, e.g. F1 is f1 +(no underscore). This is a consequence of our internal code using snake +case but is purposely supported and tested so it is safe to use. It +allows an all-lowercase binding which I find more aesthetically +pleasing.

+

Function keys such as insert, up, +f5, etc. are also specified using the keys as specified by +the previously linked W3C specification.

+

Physical keys always match with a higher priority than Unicode +codepoints, so if you specify both a and KeyA, +the physical key will always be used regardless of what order they are +configured.

+

The special key catch_all can be used to match any key +that is not otherwise bound. This can be combined with modifiers, for +example ctrl+catch_all will match any key pressed with +ctrl that is not otherwise bound. When looking up a +binding, Ghostty first tries to match catch_all with +modifiers. If no match is found and the event has modifiers, it falls +back to catch_all without modifiers.

+

Valid modifiers are shift, ctrl (alias: +control), alt (alias: opt, +option), and super (alias: cmd, +command). You may use the modifier or the alias. When +debugging keybinds, the non-aliased modifier will always be used in +output.

+

Note: The fn or “globe” key on keyboards are not supported as a +modifier. This is a limitation of the operating systems and GUI toolkits +that Ghostty uses.

+

Some additional notes for triggers:

+
    +
  • modifiers cannot repeat, ctrl+ctrl+a is +invalid.

  • +
  • modifiers and keys can be in any order, shift+a+ctrl +is weird, but valid.

  • +
  • only a single key input is allowed, ctrl+a+b is +invalid.

  • +
+

You may also specify multiple triggers separated by > +to require a sequence of triggers to activate the action. For example, +ctrl+a>n=new_window will only trigger the +new_window action if the user presses ctrl+a +followed separately by n. In other software, this is +sometimes called a leader key, a key chord, a key table, etc. There is +no hardcoded limit on the number of parts in a sequence.

+

Warning: If you define a sequence as a CLI argument to +ghostty, you probably have to quote the keybind since +> is a special character in most shells. Example: +ghostty –keybind=‘ctrl+a>n=new_window’

+

A trigger sequence has some special handling:

+
    +
  • Ghostty will wait an indefinite amount of time for the next key +in the sequence. There is no way to specify a timeout. The only way to +force the output of a prefix key is to assign another keybind to +specifically output that key +(e.g. ctrl+a>ctrl+a=text:foo) or press an unbound key +which will send both keys to the program.

  • +
  • If an unbound key is pressed during a sequence and a +catch_all binding exists that would ignore the +input, the entire sequence is dropped and nothing happens. Otherwise, +the entire sequence is encoded and sent to the running program as if no +keybind existed.

  • +
  • If a prefix in a sequence is previously bound, the sequence will +override the previous binding. For example, if ctrl+a is +bound to new_window and ctrl+a>n is bound +to new_tab, pressing ctrl+a will do +nothing.

  • +
  • Adding to the above, if a previously bound sequence prefix is +used in a new, non-sequence binding, the entire previously bound +sequence will be unbound. For example, if you bind +ctrl+a>n and ctrl+a>t, and then bind +ctrl+a directly, both ctrl+a>n and +ctrl+a>t will become unbound.

  • +
  • Trigger sequences are not allowed for global: or +all:-prefixed triggers. This is a limitation we could +remove in the future.

  • +
+

Action is the action to take when the trigger is satisfied. It takes +the format action or action:param. The latter +form is only valid if the action requires a parameter.

+
    +
  • ignore - Do nothing, ignore the key input. This can +be used to black hole certain inputs to have no effect.

  • +
  • unbind - Remove the binding. This makes it so the +previous action is removed, and the key will be sent through to the +child command if it is printable. Unbind will remove any matching +trigger, including physical:-prefixed triggers without +specifying the prefix.

  • +
  • csi:text - Send a CSI sequence. +e.g. csi:A sends “cursor up”.

  • +
  • esc:text - Send an escape sequence. +e.g. esc:d deletes to the end of the word to the +right.

  • +
  • text:text - Send a string. Uses Zig string literal +syntax. e.g. text:\x15 sends Ctrl-U.

  • +
  • All other actions can be found in the documentation or by using +the ghostty +list-actions command.

  • +
+

Some notes for the action:

+
    +
  • The parameter is taken as-is after the :. Double quotes +or other mechanisms are included and NOT parsed. If you want to send a +string value that includes spaces, wrap the entire trigger/action in +double quotes. Example: --keybind="up=csi:A B"
  • +
+

There are some additional special values that can be specified for +keybind:

+
    +
  • keybind=clear will clear all set keybindings. Warning: +this removes ALL keybindings up to this point, including the default +keybindings.
  • +
+

The keybind trigger can be prefixed with some special values to +change the behavior of the keybind. These are:

+
    +
  • all:

    +

    Make the keybind apply to all terminal surfaces. By default, keybinds +only apply to the focused terminal surface. If this is true, then the +keybind will be sent to all terminal surfaces. This only applies to +actions that are surface-specific. For actions that are already global +(e.g. quit), this prefix has no effect.

    +

    Available since: 1.0.0

  • +
  • global:

    +

    Make the keybind global. By default, keybinds only work within +Ghostty and under the right conditions (application focused, sometimes +terminal focused, etc.). If you want a keybind to work globally across +your system (e.g. even when Ghostty is not focused), specify this +prefix. This prefix implies all:.

    +

    Note: this does not work in all environments; see the additional +notes below for more information.

    +

    Available since: 1.0.0 on macOS, 1.2.0 on GTK

  • +
  • unconsumed:

    +

    Do not consume the input. By default, a keybind will consume the +input, meaning that the associated encoding (if any) will not be sent to +the running program in the terminal. If you wish to send the encoded +value to the program, specify the unconsumed: prefix before +the entire keybind. For example: +unconsumed:ctrl+a=reload_config. global: and +all:-prefixed keybinds will always consume the input +regardless of this setting. Since they are not associated with a +specific terminal surface, they’re never encoded.

    +

    Available since: 1.0.0

  • +
  • performable:

    +

    Only consume the input if the action is able to be performed. For +example, the copy_to_clipboard action will only consume the +input if there is a selection to copy. If there is no selection, Ghostty +behaves as if the keybind was not set. This has no effect with +global: or all:-prefixed keybinds. For key +sequences, this will reset the sequence if the action is not performable +(acting identically to not having a keybind set at all).

    +

    Performable keybinds will not appear as menu shortcuts in the +application menu. This is because the menu shortcuts force the action to +be performed regardless of the state of the terminal. Performable +keybinds will still work, they just won’t appear as a shortcut label in +the menu.

    +

    Available since: 1.1.0

  • +
+

Keybind triggers are not unique per prefix combination. For example, +ctrl+a and global:ctrl+a are not two separate +keybinds. The keybind set later will overwrite the keybind set earlier. +In this case, the global: keybind will be used.

+

Multiple prefixes can be specified. For example, +global:unconsumed:ctrl+a=reload_config will make the +keybind global and not consume the input to reload the config.

+

Note: global: is only supported on macOS and certain +Linux platforms.

+

On macOS, this feature requires accessibility permissions to be +granted to Ghostty. When a global: keybind is specified and +Ghostty is launched or reloaded, Ghostty will attempt to request these +permissions. If the permissions are not granted, the keybind will not +work. On macOS, you can find these permissions in System Preferences +-> Privacy & Security -> Accessibility.

+

On Linux, you need a desktop environment that implements the Global +Shortcuts protocol as a part of its XDG desktop protocol +implementation. Desktop environments that are known to support (or not +support) global shortcuts include:

+
    +
  • Users using KDE Plasma (since 5.27) +and GNOME (since 48) should be +able to use global shortcuts with little to no configuration.

  • +
  • Some manual configuration is required on Hyprland. Consult the +steps outlined on the Hyprland +Wiki to set up global shortcuts correctly. (Important: xdg-desktop-portal-hyprland +must also be installed!)

  • +
  • Notably, global shortcuts have not been implemented on +wlroots-based compositors like Sway (see upstream +issue).

  • +
+

Chained Actions

+

A keybind can have multiple actions by using the chain +keyword for subsequent actions. When a keybind is activated, all chained +actions are executed in order. The syntax is:

+
keybind = ctrl+a=new_window
+keybind = chain=goto_split:left
+

This binds ctrl+a to first open a new window, then move +focus to the left split. Each chain entry appends an action +to the most recently defined keybind. You can chain as many actions as +you want:

+
keybind = ctrl+a=new_window
+keybind = chain=goto_split:left
+keybind = chain=toggle_fullscreen
+

Chained actions cannot have prefixes like global: or +unconsumed:. The flags from the original keybind apply to +the entire chain.

+

Chained actions work with key sequences as well. For example:

+
keybind = ctrl+a>n=new_window
+keybind = chain=goto_split:left
+

Chains with key sequences apply to the most recent binding in the +sequence.

+

Chained keybinds are available since Ghostty 1.3.0.

+

Key Tables

+

You may also create a named set of keybindings known as a “key +table.” A key table must be explicitly activated for the bindings to +become available. This can be used to implement features such as a “copy +mode”, “vim mode”, etc. Generically, this can implement modal keyboard +input.

+

Key tables are defined using the syntax +<table>/<binding>. The +<binding> value is everything documented above for +keybinds. The <table> value is the name of the key +table. Table names can contain anything except /, +=, +, and >. The characters ++ and > are reserved for keybind syntax +(modifier combinations and key sequences). For example +foo/ctrl+a=new_window defines a binding within a table +named foo.

+

Tables are activated and deactivated using the binding actions +activate_key_table:<name> and +deactivate_key_table. Other table related binding actions +also exist; see the documentation for a full list. These are the primary +way to interact with key tables.

+

Binding lookup proceeds from the innermost table outward, so keybinds +in the default table remain available unless explicitly unbound in an +inner table.

+

A key table has some special syntax and handling:

+
    +
  • <name>/ (with no binding) defines and clears a +table, resetting all of its keybinds and settings.

  • +
  • You cannot activate a table that is already the innermost table; +such attempts are ignored. However, the same table can appear multiple +times in the stack as long as it is not innermost (e.g., +A -> B -> A -> B is valid, but +A -> B -> B is not).

  • +
  • A table can be activated in one-shot mode using +activate_key_table_once:<name>. A one-shot table is +automatically deactivated when any non-catch-all binding is +invoked.

  • +
  • Key sequences work within tables: +foo/ctrl+a>ctrl+b=new_window. If an invalid key is +pressed, the sequence ends but the table remains active.

  • +
  • Chain actions work within tables, the chain keyword +applies to the most recently defined binding in the table. e.g. if you +set table/ctrl+a=new_window you can chain by using +chain=text:hello. Important: chain itself doesn’t get +prefixed with the table name, since it applies to the most recent +binding in any table.

  • +
  • Prefixes like global: work within tables: +foo/global:ctrl+a=new_window.

  • +
+

Key tables are available since Ghostty 1.3.0.

+
+
--key-remap
+
+

Remap modifier keys within Ghostty. This allows you to swap or +reassign modifier keys at the application level without affecting +system-wide settings.

+

The format is from=to where both from and +to are modifier key names. You can use generic names like +ctrl, alt, shift, +super (macOS: cmd/command) or +sided names like left_ctrl, right_alt, +etc.

+

This will NOT change keyboard layout or key encodings outside of +Ghostty. For example, on macOS, option+a may still produce +å even if option is remapped to +ctrl. Desktop environments usually handle key layout long +before Ghostty receives the key events.

+

Example:

+
key-remap = ctrl=super
+key-remap = left_control=right_alt
+

Important notes:

+
    +
  • This is a one-way remap. If you remap ctrl=super, +then the physical Ctrl key acts as Super, but the Super key remains +Super.

  • +
  • Remaps are not transitive. If you remap ctrl=super +and alt=ctrl, pressing Alt will produce Ctrl, NOT +Super.

  • +
  • This affects both keybind matching and terminal input encoding. +This does NOT impact keyboard layout or how keys are interpreted prior +to Ghostty receiving them. For example, option+a on macOS +may still produce å even if option is remapped +to ctrl.

  • +
  • Generic modifiers (e.g. ctrl) match both left and +right physical keys. Use sided names (e.g. left_ctrl) to +remap only one side.

  • +
+

There are other edge case scenarios that may not behave as expected +but are working as intended the way this feature is designed:

+
    +
  • On macOS, bindings in the main menu will trigger before any +remapping is done. This is because macOS itself handles menu activation +and this happens before Ghostty receives the key event. To workaround +this, you should unbind the menu items and rebind them using your +desired modifier.
  • +
+

This configuration can be repeated to specify multiple remaps.

+
+
--window-padding-x
+
+

Horizontal window padding. This applies padding between the terminal +cells and the left and right window borders. The value is in points, +meaning that it will be scaled appropriately for screen DPI.

+

If this value is set too large, the screen will render nothing, +because the grid will be completely squished by the padding. It is up to +you as the user to pick a reasonable value. If you pick an unreasonable +value, a warning will appear in the logs.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+

To set a different left and right padding, specify two numerical +values separated by a comma. For example, +window-padding-x = 2,4 will set the left padding to 2 and +the right padding to 4. If you want to set both paddings to the same +value, you can use a single value. For example, +window-padding-x = 2 will set both paddings to 2.

+
+
--window-padding-y
+
+

Vertical window padding. This applies padding between the terminal +cells and the top and bottom window borders. The value is in points, +meaning that it will be scaled appropriately for screen DPI.

+

If this value is set too large, the screen will render nothing, +because the grid will be completely squished by the padding. It is up to +you as the user to pick a reasonable value. If you pick an unreasonable +value, a warning will appear in the logs.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+

To set a different top and bottom padding, specify two numerical +values separated by a comma. For example, +window-padding-y = 2,4 will set the top padding to 2 and +the bottom padding to 4. If you want to set both paddings to the same +value, you can use a single value. For example, +window-padding-y = 2 will set both paddings to 2.

+
+
--window-padding-balance
+
+

The viewport dimensions are usually not perfectly divisible by the +cell size. In this case, some extra padding on the end of a column and +the bottom of the final row may exist. If this is true, +then this extra padding is automatically balanced between all four edges +to minimize imbalance on one side. If this is false, the +top left grid cell will always hug the edge with zero padding other than +what may be specified with the other window-padding +options.

+

If other window-padding fields are set and this is +true, this will still apply. The other padding is applied +first and may affect how many grid cells actually exist, and this is +applied last in order to balance the padding given a certain viewport +size and grid cell size.

+
+
--window-padding-color
+
+

The color of the padding area of the window. Valid values are:

+
    +
  • background - The background color specified in +background.
  • +
  • extend - Extend the background color of the nearest +grid cell.
  • +
  • extend-always - Same as “extend” but always extends +without applying any of the heuristics that disable extending noted +below.
  • +
+

The “extend” value will be disabled in certain scenarios. On primary +screen applications (e.g. not something like Neovim), the color will not +be extended vertically if any of the following are true:

+
    +
  • The nearest row has any cells that have the default background +color. The thinking is that in this case, the default background color +looks fine as a padding color.
  • +
  • The nearest row is a prompt row (requires shell integration). The +thinking here is that prompts often contain powerline glyphs that do not +look good extended.
  • +
  • The nearest row contains a perfect fit powerline character. These +don’t look good extended.
  • +
+
+
--window-vsync
+
+

Synchronize rendering with the screen refresh rate. If true, this +will minimize tearing and align redraws with the screen but may cause +input latency. If false, this will maximize redraw frequency but may +cause tearing, and under heavy load may use more CPU and power.

+

This defaults to true because out-of-sync rendering on macOS can +cause kernel panics (macOS 14.4+) and performance issues for external +displays over some hardware such as DisplayLink. If you want to minimize +input latency, set this to false with the known aforementioned +risks.

+

Changing this value at runtime will only affect new terminals.

+

This setting is only supported currently on macOS.

+
+
--window-inherit-working-directory
+
+

If true, new windows will inherit the working directory of the +previously focused window. If no window was previously focused, the +default working directory will be used (the +working-directory option).

+
+
--tab-inherit-working-directory
+
+

If true, new tabs will inherit the working directory of the +previously focused tab. If no tab was previously focused, the default +working directory will be used (the working-directory +option).

+
+
--split-inherit-working-directory
+
+

If true, new split panes will inherit the working directory of the +previously focused split. If no split was previously focused, the +default working directory will be used (the +working-directory option).

+
+
--window-inherit-font-size
+
+

If true, new windows and tabs will inherit the font size of the +previously focused window. If no window was previously focused, the +default font size will be used. If this is false, the default font size +specified in the configuration font-size will be used.

+
+
--window-decoration
+
+

Configure a preference for window decorations. This setting specifies +a preference; the actual OS, desktop environment, window +manager, etc. may override this preference. Ghostty will do its best to +respect this preference but it may not always be possible.

+

Valid values:

+
    +
  • none

    +

    All window decorations will be disabled. Titlebar, borders, etc. will +not be shown. On macOS, this will also disable tabs (enforced by the +system).

  • +
  • auto

    +

    Automatically decide to use either client-side or server-side +decorations based on the detected preferences of the current OS and +desktop environment. This option usually makes Ghostty look the most +“native” for your desktop.

  • +
  • client

    +

    Prefer client-side decorations.

    +

    Available since: 1.1.0

  • +
  • server

    +

    Prefer server-side decorations. This is only relevant on Linux with +GTK, either on X11, or Wayland on a compositor that supports the +org_kde_kwin_server_decoration protocol (e.g. KDE Plasma, +but almost any non-GNOME desktop supports this protocol).

    +

    If server is set but the environment doesn’t support +server-side decorations, client-side decorations will be used +instead.

    +

    Available since: 1.1.0

  • +
+

The default value is auto.

+

For the sake of backwards compatibility and convenience, this setting +also accepts boolean true and false values. If set to true, +this is equivalent to auto. If set to false, +this is equivalent to none. This is convenient for users +who live primarily on systems that don’t differentiate between client +and server-side decorations (e.g. macOS and Windows).

+

The “toggle_window_decorations” keybind action can be used to create +a keybinding to toggle this setting at runtime.

+

macOS: To hide the titlebar without removing the native window +borders or rounded corners, use +macos-titlebar-style = hidden instead.

+
+
--window-title-font-family
+
+

The font that will be used for the application’s window and tab +titles.

+

If this setting is left unset, the system default font will be +used.

+

Note: any font available on the system may be used, this font is not +required to be a fixed-width font.

+

Available since: 1.0.0 on macOS, 1.1.0 on GTK

+
+
--window-subtitle
+
+

The text that will be displayed in the subtitle of the window. Valid +values:

+
    +
  • false - Disable the subtitle.
  • +
  • working-directory - Set the subtitle to the working +directory of the surface.
  • +
+

This feature is only supported on GTK.

+

Available since: 1.1.0

+
+
--window-theme
+
+

The theme to use for the windows. Valid values:

+
    +
  • auto - Determine the theme based on the configured +terminal background color. This has no effect if the “theme” +configuration has separate light and dark themes. In that case, the +behavior of “auto” is equivalent to “system”.
  • +
  • system - Use the system theme.
  • +
  • light - Use the light theme regardless of system +theme.
  • +
  • dark - Use the dark theme regardless of system +theme.
  • +
  • ghostty - Use the background and foreground colors +specified in the Ghostty configuration. This is only supported on Linux +builds.
  • +
+

On macOS, if macos-titlebar-style is tabs +or transparent, the window theme will be automatically set +based on the luminosity of the terminal background color. This only +applies to terminal windows. This setting will still apply to +non-terminal windows within Ghostty.

+

This is currently only supported on macOS and Linux.

+
+
--window-colorspace
+
+

The color space to use when interpreting terminal colors. “Terminal +colors” refers to colors specified in your configuration and colors +produced by direct-color SGR sequences.

+

Valid values:

+
    +
  • srgb - Interpret colors in the sRGB color space. This +is the default.
  • +
  • display-p3 - Interpret colors in the Display P3 color +space.
  • +
+

This setting is currently only supported on macOS.

+
+
--window-height
+
+

The initial window size. This size is in terminal grid cells by +default. Both values must be set to take effect. If only one value is +set, it is ignored.

+

We don’t currently support specifying a size in pixels but a future +change can enable that. If this isn’t specified, the app runtime will +determine some default size.

+

Note that the window manager may put limits on the size or override +the size. For example, a tiling window manager may force the window to +be a certain size to fit within the grid. There is nothing Ghostty will +do about this, but it will make an effort.

+

Sizes larger than the screen size will be clamped to the screen size. +This can be used to create a maximized-by-default window size.

+

This will not affect new tabs, splits, or other nested terminal +elements. This only affects the initial window size of any new window. +Changing this value will not affect the size of the window after it has +been created. This is only used for the initial size.

+

BUG: On Linux with GTK, the calculated window size will not properly +take into account window decorations. As a result, the grid dimensions +will not exactly match this configuration. If window decorations are +disabled (see window-decoration), then this will work as +expected.

+

Windows smaller than 10 wide by 4 high are not allowed.

+
+
+

--window-width

+
+
--window-position-x
+
+

The starting window position. This position is in pixels and is +relative to the top-left corner of the primary monitor. Both values must +be set to take effect. If only one value is set, it is ignored.

+

Note that the window manager may put limits on the position or +override the position. For example, a tiling window manager may force +the window to be a certain position to fit within the grid. There is +nothing Ghostty will do about this, but it will make an effort.

+

Also note that negative values are also up to the operating system +and window manager. Some window managers may not allow windows to be +placed off-screen.

+

Invalid positions are runtime-specific, but generally the positions +are clamped to the nearest valid position.

+

On macOS, the window position is relative to the top-left corner of +the visible screen area. This means that if the menu bar is visible, the +window will be placed below the menu bar.

+

Note: this is only supported on macOS. The GTK runtime does not +support setting the window position, as windows are only allowed +position themselves in X11 and not Wayland.

+
+
+

--window-position-y

+
+
--window-save-state
+
+

Whether to enable saving and restoring window state. Window state +includes their position, size, tabs, splits, etc. Some window state +requires shell integration, such as preserving working directories. See +shell-integration for more information.

+

There are three valid values for this configuration:

+
    +
  • default will use the default system behavior. On +macOS, this will only save state if the application is forcibly +terminated or if it is configured systemwide via Settings.app.

  • +
  • never will never save window state.

  • +
  • always will always save window state whenever +Ghostty is exited.

  • +
+

If you change this value to never while Ghostty is not +running, the next Ghostty launch will NOT restore the window state.

+

If you change this value to default while Ghostty is not +running and the previous exit saved state, the next Ghostty launch will +still restore the window state. This is because Ghostty cannot know if +the previous exit was due to a forced save or not (macOS doesn’t provide +this information).

+

If you change this value so that window state is saved while Ghostty +is not running, the previous window state will not be restored because +Ghostty only saves state on exit if this is enabled.

+

The default value is default.

+

This is currently only supported on macOS. This has no effect on +Linux.

+
+
--window-step-resize
+
+

Resize the window in discrete increments of the focused surface’s +cell size. If this is disabled, surfaces are resized in pixel +increments. Currently only supported on macOS.

+
+
--window-new-tab-position
+
+

The position where new tabs are created. Valid values:

+
    +
  • current - Insert the new tab after the currently +focused tab, or at the end if there are no focused tabs.

  • +
  • end - Insert the new tab at the end of the tab +list.

  • +
+
+
--window-show-tab-bar
+
+

Whether to show the tab bar.

+

Valid values:

+
    +
  • always

    +

    Always display the tab bar, even when there’s only one tab.

    +

    Available since: 1.2.0

  • +
  • auto (default)

    +

    Automatically show and hide the tab bar. The tab bar is only shown +when there are two or more tabs present.

  • +
  • never

    +

    Never show the tab bar. Tabs are only accessible via the tab overview +or by keybind actions.

  • +
+

Currently only supported on Linux (GTK).

+
+
--window-titlebar-background
+
+

Background color for the window titlebar. This only takes effect if +window-theme is set to ghostty. Currently only supported in the GTK app +runtime.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
--window-titlebar-foreground
+
+

Foreground color for the window titlebar. This only takes effect if +window-theme is set to ghostty. Currently only supported in the GTK app +runtime.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
--resize-overlay
+
+

This controls when resize overlays are shown. Resize overlays are a +transient popup that shows the size of the terminal while the surfaces +are being resized. The possible options are:

+
    +
  • always - Always show resize overlays.
  • +
  • never - Never show resize overlays.
  • +
  • after-first - The resize overlay will not appear when +the surface is first created, but will show up if the surface is +subsequently resized.
  • +
+

The default is after-first.

+
+
--resize-overlay-position
+
+

If resize overlays are enabled, this controls the position of the +overlay. The possible options are:

+
    +
  • center
  • +
  • top-left
  • +
  • top-center
  • +
  • top-right
  • +
  • bottom-left
  • +
  • bottom-center
  • +
  • bottom-right
  • +
+

The default is center.

+
+
--resize-overlay-duration
+
+

If resize overlays are enabled, this controls how long the overlay is +visible on the screen before it is hidden. The default is ¾ of a second +or 750 ms.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

Available since 1.0.0

+
+
--focus-follows-mouse
+
+

If true, when there are multiple split panes, the mouse selects the +pane that is focused. This only applies to the currently focused window; +e.g. mousing over a split in an unfocused window will not focus that +split and bring the window to front.

+

Default is false.

+
+
--clipboard-read
+
+

Whether to allow programs running in the terminal to read/write to +the system clipboard (OSC 52, for googling). The default is to allow +clipboard reading after prompting the user and allow writing +unconditionally.

+

Valid values are:

+
    +
  • ask
  • +
  • allow
  • +
  • deny
  • +
+
+
+

--clipboard-write

+
+
--clipboard-trim-trailing-spaces
+
+

Trims trailing whitespace on data that is copied to the clipboard. +This does not affect data sent to the clipboard via +clipboard-write. This only applies to trailing whitespace +on lines that have other characters. Completely blank lines always have +their whitespace trimmed.

+
+
--clipboard-paste-protection
+
+

Require confirmation before pasting text that appears unsafe. This +helps prevent a “copy/paste attack” where a user may accidentally +execute unsafe commands by pasting text with newlines.

+
+
--clipboard-paste-bracketed-safe
+
+

If true, bracketed pastes will be considered safe. By default, +bracketed pastes are considered safe. “Bracketed” pastes are pastes +while the running program has bracketed paste mode enabled (a setting +set by the running program, not the terminal emulator).

+
+
--title-report
+
+

Enables or disabled title reporting (CSI 21 t). This escape sequence +allows the running program to query the terminal title. This is a common +security issue and is disabled by default.

+

Warning: This can expose sensitive information at best and enable +arbitrary code execution at worst (with a maliciously crafted title and +a minor amount of user interaction).

+

Available since: 1.0.1

+
+
--image-storage-limit
+
+

The total amount of bytes that can be used for image data (e.g. the +Kitty image protocol) per terminal screen. The maximum value is +4,294,967,295 (4GiB). The default is 320MB. If this is set to zero, then +all image protocols will be disabled.

+

This value is separate for primary and alternate screens so the +effective limit per surface is double.

+
+
--copy-on-select
+
+

Whether to automatically copy selected text to the clipboard. +true will prefer to copy to the selection clipboard, +otherwise it will copy to the system clipboard.

+

The value clipboard will always copy text to the +selection clipboard as well as the system clipboard.

+

Middle-click paste will always use the selection clipboard. +Middle-click paste is always enabled even if this is +false.

+

The default value is true on Linux and macOS.

+
+
--right-click-action
+
+

The action to take when the user right-clicks on the terminal +surface.

+

Valid values: * context-menu - Show the context menu. * +paste - Paste the contents of the clipboard. * +copy - Copy the selected text to the clipboard. * +copy-or-paste - If there is a selection, copy the selected +text to the clipboard; otherwise, paste the contents of the clipboard. * +ignore - Do nothing, ignore the right-click.

+

The default value is context-menu.

+
+
--click-repeat-interval
+
+

The time in milliseconds between clicks to consider a click a repeat +(double, triple, etc.) or an entirely new single click. A value of zero +will use a platform-specific default. The default on macOS is determined +by the OS settings. On every other platform it is 500ms.

+
+
--config-file
+
+

Additional configuration files to read. This configuration can be +repeated to read multiple configuration files. Configuration files +themselves can load more configuration files. Paths are relative to the +file containing the config-file directive. For command-line +arguments, paths are relative to the current working directory.

+

Prepend a ? character to the file path to suppress errors if the file +does not exist. If you want to include a file that begins with a literal +? character, surround the file path in double quotes (“).

+

Cycles are not allowed. If a cycle is detected, an error will be +logged and the configuration file will be ignored.

+

Configuration files are loaded after the configuration they’re +defined within in the order they’re defined. THIS IS A VERY +SUBTLE BUT IMPORTANT POINT. To put it another way: +configuration files do not take effect until after the entire +configuration is loaded. For example, in the configuration below:

+
config-file = "foo"
+a = 1
+

If “foo” contains a = 2, the final value of +a will be 2, because foo is loaded after the +configuration file that configures the nested config-file +value.

+
+
--config-default-files
+
+

When this is true, the default configuration file paths will be +loaded. The default configuration file paths are currently only the XDG +config path ($XDG_CONFIG_HOME/ghostty/config.ghostty).

+

If this is false, the default configuration paths will not be loaded. +This is targeted directly at using Ghostty from the CLI in a way that +minimizes external effects.

+

This is a CLI-only configuration. Setting this in a configuration +file will have no effect. It is not an error, but it will not do +anything. This configuration can only be set via CLI arguments.

+
+
--confirm-close-surface
+
+

Confirms that a surface should be closed before closing it.

+

This defaults to true. If set to false, +surfaces will close without any confirmation. This can also be set to +always, which will always confirm closing a surface, even +if shell integration says a process isn’t running.

+
+
--quit-after-last-window-closed
+
+

Whether or not to quit after the last surface is closed.

+

This defaults to false on macOS since that is standard +behavior for a macOS application. On Linux, this defaults to +true since that is generally expected behavior.

+

On Linux, if this is true, Ghostty can delay quitting +fully until a configurable amount of time has passed after the last +window is closed. See the documentation of +quit-after-last-window-closed-delay.

+
+
--quit-after-last-window-closed-delay
+
+

Controls how long Ghostty will stay running after the last open +surface has been closed. This only has an effect if +quit-after-last-window-closed is also set to +true.

+

The minimum value for this configuration is 1s. Any +values lower than this will be clamped to 1s.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

By default quit-after-last-window-closed-delay is unset +and Ghostty will quit immediately after the last window is closed if +quit-after-last-window-closed is true.

+

Only implemented on Linux.

+
+
--initial-window
+
+

This controls whether an initial window is created when Ghostty is +run. Note that if quit-after-last-window-closed is +true and quit-after-last-window-closed-delay +is set, setting initial-window to false will +mean that Ghostty will quit after the configured delay if no window is +ever created. Only implemented on Linux and macOS.

+
+
--undo-timeout
+
+

The duration that undo operations remain available. After this time, +the operation will be removed from the undo stack and cannot be +undone.

+

The default value is 5 seconds.

+

This timeout applies per operation, meaning that if you perform +multiple operations, each operation will have its own timeout. New +operations do not reset the timeout of previous operations.

+

A timeout of zero will effectively disable undo operations. It is not +possible to set an infinite timeout, but you can set a very large +timeout to effectively disable the timeout (on the order of years). This +is highly discouraged, as it will cause the undo stack to grow +indefinitely, memory usage to grow unbounded, and terminal sessions to +never actually quit.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

This configuration is only supported on macOS. Linux doesn’t support +undo operations at all so this configuration has no effect.

+

Available since: 1.2.0

+
+
--quick-terminal-position
+
+

The position of the “quick” terminal window. To learn more about the +quick terminal, see the documentation for the +toggle_quick_terminal binding action.

+

Valid values are:

+
    +
  • top - Terminal appears at the top of the screen.
  • +
  • bottom - Terminal appears at the bottom of the +screen.
  • +
  • left - Terminal appears at the left of the screen.
  • +
  • right - Terminal appears at the right of the +screen.
  • +
  • center - Terminal appears at the center of the +screen.
  • +
+

On macOS, changing this configuration requires restarting Ghostty +completely.

+

Note: There is no default keybind for toggling the quick terminal. To +enable this feature, bind the toggle_quick_terminal action +to a key.

+
+
--quick-terminal-size
+
+

The size of the quick terminal.

+

The size can be specified either as a percentage of the screen +dimensions (height/width), or as an absolute size in pixels. Percentage +values are suffixed with % (e.g. 20%) while +pixel values are suffixed with px +(e.g. 300px). A bare value without a suffix is a config +error.

+

When only one size is specified, the size parameter affects the size +of the quick terminal on its primary axis, which depends on its +position: height for quick terminals placed on the top or bottom, and +width for left or right. The primary axis of a centered quick terminal +depends on the monitor’s orientation: height when on a landscape +monitor, and width when on a portrait monitor.

+

The secondary axis would be maximized for non-center +positioned quick terminals unless another size parameter is specified, +separated from the first by a comma (,). Percentage and +pixel sizes can be mixed together: for instance, a size of +50%,500px for a top-positioned quick terminal would be half +a screen tall, and 500 pixels wide.

+

Available since: 1.2.0

+
+
--gtk-quick-terminal-layer
+
+

The layer of the quick terminal window. The higher the layer, the +more windows the quick terminal may conceal.

+

Valid values are:

+
    +
  • overlay

    +

    The quick terminal appears in front of all windows.

  • +
  • top (default)

    +

    The quick terminal appears in front of normal windows but behind +fullscreen overlays like lock screens.

  • +
  • bottom

    +

    The quick terminal appears behind normal windows but in front of +wallpapers and other windows in the background layer.

  • +
  • background

    +

    The quick terminal appears behind all windows.

  • +
+

GTK Wayland only.

+

Available since: 1.2.0

+
+
--gtk-quick-terminal-namespace
+
+

The namespace for the quick terminal window.

+

This is an identifier that is used by the Wayland compositor and/or +scripts to determine the type of layer surfaces and to possibly apply +unique effects.

+

GTK Wayland only.

+

Available since: 1.2.0

+
+
--quick-terminal-screen
+
+

The screen where the quick terminal should show up.

+

Valid values are:

+
    +
  • main - The screen that the operating system +recommends as the main screen. On macOS, this is the screen that is +currently receiving keyboard input. This screen is defined by the +operating system and not chosen by Ghostty.

  • +
  • mouse - The screen that the mouse is currently +hovered over.

  • +
  • macos-menu-bar - The screen that contains the macOS +menu bar as set in the display settings on macOS. This is a bit +confusing because every screen on macOS has a menu bar, but this is the +screen that contains the primary menu bar.

  • +
+

The default value is main because this is the +recommended screen by the operating system.

+

Only implemented on macOS.

+
+
--quick-terminal-animation-duration
+
+

Duration (in seconds) of the quick terminal enter and exit animation. +Set it to 0 to disable animation completely. This can be changed at +runtime.

+

Only implemented on macOS.

+
+
--quick-terminal-autohide
+
+

Automatically hide the quick terminal when focus shifts to another +window. Set it to false for the quick terminal to remain open even when +it loses focus.

+

Defaults to true on macOS and on false on Linux/BSD. This is because +global shortcuts on Linux require system configuration and are +considerably less accessible than on macOS, meaning that it is more +preferable to keep the quick terminal open until the user has completed +their task. This default may change in the future.

+
+
--quick-terminal-space-behavior
+
+

This configuration option determines the behavior of the quick +terminal when switching between macOS spaces. macOS spaces are virtual +desktops that can be manually created or are automatically created when +an application is in full-screen mode.

+

Valid values are:

+
    +
  • move - When switching to another space, the quick +terminal will also moved to the current space.

  • +
  • remain - The quick terminal will stay only in the +space where it was originally opened and will not follow when switching +to another space.

  • +
+

The default value is move.

+

Only implemented on macOS. On Linux the behavior is always equivalent +to move.

+

Available since: 1.1.0

+
+
--quick-terminal-keyboard-interactivity
+
+

Determines under which circumstances that the quick terminal should +receive keyboard input. See the corresponding Wayland +documentation for a more detailed explanation of the behavior of +each option.

+
+

[!NOTE] The exact behavior of each option may differ significantly +across compositors – experiment with them on your system to find one +that suits your liking!

+
+

Valid values are:

+
    +
  • none

    +

    The quick terminal will not receive any keyboard input.

  • +
  • on-demand (default)

    +

    The quick terminal would only receive keyboard input when it is +focused.

  • +
  • exclusive

    +

    The quick terminal will always receive keyboard input, even when +another window is currently focused.

  • +
+

Only has an effect on Linux Wayland. On macOS the behavior is always +equivalent to on-demand.

+

Available since: 1.2.0

+
+
--shell-integration
+
+

Whether to enable shell integration auto-injection or not. Shell +integration greatly enhances the terminal experience by enabling a +number of features:

+
    +
  • Working directory reporting so new tabs, splits inherit the +previous terminal’s working directory.

  • +
  • Prompt marking that enables the “jump_to_prompt” +keybinding.

  • +
  • If you’re sitting at a prompt, closing a terminal will not ask +for confirmation.

  • +
  • Resizing the window with a complex prompt usually paints much +better.

  • +
+

Allowable values are:

+
    +
  • none - Do not do any automatic injection. You can +still manually configure your shell to enable the integration.

  • +
  • detect - Detect the shell based on the +filename.

  • +
  • bash, elvish, fish, +nushell, zsh - Use this specific shell +injection scheme.

  • +
+

The default value is detect.

+
+
--shell-integration-features
+
+

Shell integration features to enable. These require our shell +integration to be loaded, either automatically via shell-integration or +manually.

+

The format of this is a list of features to enable separated by +commas. If you prefix a feature with no- then it is +disabled. If you omit a feature, its default value is used, so you must +explicitly disable features you don’t want. You can also use +true or false to turn all features on or +off.

+

Example: cursor, no-cursor, +sudo, no-sudo, title, +no-title

+

Available features:

+
    +
  • cursor - Set the cursor to a bar at the +prompt.

  • +
  • sudo - Set sudo wrapper to preserve +terminfo.

  • +
  • title - Set the window title via shell +integration.

  • +
  • ssh-env - Enable SSH environment variable +compatibility. Automatically converts TERM from +xterm-ghostty to xterm-256color when +connecting to remote hosts and propagates COLORTERM, TERM_PROGRAM, and +TERM_PROGRAM_VERSION. Whether or not these variables will be accepted by +the remote host(s) will depend on whether or not the variables are +allowed in their sshd_config. (Available since: 1.2.0)

  • +
  • ssh-terminfo - Enable automatic terminfo +installation on remote hosts. Attempts to install Ghostty’s terminfo +entry using infocmp and tic when connecting to +hosts that lack it. Requires infocmp to be available +locally and tic to be available on remote hosts. Once +terminfo is installed on a remote host, it will be automatically +“cached” to avoid repeat installations. If desired, the ++ssh-cache CLI action can be used to manage the +installation cache manually using various arguments. (Available since: +1.2.0)

  • +
  • path - Add Ghostty’s binary directory to PATH. This +ensures the ghostty command is available in the shell even +if shell init scripts reset PATH. This is particularly useful on macOS +where PATH is often overridden by system scripts. The directory is only +added if not already present.

  • +
+

SSH features work independently and can be combined for optimal +experience: when both ssh-env and ssh-terminfo +are enabled, Ghostty will install its terminfo on remote hosts and use +xterm-ghostty as TERM, falling back to +xterm-256color with environment variables if terminfo +installation fails.

+
+
--command-palette-entry
+
+

Custom entries into the command palette.

+

Each entry requires the title, the corresponding action, and an +optional description. Each field should be prefixed with the field name, +a colon (:), and then the specified value. The syntax for +actions is identical to the one for keybind actions. Whitespace in +between fields is ignored.

+

If you need to embed commas or any other special characters in the +values, enclose the value in double quotes and it will be interpreted as +a Zig string literal. This is also useful for including whitespace at +the beginning or the end of a value. See the Zig +documentation for more information on string literals. Note that +multiline string literals are not supported.

+

Double quotes can not be used around the field names.

+
command-palette-entry = title:Reset Font Style, action:csi:0m
+command-palette-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main
+command-palette-entry = title:Focus Split: Right,description:"Focus the split to the right, if it exists.",action:goto_split:right
+command-palette-entry = title:"Ghostty",description:"Add a little Ghostty to your terminal.",action:"text:\xf0\x9f\x91\xbb"
+

By default, the command palette is preloaded with most actions that +might be useful in an interactive setting yet do not have easily +accessible or memorizable shortcuts. The default entries can be cleared +by setting this setting to an empty value:

+
command-palette-entry =
+

Available since: 1.2.0

+
+
--osc-color-report-format
+
+

Sets the reporting format for OSC sequences that request color +information. Ghostty currently supports OSC 10 (foreground), OSC 11 +(background), and OSC 4 (256 color palette) queries, and by default the +reported values are scaled-up RGB values, where each component are 16 +bits. This is how most terminals report these values. However, some +legacy applications may require 8-bit, unscaled, components. We also +support turning off reporting altogether. The components are lowercase +hex values.

+

Allowable values are:

+
    +
  • none - OSC 4/10/11 queries receive no reply

  • +
  • 8-bit - Color components are return unscaled, +e.g. rr/gg/bb

  • +
  • 16-bit - Color components are returned scaled, +e.g. rrrr/gggg/bbbb

  • +
+

The default value is 16-bit.

+
+
--vt-kam-allowed
+
+

If true, allows the “KAM” mode (ANSI mode 2) to be used within the +terminal. KAM disables keyboard input at the request of the application. +This is not a common feature and is not recommended to be enabled. This +will not be documented further because if you know you need KAM, you +know. If you don’t know if you need KAM, you don’t need it.

+
+
--custom-shader
+
+

Custom shaders to run after the default shaders. This is a file path +to a GLSL-syntax shader for all platforms.

+

Warning: Invalid shaders can cause Ghostty to become unusable such as +by causing the window to be completely black. If this happens, you can +unset this configuration to disable the shader.

+

Custom shader support is based on and compatible with the Shadertoy +shaders. Shaders should specify a mainImage function and +the available uniforms largely match Shadertoy, with some caveats and +Ghostty-specific extensions.

+

The uniform values available to shaders are as follows:

+
    +
  • sampler2D iChannel0 - Input texture.

    +

    A texture containing the current terminal screen. If multiple custom +shaders are specified, the output of previous shaders is written to this +texture, to allow combining multiple effects.

  • +
  • vec3 iResolution - Output texture size, +[width, height, 1] (in px).

  • +
  • float iTime - Time in seconds since first frame was +rendered.

  • +
  • float iTimeDelta - Time in seconds since previous +frame was rendered.

  • +
  • float iFrameRate - Average framerate. (NOT CURRENTLY +SUPPORTED)

  • +
  • int iFrame - Number of frames that have been +rendered so far.

  • +
  • float iChannelTime[4] - Current time for video or +sound input. (N/A)

  • +
  • vec3 iChannelResolution[4] - Resolutions of the 4 +input samplers.

    +

    Currently only iChannel0 exists, and +iChannelResolution[0] is identical to +iResolution.

  • +
  • vec4 iMouse - Mouse input info. (NOT CURRENTLY +SUPPORTED)

  • +
  • vec4 iDate - Date/time info. (NOT CURRENTLY +SUPPORTED)

  • +
  • float iSampleRate - Sample rate for audio. +(N/A)

  • +
+

Ghostty-specific extensions:

+
    +
  • vec4 iCurrentCursor - Info about the terminal +cursor.

    +
      +
    • iCurrentCursor.xy is the -X, +Y corner of the current +cursor.
    • +
    • iCurrentCursor.zw is the width and height of the +current cursor.
    • +
  • +
  • vec4 iPreviousCursor - Info about the previous +terminal cursor.

  • +
  • vec4 iCurrentCursorColor - Color of the terminal +cursor.

  • +
  • vec4 iPreviousCursorColor - Color of the previous +terminal cursor.

  • +
  • vec4 iCurrentCursorStyle - Style of the terminal +cursor

    +

    Macros simplified use are defined for the various cursor styles:

    +
      +
    • CURSORSTYLE_BLOCK or 0
    • +
    • CURSORSTYLE_BLOCK_HOLLOW or 1
    • +
    • CURSORSTYLE_BAR or 2
    • +
    • CURSORSTYLE_UNDERLINE or 3
    • +
    • CURSORSTYLE_LOCK or 4
    • +
  • +
  • vec4 iPreviousCursorStyle - Style of the previous +terminal cursor

  • +
  • vec4 iCursorVisible - Visibility of the terminal +cursor.

  • +
  • float iTimeCursorChange - Timestamp of terminal +cursor change.

    +

    When the terminal cursor changes position or color, this is set to +the same time as the iTime uniform, allowing you to compute +the time since the change by subtracting this from +iTime.

  • +
  • float iTimeFocus - Timestamp when the surface last +gained iFocus.

    +

    When the surface gains focus, this is set to the current value of +iTime, similar to how iTimeCursorChange works. +This allows you to compute the time since focus was gained or lost by +calculating iTime - iTimeFocus. Use this to create +animations that restart when the terminal regains focus.

  • +
  • int iFocus - Current focus state of the surface.

    +

    Set to 1.0 when the surface is focused, 0.0 when unfocused. This +allows shaders to detect unfocused state and avoid animation artifacts +from large time deltas caused by infrequent “deceptive frames” (e.g., +modifier key presses, link hover events in unfocused split panes). Check +iFocus > 0 to determine if the surface is currently +focused.

  • +
  • vec3 iPalette[256] - The 256-color terminal +palette.

    +

    RGB values for all 256 colors in the terminal palette, normalized to +[0.0, 1.0]. Index 0-15 are the ANSI colors, 16-231 are the 6x6x6 color +cube, and 232-255 are the grayscale colors.

  • +
  • vec3 iBackgroundColor - Terminal background color +(RGB).

  • +
  • vec3 iForegroundColor - Terminal foreground color +(RGB).

  • +
  • vec3 iCursorColor - Terminal cursor color +(RGB).

  • +
  • vec3 iCursorText - Terminal cursor text color +(RGB).

  • +
  • vec3 iSelectionBackgroundColor - Selection +background color (RGB).

  • +
  • vec3 iSelectionForegroundColor - Selection +foreground color (RGB).

  • +
+

If the shader fails to compile, the shader will be ignored. Any +errors related to shader compilation will not show up as configuration +errors and only show up in the log, since shader compilation happens +after configuration loading on the dedicated render thread. For +interactive development, use shadertoy.com.

+

This can be repeated multiple times to load multiple shaders. The +shaders will be run in the order they are specified.

+

This can be changed at runtime and will affect all open +terminals.

+
+
--custom-shader-animation
+
+

If true (default), the focused terminal surface will run +an animation loop when custom shaders are used. This uses slightly more +CPU (generally less than 10%) but allows the shader to animate. This +only runs if there are custom shaders and the terminal is focused.

+

If this is set to false, the terminal and custom shader +will only render when the terminal is updated. This is more efficient +but the shader will not animate.

+

This can also be set to always, which will always run +the animation loop regardless of whether the terminal is focused or not. +The animation loop will still only run when custom shaders are used. +Note that this will use more CPU per terminal surface and can become +quite expensive depending on the shader and your terminal usage.

+

This can be changed at runtime and will affect all open +terminals.

+
+
--bell-features
+
+

Bell features to enable if bell support is available in your runtime. +Not all features are available on all runtimes. The format of this is a +list of features to enable separated by commas. If you prefix a feature +with no- then it is disabled. If you omit a feature, its +default value is used.

+

Valid values are:

+
    +
  • system

    +

    Instruct the system to notify the user using built-in system +functions. This could result in an audiovisual effect, a notification, +or something else entirely. Changing these effects require altering +system settings: for instance under the “Sound > Alert Sound” setting +in GNOME, or the “Accessibility > System Bell” settings in KDE +Plasma.

    +

    On macOS, this plays the system alert sound.

  • +
  • audio

    +

    Play a custom sound. (Available since 1.3.0 on macOS)

  • +
  • attention (enabled by default)

    +

    Request the user’s attention when Ghostty is unfocused, until it has +received focus again. On macOS, this will bounce the app icon in the +dock once. On Linux, the behavior depends on the desktop environment +and/or the window manager/compositor:

    +
      +
    • On KDE, the background of the desktop icon in the task bar would +be highlighted;

    • +
    • On GNOME, you may receive a notification that, when clicked, +would bring the Ghostty window into focus;

    • +
    • On Sway, the window may be decorated with a distinctly colored +border;

    • +
    • On other systems this may have no effect at all.

    • +
  • +
  • title (enabled by default)

    +

    Prepend a bell emoji (🔔) to the title of the alerted surface until +the terminal is re-focused or interacted with (such as on keyboard +input).

  • +
  • border

    +

    Display a border around the alerted surface until the terminal is +re-focused or interacted with (such as on keyboard input).

    +

    Available since: 1.2.0 on GTK, 1.2.1 on macOS

  • +
+

Example: audio, no-audio, +system, no-system

+

Available since: 1.2.0

+
+
--bell-audio-path
+
+

If audio is an enabled bell feature, this is a path to +an audio file. If the path is not absolute, it is considered relative to +the directory of the configuration file that it is referenced from, or +from the current working directory if this is used as a CLI flag. The +path may be prefixed with ~/ to reference the user’s home +directory.

+

Available since: 1.2.0 on GTK, 1.3.0 on macOS.

+
+
--bell-audio-volume
+
+

If audio is an enabled bell feature, this is the volume +to play the audio file at (relative to the system volume). This is a +floating point number ranging from 0.0 (silence) to 1.0 (as loud as +possible). The default is 0.5.

+

Available since: 1.2.0 on GTK, 1.3.0 on macOS.

+
+
--app-notifications
+
+

Control the in-app notifications that Ghostty shows.

+

On Linux (GTK), in-app notifications show up as toasts. Toasts appear +overlaid on top of the terminal window. They are used to show +information that is not critical but may be important.

+

Possible notifications are:

+
    +
  • clipboard-copy (default: true) - Show a notification +when text is copied to the clipboard.
  • +
  • config-reload (default: true) - Show a notification +when the configuration is reloaded.
  • +
+

To specify a notification to enable, specify the name of the +notification. To specify a notification to disable, prefix the name with +no-. For example, to disable clipboard-copy, +set this configuration to no-clipboard-copy. To enable it, +set this configuration to clipboard-copy.

+

Multiple notifications can be enabled or disabled by separating them +with a comma.

+

A value of “false” will disable all notifications. A value of “true” +will enable all notifications.

+

This configuration only applies to GTK.

+

Available since: 1.1.0

+
+
--macos-non-native-fullscreen
+
+

If anything other than false, fullscreen mode on macOS will not use +the native fullscreen, but make the window fullscreen without animations +and using a new space. It’s faster than the native fullscreen mode since +it doesn’t use animations.

+

Important: tabs DO NOT WORK in this mode. Non-native fullscreen +removes the titlebar and macOS native tabs require the titlebar. If you +use tabs, you should not use this mode.

+

If you fullscreen a window with tabs, the currently focused tab will +become fullscreen while the others will remain in a separate window in +the background. You can switch to that window using normal +window-switching keybindings such as command+tilde. When you exit +fullscreen, the window will return to the tabbed state it was in +before.

+

Allowable values are:

+
    +
  • true - Use non-native macOS fullscreen, hide the menu +bar
  • +
  • false - Use native macOS fullscreen
  • +
  • visible-menu - Use non-native macOS fullscreen, keep +the menu bar visible
  • +
  • padded-notch - Use non-native macOS fullscreen, hide +the menu bar, but ensure the window is not obscured by the notch on +applicable devices. The area around the notch will remain transparent +currently, but in the future we may fill it with the window background +color.
  • +
+

Changing this option at runtime works, but will only apply to the +next time the window is made fullscreen. If a window is already +fullscreen, it will retain the previous setting until fullscreen is +exited.

+
+
--macos-window-buttons
+
+

Whether the window buttons in the macOS titlebar are visible. The +window buttons are the colored buttons in the upper left corner of most +macOS apps, also known as the traffic lights, that allow you to close, +miniaturize, and zoom the window.

+

This setting has no effect when window-decoration = none +or macos-titlebar-style = hidden, as the window buttons are +always hidden in these modes.

+

Valid values are:

+
    +
  • visible - Show the window buttons.
  • +
  • hidden - Hide the window buttons.
  • +
+

The default value is visible.

+

Changing this option at runtime only applies to new windows.

+

Available since: 1.2.0

+
+
--macos-titlebar-style
+
+

The style of the macOS titlebar. Available values are: “native”, +“transparent”, “tabs”, and “hidden”.

+

The “native” style uses the native macOS titlebar with zero +customization. The titlebar will match your window theme (see +window-theme).

+

The “transparent” style is the same as “native” but the titlebar will +be transparent and allow your window background color to come through. +This makes a more seamless window appearance but looks a little less +typical for a macOS application and may not work well with all +themes.

+

The “transparent” style will also update in real-time to dynamic +changes to the window background color, e.g. via OSC 11. To make this +more aesthetically pleasing, this only happens if the terminal is a +window, tab, or split that borders the top of the window. This avoids a +disjointed appearance where the titlebar color changes but all the +topmost terminals don’t match.

+

The “tabs” style is a completely custom titlebar that integrates the +tab bar into the titlebar. This titlebar always matches the background +color of the terminal. There are some limitations to this style: On +macOS 13 and below, saved window state will not restore tabs correctly. +macOS 14 does not have this issue and any other macOS version has not +been tested.

+

The “hidden” style hides the titlebar. Unlike +window-decoration = none, however, it does not remove the +frame from the window or cause it to have squared corners. Changing to +or from this option at run-time may affect existing windows in buggy +ways.

+

When “hidden”, the top titlebar area can no longer be used for +dragging the window. To drag the window, you can use option+click on the +resizable areas of the frame to drag the window. This is a standard +macOS behavior and not something Ghostty enables.

+

The default value is “transparent”. This is an opinionated choice but +its one I think is the most aesthetically pleasing and works in most +cases.

+

Changing this option at runtime only applies to new windows.

+
+
--macos-titlebar-proxy-icon
+
+

Whether the proxy icon in the macOS titlebar is visible. The proxy +icon is the icon that represents the folder of the current working +directory. You can see this very clearly in the macOS built-in +Terminal.app titlebar.

+

The proxy icon is only visible with the native macOS titlebar +style.

+

Valid values are:

+
    +
  • visible - Show the proxy icon.
  • +
  • hidden - Hide the proxy icon.
  • +
+

The default value is visible.

+

This setting can be changed at runtime and will affect all currently +open windows but only after their working directory changes again. +Therefore, to make this work after changing the setting, you must +usually cd to a different directory, open a different file +in an editor, etc.

+
+
--macos-dock-drop-behavior
+
+

Controls the windowing behavior when dropping a file or folder onto +the Ghostty icon in the macOS dock.

+

Valid values are:

+
    +
  • new-tab - Create a new tab in the current window, or +open a new window if none exist.
  • +
  • new-window - Create a new window unconditionally.
  • +
+

The default value is new-tab.

+

This setting is only supported on macOS and has no effect on other +platforms.

+
+
--macos-option-as-alt
+
+

macOS doesn’t have a distinct “alt” key and instead has the “option” +key which behaves slightly differently. On macOS by default, the option +key plus a character will sometimes produce a Unicode character. For +example, on US standard layouts option-b produces “∫”. This may be +undesirable if you want to use “option” as an “alt” key for keybindings +in terminal programs or shells.

+

This configuration lets you change the behavior so that option is +treated as alt.

+

The default behavior (unset) will depend on your active keyboard +layout. If your keyboard layout is one of the keyboard layouts listed +below, then the default value is “true”. Otherwise, the default value is +“false”. Keyboard layouts with a default value of “true” are:

+
    +
  • U.S. Standard
  • +
  • U.S. International
  • +
+

Note that if an Option-sequence doesn’t produce a printable +character, it will be treated as Alt regardless of this +setting. (e.g. alt+ctrl+a).

+

Explicit values that can be set:

+

If true, the Option key will be treated as +Alt. This makes terminal sequences expecting Alt to +work properly, but will break Unicode input sequences on macOS if you +use them via the Alt key.

+

You may set this to false to restore the macOS +Alt key unicode sequences but this will break terminal +sequences expecting Alt to work.

+

The values left or right enable this for +the left or right Option key, respectively.

+
+
--macos-window-shadow
+
+

Whether to enable the macOS window shadow. The default value is true. +With some window managers and window transparency settings, you may find +false more visually appealing.

+
+
--macos-hidden
+
+

If true, the macOS icon in the dock and app switcher will be hidden. +This is mainly intended for those primarily using the quick-terminal +mode.

+

Note that setting this to true means that keyboard layout changes +will no longer be automatic.

+

Control whether macOS app is excluded from the dock and app switcher, +a “hidden” state. This is mainly intended for those primarily using +quick-terminal mode, but is a general configuration for any use +case.

+

Available values:

+
    +
  • never - The macOS app is never hidden.
  • +
  • always - The macOS app is always hidden.
  • +
+

Note: When the macOS application is hidden, keyboard layout changes +will no longer be automatic. This is a limitation of macOS.

+

Available since: 1.2.0

+
+
--macos-auto-secure-input
+
+

If true, Ghostty on macOS will automatically enable the “Secure +Input” feature when it detects that a password prompt is being +displayed.

+

“Secure Input” is a macOS security feature that prevents applications +from reading keyboard events. This can always be enabled manually using +the Ghostty > Secure Keyboard Entry menu item.

+

Note that automatic password prompt detection is based on heuristics +and may not always work as expected. Specifically, it does not work over +SSH connections, but there may be other cases where it also doesn’t +work.

+

A reason to disable this feature is if you find that it is +interfering with legitimate accessibility software (or software that +uses the accessibility APIs), since secure input prevents any +application from reading keyboard events.

+
+
--macos-secure-input-indication
+
+

If true, Ghostty will show a graphical indication when secure input +is enabled. This indication is generally recommended to know when secure +input is enabled.

+

Normally, secure input is only active when a password prompt is +displayed or it is manually (and typically temporarily) enabled. +However, if you always have secure input enabled, the indication can be +distracting and you may want to disable it.

+
+
--macos-applescript
+
+

If true, Ghostty exposes and handles the built-in AppleScript +dictionary on macOS.

+

If false, all AppleScript interactions are disabled. This includes +AppleScript commands and AppleScript object lookup for windows, tabs, +and terminals.

+

The default is true.

+
+
--macos-icon
+
+

Customize the macOS app icon.

+

This only affects the icon that appears in the dock, application +switcher, etc. This does not affect the icon in Finder because that is +controlled by a hardcoded value in the signed application bundle and +can’t be changed at runtime. For more details on what exactly is +affected, see the NSApplication.icon Apple documentation; +that is the API that is being used to set the icon.

+

Valid values:

+
    +
  • official - Use the official Ghostty icon.
  • +
  • blueprint, chalkboard, +microchip, glass, holographic, +paper, retro, xray - Official +variants of the Ghostty icon hand-created by artists (no AI).
  • +
  • custom - Use a completely custom icon. The location +must be specified using the additional macos-custom-icon +configuration
  • +
  • custom-style - Use the official Ghostty icon but with +custom styles applied to various layers. The custom styles must be +specified using the additional macos-icon-prefixed +configurations. The macos-icon-ghost-color and +macos-icon-screen-color configurations are required for +this style.
  • +
+

WARNING: The custom-style option is +experimental. We may change the format of the custom styles in +the future. We’re still finalizing the exact layers and customization +options that will be available.

+

Other caveats:

+
    +
  • The icon in the update dialog will always be the official icon. This +is because the update dialog is managed through a separate framework and +cannot be customized without significant effort.
  • +
+
+
--macos-custom-icon
+
+

The absolute path to the custom icon file. Supported formats include +PNG, JPEG, and ICNS.

+

Defaults to ~/.config/ghostty/Ghostty.icns

+
+
--macos-icon-frame
+
+

The material to use for the frame of the macOS app icon.

+

Valid values:

+
    +
  • aluminum - A brushed aluminum frame. This is the +default.
  • +
  • beige - A classic 90’s computer beige frame.
  • +
  • plastic - A glossy, dark plastic frame.
  • +
  • chrome - A shiny chrome frame.
  • +
+

Note: This configuration is required when macos-icon is +set to custom-style.

+
+
--macos-icon-ghost-color
+
+

The color of the ghost in the macOS app icon.

+

Note: This configuration is required when macos-icon is +set to custom-style.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
--macos-icon-screen-color
+
+

The color of the screen in the macOS app icon.

+

The screen is a linear gradient so you can specify multiple colors +that make up the gradient. Up to 64 comma-separated colors may be +specified as either hex (#RRGGBB or RRGGBB) or +as named X11 colors. The first color is the bottom of the gradient and +the last color is the top of the gradient.

+

Note: This configuration is required when macos-icon is +set to custom-style.

+
+
--macos-shortcuts
+
+

Whether macOS Shortcuts are allowed to control Ghostty.

+

Ghostty exposes a number of actions that allow Shortcuts to control +and interact with Ghostty. This includes creating new terminals, sending +text to terminals, running commands, invoking any keybind action, +etc.

+

This is a powerful feature but can be a security risk if a malicious +shortcut is able to be installed and executed. Therefore, this +configuration allows you to disable this feature.

+

Valid values are:

+
    +
  • ask - Ask the user whether for permission. Ghostty +will remember this choice and never ask again. This is similar to other +macOS permissions such as microphone access, camera access, +etc.

  • +
  • allow - Allow Shortcuts to control Ghostty without +asking.

  • +
  • deny - Deny Shortcuts from controlling +Ghostty.

  • +
+

Available since: 1.2.0

+
+
--linux-cgroup
+
+

Put every surface (tab, split, window) into a transient +systemd scope.

+

This allows per-surface resource management. For example, if a shell +program is using too much memory, only that shell will be killed by the +oom monitor instead of the entire Ghostty process. Similarly, if a shell +program is using too much CPU, only that surface will be +CPU-throttled.

+

This will cause startup times to be slower (a hundred milliseconds or +so), so the default value is “single-instance.” In single-instance mode, +only one instance of Ghostty is running (see gtk-single-instance) so the +startup time is a one-time cost. Additionally, single instance Ghostty +is much more likely to have many windows, tabs, etc. so cgroup isolation +is a big benefit.

+

This feature requires systemd. If systemd +is unavailable, cgroup initialization will fail. By default, this will +not prevent Ghostty from working (see +linux-cgroup-hard-fail).

+

Changing this value and reloading the config will not affect existing +surfaces.

+

Valid values are:

+
    +
  • never - Never use cgroups.
  • +
  • always - Always use cgroups.
  • +
  • single-instance - Enable cgroups only for Ghostty +instances launched as single-instance applications (see +gtk-single-instance).
  • +
+
+
--linux-cgroup-memory-limit
+
+

Memory limit for any individual terminal process (tab, split, window, +etc.) in bytes. If this is unset then no memory limit will be set.

+

Note that this sets the MemoryHigh setting on the +transient systemd scope, which is a soft limit. You should +configure something like systemd-oom to handle killing +processes that have too much memory pressure.

+

Changing this value and reloading the config will not affect existing +surfaces.

+

See the systemd.resource-control manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html

+
+
--linux-cgroup-processes-limit
+
+

Number of processes limit for any individual terminal process (tab, +split, window, etc.). If this is unset then no limit will be set.

+

Note that this sets the TasksMax setting on the +transient systemd scope, which is a hard limit.

+

Changing this value and reloading the config will not affect existing +surfaces.

+

See the systemd.resource-control manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html

+
+
--linux-cgroup-hard-fail
+
+

If this is false, then creating a transient systemd +scope (for linux-cgroup) will be allowed to fail and the +failure is ignored. This is useful if you view cgroup isolation as a +“nice to have” and not a critical resource management feature, because +surface creation will not fail if systemd APIs fail.

+

If this is true, then any transient systemd scope +creation failure will cause surface creation to fail.

+

Changing this value and reloading the config will not affect existing +surfaces.

+
+
--gtk-opengl-debug
+
+

Enable or disable GTK’s OpenGL debugging logs. The default is +true for debug builds, false for all +others.

+

Available since: 1.1.0

+
+
--gtk-single-instance
+
+

If true, the Ghostty GTK application will run in +single-instance mode: each new ghostty process launched +will result in a new window if there is already a running process.

+

If false, each new ghostty process will launch a +separate application.

+

If detect, Ghostty will assume true (single instance) +unless one of the following scenarios is found:

+
    +
  1. TERM_PROGRAM environment variable is a non-empty value. In this +case, we assume Ghostty is being launched from a graphical terminal +session and you want a dedicated instance.

  2. +
  3. Any CLI arguments exist. In this case, we assume you are passing +custom Ghostty configuration. Single instance mode inherits the +configuration from when it was launched, so we must disable single +instance to load the new configuration.

  4. +
+

If either of these scenarios is producing a false positive, you can +set this configuration explicitly to the behavior you want.

+

The pre-1.2 option desktop has been deprecated. Please +replace this with detect.

+

The default value is detect.

+

Note that debug builds of Ghostty have a separate single-instance ID +so you can test single instance without conflicting with release +builds.

+
+
--gtk-titlebar
+
+

When enabled, the full GTK titlebar is displayed instead of your +window manager’s simple titlebar. The behavior of this option will vary +with your window manager.

+

This option does nothing when window-decoration is none +or when running under macOS.

+
+
--gtk-tabs-location
+
+

Determines the side of the screen that the GTK tab bar will stick to. +Top, bottom, and hidden are supported. The default is top.

+

When hidden is set, a tab button displaying the number +of tabs will appear in the title bar. It has the ability to open a tab +overview for displaying tabs. Alternatively, you can use the +toggle_tab_overview action in a keybind if your window +doesn’t have a title bar, or you can switch tabs with keybinds.

+
+
--gtk-titlebar-hide-when-maximized
+
+

If this is true, the titlebar will be hidden when the +window is maximized, and shown when the titlebar is unmaximized. GTK +only.

+

Available since: 1.1.0

+
+
--gtk-toolbar-style
+
+

Determines the appearance of the top and bottom bars tab bar.

+

Valid values are:

+
    +
  • flat - Top and bottom bars are flat with the terminal +window.
  • +
  • raised - Top and bottom bars cast a shadow on the +terminal area.
  • +
  • raised-border - Similar to raised but the +shadow is replaced with a more subtle border.
  • +
+
+
--gtk-titlebar-style
+
+

The style of the GTK titlebar. Available values are +native and tabs.

+

The native titlebar style is a traditional titlebar with +a title, a few buttons and window controls. A separate tab bar will show +up below the titlebar if you have multiple tabs open in the window.

+

The tabs titlebar merges the tab bar and the traditional +titlebar. This frees up vertical space on your screen if you use +multiple tabs. One limitation of the tabs titlebar is that +you cannot drag the titlebar by the titles any longer (as they are tab +titles now). Other areas of the tabs title bar can be used +to drag the window around.

+

The default style is native.

+
+
--gtk-wide-tabs
+
+

If true (default), then the Ghostty GTK tabs will be +“wide.” Wide tabs are the new typical Gnome style where tabs fill their +available space. If you set this to false then tabs will +only take up space they need, which is the old style.

+
+
--gtk-custom-css
+
+

Custom CSS files to be loaded.

+

GTK CSS documentation can be found at the following links:

+
    +
  • https://docs.gtk.org/gtk4/css-overview.html - An overview of GTK +CSS.
  • +
  • https://docs.gtk.org/gtk4/css-properties.html - A comprehensive list +of supported CSS properties.
  • +
+

Launch Ghostty with env GTK_DEBUG=interactive ghostty to +tweak Ghostty’s CSS in real time using the GTK Inspector. Errors in your +CSS files would also be reported in the terminal you started Ghostty +from. See https://developer.gnome.org/documentation/tools/inspector.html +for more information about the GTK Inspector.

+

This configuration can be repeated multiple times to load multiple +files. Prepend a ? character to the file path to suppress errors if the +file does not exist. If you want to include a file that begins with a +literal ? character, surround the file path in double quotes (“). The +file size limit for a single stylesheet is 5MiB.

+

Available since: 1.1.0

+
+
--desktop-notifications
+
+

If true (default), applications running in the terminal +can show desktop notifications using certain escape sequences such as +OSC 9 or OSC 777.

+
+
--progress-style
+
+

If true (default), applications running in the terminal +can show graphical progress bars using the ConEmu OSC 9;4 escape +sequence. If false, progress bar sequences are silently +ignored.

+
+
--bold-color
+
+

Modifies the color used for bold text in the terminal.

+

This can be set to a specific color, using the same format as +background or foreground +(e.g. #RRGGBB but other formats are also supported; see the +aforementioned documentation). If a specific color is set, this color +will always be used for the default bold text color. It will set the +rest of the bold colors to bright.

+

This can also be set to bright, which uses the bright +color palette for bold text. For example, if the text is red, then the +bold will use the bright red color. The terminal palette is set with +palette but can also be overridden by the terminal +application itself using escape sequences such as OSC 4. (Since Ghostty +1.2.0, the previous configuration bold-is-bright is +deprecated and replaced by this usage).

+

Available since Ghostty 1.2.0.

+
+
--faint-opacity
+
+

The opacity level (opposite of transparency) of the faint text. A +value of 1 is fully opaque and a value of 0 is fully transparent. A +value less than 0 or greater than 1 will be clamped to the nearest valid +value.

+

Available since Ghostty 1.2.0.

+
+
--term
+
+

This will be used to set the TERM environment variable. +HACK: We set this with an xterm prefix because vim uses +that to enable key protocols (specifically this will enable +modifyOtherKeys), among other features. An option exists in +vim to modify this: :set keyprotocol=ghostty:kitty, however +a bug in the implementation prevents it from working properly. +https://github.com/vim/vim/pull/13211 fixes this.

+
+
--enquiry-response
+
+

String to send when we receive ENQ (0x05) +from the command that we are running. Defaults to an empty string if not +set.

+
+
--async-backend
+
+

Configures the low-level API to use for async IO, eventing, etc.

+

Most users should leave this set to auto. This will +automatically detect scenarios where APIs may not be available (for +example io_uring on certain hardened kernels) and fall back +to a different API. However, if you want to force a specific backend for +any reason, you can set this here.

+

Based on various benchmarks, we haven’t found a statistically +significant difference between the backends with regards to memory, CPU, +or latency. The choice of backend is more about compatibility and +features.

+

Available options:

+
    +
  • auto - Automatically choose the best backend for the +platform based on available options.
  • +
  • epoll - Use the epoll API
  • +
  • io_uring - Use the io_uring API
  • +
+

If the selected backend is not available on the platform, Ghostty +will fall back to an automatically chosen backend that is available.

+

Changing this value requires a full application restart to take +effect.

+

This is only supported on Linux, since this is the only platform +where we have multiple options. On macOS, we always use +kqueue.

+

Available since: 1.2.0

+
+
--auto-update
+
+

Control the auto-update functionality of Ghostty. This is only +supported on macOS currently, since Linux builds are distributed via +package managers that are not centrally controlled by Ghostty.

+

Checking or downloading an update does not send any information to +the project beyond standard network information mandated by the +underlying protocols. To put it another way: Ghostty doesn’t explicitly +add any tracking to the update process. The update process works by +downloading information about the latest version and comparing it +client-side to the current version.

+

Valid values are:

+
    +
  • off - Disable auto-updates.
  • +
  • check - Check for updates and notify the user if an +update is available, but do not automatically download or install the +update.
  • +
  • download - Check for updates, automatically download +the update, notify the user, but do not automatically install the +update.
  • +
+

If unset, we defer to Sparkle’s default behavior, which respects the +preference stored in the standard user defaults +(defaults(1)).

+

Changing this value at runtime works after a small delay.

+
+
--auto-update-channel
+
+

The release channel to use for auto-updates.

+

The default value of this matches the release channel of the +currently running Ghostty version. If you download a pre-release version +of Ghostty then this will be set to tip and you will +receive pre-release updates. If you download a stable version of Ghostty +then this will be set to stable and you will receive stable +updates.

+

Valid values are:

+
    +
  • stable - Stable, tagged releases such as “1.0.0”.
  • +
  • tip - Pre-release versions generated from each commit +to the main branch. This is the version that was in use during private +beta testing by thousands of people. It is generally stable but will +likely have more bugs than the stable channel.
  • +
+

Changing this configuration requires a full restart of Ghostty to +take effect.

+

This only works on macOS since only macOS has an auto-update +feature.

+
+
+

FILES

+
+
$XDG_CONFIG_HOME/ghostty/config.ghostty
+
+

Location of the default configuration file.

+
+
$HOME/Library/Application +Support/com.mitchellh.ghostty/config.ghostty
+
+

On macOS, location of the default configuration +file. This location takes precedence over the XDG environment +locations.

+
+
$LOCALAPPDATA/ghostty/config.ghostty
+
+

On Windows, if $XDG_CONFIG_HOME is not set, +$LOCALAPPDATA will be searched for configuration files.

+
+
+

ENVIRONMENT

+
+
TERM
+
+

Defaults to xterm-ghostty. Can be configured with the +term configuration option.

+
+
GHOSTTY_RESOURCES_DIR
+
+

Where the Ghostty resources can be found.

+
+
XDG_CONFIG_HOME
+
+

Default location for configuration files.

+
+
$HOME/Library/Application +Support/com.mitchellh.ghostty
+
+

MACOS ONLY default location for configuration files. +This location takes precedence over the XDG environment locations.

+
+
LOCALAPPDATA
+
+

WINDOWS ONLY: alternate location to search for +configuration files.

+
+
GHOSTTY_LOG
+
+

The GHOSTTY_LOG environment variable can be used to +control which destinations receive logs. Ghostty currently defines two +destinations:

+
+
+
    +
  • stderr - logging to stderr.
  • +
+
+
+
    +
  • macos - logging to macOS’s unified log (has no effect +on non-macOS platforms).
  • +
+
+
+

Combine values with a comma to enable multiple destinations. Prefix a +destination with no- to disable it. Enabling and disabling +destinations can be done at the same time. Setting +GHOSTTY_LOG to true will enable all +destinations. Setting GHOSTTY_LOG to false +will disable all destinations.

+
+
+

BUGS

+

See GitHub issues: https://github.com/ghostty-org/ghostty/issues

+

AUTHOR

+

Mitchell Hashimoto m@mitchellh.com Ghostty contributors https://github.com/ghostty-org/ghostty/graphs/contributors

+

SEE ALSO

+

ghostty(5)

+ + diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.md b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.md new file mode 100644 index 0000000..77c3fc5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.1.md @@ -0,0 +1,4468 @@ +% GHOSTTY(1) Version 1.3.1 | Ghostty terminal emulator + +# NAME + +**ghostty** - Ghostty terminal emulator + +# DESCRIPTION + +Ghostty is a cross-platform, GPU-accelerated terminal emulator that aims to push +the boundaries of what is possible with a terminal emulator by exposing modern, +opt-in features that enable CLI tool developers to build more feature rich, +interactive applications. + +There are a number of excellent terminal emulator options that exist today. +The unique goal of Ghostty is to have a platform for experimenting with modern, +optional, non-standards-compliant features to enhance the capabilities of CLI +applications. We aim to be the best in this category, and competitive in the +rest. + +While aiming for this ambitious goal, Ghostty is a fully standards compliant +terminal emulator that aims to remain compatible with all existing shells and +software. You can use this as a drop-in replacement for your existing terminal +emulator. + +# COMMAND LINE ACTIONS + +**`--version`** + +: The `version` command is used to display information about Ghostty. Recognized as + either `+version` or `--version`. + + +**`--help`** + +: The `help` command shows general help about Ghostty. Recognized as either + `-h, `--help`, or like other actions `+help`. + + You can also specify `--help` or `-h` along with any action such as + `+list-themes` to see help for a specific action. + + +**`+list-fonts`** + +: The `list-fonts` command is used to list all the available fonts for + Ghostty. This uses the exact same font discovery mechanism Ghostty uses to + find fonts to use. + + When executed with no arguments, this will list all available fonts, sorted + by family name, then font name. If a family name is given with `--family`, + the sorting will be disabled and the results instead will be shown in the + same priority order Ghostty would use to pick a font. + + Flags: + + * `--bold`: Filter results to specific bold styles. It is not guaranteed + that only those styles are returned. They are only prioritized. + + * `--italic`: Filter results to specific italic styles. It is not guaranteed + that only those styles are returned. They are only prioritized. + + * `--style`: Filter results based on the style string advertised by a font. + It is not guaranteed that only those styles are returned. They are only + prioritized. + + * `--family`: Filter results to a specific font family. The family handling + is identical to the `font-family` set of Ghostty configuration values, so + this can be used to debug why your desired font may not be loading. + + +**`+list-keybinds`** + +: The `list-keybinds` command is used to list all the available keybinds for + Ghostty. + + When executed without any arguments this will list the current keybinds + loaded by the config file. If no config file is found or there aren't any + changes to the keybinds it will print out the default ones configured for + Ghostty + + Flags: + + * `--default`: will print out all the default keybinds + + * `--docs`: currently does nothing, intended to print out documentation + about the action associated with the keybinds + + * `--plain`: will disable formatting and make the output more + friendly for Unix tooling. This is default when not printing to a tty. + + +**`+list-themes`** + +: The `list-themes` command is used to preview or list all the available + themes for Ghostty. + + If this command is run from a TTY, a TUI preview of the themes will be + shown. While in the preview, `F1` will bring up a help screen and `ESC` will + exit the preview. Other keys that can be used to navigate the preview are + listed in the help screen. + + If this command is not run from a TTY, or the output is piped to another + command, a plain list of theme names will be printed to the screen. A plain + list can be forced using the `--plain` CLI flag. + + Two different directories will be searched for themes. + + The first directory is the `themes` subdirectory of your Ghostty + configuration directory. This is `$XDG_CONFIG_HOME/ghostty/themes` or + `~/.config/ghostty/themes`. + + The second directory is the `themes` subdirectory of the Ghostty resources + directory. Ghostty ships with a multitude of themes that will be installed + into this directory. On macOS, this directory is the + `Ghostty.app/Contents/Resources/ghostty/themes`. On Linux, this directory + is the `share/ghostty/themes` (wherever you installed the Ghostty "share" + directory). If you're running Ghostty from the source, this is the + `zig-out/share/ghostty/themes` directory. + + You can also set the `GHOSTTY_RESOURCES_DIR` environment variable to point + to the resources directory. + + Flags: + + * `--path`: Show the full path to the theme. + + * `--plain`: Force a plain listing of themes. + + * `--color`: Specify the color scheme of the themes included in the list. + This can be `dark`, `light`, or `all`. The default is `all`. + + +**`+list-colors`** + +: The `list-colors` command is used to list all the named RGB colors in + Ghostty. + + Flags: + + * `--plain`: will disable formatting and make the output more + friendly for Unix tooling. This is default when not printing to a tty. + + +**`+list-actions`** + +: The `list-actions` command is used to list all the available keybind + actions for Ghostty. These are distinct from the CLI Actions which can + be listed via `+help` + + Flags: + + * `--docs`: will print out the documentation for each action. + + +**`+ssh-cache`** + +: Manage the SSH terminfo cache for automatic remote host setup. + + When SSH integration is enabled with `shell-integration-features = ssh-terminfo`, + Ghostty automatically installs its terminfo on remote hosts. This command + manages the cache of successful installations to avoid redundant uploads. + + The cache stores hostnames (or user@hostname combinations) along with timestamps. + Entries older than the expiration period are automatically removed during cache + operations. By default, entries never expire. + + Only one of `--clear`, `--add`, `--remove`, or `--host` can be specified. + If multiple are specified, one of the actions will be executed but + it isn't guaranteed which one. This is entirely unsafe so you should split + multiple actions into separate commands. + + Examples: + ghostty +ssh-cache # List all cached hosts + ghostty +ssh-cache --host=example.com # Check if host is cached + ghostty +ssh-cache --add=example.com # Manually add host to cache + ghostty +ssh-cache --add=user@example.com # Add user@host combination + ghostty +ssh-cache --remove=example.com # Remove host from cache + ghostty +ssh-cache --clear # Clear entire cache + ghostty +ssh-cache --expire-days=30 # Set custom expiration period + + +**`+edit-config`** + +: The `edit-config` command opens the Ghostty configuration file in the + editor specified by the `$VISUAL` or `$EDITOR` environment variables. + + IMPORTANT: This command will not reload the configuration after + editing. You will need to manually reload the configuration using the + application menu, configured keybind, or by restarting Ghostty. We + plan to auto-reload in the future, but Ghostty isn't capable of + this yet. + + The filepath opened is the default user-specific configuration + file, which is typically located at `$XDG_CONFIG_HOME/ghostty/config.ghostty`. + On macOS, this may also be located at + `~/Library/Application Support/com.mitchellh.ghostty/config.ghostty`. + On macOS, whichever path exists and is non-empty will be prioritized, + prioritizing the Application Support directory if neither are + non-empty. + + This command prefers the `$VISUAL` environment variable over `$EDITOR`, + if both are set. If neither are set, it will print an error + and exit. + + +**`+show-config`** + +: The `show-config` command shows the current configuration in a valid Ghostty + configuration file format. + + When executed without any arguments this will output the current + configuration that is different from the default configuration. If you're + using the default configuration this will output nothing. + + If you are a new user and want to see all available options with + documentation, run `ghostty +show-config --default --docs`. + + The output is not in any specific order, but the order should be consistent + between runs. The output is not guaranteed to be exactly match the input + configuration files, but it will result in the same behavior. Comments, + whitespace, and other formatting is not preserved from user configuration + files. + + Flags: + + * `--default`: Show the default configuration instead of loading + the user configuration. + + * `--changes-only`: Only show the options that have been changed + from the default. This has no effect if `--default` is specified. + + * `--docs`: Print the documentation above each option as a comment, + This is very noisy but is very useful to learn about available + options, especially paired with `--default`. + + +**`+validate-config`** + +: The `validate-config` command is used to validate a Ghostty config file. + + When executed without any arguments, this will load the config from the default + location. + + Flags: + + * `--config-file`: can be passed to validate a specific target config file in + a non-default location + + +**`+show-face`** + +: The `show-face` command shows what font face Ghostty will use to render a + specific codepoint. Note that this command does not take into consideration + grapheme clustering or any other Unicode features that might modify the + presentation of a codepoint, so this may show a different font face than + Ghostty uses to render a codepoint in a terminal session. + + Flags: + + * `--cp`: Find the face for a single codepoint. The codepoint may be specified + in decimal (`--cp=65`), hexadecimal (`--cp=0x41`), octal (`--cp=0o101`), or + binary (`--cp=0b1000001`). + + * `--string`: Find the face for all of the codepoints in a string. The + string must be a valid UTF-8 sequence. + + * `--style`: Search for a specific style. Valid options are `regular`, `bold`, + `italic`, and `bold_italic`. + + * `--presentation`: If set, force searching for a specific presentation + style. Valid options are `text` and `emoji`. If unset, the presentation + style of a codepoint will be inferred from the Unicode standard. + + +**`+crash-report`** + +: The `crash-report` command is used to inspect and send crash reports. + + When executed without any arguments, this will list existing crash reports. + + This command currently only supports listing crash reports. Viewing + and sending crash reports is unimplemented and will be added in the future. + + +**`+boo`** + +: The `boo` command is used to display the animation from the Ghostty website in the terminal + + +**`+new-window`** + +: The `new-window` will use native platform IPC to open up a new window in a + running instance of Ghostty. + + If the `--class` flag is not set, the `new-window` command will try and + connect to a running instance of Ghostty based on what optimizations the + Ghostty CLI was compiled with. Otherwise the `new-window` command will try + and contact a running Ghostty instance that was configured with the same + `class` as was given on the command line. + + All of the arguments after the `+new-window` argument (except for the + `--class` flag) will be sent to the remote Ghostty instance and will be + parsed as command line flags. These flags will override certain settings + when creating the first surface in the new window. Currently, only + `--working-directory`, `--command`, and `--title` are supported. `-e` will + also work as an alias for `--command`, except that if `-e` is found on the + command line all following arguments will become part of the command and no + more arguments will be parsed for configuration settings. + + If `--working-directory` is found on the command line and is a relative + path (i.e. doesn't start with `/`) it will be resolved to an absolute path + relative to the current working directory that the `ghostty +new-window` + command is run from. `~/` prefixes will also be expanded to the user's home + directory. + + If `--working-directory` is _not_ found on the command line, the working + directory that `ghostty +new-window` is run from will be passed to Ghostty. + + GTK uses an application ID to identify instances of applications. If Ghostty + is compiled with release optimizations, the default application ID will be + `com.mitchellh.ghostty`. If Ghostty is compiled with debug optimizations, + the default application ID will be `com.mitchellh.ghostty-debug`. The + `class` configuration entry can be used to set up a custom application + ID. The class name must follow the requirements defined [in the GTK + documentation](https://docs.gtk.org/gio/type_func.Application.id_is_valid.html) + or it will be ignored and Ghostty will use the default as defined above. + + On GTK, D-Bus activation must be properly configured. Ghostty does not need + to be running for this to open a new window, making it suitable for binding + to keys in your window manager (if other methods for configuring global + shortcuts are unavailable). D-Bus will handle launching a new instance + of Ghostty if it is not already running. See the Ghostty website for + information on properly configuring D-Bus activation. + + Only supported on GTK. + + Flags: + + * `--class=`: If set, open up a new window in a custom instance of + Ghostty. The class must be a valid GTK application ID. + + * `--command`: The command to be executed in the first surface of the new window. + + * `--working-directory=`: The working directory to pass to Ghostty. + + * `--title`: A title that will override the title of the first surface in + the new window. The title override may be edited or removed later. + + * `-e`: Any arguments after this will be interpreted as a command to + execute inside the first surface of the new window instead of the + default command. + + Available since: 1.2.0 + + + +# CONFIGURATION OPTIONS + +**`--language`** + +: Set Ghostty's graphical user interface language to a language other than the + system default language. For example: + + language = de + + will force the strings in Ghostty's graphical user interface to be in German + rather than the system default. + + This will not affect the language used by programs run _within_ Ghostty. + Those will continue to use the default system language. There are also many + non-GUI elements in Ghostty that are not translated - this setting will have + no effect on those. + + Warning: This setting cannot be reloaded at runtime. To change the language + you must fully restart Ghostty. + + GTK only. + Available since 1.3.0. + + +**`--font-family`** + +: The font families to use. + + You can generate the list of valid values using the CLI: + + ghostty +list-fonts + + This configuration can be repeated multiple times to specify preferred + fallback fonts when the requested codepoint is not available in the primary + font. This is particularly useful for multiple languages, symbolic fonts, + etc. + + Notes on emoji specifically: On macOS, Ghostty by default will always use + Apple Color Emoji and on Linux will always use Noto Emoji. You can + override this behavior by specifying a font family here that contains + emoji glyphs. + + The specific styles (bold, italic, bold italic) do not need to be + explicitly set. If a style is not set, then the regular style (font-family) + will be searched for stylistic variants. If a stylistic variant is not + found, Ghostty will use the regular style. This prevents falling back to a + different font family just to get a style such as bold. This also applies + if you explicitly specify a font family for a style. For example, if you + set `font-family-bold = FooBar` and "FooBar" cannot be found, Ghostty will + use whatever font is set for `font-family` for the bold style. + + Finally, some styles may be synthesized if they are not supported. + For example, if a font does not have an italic style and no alternative + italic font is specified, Ghostty will synthesize an italic style by + applying a slant to the regular style. If you want to disable these + synthesized styles then you can use the `font-style` configurations + as documented below. + + You can disable styles completely by using the `font-style` set of + configurations. See the documentation for `font-style` for more information. + + If you want to overwrite a previous set value rather than append a fallback, + specify the value as `""` (empty string) to reset the list and then set the + new values. For example: + + font-family = "" + font-family = "My Favorite Font" + + Setting any of these as CLI arguments will automatically clear the + values set in configuration files so you don't need to specify + `--font-family=""` before setting a new value. You only need to specify + this within config files if you want to clear previously set values in + configuration files or on the CLI if you want to clear values set on the + CLI. + + +**`--font-family-bold`** + +**`--font-family-italic`** + +**`--font-family-bold-italic`** + +**`--font-style`** + +: The named font style to use for each of the requested terminal font styles. + This looks up the style based on the font style string advertised by the + font itself. For example, "Iosevka Heavy" has a style of "Heavy". + + You can also use these fields to completely disable a font style. If you set + the value of the configuration below to literal `false` then that font style + will be disabled. If the running program in the terminal requests a disabled + font style, the regular font style will be used instead. + + These are only valid if its corresponding font-family is also specified. If + no font-family is specified, then the font-style is ignored unless you're + disabling the font style. + + +**`--font-style-bold`** + +**`--font-style-italic`** + +**`--font-style-bold-italic`** + +**`--font-synthetic-style`** + +: Control whether Ghostty should synthesize a style if the requested style is + not available in the specified font-family. + + Ghostty can synthesize bold, italic, and bold italic styles if the font + does not have a specific style. For bold, this is done by drawing an + outline around the glyph of varying thickness. For italic, this is done by + applying a slant to the glyph. For bold italic, both of these are applied. + + Synthetic styles are not perfect and will generally not look as good + as a font that has the style natively. However, they are useful to + provide styled text when the font does not have the style. + + Set this to "false" or "true" to disable or enable synthetic styles + completely. You can disable specific styles using "no-bold", "no-italic", + and "no-bold-italic". You can disable multiple styles by separating them + with a comma. For example, "no-bold,no-italic". + + Available style keys are: `bold`, `italic`, `bold-italic`. + + If synthetic styles are disabled, then the regular style will be used + instead if the requested style is not available. If the font has the + requested style, then the font will be used as-is since the style is + not synthetic. + + Warning: An easy mistake is to disable `bold` or `italic` but not + `bold-italic`. Disabling only `bold` or `italic` will NOT disable either + in the `bold-italic` style. If you want to disable `bold-italic`, you must + explicitly disable it. You cannot partially disable `bold-italic`. + + By default, synthetic styles are enabled. + + +**`--font-feature`** + +: Apply a font feature. To enable multiple font features you can repeat + this multiple times or use a comma-separated list of feature settings. + + The syntax for feature settings is as follows, where `feat` is a feature: + + * Enable features with e.g. `feat`, `+feat`, `feat on`, `feat=1`. + * Disabled features with e.g. `-feat`, `feat off`, `feat=0`. + * Set a feature value with e.g. `feat=2`, `feat = 3`, `feat 4`. + * Feature names may be wrapped in quotes, meaning this config should be + syntactically compatible with the `font-feature-settings` CSS property. + + The syntax is fairly loose, but invalid settings will be silently ignored. + + The font feature will apply to all fonts rendered by Ghostty. A future + enhancement will allow targeting specific faces. + + To disable programming ligatures, use `-calt` since this is the typical + feature name for programming ligatures. To look into what font features + your font has and what they do, use a font inspection tool such as + [fontdrop.info](https://fontdrop.info). + + To generally disable most ligatures, use `-calt, -liga, -dlig`. + + +**`--font-size`** + +: Font size in points. This value can be a non-integer and the nearest integer + pixel size will be selected. If you have a high dpi display where 1pt = 2px + then you can get an odd numbered pixel size by specifying a half point. + + For example, 13.5pt @ 2px/pt = 27px + + Changing this configuration at runtime will only affect existing + terminals that have NOT manually adjusted their font size in some way + (e.g. increased or decreased the font size). Terminals that have manually + adjusted their font size will retain their manually adjusted size. + Otherwise, the font size of existing terminals will be updated on + reload. + + On Linux with GTK, font size is scaled according to both display-wide and + text-specific scaling factors, which are often managed by your desktop + environment (e.g. the GNOME display scale and large text settings). + + +**`--font-variation`** + +: A repeatable configuration to set one or more font variations values for + a variable font. A variable font is a single font, usually with a filename + ending in `-VF.ttf` or `-VF.otf` that contains one or more configurable axes + for things such as weight, slant, etc. Not all fonts support variations; + only fonts that explicitly state they are variable fonts will work. + + The format of this is `id=value` where `id` is the axis identifier. An axis + identifier is always a 4 character string, such as `wght`. To get the list + of supported axes, look at your font documentation or use a font inspection + tool. + + Invalid ids and values are usually ignored. For example, if a font only + supports weights from 100 to 700, setting `wght=800` will do nothing (it + will not be clamped to 700). You must consult your font's documentation to + see what values are supported. + + Common axes are: `wght` (weight), `slnt` (slant), `ital` (italic), `opsz` + (optical size), `wdth` (width), `GRAD` (gradient), etc. + + +**`--font-variation-bold`** + +**`--font-variation-italic`** + +**`--font-variation-bold-italic`** + +**`--font-codepoint-map`** + +: Force one or a range of Unicode codepoints to map to a specific named font. + This is useful if you want to support special symbols or if you want to use + specific glyphs that render better for your specific font. + + The syntax is `codepoint=fontname` where `codepoint` is either a single + codepoint or a range. Codepoints must be specified as full Unicode + hex values, such as `U+ABCD`. Codepoints ranges are specified as + `U+ABCD-U+DEFG`. You can specify multiple ranges for the same font separated + by commas, such as `U+ABCD-U+DEFG,U+1234-U+5678=fontname`. The font name is + the same value as you would use for `font-family`. + + This configuration can be repeated multiple times to specify multiple + codepoint mappings. + + Changing this configuration at runtime will only affect new terminals, + i.e. new windows, tabs, etc. + + +**`--clipboard-codepoint-map`** + +: Map specific Unicode codepoints to replacement values when copying text + to clipboard. + + This configuration allows you to replace specific Unicode characters with + other characters or strings when copying terminal content to the clipboard. + This is useful for converting special terminal symbols to more compatible + characters for pasting into other applications. + + The syntax is similar to `font-codepoint-map`: + - Single codepoint: `U+1234=U+ABCD` or `U+1234=replacement_text` + - Codepoint range: `U+1234-U+5678=U+ABCD` + + Examples: + - `clipboard-codepoint-map = U+2500=U+002D` (box drawing horizontal → hyphen) + - `clipboard-codepoint-map = U+2502=U+007C` (box drawing vertical → pipe) + - `clipboard-codepoint-map = U+03A3=SUM` (Greek sigma → "SUM") + + This configuration can be repeated multiple times to specify multiple + mappings. Later entries take priority over earlier ones for overlapping + ranges. + + Note: This only applies to text copying operations, not URL copying. + + +**`--font-thicken`** + +: Draw fonts with a thicker stroke, if supported. + This is currently only supported on macOS. + + +**`--font-thicken-strength`** + +: Strength of thickening when `font-thicken` is enabled. + + Valid values are integers between `0` and `255`. `0` does not correspond to + *no* thickening, rather it corresponds to the lightest available thickening. + + Has no effect when `font-thicken` is set to `false`. + + This is currently only supported on macOS. + + +**`--font-shaping-break`** + +: Locations to break font shaping into multiple runs. + + A "run" is a contiguous segment of text that is shaped together. "Shaping" + is the process of converting text (codepoints) into glyphs (renderable + characters). This is how ligatures are formed, among other things. + For example, if a coding font turns "!=" into a single glyph, then it + must see "!" and "=" next to each other in a single run. When a run + is broken, the text is shaped separately. To continue our example, if + "!" is at the end of one run and "=" is at the start of the next run, + then the ligature will not be formed. + + Ghostty breaks runs at certain points to improve readability or usability. + For example, Ghostty by default will break runs under the cursor so that + text editing can see the individual characters rather than a ligature. + This configuration lets you configure this behavior. + + Combine values with a comma to set multiple options. Prefix an + option with "no-" to disable it. Enabling and disabling options + can be done at the same time. + + Available options: + + * `cursor` - Break runs under the cursor. + + Available since: 1.2.0 + + +**`--alpha-blending`** + +: What color space to use when performing alpha blending. + + This affects the appearance of text and of any images with transparency. + Additionally, custom shaders will receive colors in the configured space. + + On macOS the default is `native`, on all other platforms the default is + `linear-corrected`. + + Valid values: + + * `native` - Perform alpha blending in the native color space for the OS. + On macOS this corresponds to Display P3, and on Linux it's sRGB. + + * `linear` - Perform alpha blending in linear space. This will eliminate + the darkening artifacts around the edges of text that are very visible + when certain color combinations are used (e.g. red / green), but makes + dark text look much thinner than normal and light text much thicker. + This is also sometimes known as "gamma correction". + + * `linear-corrected` - Same as `linear`, but with a correction step applied + for text that makes it look nearly or completely identical to `native`, + but without any of the darkening artifacts. + + Available since: 1.1.0 + + +**`--adjust-cell-width`** + +: All of the configurations behavior adjust various metrics determined by the + font. The values can be integers (1, -1, etc.) or a percentage (20%, -15%, + etc.). In each case, the values represent the amount to change the original + value. + + For example, a value of `1` increases the value by 1; it does not set it to + literally 1. A value of `20%` increases the value by 20%. And so on. + + There is little to no validation on these values so the wrong values (e.g. + `-100%`) can cause the terminal to be unusable. Use with caution and reason. + + Some values are clamped to minimum or maximum values. This can make it + appear that certain values are ignored. For example, many `*-thickness` + adjustments cannot go below 1px. + + `adjust-cell-height` has some additional behaviors to describe: + + * The font will be centered vertically in the cell. + + * The cursor will remain the same size as the font, but may be + adjusted separately with `adjust-cursor-height`. + + * Powerline glyphs will be adjusted along with the cell height so + that things like status lines continue to look aligned. + + +**`--adjust-cell-height`** + +**`--adjust-font-baseline`** + +: Distance in pixels or percentage adjustment from the bottom of the cell to the text baseline. + Increase to move baseline UP, decrease to move baseline DOWN. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-underline-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the underline. + Increase to move underline DOWN, decrease to move underline UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-underline-thickness`** + +: Thickness in pixels of the underline. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-strikethrough-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the strikethrough. + Increase to move strikethrough DOWN, decrease to move strikethrough UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-strikethrough-thickness`** + +: Thickness in pixels or percentage adjustment of the strikethrough. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-overline-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the overline. + Increase to move overline DOWN, decrease to move overline UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-overline-thickness`** + +: Thickness in pixels or percentage adjustment of the overline. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-cursor-thickness`** + +: Thickness in pixels or percentage adjustment of the bar cursor and outlined rect cursor. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-cursor-height`** + +: Height in pixels or percentage adjustment of the cursor. Currently applies to all cursor types: + bar, rect, and outlined rect. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-box-thickness`** + +: Thickness in pixels or percentage adjustment of box drawing characters. + See the notes about adjustments in `adjust-cell-width`. + + +**`--adjust-icon-height`** + +: Height in pixels or percentage adjustment of maximum height for nerd font icons. + + A positive (negative) value will increase (decrease) the maximum icon + height. This may not affect all icons equally: the effect depends on whether + the default size of the icon is height-constrained, which in turn depends on + the aspect ratio of both the icon and your primary font. + + Certain icons designed for box drawing and terminal graphics, such as + Powerline symbols, are not affected by this option. + + See the notes about adjustments in `adjust-cell-width`. + + Available in: 1.2.0 + + +**`--grapheme-width-method`** + +: The method to use for calculating the cell width of a grapheme cluster. + The default value is `unicode` which uses the Unicode standard to determine + grapheme width. This results in correct grapheme width but may result in + cursor-desync issues with some programs (such as shells) that may use a + legacy method such as `wcswidth`. + + Valid values are: + + * `legacy` - Use a legacy method to determine grapheme width, such as + wcswidth This maximizes compatibility with legacy programs but may result + in incorrect grapheme width for certain graphemes such as skin-tone + emoji, non-English characters, etc. + + This is called "legacy" and not something more specific because the + behavior is undefined and we want to retain the ability to modify it. + For example, we may or may not use libc `wcswidth` now or in the future. + + * `unicode` - Use the Unicode standard to determine grapheme width. + + If a running program explicitly enables terminal mode 2027, then `unicode` + width will be forced regardless of this configuration. When mode 2027 is + reset, this configuration will be used again. + + This configuration can be changed at runtime but will not affect existing + terminals. Only new terminals will use the new configuration. + + +**`--freetype-load-flags`** + +: FreeType load flags to enable. The format of this is a list of flags to + enable separated by commas. If you prefix a flag with `no-` then it is + disabled. If you omit a flag, its default value is used, so you must + explicitly disable flags you don't want. You can also use `true` or `false` + to turn all flags on or off. + + This configuration only applies to Ghostty builds that use FreeType. + This is usually the case only for Linux builds. macOS uses CoreText + and does not have an equivalent configuration. + + Available flags: + + * `hinting` - Enable or disable hinting. Enabled by default. + + * `force-autohint` - Always use the freetype auto-hinter instead of + the font's native hinter. Disabled by default. + + * `monochrome` - Instructs renderer to use 1-bit monochrome rendering. + This will disable anti-aliasing, and probably not look very good unless + you're using a pixel font. Disabled by default. + + * `autohint` - Enable the freetype auto-hinter. Enabled by default. + + * `light` - Use a light hinting style, better preserving glyph shapes. + This is the most common setting in GTK apps and therefore also Ghostty's + default. This has no effect if `monochrome` is enabled. Enabled by + default. + + Example: `hinting`, `no-hinting`, `force-autohint`, `no-force-autohint` + + +**`--theme`** + +: A theme to use. This can be a built-in theme name, a custom theme + name, or an absolute path to a custom theme file. Ghostty also supports + specifying a different theme to use for light and dark mode. Each + option is documented below. + + If the theme is an absolute pathname, Ghostty will attempt to load that + file as a theme. If that file does not exist or is inaccessible, an error + will be logged and no other directories will be searched. + + If the theme is not an absolute pathname, two different directories will be + searched for a file name that matches the theme. This is case sensitive on + systems with case-sensitive filesystems. It is an error for a theme name to + include path separators unless it is an absolute pathname. + + The first directory is the `themes` subdirectory of your Ghostty + configuration directory. This is `$XDG_CONFIG_HOME/ghostty/themes` or + `~/.config/ghostty/themes`. + + The second directory is the `themes` subdirectory of the Ghostty resources + directory. Ghostty ships with a multitude of themes that will be installed + into this directory. On macOS, this list is in the + `Ghostty.app/Contents/Resources/ghostty/themes` directory. On Linux, this + list is in the `share/ghostty/themes` directory (wherever you installed the + Ghostty "share" directory. + + To see a list of available themes, run `ghostty +list-themes`. + + A theme file is simply another Ghostty configuration file. They share + the same syntax and same configuration options. A theme can set any valid + configuration option so please do not use a theme file from an untrusted + source. The built-in themes are audited to only set safe configuration + options. + + Some options cannot be set within theme files. The reason these are not + supported should be self-evident. A theme file cannot set `theme` or + `config-file`. At the time of writing this, Ghostty will not show any + warnings or errors if you set these options in a theme file but they will + be silently ignored. + + Any additional colors specified via background, foreground, palette, etc. + will override the colors specified in the theme. + + To specify a different theme for light and dark mode, use the following + syntax: `light:theme-name,dark:theme-name`. For example: + `light:Rose Pine Dawn,dark:Rose Pine`. Whitespace around all values are + trimmed and order of light and dark does not matter. Both light and dark + must be specified in this form. In this form, the theme used will be + based on the current desktop environment theme. + + There are some known bugs with light/dark mode theming. These will + be fixed in a future update: + + - macOS: titlebar tabs style is not updated when switching themes. + + +**`--background`** + +: Background color for the window. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--foreground`** + +: Foreground color for the window. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--background-image`** + +: Background image for the terminal. + + This should be a path to a PNG or JPEG file, other image formats are + not yet supported. + + The background image is currently per-terminal, not per-window. If + you are a heavy split user, the background image will be repeated across + splits. A future improvement to Ghostty will address this. + + WARNING: Background images are currently duplicated in VRAM per-terminal. + For sufficiently large images, this could lead to a large increase in + memory usage (specifically VRAM usage). A future Ghostty improvement + will resolve this by sharing image textures across terminals. + + Available since: 1.2.0 + + +**`--background-image-opacity`** + +: Background image opacity. + + This is relative to the value of `background-opacity`. + + A value of `1.0` (the default) will result in the background image being + placed on top of the general background color, and then the combined result + will be adjusted to the opacity specified by `background-opacity`. + + A value less than `1.0` will result in the background image being mixed + with the general background color before the combined result is adjusted + to the configured `background-opacity`. + + A value greater than `1.0` will result in the background image having a + higher opacity than the general background color. For instance, if the + configured `background-opacity` is `0.5` and `background-image-opacity` + is set to `1.5`, then the final opacity of the background image will be + `0.5 * 1.5 = 0.75`. + + Available since: 1.2.0 + + +**`--background-image-position`** + +: Background image position. + + Valid values are: + * `top-left` + * `top-center` + * `top-right` + * `center-left` + * `center` + * `center-right` + * `bottom-left` + * `bottom-center` + * `bottom-right` + + The default value is `center`. + + Available since: 1.2.0 + + +**`--background-image-fit`** + +: Background image fit. + + Valid values are: + + * `contain` + + Preserving the aspect ratio, scale the background image to the largest + size that can still be contained within the terminal, so that the whole + image is visible. + + * `cover` + + Preserving the aspect ratio, scale the background image to the smallest + size that can completely cover the terminal. This may result in one or + more edges of the image being clipped by the edge of the terminal. + + * `stretch` + + Stretch the background image to the full size of the terminal, without + preserving the aspect ratio. + + * `none` + + Don't scale the background image. + + The default value is `contain`. + + Available since: 1.2.0 + + +**`--background-image-repeat`** + +: Whether to repeat the background image or not. + + If this is set to true, the background image will be repeated if there + would otherwise be blank space around it because it doesn't completely + fill the terminal area. + + The default value is `false`. + + Available since: 1.2.0 + + +**`--selection-foreground`** + +: The foreground and background color for selection. If this is not set, then + the selection color is just the inverted window background and foreground + (note: not to be confused with the cell bg/fg). + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + Since version 1.2.0, this can also be set to `cell-foreground` to match + the cell foreground color, or `cell-background` to match the cell + background color. + + +**`--selection-background`** + +**`--selection-clear-on-typing`** + +: Whether to clear selected text when typing. This defaults to `true`. + This is typical behavior for most terminal emulators as well as + text input fields. If you set this to `false`, then the selected text + will not be cleared when typing. + + "Typing" is specifically defined as any non-modifier (shift, control, + alt, etc.) keypress that produces data to be sent to the application + running within the terminal (e.g. the shell). Additionally, selection + is cleared when any preedit or composition state is started (e.g. + when typing languages such as Japanese). + + If this is `false`, then the selection can still be manually + cleared by clicking once or by pressing `escape`. + + Available since: 1.2.0 + + +**`--selection-clear-on-copy`** + +: Whether to clear selected text after copying. This defaults to `false`. + + When set to `true`, the selection will be automatically cleared after + any copy operation that invokes the `copy_to_clipboard` keyboard binding. + Importantly, this will not clear the selection if the copy operation + was invoked via `copy-on-select`. + + When set to `false`, the selection remains visible after copying, allowing + to see what was copied and potentially perform additional operations + on the same selection. + + +**`--selection-word-chars`** + +: Characters that mark word boundaries during text selection operations such + as double-clicking. When selecting a word, the selection will stop at any + of these characters. + + This is similar to the `WORDCHARS` environment variable in zsh, except this + specifies the boundary characters rather than the word characters. The + default includes common delimiters and punctuation that typically separate + words in code and prose. + + Each character in this string becomes a word boundary. Multi-byte UTF-8 + characters are supported, but only single codepoints can be specified. + Multi-codepoint sequences (e.g. emoji) are not supported. + + The null character (U+0000) is always treated as a boundary and does not + need to be included in this configuration. + + Default: `` \t'"│`|:;,()[]{}<>$ `` + + To add or remove specific characters, you can set this to a custom value. + For example, to treat semicolons as part of words: + + selection-word-chars = " \t'\"│`|:,()[]{}<>$" + + Available since: 1.3.0 + + +**`--minimum-contrast`** + +: The minimum contrast ratio between the foreground and background colors. + The contrast ratio is a value between 1 and 21. A value of 1 allows for no + contrast (e.g. black on black). This value is the contrast ratio as defined + by the [WCAG 2.0 specification](https://www.w3.org/TR/WCAG20/). + + If you want to avoid invisible text (same color as background), a value of + 1.1 is a good value. If you want to avoid text that is difficult to read, a + value of 3 or higher is a good value. The higher the value, the more likely + that text will become black or white. + + This value does not apply to Emoji or images. + + +**`--palette`** + +: Color palette for the 256 color form that many terminal applications use. + The syntax of this configuration is `N=COLOR` where `N` is 0 to 255 (for + the 256 colors in the terminal color table) and `COLOR` is a typical RGB + color code such as `#AABBCC` or `AABBCC`, or a named X11 color. For example, + `palette = 5=#BB78D9` will set the 'purple' color. + + The palette index can be in decimal, binary, octal, or hexadecimal. + Decimal is assumed unless a prefix is used: `0b` for binary, `0o` for octal, + and `0x` for hexadecimal. + + For definitions on the color indices and what they canonically map to, + [see this cheat sheet](https://www.ditig.com/256-colors-cheat-sheet). + + For most themes, you only need to set the first 16 colors (0–15) since the + rest of the palette (16–255) will be automatically generated by + default (see `palette-generate` for more details). + + +**`--palette-generate`** + +: Whether to automatically generate the extended 256 color palette + (indices 16–255) from the base 16 ANSI colors. + + This lets theme authors specify only the base 16 colors and have the + rest of the palette be automatically generated in a consistent and + aesthetic way. + + When enabled, the 6×6×6 color cube and 24-step grayscale ramp are + derived from interpolations of the base palette, giving a more cohesive + look. Colors that have been explicitly set via `palette` are never + overwritten. + + The default value is false (disabled), because many legacy programs + using the 256-color palette hardcode assumptions about what these + colors are (mostly assuming the xterm 256 color palette). However, this + is still a very useful tool for theme authors and users who want + to customize their palette without having to specify all 256 colors. + + For more information on how the generation works, see here: + https://gist.github.com/jake-stewart/0a8ea46159a7da2c808e5be2177e1783 + + Available since: 1.3.0 + + +**`--palette-harmonious`** + +: Invert the palette colors generated when `palette-generate` is enabled, + so that the colors go in reverse order. This allows palette-based + applications to work well in both light and dark mode since the + palettes are always relatively good colors. + + This defaults to off because some legacy terminal applications + hardcode the assumption that palette indices 16–231 are ordered from + darkest to lightest, so enabling this would make them unreadable. + This is not a generally good assumption and we encourage modern + terminal applications to use the indices in a more semantic way. + + This has no effect if `palette-generate` is disabled. + + For more information see `palette-generate`. + + Available since: 1.3.0 + + +**`--cursor-color`** + +: The color of the cursor. If this is not set, a default will be chosen. + + Direct colors can be specified as either hex (`#RRGGBB` or `RRGGBB`) + or a named X11 color. + + Additionally, special values can be used to set the color to match + other colors at runtime: + + * `cell-foreground` - Match the cell foreground color. + (Available since: 1.2.0) + + * `cell-background` - Match the cell background color. + (Available since: 1.2.0) + + +**`--cursor-opacity`** + +: The opacity level (opposite of transparency) of the cursor. A value of 1 + is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. Note that a + sufficiently small value such as 0.3 may be effectively invisible and may + make it difficult to find the cursor. + + +**`--cursor-style`** + +: The style of the cursor. This sets the default style. A running program can + still request an explicit cursor style using escape sequences (such as `CSI + q`). Shell configurations will often request specific cursor styles. + + Note that shell integration will automatically set the cursor to a bar at + a prompt, regardless of this configuration. You can disable that behavior + by specifying `shell-integration-features = no-cursor` or disabling shell + integration entirely. + + Valid values are: + + * `block` + * `bar` + * `underline` + * `block_hollow` + + +**`--cursor-style-blink`** + +: Sets the default blinking state of the cursor. This is just the default + state; running programs may override the cursor style using `DECSCUSR` (`CSI + q`). + + If this is not set, the cursor blinks by default. Note that this is not the + same as a "true" value, as noted below. + + If this is not set at all (`null`), then Ghostty will respect DEC Mode 12 + (AT&T cursor blink) as an alternate approach to turning blinking on/off. If + this is set to any value other than null, DEC mode 12 will be ignored but + `DECSCUSR` will still be respected. + + Valid values are: + + * ` ` (blank) + * `true` + * `false` + + +**`--cursor-text`** + +: The color of the text under the cursor. If this is not set, a default will + be chosen. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + Since version 1.2.0, this can also be set to `cell-foreground` to match + the cell foreground color, or `cell-background` to match the cell + background color. + + +**`--cursor-click-to-move`** + +: Enables the ability to move the cursor at prompts by clicking on a + location in the prompt text. + + This feature requires shell integration, specifically prompt marking + via `OSC 133`. Some shells like Fish (v4) and Nu (0.111+) natively + support this while others may require additional configuration or + Ghostty's shell integration features to be enabled. + + Depending on the shell, this works either by translating your click + position into a series of synthetic arrow key movements or by sending + a click event directly to the shell. In either case, some unexpected + behavior around edge cases is possible. + + +**`--mouse-hide-while-typing`** + +: Hide the mouse immediately when typing. The mouse becomes visible again + when the mouse is used (button, movement, etc.). Platform-specific behavior + may dictate other scenarios where the mouse is shown. For example on macOS, + the mouse is shown again when a new window, tab, or split is created. + + +**`--scroll-to-bottom`** + +: When to scroll the surface to the bottom. The format of this is a list of + options to enable separated by commas. If you prefix an option with `no-` + then it is disabled. If you omit an option, its default value is used. + + Available options: + + - `keystroke` If set, scroll the surface to the bottom when the user + presses a key that results in data being sent to the PTY (basically + anything but modifiers or keybinds that are processed by Ghostty). + + - `output` If set, scroll the surface to the bottom if there is new data + to display (e.g., when new lines are printed to the terminal). + + The default is `keystroke, no-output`. + + +**`--mouse-shift-capture`** + +: Determines whether running programs can detect the shift key pressed with a + mouse click. Typically, the shift key is used to extend mouse selection. + + The default value of `false` means that the shift key is not sent with + the mouse protocol and will extend the selection. This value can be + conditionally overridden by the running program with the `XTSHIFTESCAPE` + sequence. + + The value `true` means that the shift key is sent with the mouse protocol + but the running program can override this behavior with `XTSHIFTESCAPE`. + + The value `never` is the same as `false` but the running program cannot + override this behavior with `XTSHIFTESCAPE`. The value `always` is the + same as `true` but the running program cannot override this behavior with + `XTSHIFTESCAPE`. + + If you always want shift to extend mouse selection even if the program + requests otherwise, set this to `never`. + + Valid values are: + + * `true` + * `false` + * `always` + * `never` + + +**`--mouse-reporting`** + +: Enable or disable mouse reporting. When set to `false`, mouse events will + not be reported to terminal applications even if they request it. This + allows you to always use the mouse for selection and other terminal UI + interactions without applications capturing mouse input. + + When set to `true` (the default), terminal applications can request mouse + reporting and will receive mouse events according to their requested mode. + + This can be toggled at runtime using the `toggle_mouse_reporting` keybind + action. + + +**`--mouse-scroll-multiplier`** + +: Multiplier for scrolling distance with the mouse wheel. + + A prefix of `precision:` or `discrete:` can be used to set the multiplier + only for scrolling with the specific type of devices. These can be + comma-separated to set both types of multipliers at the same time, e.g. + `precision:0.1,discrete:3`. If no prefix is used, the multiplier applies + to all scrolling devices. Specifying a prefix was introduced in Ghostty + 1.2.1. + + The value will be clamped to [0.01, 10,000]. Both of these are extreme + and you're likely to have a bad experience if you set either extreme. + + The default value is "3" for discrete devices and "1" for precision devices. + + +**`--background-opacity`** + +: The opacity level (opposite of transparency) of the background. A value of + 1 is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. + + On macOS, background opacity is disabled when the terminal enters native + fullscreen. This is because the background becomes gray and it can cause + widgets to show through which isn't generally desirable. + + On macOS, changing this configuration requires restarting Ghostty completely. + + +**`--background-opacity-cells`** + +: Applies background opacity to cells with an explicit background color + set. + + Normally, `background-opacity` is only applied to the window background. + If a cell has an explicit background color set, such as red, then that + background color will be fully opaque. An effect of this is that some + terminal applications that repaint the background color of the terminal + such as a Neovim and Tmux may not respect the `background-opacity` + (by design). + + Setting this to `true` will apply the `background-opacity` to all cells + regardless of whether they have an explicit background color set or not. + + Available since: 1.2.0 + + +**`--background-blur`** + +: Whether to blur the background when `background-opacity` is less than 1. + + Valid values are: + + * a nonnegative integer specifying the *blur intensity* + * `false`, equivalent to a blur intensity of 0 + * `true`, equivalent to the default blur intensity of 20, which is + reasonable for a good looking blur. Higher blur intensities may + cause strange rendering and performance issues. + + On macOS 26.0 and later, there are additional special values that + can be set to use the native macOS glass effects: + + * `macos-glass-regular` - Standard glass effect with some opacity + * `macos-glass-clear` - Highly transparent glass effect + + If the macOS values are set, then this implies `background-blur = true` + on non-macOS platforms. + + Supported on macOS and on some Linux desktop environments, including: + + * KDE Plasma (Wayland and X11) + + Warning: the exact blur intensity is _ignored_ under KDE Plasma, and setting + this setting to either `true` or any positive blur intensity value would + achieve the same effect. The reason is that KWin, the window compositor + powering Plasma, only has one global blur setting and does not allow + applications to specify individual blur settings. + + To configure KWin's global blur setting, open System Settings and go to + "Apps & Windows" > "Window Management" > "Desktop Effects" and select the + "Blur" plugin. If disabled, enable it by ticking the checkbox to the left. + Then click on the "Configure" button and there will be two sliders that + allow you to set background blur and noise intensities for all apps, + including Ghostty. + + All other Linux desktop environments are as of now unsupported. Users may + need to set environment-specific settings and/or install third-party plugins + in order to support background blur, as there isn't a unified interface for + doing so. + + +**`--unfocused-split-opacity`** + +: The opacity level (opposite of transparency) of an unfocused split. + Unfocused splits by default are slightly faded out to make it easier to see + which split is focused. To disable this feature, set this value to 1. + + A value of 1 is fully opaque and a value of 0 is fully transparent. Because + "0" is not useful (it makes the window look very weird), the minimum value + is 0.15. This value still looks weird but you can at least see what's going + on. A value outside of the range 0.15 to 1 will be clamped to the nearest + valid value. + + +**`--unfocused-split-fill`** + +: The color to dim the unfocused split. Unfocused splits are dimmed by + rendering a semi-transparent rectangle over the split. This sets the color of + that rectangle and can be used to carefully control the dimming effect. + + This will default to the background color. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--split-divider-color`** + +: The color of the split divider. If this is not set, a default will be chosen. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + Available since: 1.1.0 + + +**`--split-preserve-zoom`** + +: Control when Ghostty preserves a zoomed split. Under normal circumstances, + any operation that changes focus or layout of the split tree in a window + will unzoom any zoomed split. This configuration allows you to control + this behavior. + + This can be set to `navigation` to preserve the zoomed split state + when navigating to another split (e.g. via `goto_split`). This will + change the zoomed split to the newly focused split instead of unzooming. + + Any options can also be prefixed with `no-` to disable that option. + + Example: `split-preserve-zoom = navigation` + + Available since: 1.3.0 + + +**`--search-foreground`** + +: The foreground and background color for search matches. This only applies + to non-focused search matches, also known as candidate matches. + + Valid values: + + - Hex (`#RRGGBB` or `RRGGBB`) + - Named X11 color + - "cell-foreground" to match the cell foreground color + - "cell-background" to match the cell background color + + The default value is black text on a golden yellow background. + + +**`--search-background`** + +**`--search-selected-foreground`** + +: The foreground and background color for the currently selected search match. + This is the focused match that will be jumped to when using next/previous + search navigation. + + Valid values: + + - Hex (`#RRGGBB` or `RRGGBB`) + - Named X11 color + - "cell-foreground" to match the cell foreground color + - "cell-background" to match the cell background color + + The default value is black text on a soft peach background. + + +**`--search-selected-background`** + +**`--command`** + +: The command to run, usually a shell. If this is not an absolute path, it'll + be looked up in the `PATH`. If this is not set, a default will be looked up + from your system. The rules for the default lookup are: + + * `SHELL` environment variable + + * `passwd` entry (user information) + + This can contain additional arguments to run the command with. If additional + arguments are provided, the command will be executed using `/bin/sh -c` + to offload shell argument expansion. + + To avoid shell expansion altogether, prefix the command with `direct:`, e.g. + `direct:nvim foo`. This will avoid the roundtrip to `/bin/sh` but will also + not support any shell parsing such as arguments with spaces, filepaths with + `~`, globs, etc. (Available since: 1.2.0) + + You can also explicitly prefix the command with `shell:` to always wrap the + command in a shell. This can be used to ensure our heuristics to choose the + right mode are not used in case they are wrong. (Available since: 1.2.0) + + This command will be used for all new terminal surfaces, i.e. new windows, + tabs, etc. If you want to run a command only for the first terminal surface + created when Ghostty starts, use the `initial-command` configuration. + + Ghostty supports the common `-e` flag for executing a command with + arguments. For example, `ghostty -e fish --with --custom --args`. + This flag sets the `initial-command` configuration, see that for more + information. + + +**`--initial-command`** + +: This is the same as "command", but only applies to the first terminal + surface created when Ghostty starts. Subsequent terminal surfaces will use + the `command` configuration. + + After the first terminal surface is created (or closed), there is no + way to run this initial command again automatically. As such, setting + this at runtime works but will only affect the next terminal surface + if it is the first one ever created. + + If you're using the `ghostty` CLI there is also a shortcut to set this + with arguments directly: you can use the `-e` flag. For example: `ghostty -e + fish --with --custom --args`. The `-e` flag automatically forces some + other behaviors as well: + + * Disables shell expansion since the input is expected to already + be shell-expanded by the upstream (e.g. the shell used to type in + the `ghostty -e` command). + + * `gtk-single-instance=false` - This ensures that a new instance is + launched and the CLI args are respected. + + * `quit-after-last-window-closed=true` - This ensures that the Ghostty + process will exit when the command exits. Additionally, the + `quit-after-last-window-closed-delay` is unset. + + * `shell-integration=detect` (if not `none`) - This prevents forcibly + injecting any configured shell integration into the command's + environment. With `-e` its highly unlikely that you're executing a + shell and forced shell integration is likely to cause problems + (e.g. by wrapping your command in a shell, setting env vars, etc.). + This is a safety measure to prevent unexpected behavior. If you want + shell integration with a `-e`-executed command, you must either + name your binary appropriately or source the shell integration script + manually. + + +**`--notify-on-command-finish`** + +: Controls when command finished notifications are sent. There are + three options: + + * `never` - Never send notifications (the default). + * `unfocused` - Only send notifications if the surface that the command is + running in is not focused. + * `always` - Always send notifications. + + Command finished notifications requires that either shell integration is + enabled, or that your shell sends OSC 133 escape sequences to mark the start + and end of commands. + + On GTK, there is a context menu item that will enable command finished + notifications for a single command, overriding the `never` and `unfocused` + options. + + Available since 1.3.0. + + +**`--notify-on-command-finish-action`** + +: If command finished notifications are enabled, this controls how the user is + notified. + + Available options: + + * `bell` - enabled by default + * `notify` - disabled by default + + Options can be combined by listing them as a comma separated list. Options + can be negated by prefixing them with `no-`. For example `no-bell,notify`. + + Available since 1.3.0. + + +**`--notify-on-command-finish-after`** + +: If command finished notifications are enabled, this controls how long a + command must have been running before a notification will be sent. The + default is five seconds. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + Available since 1.3.0 + + +**`--env`** + +: Extra environment variables to pass to commands launched in a terminal + surface. The format is `env=KEY=VALUE`. + + `env = foo=bar` + `env = bar=baz` + + Setting `env` to an empty string will reset the entire map to default + (empty). + + `env =` + + Setting a key to an empty string will remove that particular key and + corresponding value from the map. + + `env = foo=bar` + `env = foo=` + + will result in `foo` not being passed to the launched commands. + + Setting a key multiple times will overwrite previous entries. + + `env = foo=bar` + `env = foo=baz` + + will result in `foo=baz` being passed to the launched commands. + + These environment variables will override any existing environment + variables set by Ghostty. For example, if you set `GHOSTTY_RESOURCES_DIR` + then the value you set here will override the value Ghostty typically + automatically injects. + + These environment variables _will not_ be passed to commands run by Ghostty + for other purposes, like `open` or `xdg-open` used to open URLs in your + browser. + + Available since: 1.2.0 + + +**`--input`** + +: Data to send as input to the command on startup. + + The configured `command` will be launched using the typical rules, + then the data specified as this input will be written to the pty + before any other input can be provided. + + The bytes are sent as-is with no additional encoding. Therefore, be + cautious about input that can contain control characters, because this + can be used to execute programs in a shell. + + The format of this value is: + + * `raw:` - Send raw text as-is. This uses Zig string literal + syntax so you can specify control characters and other standard + escapes. + + * `path:` - Read a filepath and send the contents. The path + must be to a file with finite length. e.g. don't use a device + such as `/dev/stdin` or `/dev/urandom` as these will block + terminal startup indefinitely. Files are limited to 10MB + in size to prevent excessive memory usage. If you have files + larger than this you should write a script to read the file + and send it to the terminal. + + If no valid prefix is found, it is assumed to be a `raw:` input. + This is an ergonomic choice to allow you to simply write + `input = "Hello, world!"` (a common case) without needing to prefix + every value with `raw:`. + + This can be repeated multiple times to send more data. The data + is concatenated directly with no separator characters in between + (e.g. no newline). + + If any of the input sources do not exist, then none of the input + will be sent. Input sources are not verified until the terminal + is starting, so missing paths will not show up in config validation. + + Changing this configuration at runtime will only affect new + terminals. + + Available since: 1.2.0 + + +**`--wait-after-command`** + +: If true, keep the terminal open after the command exits. Normally, the + terminal window closes when the running command (such as a shell) exits. + With this true, the terminal window will stay open until any keypress is + received. + + This is primarily useful for scripts or debugging. + + +**`--abnormal-command-exit-runtime`** + +: The number of milliseconds of runtime below which we consider a process exit + to be abnormal. This is used to show an error message when the process exits + too quickly. + + On Linux, this must be paired with a non-zero exit code. On macOS, we allow + any exit code because of the way shell processes are launched via the login + command. + + +**`--scrollback-limit`** + +: The size of the scrollback buffer in bytes. This also includes the active + screen. No matter what this is set to, enough memory will always be + allocated for the visible screen and anything leftover is the limit for + the scrollback. + + When this limit is reached, the oldest lines are removed from the + scrollback. + + Scrollback currently exists completely in memory. This means that the + larger this value, the larger potential memory usage. Scrollback is + allocated lazily up to this limit, so if you set this to a very large + value, it will not immediately consume a lot of memory. + + This size is per terminal surface, not for the entire application. + + It is not currently possible to set an unlimited scrollback buffer. + This is a future planned feature. + + This can be changed at runtime but will only affect new terminal surfaces. + + +**`--scrollbar`** + +: Control when the scrollbar is shown to scroll the scrollback buffer. + + The default value is `system`. + + Valid values: + + * `system` - Respect the system settings for when to show scrollbars. + For example, on macOS, this will respect the "Scrollbar behavior" + system setting which by default usually only shows scrollbars while + actively scrolling or hovering the gutter. + + * `never` - Never show a scrollbar. You can still scroll using the mouse, + keybind actions, etc. but you will not have a visual UI widget showing + a scrollbar. + + +**`--link`** + +: Match a regular expression against the terminal text and associate clicking + it with an action. This can be used to match URLs, file paths, etc. Actions + can be opening using the system opener (e.g. `open` or `xdg-open`) or + executing any arbitrary binding action. + + Links that are configured earlier take precedence over links that are + configured later. + + A default link that matches a URL and opens it in the system opener always + exists. This can be disabled using `link-url`. + + TODO: This can't currently be set! + + +**`--link-url`** + +: Enable URL matching. URLs are matched on hover with control (Linux) or + command (macOS) pressed and open using the default system application for + the linked URL. + + The URL matcher is always lowest priority of any configured links (see + `link`). If you want to customize URL matching, use `link` and disable this. + + +**`--link-previews`** + +: Show link previews for a matched URL. + + When true, link previews are shown for all matched URLs. When false, link + previews are never shown. When set to "osc8", link previews are only shown + for hyperlinks created with the OSC 8 sequence (in this case, the link text + can differ from the link destination). + + Available since: 1.2.0 + + +**`--maximize`** + +: Whether to start the window in a maximized state. This setting applies + to new windows and does not apply to tabs, splits, etc. However, this setting + will apply to all new windows, not just the first one. + + Available since: 1.1.0 + + +**`--fullscreen`** + +: Start new windows in fullscreen. This setting applies to new windows and + does not apply to tabs, splits, etc. However, this setting will apply to all + new windows, not just the first one. + + Allowable values are: + + * `false` - Don't start in fullscreen (default) + * `true` - Start in native fullscreen + * `non-native` - (macOS only) Start in non-native fullscreen, hiding the + menu bar. This is faster than native fullscreen since it doesn't use + animations. On non-macOS platforms, this behaves the same as `true`. + * `non-native-visible-menu` - (macOS only) Start in non-native fullscreen, + keeping the menu bar visible. On non-macOS platforms, behaves like `true`. + * `non-native-padded-notch` - (macOS only) Start in non-native fullscreen, + hiding the menu bar but padding for the notch on applicable devices. + On non-macOS platforms, behaves like `true`. + + Important: tabs DO NOT WORK with non-native fullscreen modes. Non-native + fullscreen removes the titlebar and macOS native tabs require the titlebar. + If you use tabs, use `true` (native) instead. + + On macOS, `true` (native fullscreen) does not work if `window-decoration` + is set to `false`, because native fullscreen on macOS requires window + decorations. + + +**`--title`** + +: The title Ghostty will use for the window. This will force the title of the + window to be this title at all times and Ghostty will ignore any set title + escape sequences programs (such as Neovim) may send. + + If you want a blank title, set this to one or more spaces by quoting + the value. For example, `title = " "`. This effectively hides the title. + This is necessary because setting a blank value resets the title to the + default value of the running program. + + This configuration can be reloaded at runtime. If it is set, the title + will update for all windows. If it is unset, the next title change escape + sequence will be honored but previous changes will not retroactively + be set. This latter case may require you to restart programs such as Neovim + to get the new title. + + +**`--class`** + +: The setting that will change the application class value. + + This controls the class field of the `WM_CLASS` X11 property (when running + under X11), the Wayland application ID (when running under Wayland), and the + bus name that Ghostty uses to connect to DBus. + + Note that changing this value between invocations will create new, separate + instances, of Ghostty when running with `gtk-single-instance=true`. See that + option for more details. + + Changing this value may break launching Ghostty from `.desktop` files, via + DBus activation, or systemd user services as the system is expecting Ghostty + to connect to DBus using the default `class` when it is launched. + + The class name must follow the requirements defined [in the GTK + documentation](https://docs.gtk.org/gio/type_func.Application.id_is_valid.html). + + The default is `com.mitchellh.ghostty`. + + This only affects GTK builds. + + +**`--x11-instance-name`** + +: This controls the instance name field of the `WM_CLASS` X11 property when + running under X11. It has no effect otherwise. + + The default is `ghostty`. + + This only affects GTK builds. + + +**`--working-directory`** + +: The directory to change to after starting the command. + + This setting is secondary to the `window-inherit-working-directory` + setting. If a previous Ghostty terminal exists in the same process, + `window-inherit-working-directory` will take precedence. Otherwise, this + setting will be used. Typically, this setting is used only for the first + window. + + The default is `inherit` except in special scenarios listed next. On macOS, + if Ghostty can detect it is launched from launchd (double-clicked) or + `open`, then it defaults to `home`. On Linux with GTK, if Ghostty can detect + it was launched from a desktop launcher, then it defaults to `home`. + + The value of this must be an absolute path, a path prefixed with `~/` + (the tilde will be expanded to the user's home directory), or + one of the special values below: + + * `home` - The home directory of the executing user. + + * `inherit` - The working directory of the launching process. + + +**`--keybind`** + +: Key bindings. The format is `trigger=action`. Duplicate triggers will + overwrite previously set values. The list of actions is available in + the documentation or using the `ghostty +list-actions` command. + + Trigger: `+`-separated list of keys and modifiers. Example: `ctrl+a`, + `ctrl+shift+b`, `up`. + + If the key is a single Unicode codepoint, the trigger will match + any presses that produce that codepoint. These are impacted by + keyboard layouts. For example, `a` will match the `a` key on a + QWERTY keyboard, but will match the `q` key on a AZERTY keyboard + (assuming US physical layout). + + For Unicode codepoints, matching is done by comparing the set of + modifiers with the unmodified codepoint. The unmodified codepoint is + sometimes called an "unshifted character" in other software, but all + modifiers are considered, not only shift. For example, `ctrl+a` will match + `a` but not `ctrl+shift+a` (which is `A` on a US keyboard). + + Further, codepoint matching is case-insensitive and the unmodified + codepoint is always case folded for comparison. As a result, + `ctrl+A` configured will match when `ctrl+a` is pressed. Note that + this means some key combinations are impossible depending on keyboard + layout. For example, `ctrl+_` is impossible on a US keyboard because + `_` is `shift+-` and `ctrl+shift+-` is not equal to `ctrl+_` (because + the modifiers don't match!). More details on impossible key combinations + can be found at this excellent source written by Qt developers: + https://doc.qt.io/qt-6/qkeysequence.html#keyboard-layout-issues + + Physical key codes can be specified by using any of the key codes + as specified by the [W3C specification](https://www.w3.org/TR/uievents-code/). + For example, `KeyA` will match the physical `a` key on a US standard + keyboard regardless of the keyboard layout. These are case-sensitive. + + For aesthetic reasons, the w3c codes also support snake case. For + example, `key_a` is equivalent to `KeyA`. The only exceptions are + function keys, e.g. `F1` is `f1` (no underscore). This is a consequence + of our internal code using snake case but is purposely supported + and tested so it is safe to use. It allows an all-lowercase binding + which I find more aesthetically pleasing. + + Function keys such as `insert`, `up`, `f5`, etc. are also specified + using the keys as specified by the previously linked W3C specification. + + Physical keys always match with a higher priority than Unicode codepoints, + so if you specify both `a` and `KeyA`, the physical key will always be used + regardless of what order they are configured. + + The special key `catch_all` can be used to match any key that is not + otherwise bound. This can be combined with modifiers, for example + `ctrl+catch_all` will match any key pressed with `ctrl` that is not + otherwise bound. When looking up a binding, Ghostty first tries to match + `catch_all` with modifiers. If no match is found and the event has + modifiers, it falls back to `catch_all` without modifiers. + + Valid modifiers are `shift`, `ctrl` (alias: `control`), `alt` (alias: `opt`, + `option`), and `super` (alias: `cmd`, `command`). You may use the modifier + or the alias. When debugging keybinds, the non-aliased modifier will always + be used in output. + + Note: The fn or "globe" key on keyboards are not supported as a + modifier. This is a limitation of the operating systems and GUI toolkits + that Ghostty uses. + + Some additional notes for triggers: + + * modifiers cannot repeat, `ctrl+ctrl+a` is invalid. + + * modifiers and keys can be in any order, `shift+a+ctrl` is *weird*, + but valid. + + * only a single key input is allowed, `ctrl+a+b` is invalid. + + You may also specify multiple triggers separated by `>` to require a + sequence of triggers to activate the action. For example, + `ctrl+a>n=new_window` will only trigger the `new_window` action if the + user presses `ctrl+a` followed separately by `n`. In other software, this + is sometimes called a leader key, a key chord, a key table, etc. There + is no hardcoded limit on the number of parts in a sequence. + + Warning: If you define a sequence as a CLI argument to `ghostty`, + you probably have to quote the keybind since `>` is a special character + in most shells. Example: ghostty --keybind='ctrl+a>n=new_window' + + A trigger sequence has some special handling: + + * Ghostty will wait an indefinite amount of time for the next key in + the sequence. There is no way to specify a timeout. The only way to + force the output of a prefix key is to assign another keybind to + specifically output that key (e.g. `ctrl+a>ctrl+a=text:foo`) or + press an unbound key which will send both keys to the program. + + * If an unbound key is pressed during a sequence and a `catch_all` + binding exists that would `ignore` the input, the entire sequence + is dropped and nothing happens. Otherwise, the entire sequence is + encoded and sent to the running program as if no keybind existed. + + * If a prefix in a sequence is previously bound, the sequence will + override the previous binding. For example, if `ctrl+a` is bound to + `new_window` and `ctrl+a>n` is bound to `new_tab`, pressing `ctrl+a` + will do nothing. + + * Adding to the above, if a previously bound sequence prefix is + used in a new, non-sequence binding, the entire previously bound + sequence will be unbound. For example, if you bind `ctrl+a>n` and + `ctrl+a>t`, and then bind `ctrl+a` directly, both `ctrl+a>n` and + `ctrl+a>t` will become unbound. + + * Trigger sequences are not allowed for `global:` or `all:`-prefixed + triggers. This is a limitation we could remove in the future. + + Action is the action to take when the trigger is satisfied. It takes the + format `action` or `action:param`. The latter form is only valid if the + action requires a parameter. + + * `ignore` - Do nothing, ignore the key input. This can be used to + black hole certain inputs to have no effect. + + * `unbind` - Remove the binding. This makes it so the previous action + is removed, and the key will be sent through to the child command + if it is printable. Unbind will remove any matching trigger, + including `physical:`-prefixed triggers without specifying the + prefix. + + * `csi:text` - Send a CSI sequence. e.g. `csi:A` sends "cursor up". + + * `esc:text` - Send an escape sequence. e.g. `esc:d` deletes to the + end of the word to the right. + + * `text:text` - Send a string. Uses Zig string literal syntax. + e.g. `text:\x15` sends Ctrl-U. + + * All other actions can be found in the documentation or by using the + `ghostty +list-actions` command. + + Some notes for the action: + + * The parameter is taken as-is after the `:`. Double quotes or + other mechanisms are included and NOT parsed. If you want to + send a string value that includes spaces, wrap the entire + trigger/action in double quotes. Example: `--keybind="up=csi:A B"` + + There are some additional special values that can be specified for + keybind: + + * `keybind=clear` will clear all set keybindings. Warning: this + removes ALL keybindings up to this point, including the default + keybindings. + + The keybind trigger can be prefixed with some special values to change + the behavior of the keybind. These are: + + * `all:` + + Make the keybind apply to all terminal surfaces. By default, + keybinds only apply to the focused terminal surface. If this is true, + then the keybind will be sent to all terminal surfaces. This only + applies to actions that are surface-specific. For actions that + are already global (e.g. `quit`), this prefix has no effect. + + Available since: 1.0.0 + + * `global:` + + Make the keybind global. By default, keybinds only work within Ghostty + and under the right conditions (application focused, sometimes terminal + focused, etc.). If you want a keybind to work globally across your system + (e.g. even when Ghostty is not focused), specify this prefix. + This prefix implies `all:`. + + Note: this does not work in all environments; see the additional notes + below for more information. + + Available since: 1.0.0 on macOS, 1.2.0 on GTK + + * `unconsumed:` + + Do not consume the input. By default, a keybind will consume the input, + meaning that the associated encoding (if any) will not be sent to the + running program in the terminal. If you wish to send the encoded value + to the program, specify the `unconsumed:` prefix before the entire + keybind. For example: `unconsumed:ctrl+a=reload_config`. `global:` and + `all:`-prefixed keybinds will always consume the input regardless of + this setting. Since they are not associated with a specific terminal + surface, they're never encoded. + + Available since: 1.0.0 + + * `performable:` + + Only consume the input if the action is able to be performed. + For example, the `copy_to_clipboard` action will only consume the input + if there is a selection to copy. If there is no selection, Ghostty + behaves as if the keybind was not set. This has no effect with `global:` + or `all:`-prefixed keybinds. For key sequences, this will reset the + sequence if the action is not performable (acting identically to not + having a keybind set at all). + + Performable keybinds will not appear as menu shortcuts in the + application menu. This is because the menu shortcuts force the + action to be performed regardless of the state of the terminal. + Performable keybinds will still work, they just won't appear as + a shortcut label in the menu. + + Available since: 1.1.0 + + Keybind triggers are not unique per prefix combination. For example, + `ctrl+a` and `global:ctrl+a` are not two separate keybinds. The keybind + set later will overwrite the keybind set earlier. In this case, the + `global:` keybind will be used. + + Multiple prefixes can be specified. For example, + `global:unconsumed:ctrl+a=reload_config` will make the keybind global + and not consume the input to reload the config. + + Note: `global:` is only supported on macOS and certain Linux platforms. + + On macOS, this feature requires accessibility permissions to be granted + to Ghostty. When a `global:` keybind is specified and Ghostty is launched + or reloaded, Ghostty will attempt to request these permissions. + If the permissions are not granted, the keybind will not work. On macOS, + you can find these permissions in System Preferences -> Privacy & Security + -> Accessibility. + + On Linux, you need a desktop environment that implements the + [Global Shortcuts](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html) + protocol as a part of its XDG desktop protocol implementation. + Desktop environments that are known to support (or not support) + global shortcuts include: + + - Users using KDE Plasma (since [5.27](https://kde.org/announcements/plasma/5/5.27.0/#wayland)) + and GNOME (since [48](https://release.gnome.org/48/#and-thats-not-all)) should be able + to use global shortcuts with little to no configuration. + + - Some manual configuration is required on Hyprland. Consult the steps + outlined on the [Hyprland Wiki](https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts) + to set up global shortcuts correctly. + (Important: [`xdg-desktop-portal-hyprland`](https://wiki.hyprland.org/Hypr-Ecosystem/xdg-desktop-portal-hyprland/) + must also be installed!) + + - Notably, global shortcuts have not been implemented on wlroots-based + compositors like Sway (see [upstream issue](https://github.com/emersion/xdg-desktop-portal-wlr/issues/240)). + + ## Chained Actions + + A keybind can have multiple actions by using the `chain` keyword for + subsequent actions. When a keybind is activated, all chained actions are + executed in order. The syntax is: + + ```ini + keybind = ctrl+a=new_window + keybind = chain=goto_split:left + ``` + + This binds `ctrl+a` to first open a new window, then move focus to the + left split. Each `chain` entry appends an action to the most recently + defined keybind. You can chain as many actions as you want: + + ```ini + keybind = ctrl+a=new_window + keybind = chain=goto_split:left + keybind = chain=toggle_fullscreen + ``` + + Chained actions cannot have prefixes like `global:` or `unconsumed:`. + The flags from the original keybind apply to the entire chain. + + Chained actions work with key sequences as well. For example: + + ```ini + keybind = ctrl+a>n=new_window + keybind = chain=goto_split:left + ```` + + Chains with key sequences apply to the most recent binding in the + sequence. + + Chained keybinds are available since Ghostty 1.3.0. + + ## Key Tables + + You may also create a named set of keybindings known as a "key table." + A key table must be explicitly activated for the bindings to become + available. This can be used to implement features such as a + "copy mode", "vim mode", etc. Generically, this can implement modal + keyboard input. + + Key tables are defined using the syntax `/`. The + `` value is everything documented above for keybinds. The + `
` value is the name of the key table. Table names can contain + anything except `/`, `=`, `+`, and `>`. The characters `+` and `>` are + reserved for keybind syntax (modifier combinations and key sequences). + For example `foo/ctrl+a=new_window` defines a binding within a table + named `foo`. + + Tables are activated and deactivated using the binding actions + `activate_key_table:` and `deactivate_key_table`. Other table + related binding actions also exist; see the documentation for a full list. + These are the primary way to interact with key tables. + + Binding lookup proceeds from the innermost table outward, so keybinds in + the default table remain available unless explicitly unbound in an inner + table. + + A key table has some special syntax and handling: + + * `/` (with no binding) defines and clears a table, resetting all + of its keybinds and settings. + + * You cannot activate a table that is already the innermost table; such + attempts are ignored. However, the same table can appear multiple times + in the stack as long as it is not innermost (e.g., `A -> B -> A -> B` + is valid, but `A -> B -> B` is not). + + * A table can be activated in one-shot mode using + `activate_key_table_once:`. A one-shot table is automatically + deactivated when any non-catch-all binding is invoked. + + * Key sequences work within tables: `foo/ctrl+a>ctrl+b=new_window`. + If an invalid key is pressed, the sequence ends but the table remains + active. + + * Chain actions work within tables, the `chain` keyword applies to + the most recently defined binding in the table. e.g. if you set + `table/ctrl+a=new_window` you can chain by using `chain=text:hello`. + Important: chain itself doesn't get prefixed with the table name, + since it applies to the most recent binding in any table. + + * Prefixes like `global:` work within tables: + `foo/global:ctrl+a=new_window`. + + Key tables are available since Ghostty 1.3.0. + + +**`--key-remap`** + +: Remap modifier keys within Ghostty. This allows you to swap or reassign + modifier keys at the application level without affecting system-wide + settings. + + The format is `from=to` where both `from` and `to` are modifier key names. + You can use generic names like `ctrl`, `alt`, `shift`, `super` (macOS: + `cmd`/`command`) or sided names like `left_ctrl`, `right_alt`, etc. + + This will NOT change keyboard layout or key encodings outside of Ghostty. + For example, on macOS, `option+a` may still produce `å` even if `option` is + remapped to `ctrl`. Desktop environments usually handle key layout long + before Ghostty receives the key events. + + Example: + + key-remap = ctrl=super + key-remap = left_control=right_alt + + Important notes: + + * This is a one-way remap. If you remap `ctrl=super`, then the physical + Ctrl key acts as Super, but the Super key remains Super. + + * Remaps are not transitive. If you remap `ctrl=super` and `alt=ctrl`, + pressing Alt will produce Ctrl, NOT Super. + + * This affects both keybind matching and terminal input encoding. + This does NOT impact keyboard layout or how keys are interpreted + prior to Ghostty receiving them. For example, `option+a` on macOS + may still produce `å` even if `option` is remapped to `ctrl`. + + * Generic modifiers (e.g. `ctrl`) match both left and right physical keys. + Use sided names (e.g. `left_ctrl`) to remap only one side. + + There are other edge case scenarios that may not behave as expected + but are working as intended the way this feature is designed: + + * On macOS, bindings in the main menu will trigger before any remapping + is done. This is because macOS itself handles menu activation and + this happens before Ghostty receives the key event. To workaround + this, you should unbind the menu items and rebind them using your + desired modifier. + + This configuration can be repeated to specify multiple remaps. + + +**`--window-padding-x`** + +: Horizontal window padding. This applies padding between the terminal cells + and the left and right window borders. The value is in points, meaning that + it will be scaled appropriately for screen DPI. + + If this value is set too large, the screen will render nothing, because the + grid will be completely squished by the padding. It is up to you as the user + to pick a reasonable value. If you pick an unreasonable value, a warning + will appear in the logs. + + Changing this configuration at runtime will only affect new terminals, i.e. + new windows, tabs, etc. + + To set a different left and right padding, specify two numerical values + separated by a comma. For example, `window-padding-x = 2,4` will set the + left padding to 2 and the right padding to 4. If you want to set both + paddings to the same value, you can use a single value. For example, + `window-padding-x = 2` will set both paddings to 2. + + +**`--window-padding-y`** + +: Vertical window padding. This applies padding between the terminal cells and + the top and bottom window borders. The value is in points, meaning that it + will be scaled appropriately for screen DPI. + + If this value is set too large, the screen will render nothing, because the + grid will be completely squished by the padding. It is up to you as the user + to pick a reasonable value. If you pick an unreasonable value, a warning + will appear in the logs. + + Changing this configuration at runtime will only affect new terminals, + i.e. new windows, tabs, etc. + + To set a different top and bottom padding, specify two numerical values + separated by a comma. For example, `window-padding-y = 2,4` will set the + top padding to 2 and the bottom padding to 4. If you want to set both + paddings to the same value, you can use a single value. For example, + `window-padding-y = 2` will set both paddings to 2. + + +**`--window-padding-balance`** + +: The viewport dimensions are usually not perfectly divisible by the cell + size. In this case, some extra padding on the end of a column and the bottom + of the final row may exist. If this is `true`, then this extra padding + is automatically balanced between all four edges to minimize imbalance on + one side. If this is `false`, the top left grid cell will always hug the + edge with zero padding other than what may be specified with the other + `window-padding` options. + + If other `window-padding` fields are set and this is `true`, this will still + apply. The other padding is applied first and may affect how many grid cells + actually exist, and this is applied last in order to balance the padding + given a certain viewport size and grid cell size. + + +**`--window-padding-color`** + +: The color of the padding area of the window. Valid values are: + + * `background` - The background color specified in `background`. + * `extend` - Extend the background color of the nearest grid cell. + * `extend-always` - Same as "extend" but always extends without applying + any of the heuristics that disable extending noted below. + + The "extend" value will be disabled in certain scenarios. On primary + screen applications (e.g. not something like Neovim), the color will not + be extended vertically if any of the following are true: + + * The nearest row has any cells that have the default background color. + The thinking is that in this case, the default background color looks + fine as a padding color. + * The nearest row is a prompt row (requires shell integration). The + thinking here is that prompts often contain powerline glyphs that + do not look good extended. + * The nearest row contains a perfect fit powerline character. These + don't look good extended. + + +**`--window-vsync`** + +: Synchronize rendering with the screen refresh rate. If true, this will + minimize tearing and align redraws with the screen but may cause input + latency. If false, this will maximize redraw frequency but may cause tearing, + and under heavy load may use more CPU and power. + + This defaults to true because out-of-sync rendering on macOS can + cause kernel panics (macOS 14.4+) and performance issues for external + displays over some hardware such as DisplayLink. If you want to minimize + input latency, set this to false with the known aforementioned risks. + + Changing this value at runtime will only affect new terminals. + + This setting is only supported currently on macOS. + + +**`--window-inherit-working-directory`** + +: If true, new windows will inherit the working directory of the + previously focused window. If no window was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`--tab-inherit-working-directory`** + +: If true, new tabs will inherit the working directory of the + previously focused tab. If no tab was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`--split-inherit-working-directory`** + +: If true, new split panes will inherit the working directory of the + previously focused split. If no split was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`--window-inherit-font-size`** + +: If true, new windows and tabs will inherit the font size of the previously + focused window. If no window was previously focused, the default font size + will be used. If this is false, the default font size specified in the + configuration `font-size` will be used. + + +**`--window-decoration`** + +: Configure a preference for window decorations. This setting specifies + a _preference_; the actual OS, desktop environment, window manager, etc. + may override this preference. Ghostty will do its best to respect this + preference but it may not always be possible. + + Valid values: + + * `none` + + All window decorations will be disabled. Titlebar, borders, etc. will + not be shown. On macOS, this will also disable tabs (enforced by the + system). + + * `auto` + + Automatically decide to use either client-side or server-side + decorations based on the detected preferences of the current OS and + desktop environment. This option usually makes Ghostty look the most + "native" for your desktop. + + * `client` + + Prefer client-side decorations. + + Available since: 1.1.0 + + * `server` + + Prefer server-side decorations. This is only relevant on Linux with GTK, + either on X11, or Wayland on a compositor that supports the + `org_kde_kwin_server_decoration` protocol (e.g. KDE Plasma, but almost + any non-GNOME desktop supports this protocol). + + If `server` is set but the environment doesn't support server-side + decorations, client-side decorations will be used instead. + + Available since: 1.1.0 + + The default value is `auto`. + + For the sake of backwards compatibility and convenience, this setting also + accepts boolean true and false values. If set to `true`, this is equivalent + to `auto`. If set to `false`, this is equivalent to `none`. + This is convenient for users who live primarily on systems that don't + differentiate between client and server-side decorations (e.g. macOS and + Windows). + + The "toggle_window_decorations" keybind action can be used to create + a keybinding to toggle this setting at runtime. + + macOS: To hide the titlebar without removing the native window borders + or rounded corners, use `macos-titlebar-style = hidden` instead. + + +**`--window-title-font-family`** + +: The font that will be used for the application's window and tab titles. + + If this setting is left unset, the system default font will be used. + + Note: any font available on the system may be used, this font is not + required to be a fixed-width font. + + Available since: 1.0.0 on macOS, 1.1.0 on GTK + + +**`--window-subtitle`** + +: The text that will be displayed in the subtitle of the window. Valid values: + + * `false` - Disable the subtitle. + * `working-directory` - Set the subtitle to the working directory of the + surface. + + This feature is only supported on GTK. + + Available since: 1.1.0 + + +**`--window-theme`** + +: The theme to use for the windows. Valid values: + + * `auto` - Determine the theme based on the configured terminal + background color. This has no effect if the "theme" configuration + has separate light and dark themes. In that case, the behavior + of "auto" is equivalent to "system". + * `system` - Use the system theme. + * `light` - Use the light theme regardless of system theme. + * `dark` - Use the dark theme regardless of system theme. + * `ghostty` - Use the background and foreground colors specified in the + Ghostty configuration. This is only supported on Linux builds. + + On macOS, if `macos-titlebar-style` is `tabs` or `transparent`, the window theme will be + automatically set based on the luminosity of the terminal background color. + This only applies to terminal windows. This setting will still apply to + non-terminal windows within Ghostty. + + This is currently only supported on macOS and Linux. + + +**`--window-colorspace`** + +: The color space to use when interpreting terminal colors. "Terminal colors" + refers to colors specified in your configuration and colors produced by + direct-color SGR sequences. + + Valid values: + + * `srgb` - Interpret colors in the sRGB color space. This is the default. + * `display-p3` - Interpret colors in the Display P3 color space. + + This setting is currently only supported on macOS. + + +**`--window-height`** + +: The initial window size. This size is in terminal grid cells by default. + Both values must be set to take effect. If only one value is set, it is + ignored. + + We don't currently support specifying a size in pixels but a future change + can enable that. If this isn't specified, the app runtime will determine + some default size. + + Note that the window manager may put limits on the size or override the + size. For example, a tiling window manager may force the window to be a + certain size to fit within the grid. There is nothing Ghostty will do about + this, but it will make an effort. + + Sizes larger than the screen size will be clamped to the screen size. + This can be used to create a maximized-by-default window size. + + This will not affect new tabs, splits, or other nested terminal elements. + This only affects the initial window size of any new window. Changing this + value will not affect the size of the window after it has been created. This + is only used for the initial size. + + BUG: On Linux with GTK, the calculated window size will not properly take + into account window decorations. As a result, the grid dimensions will not + exactly match this configuration. If window decorations are disabled (see + `window-decoration`), then this will work as expected. + + Windows smaller than 10 wide by 4 high are not allowed. + + +**`--window-width`** + +**`--window-position-x`** + +: The starting window position. This position is in pixels and is relative + to the top-left corner of the primary monitor. Both values must be set to take + effect. If only one value is set, it is ignored. + + Note that the window manager may put limits on the position or override + the position. For example, a tiling window manager may force the window + to be a certain position to fit within the grid. There is nothing Ghostty + will do about this, but it will make an effort. + + Also note that negative values are also up to the operating system and + window manager. Some window managers may not allow windows to be placed + off-screen. + + Invalid positions are runtime-specific, but generally the positions are + clamped to the nearest valid position. + + On macOS, the window position is relative to the top-left corner of + the visible screen area. This means that if the menu bar is visible, the + window will be placed below the menu bar. + + Note: this is only supported on macOS. The GTK runtime does not support + setting the window position, as windows are only allowed position + themselves in X11 and not Wayland. + + +**`--window-position-y`** + +**`--window-save-state`** + +: Whether to enable saving and restoring window state. Window state includes + their position, size, tabs, splits, etc. Some window state requires shell + integration, such as preserving working directories. See `shell-integration` + for more information. + + There are three valid values for this configuration: + + * `default` will use the default system behavior. On macOS, this + will only save state if the application is forcibly terminated + or if it is configured systemwide via Settings.app. + + * `never` will never save window state. + + * `always` will always save window state whenever Ghostty is exited. + + If you change this value to `never` while Ghostty is not running, the next + Ghostty launch will NOT restore the window state. + + If you change this value to `default` while Ghostty is not running and the + previous exit saved state, the next Ghostty launch will still restore the + window state. This is because Ghostty cannot know if the previous exit was + due to a forced save or not (macOS doesn't provide this information). + + If you change this value so that window state is saved while Ghostty is not + running, the previous window state will not be restored because Ghostty only + saves state on exit if this is enabled. + + The default value is `default`. + + This is currently only supported on macOS. This has no effect on Linux. + + +**`--window-step-resize`** + +: Resize the window in discrete increments of the focused surface's cell size. + If this is disabled, surfaces are resized in pixel increments. Currently + only supported on macOS. + + +**`--window-new-tab-position`** + +: The position where new tabs are created. Valid values: + + * `current` - Insert the new tab after the currently focused tab, + or at the end if there are no focused tabs. + + * `end` - Insert the new tab at the end of the tab list. + + +**`--window-show-tab-bar`** + +: Whether to show the tab bar. + + Valid values: + + - `always` + + Always display the tab bar, even when there's only one tab. + + Available since: 1.2.0 + + - `auto` *(default)* + + Automatically show and hide the tab bar. The tab bar is only + shown when there are two or more tabs present. + + - `never` + + Never show the tab bar. Tabs are only accessible via the tab + overview or by keybind actions. + + Currently only supported on Linux (GTK). + + +**`--window-titlebar-background`** + +: Background color for the window titlebar. This only takes effect if + window-theme is set to ghostty. Currently only supported in the GTK app + runtime. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--window-titlebar-foreground`** + +: Foreground color for the window titlebar. This only takes effect if + window-theme is set to ghostty. Currently only supported in the GTK app + runtime. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--resize-overlay`** + +: This controls when resize overlays are shown. Resize overlays are a + transient popup that shows the size of the terminal while the surfaces are + being resized. The possible options are: + + * `always` - Always show resize overlays. + * `never` - Never show resize overlays. + * `after-first` - The resize overlay will not appear when the surface + is first created, but will show up if the surface is + subsequently resized. + + The default is `after-first`. + + +**`--resize-overlay-position`** + +: If resize overlays are enabled, this controls the position of the overlay. + The possible options are: + + * `center` + * `top-left` + * `top-center` + * `top-right` + * `bottom-left` + * `bottom-center` + * `bottom-right` + + The default is `center`. + + +**`--resize-overlay-duration`** + +: If resize overlays are enabled, this controls how long the overlay is + visible on the screen before it is hidden. The default is ¾ of a second or + 750 ms. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + Available since 1.0.0 + + +**`--focus-follows-mouse`** + +: If true, when there are multiple split panes, the mouse selects the pane + that is focused. This only applies to the currently focused window; e.g. + mousing over a split in an unfocused window will not focus that split + and bring the window to front. + + Default is false. + + +**`--clipboard-read`** + +: Whether to allow programs running in the terminal to read/write to the + system clipboard (OSC 52, for googling). The default is to allow clipboard + reading after prompting the user and allow writing unconditionally. + + Valid values are: + + * `ask` + * `allow` + * `deny` + + + +**`--clipboard-write`** + +**`--clipboard-trim-trailing-spaces`** + +: Trims trailing whitespace on data that is copied to the clipboard. This does + not affect data sent to the clipboard via `clipboard-write`. This only + applies to trailing whitespace on lines that have other characters. + Completely blank lines always have their whitespace trimmed. + + +**`--clipboard-paste-protection`** + +: Require confirmation before pasting text that appears unsafe. This helps + prevent a "copy/paste attack" where a user may accidentally execute unsafe + commands by pasting text with newlines. + + +**`--clipboard-paste-bracketed-safe`** + +: If true, bracketed pastes will be considered safe. By default, bracketed + pastes are considered safe. "Bracketed" pastes are pastes while the running + program has bracketed paste mode enabled (a setting set by the running + program, not the terminal emulator). + + +**`--title-report`** + +: Enables or disabled title reporting (CSI 21 t). This escape sequence + allows the running program to query the terminal title. This is a common + security issue and is disabled by default. + + Warning: This can expose sensitive information at best and enable + arbitrary code execution at worst (with a maliciously crafted title + and a minor amount of user interaction). + + Available since: 1.0.1 + + +**`--image-storage-limit`** + +: The total amount of bytes that can be used for image data (e.g. the Kitty + image protocol) per terminal screen. The maximum value is 4,294,967,295 + (4GiB). The default is 320MB. If this is set to zero, then all image + protocols will be disabled. + + This value is separate for primary and alternate screens so the effective + limit per surface is double. + + +**`--copy-on-select`** + +: Whether to automatically copy selected text to the clipboard. `true` + will prefer to copy to the selection clipboard, otherwise it will copy to + the system clipboard. + + The value `clipboard` will always copy text to the selection clipboard + as well as the system clipboard. + + Middle-click paste will always use the selection clipboard. Middle-click + paste is always enabled even if this is `false`. + + The default value is true on Linux and macOS. + + +**`--right-click-action`** + +: The action to take when the user right-clicks on the terminal surface. + + Valid values: + * `context-menu` - Show the context menu. + * `paste` - Paste the contents of the clipboard. + * `copy` - Copy the selected text to the clipboard. + * `copy-or-paste` - If there is a selection, copy the selected text to + the clipboard; otherwise, paste the contents of the clipboard. + * `ignore` - Do nothing, ignore the right-click. + + The default value is `context-menu`. + + +**`--click-repeat-interval`** + +: The time in milliseconds between clicks to consider a click a repeat + (double, triple, etc.) or an entirely new single click. A value of zero will + use a platform-specific default. The default on macOS is determined by the + OS settings. On every other platform it is 500ms. + + +**`--config-file`** + +: Additional configuration files to read. This configuration can be repeated + to read multiple configuration files. Configuration files themselves can + load more configuration files. Paths are relative to the file containing the + `config-file` directive. For command-line arguments, paths are relative to + the current working directory. + + Prepend a ? character to the file path to suppress errors if the file does + not exist. If you want to include a file that begins with a literal ? + character, surround the file path in double quotes ("). + + Cycles are not allowed. If a cycle is detected, an error will be logged and + the configuration file will be ignored. + + Configuration files are loaded after the configuration they're defined + within in the order they're defined. **THIS IS A VERY SUBTLE BUT IMPORTANT + POINT.** To put it another way: configuration files do not take effect + until after the entire configuration is loaded. For example, in the + configuration below: + + ``` + config-file = "foo" + a = 1 + ``` + + If "foo" contains `a = 2`, the final value of `a` will be 2, because + `foo` is loaded after the configuration file that configures the + nested `config-file` value. + + +**`--config-default-files`** + +: When this is true, the default configuration file paths will be loaded. + The default configuration file paths are currently only the XDG + config path ($XDG_CONFIG_HOME/ghostty/config.ghostty). + + If this is false, the default configuration paths will not be loaded. + This is targeted directly at using Ghostty from the CLI in a way + that minimizes external effects. + + This is a CLI-only configuration. Setting this in a configuration file + will have no effect. It is not an error, but it will not do anything. + This configuration can only be set via CLI arguments. + + +**`--confirm-close-surface`** + +: Confirms that a surface should be closed before closing it. + + This defaults to `true`. If set to `false`, surfaces will close without + any confirmation. This can also be set to `always`, which will always + confirm closing a surface, even if shell integration says a process isn't + running. + + +**`--quit-after-last-window-closed`** + +: Whether or not to quit after the last surface is closed. + + This defaults to `false` on macOS since that is standard behavior for + a macOS application. On Linux, this defaults to `true` since that is + generally expected behavior. + + On Linux, if this is `true`, Ghostty can delay quitting fully until a + configurable amount of time has passed after the last window is closed. + See the documentation of `quit-after-last-window-closed-delay`. + + +**`--quit-after-last-window-closed-delay`** + +: Controls how long Ghostty will stay running after the last open surface has + been closed. This only has an effect if `quit-after-last-window-closed` is + also set to `true`. + + The minimum value for this configuration is `1s`. Any values lower than + this will be clamped to `1s`. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + By default `quit-after-last-window-closed-delay` is unset and + Ghostty will quit immediately after the last window is closed if + `quit-after-last-window-closed` is `true`. + + Only implemented on Linux. + + +**`--initial-window`** + +: This controls whether an initial window is created when Ghostty + is run. Note that if `quit-after-last-window-closed` is `true` and + `quit-after-last-window-closed-delay` is set, setting `initial-window` to + `false` will mean that Ghostty will quit after the configured delay if no + window is ever created. Only implemented on Linux and macOS. + + +**`--undo-timeout`** + +: The duration that undo operations remain available. After this + time, the operation will be removed from the undo stack and + cannot be undone. + + The default value is 5 seconds. + + This timeout applies per operation, meaning that if you perform + multiple operations, each operation will have its own timeout. + New operations do not reset the timeout of previous operations. + + A timeout of zero will effectively disable undo operations. It is + not possible to set an infinite timeout, but you can set a very + large timeout to effectively disable the timeout (on the order of years). + This is highly discouraged, as it will cause the undo stack to grow + indefinitely, memory usage to grow unbounded, and terminal sessions + to never actually quit. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + This configuration is only supported on macOS. Linux doesn't + support undo operations at all so this configuration has no + effect. + + Available since: 1.2.0 + + +**`--quick-terminal-position`** + +: The position of the "quick" terminal window. To learn more about the + quick terminal, see the documentation for the `toggle_quick_terminal` + binding action. + + Valid values are: + + * `top` - Terminal appears at the top of the screen. + * `bottom` - Terminal appears at the bottom of the screen. + * `left` - Terminal appears at the left of the screen. + * `right` - Terminal appears at the right of the screen. + * `center` - Terminal appears at the center of the screen. + + On macOS, changing this configuration requires restarting Ghostty + completely. + + Note: There is no default keybind for toggling the quick terminal. + To enable this feature, bind the `toggle_quick_terminal` action to a key. + + +**`--quick-terminal-size`** + +: The size of the quick terminal. + + The size can be specified either as a percentage of the screen dimensions + (height/width), or as an absolute size in pixels. Percentage values are + suffixed with `%` (e.g. `20%`) while pixel values are suffixed with `px` + (e.g. `300px`). A bare value without a suffix is a config error. + + When only one size is specified, the size parameter affects the size of + the quick terminal on its *primary axis*, which depends on its position: + height for quick terminals placed on the top or bottom, and width for left + or right. The primary axis of a centered quick terminal depends on the + monitor's orientation: height when on a landscape monitor, and width when + on a portrait monitor. + + The *secondary axis* would be maximized for non-center positioned + quick terminals unless another size parameter is specified, separated + from the first by a comma (`,`). Percentage and pixel sizes can be mixed + together: for instance, a size of `50%,500px` for a top-positioned quick + terminal would be half a screen tall, and 500 pixels wide. + + Available since: 1.2.0 + + +**`--gtk-quick-terminal-layer`** + +: The layer of the quick terminal window. The higher the layer, + the more windows the quick terminal may conceal. + + Valid values are: + + * `overlay` + + The quick terminal appears in front of all windows. + + * `top` (default) + + The quick terminal appears in front of normal windows but behind + fullscreen overlays like lock screens. + + * `bottom` + + The quick terminal appears behind normal windows but in front of + wallpapers and other windows in the background layer. + + * `background` + + The quick terminal appears behind all windows. + + GTK Wayland only. + + Available since: 1.2.0 + + +**`--gtk-quick-terminal-namespace`** + +: The namespace for the quick terminal window. + + This is an identifier that is used by the Wayland compositor and/or + scripts to determine the type of layer surfaces and to possibly apply + unique effects. + + GTK Wayland only. + + Available since: 1.2.0 + + +**`--quick-terminal-screen`** + +: The screen where the quick terminal should show up. + + Valid values are: + + * `main` - The screen that the operating system recommends as the main + screen. On macOS, this is the screen that is currently receiving + keyboard input. This screen is defined by the operating system and + not chosen by Ghostty. + + * `mouse` - The screen that the mouse is currently hovered over. + + * `macos-menu-bar` - The screen that contains the macOS menu bar as + set in the display settings on macOS. This is a bit confusing because + every screen on macOS has a menu bar, but this is the screen that + contains the primary menu bar. + + The default value is `main` because this is the recommended screen + by the operating system. + + Only implemented on macOS. + + +**`--quick-terminal-animation-duration`** + +: Duration (in seconds) of the quick terminal enter and exit animation. + Set it to 0 to disable animation completely. This can be changed at + runtime. + + Only implemented on macOS. + + +**`--quick-terminal-autohide`** + +: Automatically hide the quick terminal when focus shifts to another window. + Set it to false for the quick terminal to remain open even when it loses focus. + + Defaults to true on macOS and on false on Linux/BSD. This is because global + shortcuts on Linux require system configuration and are considerably less + accessible than on macOS, meaning that it is more preferable to keep the + quick terminal open until the user has completed their task. + This default may change in the future. + + +**`--quick-terminal-space-behavior`** + +: This configuration option determines the behavior of the quick terminal + when switching between macOS spaces. macOS spaces are virtual desktops + that can be manually created or are automatically created when an + application is in full-screen mode. + + Valid values are: + + * `move` - When switching to another space, the quick terminal will + also moved to the current space. + + * `remain` - The quick terminal will stay only in the space where it + was originally opened and will not follow when switching to another + space. + + The default value is `move`. + + Only implemented on macOS. + On Linux the behavior is always equivalent to `move`. + + Available since: 1.1.0 + + +**`--quick-terminal-keyboard-interactivity`** + +: Determines under which circumstances that the quick terminal should receive + keyboard input. See the corresponding [Wayland documentation](https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_surface_v1:enum:keyboard_interactivity) + for a more detailed explanation of the behavior of each option. + + > [!NOTE] + > The exact behavior of each option may differ significantly across + > compositors -- experiment with them on your system to find one that + > suits your liking! + + Valid values are: + + * `none` + + The quick terminal will not receive any keyboard input. + + * `on-demand` (default) + + The quick terminal would only receive keyboard input when it is focused. + + * `exclusive` + + The quick terminal will always receive keyboard input, even when another + window is currently focused. + + Only has an effect on Linux Wayland. + On macOS the behavior is always equivalent to `on-demand`. + + Available since: 1.2.0 + + +**`--shell-integration`** + +: Whether to enable shell integration auto-injection or not. Shell integration + greatly enhances the terminal experience by enabling a number of features: + + * Working directory reporting so new tabs, splits inherit the + previous terminal's working directory. + + * Prompt marking that enables the "jump_to_prompt" keybinding. + + * If you're sitting at a prompt, closing a terminal will not ask + for confirmation. + + * Resizing the window with a complex prompt usually paints much + better. + + Allowable values are: + + * `none` - Do not do any automatic injection. You can still manually + configure your shell to enable the integration. + + * `detect` - Detect the shell based on the filename. + + * `bash`, `elvish`, `fish`, `nushell`, `zsh` - Use this specific shell injection scheme. + + The default value is `detect`. + + +**`--shell-integration-features`** + +: Shell integration features to enable. These require our shell integration + to be loaded, either automatically via shell-integration or manually. + + The format of this is a list of features to enable separated by commas. If + you prefix a feature with `no-` then it is disabled. If you omit a feature, + its default value is used, so you must explicitly disable features you don't + want. You can also use `true` or `false` to turn all features on or off. + + Example: `cursor`, `no-cursor`, `sudo`, `no-sudo`, `title`, `no-title` + + Available features: + + * `cursor` - Set the cursor to a bar at the prompt. + + * `sudo` - Set sudo wrapper to preserve terminfo. + + * `title` - Set the window title via shell integration. + + * `ssh-env` - Enable SSH environment variable compatibility. Automatically + converts TERM from `xterm-ghostty` to `xterm-256color` when connecting to + remote hosts and propagates COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. + Whether or not these variables will be accepted by the remote host(s) will + depend on whether or not the variables are allowed in their sshd_config. + (Available since: 1.2.0) + + * `ssh-terminfo` - Enable automatic terminfo installation on remote hosts. + Attempts to install Ghostty's terminfo entry using `infocmp` and `tic` when + connecting to hosts that lack it. Requires `infocmp` to be available locally + and `tic` to be available on remote hosts. Once terminfo is installed on a + remote host, it will be automatically "cached" to avoid repeat installations. + If desired, the `+ssh-cache` CLI action can be used to manage the installation + cache manually using various arguments. + (Available since: 1.2.0) + + * `path` - Add Ghostty's binary directory to PATH. This ensures the `ghostty` + command is available in the shell even if shell init scripts reset PATH. + This is particularly useful on macOS where PATH is often overridden by + system scripts. The directory is only added if not already present. + + SSH features work independently and can be combined for optimal experience: + when both `ssh-env` and `ssh-terminfo` are enabled, Ghostty will install its + terminfo on remote hosts and use `xterm-ghostty` as TERM, falling back to + `xterm-256color` with environment variables if terminfo installation fails. + + +**`--command-palette-entry`** + +: Custom entries into the command palette. + + Each entry requires the title, the corresponding action, and an optional + description. Each field should be prefixed with the field name, a colon + (`:`), and then the specified value. The syntax for actions is identical + to the one for keybind actions. Whitespace in between fields is ignored. + + If you need to embed commas or any other special characters in the values, + enclose the value in double quotes and it will be interpreted as a Zig + string literal. This is also useful for including whitespace at the + beginning or the end of a value. See the + [Zig documentation](https://ziglang.org/documentation/master/#Escape-Sequences) + for more information on string literals. Note that multiline string literals + are not supported. + + Double quotes can not be used around the field names. + + ```ini + command-palette-entry = title:Reset Font Style, action:csi:0m + command-palette-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main + command-palette-entry = title:Focus Split: Right,description:"Focus the split to the right, if it exists.",action:goto_split:right + command-palette-entry = title:"Ghostty",description:"Add a little Ghostty to your terminal.",action:"text:\xf0\x9f\x91\xbb" + ``` + + By default, the command palette is preloaded with most actions that might + be useful in an interactive setting yet do not have easily accessible or + memorizable shortcuts. The default entries can be cleared by setting this + setting to an empty value: + + ```ini + command-palette-entry = + ``` + + Available since: 1.2.0 + + +**`--osc-color-report-format`** + +: Sets the reporting format for OSC sequences that request color information. + Ghostty currently supports OSC 10 (foreground), OSC 11 (background), and + OSC 4 (256 color palette) queries, and by default the reported values + are scaled-up RGB values, where each component are 16 bits. This is how + most terminals report these values. However, some legacy applications may + require 8-bit, unscaled, components. We also support turning off reporting + altogether. The components are lowercase hex values. + + Allowable values are: + + * `none` - OSC 4/10/11 queries receive no reply + + * `8-bit` - Color components are return unscaled, e.g. `rr/gg/bb` + + * `16-bit` - Color components are returned scaled, e.g. `rrrr/gggg/bbbb` + + The default value is `16-bit`. + + +**`--vt-kam-allowed`** + +: If true, allows the "KAM" mode (ANSI mode 2) to be used within + the terminal. KAM disables keyboard input at the request of the + application. This is not a common feature and is not recommended + to be enabled. This will not be documented further because + if you know you need KAM, you know. If you don't know if you + need KAM, you don't need it. + + +**`--custom-shader`** + +: Custom shaders to run after the default shaders. This is a file path + to a GLSL-syntax shader for all platforms. + + Warning: Invalid shaders can cause Ghostty to become unusable such as by + causing the window to be completely black. If this happens, you can + unset this configuration to disable the shader. + + Custom shader support is based on and compatible with the Shadertoy shaders. + Shaders should specify a `mainImage` function and the available uniforms + largely match Shadertoy, with some caveats and Ghostty-specific extensions. + + The uniform values available to shaders are as follows: + + * `sampler2D iChannel0` - Input texture. + + A texture containing the current terminal screen. If multiple custom + shaders are specified, the output of previous shaders is written to + this texture, to allow combining multiple effects. + + * `vec3 iResolution` - Output texture size, `[width, height, 1]` (in px). + + * `float iTime` - Time in seconds since first frame was rendered. + + * `float iTimeDelta` - Time in seconds since previous frame was rendered. + + * `float iFrameRate` - Average framerate. (NOT CURRENTLY SUPPORTED) + + * `int iFrame` - Number of frames that have been rendered so far. + + * `float iChannelTime[4]` - Current time for video or sound input. (N/A) + + * `vec3 iChannelResolution[4]` - Resolutions of the 4 input samplers. + + Currently only `iChannel0` exists, and `iChannelResolution[0]` is + identical to `iResolution`. + + * `vec4 iMouse` - Mouse input info. (NOT CURRENTLY SUPPORTED) + + * `vec4 iDate` - Date/time info. (NOT CURRENTLY SUPPORTED) + + * `float iSampleRate` - Sample rate for audio. (N/A) + + Ghostty-specific extensions: + + * `vec4 iCurrentCursor` - Info about the terminal cursor. + + - `iCurrentCursor.xy` is the -X, +Y corner of the current cursor. + - `iCurrentCursor.zw` is the width and height of the current cursor. + + * `vec4 iPreviousCursor` - Info about the previous terminal cursor. + + * `vec4 iCurrentCursorColor` - Color of the terminal cursor. + + * `vec4 iPreviousCursorColor` - Color of the previous terminal cursor. + + * `vec4 iCurrentCursorStyle` - Style of the terminal cursor + + Macros simplified use are defined for the various cursor styles: + + - `CURSORSTYLE_BLOCK` or `0` + - `CURSORSTYLE_BLOCK_HOLLOW` or `1` + - `CURSORSTYLE_BAR` or `2` + - `CURSORSTYLE_UNDERLINE` or `3` + - `CURSORSTYLE_LOCK` or `4` + + * `vec4 iPreviousCursorStyle` - Style of the previous terminal cursor + + * `vec4 iCursorVisible` - Visibility of the terminal cursor. + + * `float iTimeCursorChange` - Timestamp of terminal cursor change. + + When the terminal cursor changes position or color, this is set to + the same time as the `iTime` uniform, allowing you to compute the + time since the change by subtracting this from `iTime`. + + * `float iTimeFocus` - Timestamp when the surface last gained iFocus. + + When the surface gains focus, this is set to the current value of + `iTime`, similar to how `iTimeCursorChange` works. This allows you + to compute the time since focus was gained or lost by calculating + `iTime - iTimeFocus`. Use this to create animations that restart + when the terminal regains focus. + + * `int iFocus` - Current focus state of the surface. + + Set to 1.0 when the surface is focused, 0.0 when unfocused. This + allows shaders to detect unfocused state and avoid animation artifacts + from large time deltas caused by infrequent "deceptive frames" + (e.g., modifier key presses, link hover events in unfocused split panes). + Check `iFocus > 0` to determine if the surface is currently focused. + + * `vec3 iPalette[256]` - The 256-color terminal palette. + + RGB values for all 256 colors in the terminal palette, normalized + to [0.0, 1.0]. Index 0-15 are the ANSI colors, 16-231 are the 6x6x6 + color cube, and 232-255 are the grayscale colors. + + * `vec3 iBackgroundColor` - Terminal background color (RGB). + + * `vec3 iForegroundColor` - Terminal foreground color (RGB). + + * `vec3 iCursorColor` - Terminal cursor color (RGB). + + * `vec3 iCursorText` - Terminal cursor text color (RGB). + + * `vec3 iSelectionBackgroundColor` - Selection background color (RGB). + + * `vec3 iSelectionForegroundColor` - Selection foreground color (RGB). + + If the shader fails to compile, the shader will be ignored. Any errors + related to shader compilation will not show up as configuration errors + and only show up in the log, since shader compilation happens after + configuration loading on the dedicated render thread. For interactive + development, use [shadertoy.com](https://shadertoy.com). + + This can be repeated multiple times to load multiple shaders. The shaders + will be run in the order they are specified. + + This can be changed at runtime and will affect all open terminals. + + +**`--custom-shader-animation`** + +: If `true` (default), the focused terminal surface will run an animation + loop when custom shaders are used. This uses slightly more CPU (generally + less than 10%) but allows the shader to animate. This only runs if there + are custom shaders and the terminal is focused. + + If this is set to `false`, the terminal and custom shader will only render + when the terminal is updated. This is more efficient but the shader will + not animate. + + This can also be set to `always`, which will always run the animation + loop regardless of whether the terminal is focused or not. The animation + loop will still only run when custom shaders are used. Note that this + will use more CPU per terminal surface and can become quite expensive + depending on the shader and your terminal usage. + + This can be changed at runtime and will affect all open terminals. + + +**`--bell-features`** + +: Bell features to enable if bell support is available in your runtime. Not + all features are available on all runtimes. The format of this is a list of + features to enable separated by commas. If you prefix a feature with `no-` + then it is disabled. If you omit a feature, its default value is used. + + Valid values are: + + * `system` + + Instruct the system to notify the user using built-in system functions. + This could result in an audiovisual effect, a notification, or something + else entirely. Changing these effects require altering system settings: + for instance under the "Sound > Alert Sound" setting in GNOME, + or the "Accessibility > System Bell" settings in KDE Plasma. + + On macOS, this plays the system alert sound. + + * `audio` + + Play a custom sound. (Available since 1.3.0 on macOS) + + * `attention` *(enabled by default)* + + Request the user's attention when Ghostty is unfocused, until it has + received focus again. On macOS, this will bounce the app icon in the + dock once. On Linux, the behavior depends on the desktop environment + and/or the window manager/compositor: + + - On KDE, the background of the desktop icon in the task bar would be + highlighted; + + - On GNOME, you may receive a notification that, when clicked, would + bring the Ghostty window into focus; + + - On Sway, the window may be decorated with a distinctly colored border; + + - On other systems this may have no effect at all. + + * `title` *(enabled by default)* + + Prepend a bell emoji (🔔) to the title of the alerted surface until the + terminal is re-focused or interacted with (such as on keyboard input). + + * `border` + + Display a border around the alerted surface until the terminal is + re-focused or interacted with (such as on keyboard input). + + Available since: 1.2.0 on GTK, 1.2.1 on macOS + + Example: `audio`, `no-audio`, `system`, `no-system` + + Available since: 1.2.0 + + +**`--bell-audio-path`** + +: If `audio` is an enabled bell feature, this is a path to an audio file. If + the path is not absolute, it is considered relative to the directory of the + configuration file that it is referenced from, or from the current working + directory if this is used as a CLI flag. The path may be prefixed with `~/` + to reference the user's home directory. + + Available since: 1.2.0 on GTK, 1.3.0 on macOS. + + +**`--bell-audio-volume`** + +: If `audio` is an enabled bell feature, this is the volume to play the audio + file at (relative to the system volume). This is a floating point number + ranging from 0.0 (silence) to 1.0 (as loud as possible). The default is 0.5. + + Available since: 1.2.0 on GTK, 1.3.0 on macOS. + + +**`--app-notifications`** + +: Control the in-app notifications that Ghostty shows. + + On Linux (GTK), in-app notifications show up as toasts. Toasts appear + overlaid on top of the terminal window. They are used to show information + that is not critical but may be important. + + Possible notifications are: + + - `clipboard-copy` (default: true) - Show a notification when text is copied + to the clipboard. + - `config-reload` (default: true) - Show a notification when + the configuration is reloaded. + + To specify a notification to enable, specify the name of the notification. + To specify a notification to disable, prefix the name with `no-`. For + example, to disable `clipboard-copy`, set this configuration to + `no-clipboard-copy`. To enable it, set this configuration to `clipboard-copy`. + + Multiple notifications can be enabled or disabled by separating them + with a comma. + + A value of "false" will disable all notifications. A value of "true" will + enable all notifications. + + This configuration only applies to GTK. + + Available since: 1.1.0 + + +**`--macos-non-native-fullscreen`** + +: If anything other than false, fullscreen mode on macOS will not use the + native fullscreen, but make the window fullscreen without animations and + using a new space. It's faster than the native fullscreen mode since it + doesn't use animations. + + Important: tabs DO NOT WORK in this mode. Non-native fullscreen removes + the titlebar and macOS native tabs require the titlebar. If you use tabs, + you should not use this mode. + + If you fullscreen a window with tabs, the currently focused tab will + become fullscreen while the others will remain in a separate window in + the background. You can switch to that window using normal window-switching + keybindings such as command+tilde. When you exit fullscreen, the window + will return to the tabbed state it was in before. + + Allowable values are: + + * `true` - Use non-native macOS fullscreen, hide the menu bar + * `false` - Use native macOS fullscreen + * `visible-menu` - Use non-native macOS fullscreen, keep the menu bar + visible + * `padded-notch` - Use non-native macOS fullscreen, hide the menu bar, + but ensure the window is not obscured by the notch on applicable + devices. The area around the notch will remain transparent currently, + but in the future we may fill it with the window background color. + + Changing this option at runtime works, but will only apply to the next + time the window is made fullscreen. If a window is already fullscreen, + it will retain the previous setting until fullscreen is exited. + + +**`--macos-window-buttons`** + +: Whether the window buttons in the macOS titlebar are visible. The window + buttons are the colored buttons in the upper left corner of most macOS apps, + also known as the traffic lights, that allow you to close, miniaturize, and + zoom the window. + + This setting has no effect when `window-decoration = none` or + `macos-titlebar-style = hidden`, as the window buttons are always hidden in + these modes. + + Valid values are: + + * `visible` - Show the window buttons. + * `hidden` - Hide the window buttons. + + The default value is `visible`. + + Changing this option at runtime only applies to new windows. + + Available since: 1.2.0 + + +**`--macos-titlebar-style`** + +: The style of the macOS titlebar. Available values are: "native", + "transparent", "tabs", and "hidden". + + The "native" style uses the native macOS titlebar with zero customization. + The titlebar will match your window theme (see `window-theme`). + + The "transparent" style is the same as "native" but the titlebar will + be transparent and allow your window background color to come through. + This makes a more seamless window appearance but looks a little less + typical for a macOS application and may not work well with all themes. + + The "transparent" style will also update in real-time to dynamic + changes to the window background color, e.g. via OSC 11. To make this + more aesthetically pleasing, this only happens if the terminal is + a window, tab, or split that borders the top of the window. This + avoids a disjointed appearance where the titlebar color changes + but all the topmost terminals don't match. + + The "tabs" style is a completely custom titlebar that integrates the + tab bar into the titlebar. This titlebar always matches the background + color of the terminal. There are some limitations to this style: + On macOS 13 and below, saved window state will not restore tabs correctly. + macOS 14 does not have this issue and any other macOS version has not + been tested. + + The "hidden" style hides the titlebar. Unlike `window-decoration = none`, + however, it does not remove the frame from the window or cause it to have + squared corners. Changing to or from this option at run-time may affect + existing windows in buggy ways. + + When "hidden", the top titlebar area can no longer be used for dragging + the window. To drag the window, you can use option+click on the resizable + areas of the frame to drag the window. This is a standard macOS behavior + and not something Ghostty enables. + + The default value is "transparent". This is an opinionated choice + but its one I think is the most aesthetically pleasing and works in + most cases. + + Changing this option at runtime only applies to new windows. + + +**`--macos-titlebar-proxy-icon`** + +: Whether the proxy icon in the macOS titlebar is visible. The proxy icon + is the icon that represents the folder of the current working directory. + You can see this very clearly in the macOS built-in Terminal.app + titlebar. + + The proxy icon is only visible with the native macOS titlebar style. + + Valid values are: + + * `visible` - Show the proxy icon. + * `hidden` - Hide the proxy icon. + + The default value is `visible`. + + This setting can be changed at runtime and will affect all currently + open windows but only after their working directory changes again. + Therefore, to make this work after changing the setting, you must + usually `cd` to a different directory, open a different file in an + editor, etc. + + +**`--macos-dock-drop-behavior`** + +: Controls the windowing behavior when dropping a file or folder + onto the Ghostty icon in the macOS dock. + + Valid values are: + + * `new-tab` - Create a new tab in the current window, or open + a new window if none exist. + * `new-window` - Create a new window unconditionally. + + The default value is `new-tab`. + + This setting is only supported on macOS and has no effect on other + platforms. + + +**`--macos-option-as-alt`** + +: macOS doesn't have a distinct "alt" key and instead has the "option" + key which behaves slightly differently. On macOS by default, the + option key plus a character will sometimes produce a Unicode character. + For example, on US standard layouts option-b produces "∫". This may be + undesirable if you want to use "option" as an "alt" key for keybindings + in terminal programs or shells. + + This configuration lets you change the behavior so that option is treated + as alt. + + The default behavior (unset) will depend on your active keyboard + layout. If your keyboard layout is one of the keyboard layouts listed + below, then the default value is "true". Otherwise, the default + value is "false". Keyboard layouts with a default value of "true" are: + + - U.S. Standard + - U.S. International + + Note that if an *Option*-sequence doesn't produce a printable character, it + will be treated as *Alt* regardless of this setting. (e.g. `alt+ctrl+a`). + + Explicit values that can be set: + + If `true`, the *Option* key will be treated as *Alt*. This makes terminal + sequences expecting *Alt* to work properly, but will break Unicode input + sequences on macOS if you use them via the *Alt* key. + + You may set this to `false` to restore the macOS *Alt* key unicode + sequences but this will break terminal sequences expecting *Alt* to work. + + The values `left` or `right` enable this for the left or right *Option* + key, respectively. + + +**`--macos-window-shadow`** + +: Whether to enable the macOS window shadow. The default value is true. + With some window managers and window transparency settings, you may + find false more visually appealing. + + +**`--macos-hidden`** + +: If true, the macOS icon in the dock and app switcher will be hidden. This is + mainly intended for those primarily using the quick-terminal mode. + + Note that setting this to true means that keyboard layout changes + will no longer be automatic. + + Control whether macOS app is excluded from the dock and app switcher, + a "hidden" state. This is mainly intended for those primarily using + quick-terminal mode, but is a general configuration for any use + case. + + Available values: + + * `never` - The macOS app is never hidden. + * `always` - The macOS app is always hidden. + + Note: When the macOS application is hidden, keyboard layout changes + will no longer be automatic. This is a limitation of macOS. + + Available since: 1.2.0 + + +**`--macos-auto-secure-input`** + +: If true, Ghostty on macOS will automatically enable the "Secure Input" + feature when it detects that a password prompt is being displayed. + + "Secure Input" is a macOS security feature that prevents applications from + reading keyboard events. This can always be enabled manually using the + `Ghostty > Secure Keyboard Entry` menu item. + + Note that automatic password prompt detection is based on heuristics + and may not always work as expected. Specifically, it does not work + over SSH connections, but there may be other cases where it also + doesn't work. + + A reason to disable this feature is if you find that it is interfering + with legitimate accessibility software (or software that uses the + accessibility APIs), since secure input prevents any application from + reading keyboard events. + + +**`--macos-secure-input-indication`** + +: If true, Ghostty will show a graphical indication when secure input is + enabled. This indication is generally recommended to know when secure input + is enabled. + + Normally, secure input is only active when a password prompt is displayed + or it is manually (and typically temporarily) enabled. However, if you + always have secure input enabled, the indication can be distracting and + you may want to disable it. + + +**`--macos-applescript`** + +: If true, Ghostty exposes and handles the built-in AppleScript dictionary + on macOS. + + If false, all AppleScript interactions are disabled. This includes + AppleScript commands and AppleScript object lookup for windows, tabs, + and terminals. + + The default is true. + + +**`--macos-icon`** + +: Customize the macOS app icon. + + This only affects the icon that appears in the dock, application + switcher, etc. This does not affect the icon in Finder because + that is controlled by a hardcoded value in the signed application + bundle and can't be changed at runtime. For more details on what + exactly is affected, see the `NSApplication.icon` Apple documentation; + that is the API that is being used to set the icon. + + Valid values: + + * `official` - Use the official Ghostty icon. + * `blueprint`, `chalkboard`, `microchip`, `glass`, `holographic`, + `paper`, `retro`, `xray` - Official variants of the Ghostty icon + hand-created by artists (no AI). + * `custom` - Use a completely custom icon. The location must be specified + using the additional `macos-custom-icon` configuration + * `custom-style` - Use the official Ghostty icon but with custom + styles applied to various layers. The custom styles must be + specified using the additional `macos-icon`-prefixed configurations. + The `macos-icon-ghost-color` and `macos-icon-screen-color` + configurations are required for this style. + + WARNING: The `custom-style` option is _experimental_. We may change + the format of the custom styles in the future. We're still finalizing + the exact layers and customization options that will be available. + + Other caveats: + + * The icon in the update dialog will always be the official icon. + This is because the update dialog is managed through a + separate framework and cannot be customized without significant + effort. + + +**`--macos-custom-icon`** + +: The absolute path to the custom icon file. + Supported formats include PNG, JPEG, and ICNS. + + Defaults to `~/.config/ghostty/Ghostty.icns` + + +**`--macos-icon-frame`** + +: The material to use for the frame of the macOS app icon. + + Valid values: + + * `aluminum` - A brushed aluminum frame. This is the default. + * `beige` - A classic 90's computer beige frame. + * `plastic` - A glossy, dark plastic frame. + * `chrome` - A shiny chrome frame. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + +**`--macos-icon-ghost-color`** + +: The color of the ghost in the macOS app icon. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`--macos-icon-screen-color`** + +: The color of the screen in the macOS app icon. + + The screen is a linear gradient so you can specify multiple colors + that make up the gradient. Up to 64 comma-separated colors may be + specified as either hex (`#RRGGBB` or `RRGGBB`) or as named X11 + colors. The first color is the bottom of the gradient and the last + color is the top of the gradient. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + +**`--macos-shortcuts`** + +: Whether macOS Shortcuts are allowed to control Ghostty. + + Ghostty exposes a number of actions that allow Shortcuts to + control and interact with Ghostty. This includes creating new + terminals, sending text to terminals, running commands, invoking + any keybind action, etc. + + This is a powerful feature but can be a security risk if a malicious + shortcut is able to be installed and executed. Therefore, this + configuration allows you to disable this feature. + + Valid values are: + + * `ask` - Ask the user whether for permission. Ghostty will remember + this choice and never ask again. This is similar to other macOS + permissions such as microphone access, camera access, etc. + + * `allow` - Allow Shortcuts to control Ghostty without asking. + + * `deny` - Deny Shortcuts from controlling Ghostty. + + Available since: 1.2.0 + + +**`--linux-cgroup`** + +: Put every surface (tab, split, window) into a transient `systemd` scope. + + This allows per-surface resource management. For example, if a shell program + is using too much memory, only that shell will be killed by the oom monitor + instead of the entire Ghostty process. Similarly, if a shell program is + using too much CPU, only that surface will be CPU-throttled. + + This will cause startup times to be slower (a hundred milliseconds or so), + so the default value is "single-instance." In single-instance mode, only + one instance of Ghostty is running (see gtk-single-instance) so the startup + time is a one-time cost. Additionally, single instance Ghostty is much + more likely to have many windows, tabs, etc. so cgroup isolation is a + big benefit. + + This feature requires `systemd`. If `systemd` is unavailable, cgroup + initialization will fail. By default, this will not prevent Ghostty from + working (see `linux-cgroup-hard-fail`). + + Changing this value and reloading the config will not affect existing + surfaces. + + Valid values are: + + * `never` - Never use cgroups. + * `always` - Always use cgroups. + * `single-instance` - Enable cgroups only for Ghostty instances launched + as single-instance applications (see gtk-single-instance). + + +**`--linux-cgroup-memory-limit`** + +: Memory limit for any individual terminal process (tab, split, window, + etc.) in bytes. If this is unset then no memory limit will be set. + + Note that this sets the `MemoryHigh` setting on the transient `systemd` + scope, which is a soft limit. You should configure something like + `systemd-oom` to handle killing processes that have too much memory + pressure. + + Changing this value and reloading the config will not affect existing + surfaces. + + See the `systemd.resource-control` manual page for more information: + https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html + + +**`--linux-cgroup-processes-limit`** + +: Number of processes limit for any individual terminal process (tab, split, + window, etc.). If this is unset then no limit will be set. + + Note that this sets the `TasksMax` setting on the transient `systemd` scope, + which is a hard limit. + + Changing this value and reloading the config will not affect existing + surfaces. + + See the `systemd.resource-control` manual page for more information: + https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html + + +**`--linux-cgroup-hard-fail`** + +: If this is false, then creating a transient `systemd` scope (for + `linux-cgroup`) will be allowed to fail and the failure is ignored. This is + useful if you view cgroup isolation as a "nice to have" and not a critical + resource management feature, because surface creation will not fail if + `systemd` APIs fail. + + If this is true, then any transient `systemd` scope creation failure will + cause surface creation to fail. + + Changing this value and reloading the config will not affect existing + surfaces. + + +**`--gtk-opengl-debug`** + +: Enable or disable GTK's OpenGL debugging logs. The default is `true` for + debug builds, `false` for all others. + + Available since: 1.1.0 + + +**`--gtk-single-instance`** + +: If `true`, the Ghostty GTK application will run in single-instance mode: + each new `ghostty` process launched will result in a new window if there is + already a running process. + + If `false`, each new ghostty process will launch a separate application. + + If `detect`, Ghostty will assume true (single instance) unless one of + the following scenarios is found: + + 1. TERM_PROGRAM environment variable is a non-empty value. In this + case, we assume Ghostty is being launched from a graphical terminal + session and you want a dedicated instance. + + 2. Any CLI arguments exist. In this case, we assume you are passing + custom Ghostty configuration. Single instance mode inherits the + configuration from when it was launched, so we must disable single + instance to load the new configuration. + + If either of these scenarios is producing a false positive, you can + set this configuration explicitly to the behavior you want. + + The pre-1.2 option `desktop` has been deprecated. Please replace + this with `detect`. + + The default value is `detect`. + + Note that debug builds of Ghostty have a separate single-instance ID + so you can test single instance without conflicting with release builds. + + +**`--gtk-titlebar`** + +: When enabled, the full GTK titlebar is displayed instead of your window + manager's simple titlebar. The behavior of this option will vary with your + window manager. + + This option does nothing when `window-decoration` is none or when running + under macOS. + + +**`--gtk-tabs-location`** + +: Determines the side of the screen that the GTK tab bar will stick to. + Top, bottom, and hidden are supported. The default is top. + + When `hidden` is set, a tab button displaying the number of tabs will appear + in the title bar. It has the ability to open a tab overview for displaying + tabs. Alternatively, you can use the `toggle_tab_overview` action in a + keybind if your window doesn't have a title bar, or you can switch tabs + with keybinds. + + +**`--gtk-titlebar-hide-when-maximized`** + +: If this is `true`, the titlebar will be hidden when the window is maximized, + and shown when the titlebar is unmaximized. GTK only. + + Available since: 1.1.0 + + +**`--gtk-toolbar-style`** + +: Determines the appearance of the top and bottom bars tab bar. + + Valid values are: + + * `flat` - Top and bottom bars are flat with the terminal window. + * `raised` - Top and bottom bars cast a shadow on the terminal area. + * `raised-border` - Similar to `raised` but the shadow is replaced with a + more subtle border. + + +**`--gtk-titlebar-style`** + +: The style of the GTK titlebar. Available values are `native` and `tabs`. + + The `native` titlebar style is a traditional titlebar with a title, a few + buttons and window controls. A separate tab bar will show up below the + titlebar if you have multiple tabs open in the window. + + The `tabs` titlebar merges the tab bar and the traditional titlebar. + This frees up vertical space on your screen if you use multiple tabs. One + limitation of the `tabs` titlebar is that you cannot drag the titlebar + by the titles any longer (as they are tab titles now). Other areas of the + `tabs` title bar can be used to drag the window around. + + The default style is `native`. + + +**`--gtk-wide-tabs`** + +: If `true` (default), then the Ghostty GTK tabs will be "wide." Wide tabs + are the new typical Gnome style where tabs fill their available space. + If you set this to `false` then tabs will only take up space they need, + which is the old style. + + +**`--gtk-custom-css`** + +: Custom CSS files to be loaded. + + GTK CSS documentation can be found at the following links: + + * https://docs.gtk.org/gtk4/css-overview.html - An overview of GTK CSS. + * https://docs.gtk.org/gtk4/css-properties.html - A comprehensive list + of supported CSS properties. + + Launch Ghostty with `env GTK_DEBUG=interactive ghostty` to tweak Ghostty's + CSS in real time using the GTK Inspector. Errors in your CSS files would + also be reported in the terminal you started Ghostty from. See + https://developer.gnome.org/documentation/tools/inspector.html for more + information about the GTK Inspector. + + This configuration can be repeated multiple times to load multiple files. + Prepend a ? character to the file path to suppress errors if the file does + not exist. If you want to include a file that begins with a literal ? + character, surround the file path in double quotes ("). + The file size limit for a single stylesheet is 5MiB. + + Available since: 1.1.0 + + +**`--desktop-notifications`** + +: If `true` (default), applications running in the terminal can show desktop + notifications using certain escape sequences such as OSC 9 or OSC 777. + + +**`--progress-style`** + +: If `true` (default), applications running in the terminal can show + graphical progress bars using the ConEmu OSC 9;4 escape sequence. + If `false`, progress bar sequences are silently ignored. + + +**`--bold-color`** + +: Modifies the color used for bold text in the terminal. + + This can be set to a specific color, using the same format as + `background` or `foreground` (e.g. `#RRGGBB` but other formats + are also supported; see the aforementioned documentation). If a + specific color is set, this color will always be used for the default + bold text color. It will set the rest of the bold colors to `bright`. + + This can also be set to `bright`, which uses the bright color palette + for bold text. For example, if the text is red, then the bold will + use the bright red color. The terminal palette is set with `palette` + but can also be overridden by the terminal application itself using + escape sequences such as OSC 4. (Since Ghostty 1.2.0, the previous + configuration `bold-is-bright` is deprecated and replaced by this + usage). + + Available since Ghostty 1.2.0. + + +**`--faint-opacity`** + +: The opacity level (opposite of transparency) of the faint text. A value of + 1 is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. + + Available since Ghostty 1.2.0. + + +**`--term`** + +: This will be used to set the `TERM` environment variable. + HACK: We set this with an `xterm` prefix because vim uses that to enable key + protocols (specifically this will enable `modifyOtherKeys`), among other + features. An option exists in vim to modify this: `:set + keyprotocol=ghostty:kitty`, however a bug in the implementation prevents it + from working properly. https://github.com/vim/vim/pull/13211 fixes this. + + +**`--enquiry-response`** + +: String to send when we receive `ENQ` (`0x05`) from the command that we are + running. Defaults to an empty string if not set. + + +**`--async-backend`** + +: Configures the low-level API to use for async IO, eventing, etc. + + Most users should leave this set to `auto`. This will automatically detect + scenarios where APIs may not be available (for example `io_uring` on + certain hardened kernels) and fall back to a different API. However, if + you want to force a specific backend for any reason, you can set this + here. + + Based on various benchmarks, we haven't found a statistically significant + difference between the backends with regards to memory, CPU, or latency. + The choice of backend is more about compatibility and features. + + Available options: + + * `auto` - Automatically choose the best backend for the platform + based on available options. + * `epoll` - Use the `epoll` API + * `io_uring` - Use the `io_uring` API + + If the selected backend is not available on the platform, Ghostty will + fall back to an automatically chosen backend that is available. + + Changing this value requires a full application restart to take effect. + + This is only supported on Linux, since this is the only platform + where we have multiple options. On macOS, we always use `kqueue`. + + Available since: 1.2.0 + + +**`--auto-update`** + +: Control the auto-update functionality of Ghostty. This is only supported + on macOS currently, since Linux builds are distributed via package + managers that are not centrally controlled by Ghostty. + + Checking or downloading an update does not send any information to + the project beyond standard network information mandated by the + underlying protocols. To put it another way: Ghostty doesn't explicitly + add any tracking to the update process. The update process works by + downloading information about the latest version and comparing it + client-side to the current version. + + Valid values are: + + * `off` - Disable auto-updates. + * `check` - Check for updates and notify the user if an update is + available, but do not automatically download or install the update. + * `download` - Check for updates, automatically download the update, + notify the user, but do not automatically install the update. + + If unset, we defer to Sparkle's default behavior, which respects the + preference stored in the standard user defaults (`defaults(1)`). + + Changing this value at runtime works after a small delay. + + +**`--auto-update-channel`** + +: The release channel to use for auto-updates. + + The default value of this matches the release channel of the currently + running Ghostty version. If you download a pre-release version of Ghostty + then this will be set to `tip` and you will receive pre-release updates. + If you download a stable version of Ghostty then this will be set to + `stable` and you will receive stable updates. + + Valid values are: + + * `stable` - Stable, tagged releases such as "1.0.0". + * `tip` - Pre-release versions generated from each commit to the + main branch. This is the version that was in use during private + beta testing by thousands of people. It is generally stable but + will likely have more bugs than the stable channel. + + Changing this configuration requires a full restart of + Ghostty to take effect. + + This only works on macOS since only macOS has an auto-update feature. + + +# FILES + +_\$XDG_CONFIG_HOME/ghostty/config.ghostty_ + +: Location of the default configuration file. + +_\$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty_ + +: **On macOS**, location of the default configuration file. This location takes +precedence over the XDG environment locations. + +_\$LOCALAPPDATA/ghostty/config.ghostty_ + +: **On Windows**, if _\$XDG_CONFIG_HOME_ is not set, _\$LOCALAPPDATA_ will be searched +for configuration files. + +# ENVIRONMENT + +**TERM** + +: Defaults to `xterm-ghostty`. Can be configured with the `term` configuration option. + +**GHOSTTY_RESOURCES_DIR** + +: Where the Ghostty resources can be found. + +**XDG_CONFIG_HOME** + +: Default location for configuration files. + +**$HOME/Library/Application Support/com.mitchellh.ghostty** + +: **MACOS ONLY** default location for configuration files. This location takes +precedence over the XDG environment locations. + +**LOCALAPPDATA** + +: **WINDOWS ONLY:** alternate location to search for configuration files. + +**GHOSTTY_LOG** + +: The `GHOSTTY_LOG` environment variable can be used to control which +destinations receive logs. Ghostty currently defines two destinations: + +: - `stderr` - logging to `stderr`. +: - `macos` - logging to macOS's unified log (has no effect on non-macOS platforms). + +: Combine values with a comma to enable multiple destinations. Prefix a +destination with `no-` to disable it. Enabling and disabling destinations +can be done at the same time. Setting `GHOSTTY_LOG` to `true` will enable all +destinations. Setting `GHOSTTY_LOG` to `false` will disable all destinations. + +# BUGS + +See GitHub issues: + +# AUTHOR + +Mitchell Hashimoto +Ghostty contributors + +# SEE ALSO + +**ghostty(5)** diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.html b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.html new file mode 100644 index 0000000..faa2f60 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.html @@ -0,0 +1,4616 @@ + + + + + + + GHOSTTY(5) Version 1.3.1 | Ghostty terminal emulator configuration file + + + +
+

GHOSTTY(5) Version 1.3.1 | Ghostty terminal emulator +configuration file

+
+

NAME

+

ghostty - Ghostty terminal emulator configuration +file

+

DESCRIPTION

+

To configure Ghostty, you must use a configuration file. GUI-based +configuration is on the roadmap but not yet supported. The configuration +file must be placed at +$XDG_CONFIG_HOME/ghostty/config.ghostty, which defaults to +~/.config/ghostty/config.ghostty if the XDG +environment is not set.

+

If you are using macOS, the configuration file can also be +placed at +$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty. +This is the default configuration location for macOS. It will be +searched before any of the XDG environment locations listed above.

+

The file format is documented below as an example:

+
# The syntax is "key = value". The whitespace around the equals doesn't matter.
+background = 282c34
+foreground= ffffff
+
+# Blank lines are ignored!
+
+keybind = ctrl+z=close_surface
+keybind = ctrl+d=new_split:right
+
+# Colors can be changed by setting the 16 colors of `palette`, which each color
+# being defined as regular and bold.
+#
+# black
+palette = 0=#1d2021
+palette = 8=#7c6f64
+# red
+palette = 1=#cc241d
+palette = 9=#fb4934
+# green
+palette = 2=#98971a
+palette = 10=#b8bb26
+# yellow
+palette = 3=#d79921
+palette = 11=#fabd2f
+# blue
+palette = 4=#458588
+palette = 12=#83a598
+# purple
+palette = 5=#b16286
+palette = 13=#d3869b
+# aqua
+palette = 6=#689d6a
+palette = 14=#8ec07c
+# white
+palette = 7=#a89984
+palette = 15=#fbf1c7
+

You can view all available configuration options and their +documentation by executing the command +ghostty +show-config --default --docs. Note that this will +output the full default configuration with docs to stdout, so you may +want to pipe that through a pager, an editor, etc.

+

Note: You’ll see a lot of weird blank configurations like +font-family =. This is a valid syntax to specify the +default behavior (no value). The +show-config outputs it so +it’s clear that key is defaulting and also to have something to attach +the doc comment to.

+

You can also see and read all available configuration options in the +source Config structure. The available keys are the keys verbatim, and +their possible values are typically documented in the comments. You also +can search for the public config files of many Ghostty users for +examples and inspiration.

+

Configuration Errors

+

If your configuration file has any errors, Ghostty does its best to +ignore them and move on. Configuration errors will be logged.

+

Debugging Configuration

+

You can verify that configuration is being properly loaded by looking +at the debug output of Ghostty.

+

In the debug output, you should see in the first 20 lines or so +messages about loading (or not loading) a configuration file, as well as +any errors it may have encountered. Configuration errors are also shown +in a dedicated window on both macOS and Linux (GTK). Ghostty does not +treat configuration errors as fatal and will fall back to default values +for erroneous keys.

+

You can also view the full configuration Ghostty is loading using +ghostty +show-config from the command-line. Use the +--help flag to additional options for that command.

+

Logging

+

Ghostty can write logs to a number of destinations. On all platforms, +logging to stderr is available. Depending on the platform +and how Ghostty was launched, logs sent to stderr may be +stored by the system and made available for later retrieval.

+

On Linux if Ghostty is launched by the default systemd +user service, you can use journald to see Ghostty’s logs: +journalctl --user --unit app-com.mitchellh.ghostty.service.

+

On macOS logging to the macOS unified log is available and enabled by +default. –Use the system log CLI to view Ghostty’s logs: +sudo log stream --level debug --predicate 'subsystem=="com.mitchellh.ghostty"'.

+

Ghostty’s logging can be configured in two ways. The first is by what +optimization level Ghostty is compiled with. If Ghostty is compiled with +Debug optimizations debug logs will be output to +stderr. If Ghostty is compiled with any other optimization +the debug logs will not be output to stderr.

+

Ghostty also checks the GHOSTTY_LOG environment +variable. It can be used to control which destinations receive logs. +Ghostty currently defines two destinations:

+
    +
  • stderr - logging to stderr.
  • +
  • macos - logging to macOS’s unified log (has no effect +on non-macOS platforms).
  • +
+

Combine values with a comma to enable multiple destinations. Prefix a +destination with no- to disable it. Enabling and disabling +destinations can be done at the same time. Setting +GHOSTTY_LOG to true will enable all +destinations. Setting GHOSTTY_LOG to false +will disable all destinations.

+

CONFIGURATION OPTIONS

+
+
language
+
+

Set Ghostty’s graphical user interface language to a language other +than the system default language. For example:

+
language = de
+

will force the strings in Ghostty’s graphical user interface to be in +German rather than the system default.

+

This will not affect the language used by programs run +within Ghostty. Those will continue to use the default system +language. There are also many non-GUI elements in Ghostty that are not +translated - this setting will have no effect on those.

+

Warning: This setting cannot be reloaded at runtime. To change the +language you must fully restart Ghostty.

+

GTK only. Available since 1.3.0.

+
+
font-family
+
+

The font families to use.

+

You can generate the list of valid values using the CLI:

+
ghostty +list-fonts
+

This configuration can be repeated multiple times to specify +preferred fallback fonts when the requested codepoint is not available +in the primary font. This is particularly useful for multiple languages, +symbolic fonts, etc.

+

Notes on emoji specifically: On macOS, Ghostty by default will always +use Apple Color Emoji and on Linux will always use Noto Emoji. You can +override this behavior by specifying a font family here that contains +emoji glyphs.

+

The specific styles (bold, italic, bold italic) do not need to be +explicitly set. If a style is not set, then the regular style +(font-family) will be searched for stylistic variants. If a stylistic +variant is not found, Ghostty will use the regular style. This prevents +falling back to a different font family just to get a style such as +bold. This also applies if you explicitly specify a font family for a +style. For example, if you set font-family-bold = FooBar +and “FooBar” cannot be found, Ghostty will use whatever font is set for +font-family for the bold style.

+

Finally, some styles may be synthesized if they are not supported. +For example, if a font does not have an italic style and no alternative +italic font is specified, Ghostty will synthesize an italic style by +applying a slant to the regular style. If you want to disable these +synthesized styles then you can use the font-style +configurations as documented below.

+

You can disable styles completely by using the +font-style set of configurations. See the documentation for +font-style for more information.

+

If you want to overwrite a previous set value rather than append a +fallback, specify the value as "" (empty string) to reset +the list and then set the new values. For example:

+
font-family = ""
+font-family = "My Favorite Font"
+

Setting any of these as CLI arguments will automatically clear the +values set in configuration files so you don’t need to specify +--font-family="" before setting a new value. You only need +to specify this within config files if you want to clear previously set +values in configuration files or on the CLI if you want to clear values +set on the CLI.

+
+
+

font-family-bold

+

font-family-italic

+

font-family-bold-italic

+
+
font-style
+
+

The named font style to use for each of the requested terminal font +styles. This looks up the style based on the font style string +advertised by the font itself. For example, “Iosevka Heavy” has a style +of “Heavy”.

+

You can also use these fields to completely disable a font style. If +you set the value of the configuration below to literal +false then that font style will be disabled. If the running +program in the terminal requests a disabled font style, the regular font +style will be used instead.

+

These are only valid if its corresponding font-family is also +specified. If no font-family is specified, then the font-style is +ignored unless you’re disabling the font style.

+
+
+

font-style-bold

+

font-style-italic

+

font-style-bold-italic

+
+
font-synthetic-style
+
+

Control whether Ghostty should synthesize a style if the requested +style is not available in the specified font-family.

+

Ghostty can synthesize bold, italic, and bold italic styles if the +font does not have a specific style. For bold, this is done by drawing +an outline around the glyph of varying thickness. For italic, this is +done by applying a slant to the glyph. For bold italic, both of these +are applied.

+

Synthetic styles are not perfect and will generally not look as good +as a font that has the style natively. However, they are useful to +provide styled text when the font does not have the style.

+

Set this to “false” or “true” to disable or enable synthetic styles +completely. You can disable specific styles using “no-bold”, +“no-italic”, and “no-bold-italic”. You can disable multiple styles by +separating them with a comma. For example, “no-bold,no-italic”.

+

Available style keys are: bold, italic, +bold-italic.

+

If synthetic styles are disabled, then the regular style will be used +instead if the requested style is not available. If the font has the +requested style, then the font will be used as-is since the style is not +synthetic.

+

Warning: An easy mistake is to disable bold or +italic but not bold-italic. Disabling only +bold or italic will NOT disable either in the +bold-italic style. If you want to disable +bold-italic, you must explicitly disable it. You cannot +partially disable bold-italic.

+

By default, synthetic styles are enabled.

+
+
font-feature
+
+

Apply a font feature. To enable multiple font features you can repeat +this multiple times or use a comma-separated list of feature +settings.

+

The syntax for feature settings is as follows, where +feat is a feature:

+
    +
  • Enable features with e.g. feat, +feat, +feat on, feat=1.
  • +
  • Disabled features with e.g. -feat, +feat off, feat=0.
  • +
  • Set a feature value with e.g. feat=2, +feat = 3, feat 4.
  • +
  • Feature names may be wrapped in quotes, meaning this config should +be syntactically compatible with the font-feature-settings +CSS property.
  • +
+

The syntax is fairly loose, but invalid settings will be silently +ignored.

+

The font feature will apply to all fonts rendered by Ghostty. A +future enhancement will allow targeting specific faces.

+

To disable programming ligatures, use -calt since this +is the typical feature name for programming ligatures. To look into what +font features your font has and what they do, use a font inspection tool +such as fontdrop.info.

+

To generally disable most ligatures, use +-calt, -liga, -dlig.

+
+
font-size
+
+

Font size in points. This value can be a non-integer and the nearest +integer pixel size will be selected. If you have a high dpi display +where 1pt = 2px then you can get an odd numbered pixel size by +specifying a half point.

+

For example, 13.5pt @ 2px/pt = 27px

+

Changing this configuration at runtime will only affect existing +terminals that have NOT manually adjusted their font size in some way +(e.g. increased or decreased the font size). Terminals that have +manually adjusted their font size will retain their manually adjusted +size. Otherwise, the font size of existing terminals will be updated on +reload.

+

On Linux with GTK, font size is scaled according to both display-wide +and text-specific scaling factors, which are often managed by your +desktop environment (e.g. the GNOME display scale and large text +settings).

+
+
font-variation
+
+

A repeatable configuration to set one or more font variations values +for a variable font. A variable font is a single font, usually with a +filename ending in -VF.ttf or -VF.otf that +contains one or more configurable axes for things such as weight, slant, +etc. Not all fonts support variations; only fonts that explicitly state +they are variable fonts will work.

+

The format of this is id=value where id is +the axis identifier. An axis identifier is always a 4 character string, +such as wght. To get the list of supported axes, look at +your font documentation or use a font inspection tool.

+

Invalid ids and values are usually ignored. For example, if a font +only supports weights from 100 to 700, setting wght=800 +will do nothing (it will not be clamped to 700). You must consult your +font’s documentation to see what values are supported.

+

Common axes are: wght (weight), slnt +(slant), ital (italic), opsz (optical size), +wdth (width), GRAD (gradient), etc.

+
+
+

font-variation-bold

+

font-variation-italic

+

font-variation-bold-italic

+
+
font-codepoint-map
+
+

Force one or a range of Unicode codepoints to map to a specific named +font. This is useful if you want to support special symbols or if you +want to use specific glyphs that render better for your specific +font.

+

The syntax is codepoint=fontname where +codepoint is either a single codepoint or a range. +Codepoints must be specified as full Unicode hex values, such as +U+ABCD. Codepoints ranges are specified as +U+ABCD-U+DEFG. You can specify multiple ranges for the same +font separated by commas, such as +U+ABCD-U+DEFG,U+1234-U+5678=fontname. The font name is the +same value as you would use for font-family.

+

This configuration can be repeated multiple times to specify multiple +codepoint mappings.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+
+
clipboard-codepoint-map
+
+

Map specific Unicode codepoints to replacement values when copying +text to clipboard.

+

This configuration allows you to replace specific Unicode characters +with other characters or strings when copying terminal content to the +clipboard. This is useful for converting special terminal symbols to +more compatible characters for pasting into other applications.

+

The syntax is similar to font-codepoint-map: - Single +codepoint: U+1234=U+ABCD or +U+1234=replacement_text - Codepoint range: +U+1234-U+5678=U+ABCD

+

Examples: - clipboard-codepoint-map = U+2500=U+002D (box +drawing horizontal → hyphen) - +clipboard-codepoint-map = U+2502=U+007C (box drawing +vertical → pipe) - clipboard-codepoint-map = U+03A3=SUM +(Greek sigma → “SUM”)

+

This configuration can be repeated multiple times to specify multiple +mappings. Later entries take priority over earlier ones for overlapping +ranges.

+

Note: This only applies to text copying operations, not URL +copying.

+
+
font-thicken
+
+

Draw fonts with a thicker stroke, if supported. This is currently +only supported on macOS.

+
+
font-thicken-strength
+
+

Strength of thickening when font-thicken is enabled.

+

Valid values are integers between 0 and +255. 0 does not correspond to no +thickening, rather it corresponds to the lightest available +thickening.

+

Has no effect when font-thicken is set to +false.

+

This is currently only supported on macOS.

+
+
font-shaping-break
+
+

Locations to break font shaping into multiple runs.

+

A “run” is a contiguous segment of text that is shaped together. +“Shaping” is the process of converting text (codepoints) into glyphs +(renderable characters). This is how ligatures are formed, among other +things. For example, if a coding font turns “!=” into a single glyph, +then it must see “!” and “=” next to each other in a single run. When a +run is broken, the text is shaped separately. To continue our example, +if “!” is at the end of one run and “=” is at the start of the next run, +then the ligature will not be formed.

+

Ghostty breaks runs at certain points to improve readability or +usability. For example, Ghostty by default will break runs under the +cursor so that text editing can see the individual characters rather +than a ligature. This configuration lets you configure this +behavior.

+

Combine values with a comma to set multiple options. Prefix an option +with “no-” to disable it. Enabling and disabling options can be done at +the same time.

+

Available options:

+
    +
  • cursor - Break runs under the cursor.
  • +
+

Available since: 1.2.0

+
+
alpha-blending
+
+

What color space to use when performing alpha blending.

+

This affects the appearance of text and of any images with +transparency. Additionally, custom shaders will receive colors in the +configured space.

+

On macOS the default is native, on all other platforms +the default is linear-corrected.

+

Valid values:

+
    +
  • native - Perform alpha blending in the native color +space for the OS. On macOS this corresponds to Display P3, and on Linux +it’s sRGB.

  • +
  • linear - Perform alpha blending in linear space. +This will eliminate the darkening artifacts around the edges of text +that are very visible when certain color combinations are used (e.g. red +/ green), but makes dark text look much thinner than normal and light +text much thicker. This is also sometimes known as “gamma +correction”.

  • +
  • linear-corrected - Same as linear, but +with a correction step applied for text that makes it look nearly or +completely identical to native, but without any of the +darkening artifacts.

  • +
+

Available since: 1.1.0

+
+
adjust-cell-width
+
+

All of the configurations behavior adjust various metrics determined +by the font. The values can be integers (1, -1, etc.) or a percentage +(20%, -15%, etc.). In each case, the values represent the amount to +change the original value.

+

For example, a value of 1 increases the value by 1; it +does not set it to literally 1. A value of 20% increases +the value by 20%. And so on.

+

There is little to no validation on these values so the wrong values +(e.g. -100%) can cause the terminal to be unusable. Use +with caution and reason.

+

Some values are clamped to minimum or maximum values. This can make +it appear that certain values are ignored. For example, many +*-thickness adjustments cannot go below 1px.

+

adjust-cell-height has some additional behaviors to +describe:

+
    +
  • The font will be centered vertically in the cell.

  • +
  • The cursor will remain the same size as the font, but may be +adjusted separately with adjust-cursor-height.

  • +
  • Powerline glyphs will be adjusted along with the cell height so +that things like status lines continue to look aligned.

  • +
+
+
+

adjust-cell-height

+
+
adjust-font-baseline
+
+

Distance in pixels or percentage adjustment from the bottom of the +cell to the text baseline. Increase to move baseline UP, decrease to +move baseline DOWN. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-underline-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the underline. Increase to move underline DOWN, decrease +to move underline UP. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-underline-thickness
+
+

Thickness in pixels of the underline. See the notes about adjustments +in adjust-cell-width.

+
+
adjust-strikethrough-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the strikethrough. Increase to move strikethrough DOWN, +decrease to move strikethrough UP. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-strikethrough-thickness
+
+

Thickness in pixels or percentage adjustment of the strikethrough. +See the notes about adjustments in adjust-cell-width.

+
+
adjust-overline-position
+
+

Distance in pixels or percentage adjustment from the top of the cell +to the top of the overline. Increase to move overline DOWN, decrease to +move overline UP. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-overline-thickness
+
+

Thickness in pixels or percentage adjustment of the overline. See the +notes about adjustments in adjust-cell-width.

+
+
adjust-cursor-thickness
+
+

Thickness in pixels or percentage adjustment of the bar cursor and +outlined rect cursor. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-cursor-height
+
+

Height in pixels or percentage adjustment of the cursor. Currently +applies to all cursor types: bar, rect, and outlined rect. See the notes +about adjustments in adjust-cell-width.

+
+
adjust-box-thickness
+
+

Thickness in pixels or percentage adjustment of box drawing +characters. See the notes about adjustments in +adjust-cell-width.

+
+
adjust-icon-height
+
+

Height in pixels or percentage adjustment of maximum height for nerd +font icons.

+

A positive (negative) value will increase (decrease) the maximum icon +height. This may not affect all icons equally: the effect depends on +whether the default size of the icon is height-constrained, which in +turn depends on the aspect ratio of both the icon and your primary +font.

+

Certain icons designed for box drawing and terminal graphics, such as +Powerline symbols, are not affected by this option.

+

See the notes about adjustments in +adjust-cell-width.

+

Available in: 1.2.0

+
+
grapheme-width-method
+
+

The method to use for calculating the cell width of a grapheme +cluster. The default value is unicode which uses the +Unicode standard to determine grapheme width. This results in correct +grapheme width but may result in cursor-desync issues with some programs +(such as shells) that may use a legacy method such as +wcswidth.

+

Valid values are:

+
    +
  • legacy - Use a legacy method to determine grapheme +width, such as wcswidth This maximizes compatibility with legacy +programs but may result in incorrect grapheme width for certain +graphemes such as skin-tone emoji, non-English characters, etc.

    +

    This is called “legacy” and not something more specific because the +behavior is undefined and we want to retain the ability to modify it. +For example, we may or may not use libc wcswidth now or in +the future.

  • +
  • unicode - Use the Unicode standard to determine +grapheme width.

  • +
+

If a running program explicitly enables terminal mode 2027, then +unicode width will be forced regardless of this +configuration. When mode 2027 is reset, this configuration will be used +again.

+

This configuration can be changed at runtime but will not affect +existing terminals. Only new terminals will use the new +configuration.

+
+
freetype-load-flags
+
+

FreeType load flags to enable. The format of this is a list of flags +to enable separated by commas. If you prefix a flag with +no- then it is disabled. If you omit a flag, its default +value is used, so you must explicitly disable flags you don’t want. You +can also use true or false to turn all flags +on or off.

+

This configuration only applies to Ghostty builds that use FreeType. +This is usually the case only for Linux builds. macOS uses CoreText and +does not have an equivalent configuration.

+

Available flags:

+
    +
  • hinting - Enable or disable hinting. Enabled by +default.

  • +
  • force-autohint - Always use the freetype auto-hinter +instead of the font’s native hinter. Disabled by default.

  • +
  • monochrome - Instructs renderer to use 1-bit +monochrome rendering. This will disable anti-aliasing, and probably not +look very good unless you’re using a pixel font. Disabled by +default.

  • +
  • autohint - Enable the freetype auto-hinter. Enabled +by default.

  • +
  • light - Use a light hinting style, better preserving +glyph shapes. This is the most common setting in GTK apps and therefore +also Ghostty’s default. This has no effect if monochrome is +enabled. Enabled by default.

  • +
+

Example: hinting, no-hinting, +force-autohint, no-force-autohint

+
+
theme
+
+

A theme to use. This can be a built-in theme name, a custom theme +name, or an absolute path to a custom theme file. Ghostty also supports +specifying a different theme to use for light and dark mode. Each option +is documented below.

+

If the theme is an absolute pathname, Ghostty will attempt to load +that file as a theme. If that file does not exist or is inaccessible, an +error will be logged and no other directories will be searched.

+

If the theme is not an absolute pathname, two different directories +will be searched for a file name that matches the theme. This is case +sensitive on systems with case-sensitive filesystems. It is an error for +a theme name to include path separators unless it is an absolute +pathname.

+

The first directory is the themes subdirectory of your +Ghostty configuration directory. This is +$XDG_CONFIG_HOME/ghostty/themes or +~/.config/ghostty/themes.

+

The second directory is the themes subdirectory of the +Ghostty resources directory. Ghostty ships with a multitude of themes +that will be installed into this directory. On macOS, this list is in +the Ghostty.app/Contents/Resources/ghostty/themes +directory. On Linux, this list is in the +share/ghostty/themes directory (wherever you installed the +Ghostty “share” directory.

+

To see a list of available themes, run +ghostty +list-themes.

+

A theme file is simply another Ghostty configuration file. They share +the same syntax and same configuration options. A theme can set any +valid configuration option so please do not use a theme file from an +untrusted source. The built-in themes are audited to only set safe +configuration options.

+

Some options cannot be set within theme files. The reason these are +not supported should be self-evident. A theme file cannot set +theme or config-file. At the time of writing +this, Ghostty will not show any warnings or errors if you set these +options in a theme file but they will be silently ignored.

+

Any additional colors specified via background, foreground, palette, +etc. will override the colors specified in the theme.

+

To specify a different theme for light and dark mode, use the +following syntax: light:theme-name,dark:theme-name. For +example: light:Rose Pine Dawn,dark:Rose Pine. Whitespace +around all values are trimmed and order of light and dark does not +matter. Both light and dark must be specified in this form. In this +form, the theme used will be based on the current desktop environment +theme.

+

There are some known bugs with light/dark mode theming. These will be +fixed in a future update:

+
    +
  • macOS: titlebar tabs style is not updated when switching +themes.
  • +
+
+
background
+
+

Background color for the window. Specified as either hex +(#RRGGBB or RRGGBB) or a named X11 color.

+
+
foreground
+
+

Foreground color for the window. Specified as either hex +(#RRGGBB or RRGGBB) or a named X11 color.

+
+
background-image
+
+

Background image for the terminal.

+

This should be a path to a PNG or JPEG file, other image formats are +not yet supported.

+

The background image is currently per-terminal, not per-window. If +you are a heavy split user, the background image will be repeated across +splits. A future improvement to Ghostty will address this.

+

WARNING: Background images are currently duplicated in VRAM +per-terminal. For sufficiently large images, this could lead to a large +increase in memory usage (specifically VRAM usage). A future Ghostty +improvement will resolve this by sharing image textures across +terminals.

+

Available since: 1.2.0

+
+
background-image-opacity
+
+

Background image opacity.

+

This is relative to the value of background-opacity.

+

A value of 1.0 (the default) will result in the +background image being placed on top of the general background color, +and then the combined result will be adjusted to the opacity specified +by background-opacity.

+

A value less than 1.0 will result in the background +image being mixed with the general background color before the combined +result is adjusted to the configured +background-opacity.

+

A value greater than 1.0 will result in the background +image having a higher opacity than the general background color. For +instance, if the configured background-opacity is +0.5 and background-image-opacity is set to +1.5, then the final opacity of the background image will be +0.5 * 1.5 = 0.75.

+

Available since: 1.2.0

+
+
background-image-position
+
+

Background image position.

+

Valid values are: * top-left * top-center * +top-right * center-left * center +* center-right * bottom-left * +bottom-center * bottom-right

+

The default value is center.

+

Available since: 1.2.0

+
+
background-image-fit
+
+

Background image fit.

+

Valid values are:

+
    +
  • contain

    +

    Preserving the aspect ratio, scale the background image to the +largest size that can still be contained within the terminal, so that +the whole image is visible.

  • +
  • cover

    +

    Preserving the aspect ratio, scale the background image to the +smallest size that can completely cover the terminal. This may result in +one or more edges of the image being clipped by the edge of the +terminal.

  • +
  • stretch

    +

    Stretch the background image to the full size of the terminal, +without preserving the aspect ratio.

  • +
  • none

    +

    Don’t scale the background image.

  • +
+

The default value is contain.

+

Available since: 1.2.0

+
+
background-image-repeat
+
+

Whether to repeat the background image or not.

+

If this is set to true, the background image will be repeated if +there would otherwise be blank space around it because it doesn’t +completely fill the terminal area.

+

The default value is false.

+

Available since: 1.2.0

+
+
selection-foreground
+
+

The foreground and background color for selection. If this is not +set, then the selection color is just the inverted window background and +foreground (note: not to be confused with the cell bg/fg). Specified as +either hex (#RRGGBB or RRGGBB) or a named X11 +color. Since version 1.2.0, this can also be set to +cell-foreground to match the cell foreground color, or +cell-background to match the cell background color.

+
+
+

selection-background

+
+
selection-clear-on-typing
+
+

Whether to clear selected text when typing. This defaults to +true. This is typical behavior for most terminal emulators +as well as text input fields. If you set this to false, +then the selected text will not be cleared when typing.

+

“Typing” is specifically defined as any non-modifier (shift, control, +alt, etc.) keypress that produces data to be sent to the application +running within the terminal (e.g. the shell). Additionally, selection is +cleared when any preedit or composition state is started (e.g. when +typing languages such as Japanese).

+

If this is false, then the selection can still be +manually cleared by clicking once or by pressing +escape.

+

Available since: 1.2.0

+
+
selection-clear-on-copy
+
+

Whether to clear selected text after copying. This defaults to +false.

+

When set to true, the selection will be automatically +cleared after any copy operation that invokes the +copy_to_clipboard keyboard binding. Importantly, this will +not clear the selection if the copy operation was invoked via +copy-on-select.

+

When set to false, the selection remains visible after +copying, allowing to see what was copied and potentially perform +additional operations on the same selection.

+
+
selection-word-chars
+
+

Characters that mark word boundaries during text selection operations +such as double-clicking. When selecting a word, the selection will stop +at any of these characters.

+

This is similar to the WORDCHARS environment variable in +zsh, except this specifies the boundary characters rather than the word +characters. The default includes common delimiters and punctuation that +typically separate words in code and prose.

+

Each character in this string becomes a word boundary. Multi-byte +UTF-8 characters are supported, but only single codepoints can be +specified. Multi-codepoint sequences (e.g. emoji) are not supported.

+

The null character (U+0000) is always treated as a boundary and does +not need to be included in this configuration.

+

Default: \t'"│`|:;,()[]{}<>$

+

To add or remove specific characters, you can set this to a custom +value. For example, to treat semicolons as part of words:

+
selection-word-chars = " \t'\"│`|:,()[]{}<>$"
+

Available since: 1.3.0

+
+
minimum-contrast
+
+

The minimum contrast ratio between the foreground and background +colors. The contrast ratio is a value between 1 and 21. A value of 1 +allows for no contrast (e.g. black on black). This value is the contrast +ratio as defined by the WCAG 2.0 +specification.

+

If you want to avoid invisible text (same color as background), a +value of 1.1 is a good value. If you want to avoid text that is +difficult to read, a value of 3 or higher is a good value. The higher +the value, the more likely that text will become black or white.

+

This value does not apply to Emoji or images.

+
+
palette
+
+

Color palette for the 256 color form that many terminal applications +use. The syntax of this configuration is N=COLOR where +N is 0 to 255 (for the 256 colors in the terminal color +table) and COLOR is a typical RGB color code such as +#AABBCC or AABBCC, or a named X11 color. For +example, palette = 5=#BB78D9 will set the ‘purple’ +color.

+

The palette index can be in decimal, binary, octal, or hexadecimal. +Decimal is assumed unless a prefix is used: 0b for binary, +0o for octal, and 0x for hexadecimal.

+

For definitions on the color indices and what they canonically map +to, see this +cheat sheet.

+

For most themes, you only need to set the first 16 colors (0–15) +since the rest of the palette (16–255) will be automatically generated +by default (see palette-generate for more details).

+
+
palette-generate
+
+

Whether to automatically generate the extended 256 color palette +(indices 16–255) from the base 16 ANSI colors.

+

This lets theme authors specify only the base 16 colors and have the +rest of the palette be automatically generated in a consistent and +aesthetic way.

+

When enabled, the 6×6×6 color cube and 24-step grayscale ramp are +derived from interpolations of the base palette, giving a more cohesive +look. Colors that have been explicitly set via palette are +never overwritten.

+

The default value is false (disabled), because many legacy programs +using the 256-color palette hardcode assumptions about what these colors +are (mostly assuming the xterm 256 color palette). However, this is +still a very useful tool for theme authors and users who want to +customize their palette without having to specify all 256 colors.

+

For more information on how the generation works, see here: +https://gist.github.com/jake-stewart/0a8ea46159a7da2c808e5be2177e1783

+

Available since: 1.3.0

+
+
palette-harmonious
+
+

Invert the palette colors generated when +palette-generate is enabled, so that the colors go in +reverse order. This allows palette-based applications to work well in +both light and dark mode since the palettes are always relatively good +colors.

+

This defaults to off because some legacy terminal applications +hardcode the assumption that palette indices 16–231 are ordered from +darkest to lightest, so enabling this would make them unreadable. This +is not a generally good assumption and we encourage modern terminal +applications to use the indices in a more semantic way.

+

This has no effect if palette-generate is disabled.

+

For more information see palette-generate.

+

Available since: 1.3.0

+
+
cursor-color
+
+

The color of the cursor. If this is not set, a default will be +chosen.

+

Direct colors can be specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color.

+

Additionally, special values can be used to set the color to match +other colors at runtime:

+
    +
  • cell-foreground - Match the cell foreground color. +(Available since: 1.2.0)

  • +
  • cell-background - Match the cell background color. +(Available since: 1.2.0)

  • +
+
+
cursor-opacity
+
+

The opacity level (opposite of transparency) of the cursor. A value +of 1 is fully opaque and a value of 0 is fully transparent. A value less +than 0 or greater than 1 will be clamped to the nearest valid value. +Note that a sufficiently small value such as 0.3 may be effectively +invisible and may make it difficult to find the cursor.

+
+
cursor-style
+
+

The style of the cursor. This sets the default style. A running +program can still request an explicit cursor style using escape +sequences (such as CSI q). Shell configurations will often +request specific cursor styles.

+

Note that shell integration will automatically set the cursor to a +bar at a prompt, regardless of this configuration. You can disable that +behavior by specifying +shell-integration-features = no-cursor or disabling shell +integration entirely.

+

Valid values are:

+
    +
  • block
  • +
  • bar
  • +
  • underline
  • +
  • block_hollow
  • +
+
+
cursor-style-blink
+
+

Sets the default blinking state of the cursor. This is just the +default state; running programs may override the cursor style using +DECSCUSR (CSI q).

+

If this is not set, the cursor blinks by default. Note that this is +not the same as a “true” value, as noted below.

+

If this is not set at all (null), then Ghostty will +respect DEC Mode 12 (AT&T cursor blink) as an alternate approach to +turning blinking on/off. If this is set to any value other than null, +DEC mode 12 will be ignored but DECSCUSR will still be +respected.

+

Valid values are:

+
    +
  • (blank)
  • +
  • true
  • +
  • false
  • +
+
+
cursor-text
+
+

The color of the text under the cursor. If this is not set, a default +will be chosen. Specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color. Since version 1.2.0, this can +also be set to cell-foreground to match the cell foreground +color, or cell-background to match the cell background +color.

+
+
cursor-click-to-move
+
+

Enables the ability to move the cursor at prompts by clicking on a +location in the prompt text.

+

This feature requires shell integration, specifically prompt marking +via OSC 133. Some shells like Fish (v4) and Nu (0.111+) +natively support this while others may require additional configuration +or Ghostty’s shell integration features to be enabled.

+

Depending on the shell, this works either by translating your click +position into a series of synthetic arrow key movements or by sending a +click event directly to the shell. In either case, some unexpected +behavior around edge cases is possible.

+
+
mouse-hide-while-typing
+
+

Hide the mouse immediately when typing. The mouse becomes visible +again when the mouse is used (button, movement, etc.). Platform-specific +behavior may dictate other scenarios where the mouse is shown. For +example on macOS, the mouse is shown again when a new window, tab, or +split is created.

+
+
scroll-to-bottom
+
+

When to scroll the surface to the bottom. The format of this is a +list of options to enable separated by commas. If you prefix an option +with no- then it is disabled. If you omit an option, its +default value is used.

+

Available options:

+
    +
  • keystroke If set, scroll the surface to the bottom +when the user presses a key that results in data being sent to the PTY +(basically anything but modifiers or keybinds that are processed by +Ghostty).

  • +
  • output If set, scroll the surface to the bottom if +there is new data to display (e.g., when new lines are printed to the +terminal).

  • +
+

The default is keystroke, no-output.

+
+
mouse-shift-capture
+
+

Determines whether running programs can detect the shift key pressed +with a mouse click. Typically, the shift key is used to extend mouse +selection.

+

The default value of false means that the shift key is +not sent with the mouse protocol and will extend the selection. This +value can be conditionally overridden by the running program with the +XTSHIFTESCAPE sequence.

+

The value true means that the shift key is sent with the +mouse protocol but the running program can override this behavior with +XTSHIFTESCAPE.

+

The value never is the same as false but +the running program cannot override this behavior with +XTSHIFTESCAPE. The value always is the same as +true but the running program cannot override this behavior +with XTSHIFTESCAPE.

+

If you always want shift to extend mouse selection even if the +program requests otherwise, set this to never.

+

Valid values are:

+
    +
  • true
  • +
  • false
  • +
  • always
  • +
  • never
  • +
+
+
mouse-reporting
+
+

Enable or disable mouse reporting. When set to false, +mouse events will not be reported to terminal applications even if they +request it. This allows you to always use the mouse for selection and +other terminal UI interactions without applications capturing mouse +input.

+

When set to true (the default), terminal applications +can request mouse reporting and will receive mouse events according to +their requested mode.

+

This can be toggled at runtime using the +toggle_mouse_reporting keybind action.

+
+
mouse-scroll-multiplier
+
+

Multiplier for scrolling distance with the mouse wheel.

+

A prefix of precision: or discrete: can be +used to set the multiplier only for scrolling with the specific type of +devices. These can be comma-separated to set both types of multipliers +at the same time, e.g. precision:0.1,discrete:3. If no +prefix is used, the multiplier applies to all scrolling devices. +Specifying a prefix was introduced in Ghostty 1.2.1.

+

The value will be clamped to [0.01, 10,000]. Both of these are +extreme and you’re likely to have a bad experience if you set either +extreme.

+

The default value is “3” for discrete devices and “1” for precision +devices.

+
+
background-opacity
+
+

The opacity level (opposite of transparency) of the background. A +value of 1 is fully opaque and a value of 0 is fully transparent. A +value less than 0 or greater than 1 will be clamped to the nearest valid +value.

+

On macOS, background opacity is disabled when the terminal enters +native fullscreen. This is because the background becomes gray and it +can cause widgets to show through which isn’t generally desirable.

+

On macOS, changing this configuration requires restarting Ghostty +completely.

+
+
background-opacity-cells
+
+

Applies background opacity to cells with an explicit background color +set.

+

Normally, background-opacity is only applied to the +window background. If a cell has an explicit background color set, such +as red, then that background color will be fully opaque. An effect of +this is that some terminal applications that repaint the background +color of the terminal such as a Neovim and Tmux may not respect the +background-opacity (by design).

+

Setting this to true will apply the +background-opacity to all cells regardless of whether they +have an explicit background color set or not.

+

Available since: 1.2.0

+
+
background-blur
+
+

Whether to blur the background when background-opacity +is less than 1.

+

Valid values are:

+
    +
  • a nonnegative integer specifying the blur intensity
  • +
  • false, equivalent to a blur intensity of 0
  • +
  • true, equivalent to the default blur intensity of 20, +which is reasonable for a good looking blur. Higher blur intensities may +cause strange rendering and performance issues.
  • +
+

On macOS 26.0 and later, there are additional special values that can +be set to use the native macOS glass effects:

+
    +
  • macos-glass-regular - Standard glass effect with some +opacity
  • +
  • macos-glass-clear - Highly transparent glass +effect
  • +
+

If the macOS values are set, then this implies +background-blur = true on non-macOS platforms.

+

Supported on macOS and on some Linux desktop environments, +including:

+
    +
  • KDE Plasma (Wayland and X11)
  • +
+

Warning: the exact blur intensity is ignored under KDE +Plasma, and setting this setting to either true or any +positive blur intensity value would achieve the same effect. The reason +is that KWin, the window compositor powering Plasma, only has one global +blur setting and does not allow applications to specify individual blur +settings.

+

To configure KWin’s global blur setting, open System Settings and go +to “Apps & Windows” > “Window Management” > “Desktop Effects” +and select the “Blur” plugin. If disabled, enable it by ticking the +checkbox to the left. Then click on the “Configure” button and there +will be two sliders that allow you to set background blur and noise +intensities for all apps, including Ghostty.

+

All other Linux desktop environments are as of now unsupported. Users +may need to set environment-specific settings and/or install third-party +plugins in order to support background blur, as there isn’t a unified +interface for doing so.

+
+
unfocused-split-opacity
+
+

The opacity level (opposite of transparency) of an unfocused split. +Unfocused splits by default are slightly faded out to make it easier to +see which split is focused. To disable this feature, set this value to +1.

+

A value of 1 is fully opaque and a value of 0 is fully transparent. +Because “0” is not useful (it makes the window look very weird), the +minimum value is 0.15. This value still looks weird but you can at least +see what’s going on. A value outside of the range 0.15 to 1 will be +clamped to the nearest valid value.

+
+
unfocused-split-fill
+
+

The color to dim the unfocused split. Unfocused splits are dimmed by +rendering a semi-transparent rectangle over the split. This sets the +color of that rectangle and can be used to carefully control the dimming +effect.

+

This will default to the background color.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
split-divider-color
+
+

The color of the split divider. If this is not set, a default will be +chosen. Specified as either hex (#RRGGBB or +RRGGBB) or a named X11 color.

+

Available since: 1.1.0

+
+
split-preserve-zoom
+
+

Control when Ghostty preserves a zoomed split. Under normal +circumstances, any operation that changes focus or layout of the split +tree in a window will unzoom any zoomed split. This configuration allows +you to control this behavior.

+

This can be set to navigation to preserve the zoomed +split state when navigating to another split (e.g. via +goto_split). This will change the zoomed split to the newly +focused split instead of unzooming.

+

Any options can also be prefixed with no- to disable +that option.

+

Example: split-preserve-zoom = navigation

+

Available since: 1.3.0

+
+
search-foreground
+
+

The foreground and background color for search matches. This only +applies to non-focused search matches, also known as candidate +matches.

+

Valid values:

+
    +
  • Hex (#RRGGBB or RRGGBB)
  • +
  • Named X11 color
  • +
  • “cell-foreground” to match the cell foreground color
  • +
  • “cell-background” to match the cell background color
  • +
+

The default value is black text on a golden yellow background.

+
+
+

search-background

+
+
search-selected-foreground
+
+

The foreground and background color for the currently selected search +match. This is the focused match that will be jumped to when using +next/previous search navigation.

+

Valid values:

+
    +
  • Hex (#RRGGBB or RRGGBB)
  • +
  • Named X11 color
  • +
  • “cell-foreground” to match the cell foreground color
  • +
  • “cell-background” to match the cell background color
  • +
+

The default value is black text on a soft peach background.

+
+
+

search-selected-background

+
+
command
+
+

The command to run, usually a shell. If this is not an absolute path, +it’ll be looked up in the PATH. If this is not set, a +default will be looked up from your system. The rules for the default +lookup are:

+
    +
  • SHELL environment variable

  • +
  • passwd entry (user information)

  • +
+

This can contain additional arguments to run the command with. If +additional arguments are provided, the command will be executed using +/bin/sh -c to offload shell argument expansion.

+

To avoid shell expansion altogether, prefix the command with +direct:, e.g. direct:nvim foo. This will avoid +the roundtrip to /bin/sh but will also not support any +shell parsing such as arguments with spaces, filepaths with +~, globs, etc. (Available since: 1.2.0)

+

You can also explicitly prefix the command with shell: +to always wrap the command in a shell. This can be used to ensure our +heuristics to choose the right mode are not used in case they are wrong. +(Available since: 1.2.0)

+

This command will be used for all new terminal surfaces, i.e. new +windows, tabs, etc. If you want to run a command only for the first +terminal surface created when Ghostty starts, use the +initial-command configuration.

+

Ghostty supports the common -e flag for executing a +command with arguments. For example, +ghostty -e fish --with --custom --args. This flag sets the +initial-command configuration, see that for more +information.

+
+
initial-command
+
+

This is the same as “command”, but only applies to the first terminal +surface created when Ghostty starts. Subsequent terminal surfaces will +use the command configuration.

+

After the first terminal surface is created (or closed), there is no +way to run this initial command again automatically. As such, setting +this at runtime works but will only affect the next terminal surface if +it is the first one ever created.

+

If you’re using the ghostty CLI there is also a shortcut +to set this with arguments directly: you can use the -e +flag. For example: ghostty -e fish --with --custom --args. +The -e flag automatically forces some other behaviors as +well:

+
    +
  • Disables shell expansion since the input is expected to already +be shell-expanded by the upstream (e.g. the shell used to type in the +ghostty -e command).

  • +
  • gtk-single-instance=false - This ensures that a new +instance is launched and the CLI args are respected.

  • +
  • quit-after-last-window-closed=true - This ensures +that the Ghostty process will exit when the command exits. Additionally, +the quit-after-last-window-closed-delay is unset.

  • +
  • shell-integration=detect (if not none) +- This prevents forcibly injecting any configured shell integration into +the command’s environment. With -e its highly unlikely that +you’re executing a shell and forced shell integration is likely to cause +problems (e.g. by wrapping your command in a shell, setting env vars, +etc.). This is a safety measure to prevent unexpected behavior. If you +want shell integration with a -e-executed command, you must +either name your binary appropriately or source the shell integration +script manually.

  • +
+
+
notify-on-command-finish
+
+

Controls when command finished notifications are sent. There are +three options:

+
    +
  • never - Never send notifications (the default).
  • +
  • unfocused - Only send notifications if the surface that +the command is running in is not focused.
  • +
  • always - Always send notifications.
  • +
+

Command finished notifications requires that either shell integration +is enabled, or that your shell sends OSC 133 escape sequences to mark +the start and end of commands.

+

On GTK, there is a context menu item that will enable command +finished notifications for a single command, overriding the +never and unfocused options.

+

Available since 1.3.0.

+
+
notify-on-command-finish-action
+
+

If command finished notifications are enabled, this controls how the +user is notified.

+

Available options:

+
    +
  • bell - enabled by default
  • +
  • notify - disabled by default
  • +
+

Options can be combined by listing them as a comma separated list. +Options can be negated by prefixing them with no-. For +example no-bell,notify.

+

Available since 1.3.0.

+
+
notify-on-command-finish-after
+
+

If command finished notifications are enabled, this controls how long +a command must have been running before a notification will be sent. The +default is five seconds.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

Available since 1.3.0

+
+
env
+
+

Extra environment variables to pass to commands launched in a +terminal surface. The format is env=KEY=VALUE.

+

env = foo=bar env = bar=baz

+

Setting env to an empty string will reset the entire map +to default (empty).

+

env =

+

Setting a key to an empty string will remove that particular key and +corresponding value from the map.

+

env = foo=bar env = foo=

+

will result in foo not being passed to the launched +commands.

+

Setting a key multiple times will overwrite previous entries.

+

env = foo=bar env = foo=baz

+

will result in foo=baz being passed to the launched +commands.

+

These environment variables will override any existing environment +variables set by Ghostty. For example, if you set +GHOSTTY_RESOURCES_DIR then the value you set here will +override the value Ghostty typically automatically injects.

+

These environment variables will not be passed to commands +run by Ghostty for other purposes, like open or +xdg-open used to open URLs in your browser.

+

Available since: 1.2.0

+
+
input
+
+

Data to send as input to the command on startup.

+

The configured command will be launched using the +typical rules, then the data specified as this input will be written to +the pty before any other input can be provided.

+

The bytes are sent as-is with no additional encoding. Therefore, be +cautious about input that can contain control characters, because this +can be used to execute programs in a shell.

+

The format of this value is:

+
    +
  • raw:<string> - Send raw text as-is. This uses +Zig string literal syntax so you can specify control characters and +other standard escapes.

  • +
  • path:<path> - Read a filepath and send the +contents. The path must be to a file with finite length. e.g. don’t use +a device such as /dev/stdin or /dev/urandom as +these will block terminal startup indefinitely. Files are limited to +10MB in size to prevent excessive memory usage. If you have files larger +than this you should write a script to read the file and send it to the +terminal.

  • +
+

If no valid prefix is found, it is assumed to be a raw: +input. This is an ergonomic choice to allow you to simply write +input = "Hello, world!" (a common case) without needing to +prefix every value with raw:.

+

This can be repeated multiple times to send more data. The data is +concatenated directly with no separator characters in between (e.g. no +newline).

+

If any of the input sources do not exist, then none of the input will +be sent. Input sources are not verified until the terminal is starting, +so missing paths will not show up in config validation.

+

Changing this configuration at runtime will only affect new +terminals.

+

Available since: 1.2.0

+
+
wait-after-command
+
+

If true, keep the terminal open after the command exits. Normally, +the terminal window closes when the running command (such as a shell) +exits. With this true, the terminal window will stay open until any +keypress is received.

+

This is primarily useful for scripts or debugging.

+
+
abnormal-command-exit-runtime
+
+

The number of milliseconds of runtime below which we consider a +process exit to be abnormal. This is used to show an error message when +the process exits too quickly.

+

On Linux, this must be paired with a non-zero exit code. On macOS, we +allow any exit code because of the way shell processes are launched via +the login command.

+
+
scrollback-limit
+
+

The size of the scrollback buffer in bytes. This also includes the +active screen. No matter what this is set to, enough memory will always +be allocated for the visible screen and anything leftover is the limit +for the scrollback.

+

When this limit is reached, the oldest lines are removed from the +scrollback.

+

Scrollback currently exists completely in memory. This means that the +larger this value, the larger potential memory usage. Scrollback is +allocated lazily up to this limit, so if you set this to a very large +value, it will not immediately consume a lot of memory.

+

This size is per terminal surface, not for the entire +application.

+

It is not currently possible to set an unlimited scrollback buffer. +This is a future planned feature.

+

This can be changed at runtime but will only affect new terminal +surfaces.

+
+
scrollbar
+
+

Control when the scrollbar is shown to scroll the scrollback +buffer.

+

The default value is system.

+

Valid values:

+
    +
  • system - Respect the system settings for when to +show scrollbars. For example, on macOS, this will respect the “Scrollbar +behavior” system setting which by default usually only shows scrollbars +while actively scrolling or hovering the gutter.

  • +
  • never - Never show a scrollbar. You can still scroll +using the mouse, keybind actions, etc. but you will not have a visual UI +widget showing a scrollbar.

  • +
+
+
link
+
+

Match a regular expression against the terminal text and associate +clicking it with an action. This can be used to match URLs, file paths, +etc. Actions can be opening using the system opener +(e.g. open or xdg-open) or executing any +arbitrary binding action.

+

Links that are configured earlier take precedence over links that are +configured later.

+

A default link that matches a URL and opens it in the system opener +always exists. This can be disabled using link-url.

+

TODO: This can’t currently be set!

+
+
link-url
+
+

Enable URL matching. URLs are matched on hover with control (Linux) +or command (macOS) pressed and open using the default system application +for the linked URL.

+

The URL matcher is always lowest priority of any configured links +(see link). If you want to customize URL matching, use +link and disable this.

+
+
link-previews
+
+

Show link previews for a matched URL.

+

When true, link previews are shown for all matched URLs. When false, +link previews are never shown. When set to “osc8”, link previews are +only shown for hyperlinks created with the OSC 8 sequence (in this case, +the link text can differ from the link destination).

+

Available since: 1.2.0

+
+
maximize
+
+

Whether to start the window in a maximized state. This setting +applies to new windows and does not apply to tabs, splits, etc. However, +this setting will apply to all new windows, not just the first one.

+

Available since: 1.1.0

+
+
fullscreen
+
+

Start new windows in fullscreen. This setting applies to new windows +and does not apply to tabs, splits, etc. However, this setting will +apply to all new windows, not just the first one.

+

Allowable values are:

+
    +
  • false - Don’t start in fullscreen (default)
  • +
  • true - Start in native fullscreen
  • +
  • non-native - (macOS only) Start in non-native +fullscreen, hiding the menu bar. This is faster than native fullscreen +since it doesn’t use animations. On non-macOS platforms, this behaves +the same as true.
  • +
  • non-native-visible-menu - (macOS only) Start in +non-native fullscreen, keeping the menu bar visible. On non-macOS +platforms, behaves like true.
  • +
  • non-native-padded-notch - (macOS only) Start in +non-native fullscreen, hiding the menu bar but padding for the notch on +applicable devices. On non-macOS platforms, behaves like +true.
  • +
+

Important: tabs DO NOT WORK with non-native fullscreen modes. +Non-native fullscreen removes the titlebar and macOS native tabs require +the titlebar. If you use tabs, use true (native) +instead.

+

On macOS, true (native fullscreen) does not work if +window-decoration is set to false, because +native fullscreen on macOS requires window decorations.

+
+
title
+
+

The title Ghostty will use for the window. This will force the title +of the window to be this title at all times and Ghostty will ignore any +set title escape sequences programs (such as Neovim) may send.

+

If you want a blank title, set this to one or more spaces by quoting +the value. For example, title = " ". This effectively hides +the title. This is necessary because setting a blank value resets the +title to the default value of the running program.

+

This configuration can be reloaded at runtime. If it is set, the +title will update for all windows. If it is unset, the next title change +escape sequence will be honored but previous changes will not +retroactively be set. This latter case may require you to restart +programs such as Neovim to get the new title.

+
+
class
+
+

The setting that will change the application class value.

+

This controls the class field of the WM_CLASS X11 +property (when running under X11), the Wayland application ID (when +running under Wayland), and the bus name that Ghostty uses to connect to +DBus.

+

Note that changing this value between invocations will create new, +separate instances, of Ghostty when running with +gtk-single-instance=true. See that option for more +details.

+

Changing this value may break launching Ghostty from +.desktop files, via DBus activation, or systemd user +services as the system is expecting Ghostty to connect to DBus using the +default class when it is launched.

+

The class name must follow the requirements defined in +the GTK documentation.

+

The default is com.mitchellh.ghostty.

+

This only affects GTK builds.

+
+
x11-instance-name
+
+

This controls the instance name field of the WM_CLASS +X11 property when running under X11. It has no effect otherwise.

+

The default is ghostty.

+

This only affects GTK builds.

+
+
working-directory
+
+

The directory to change to after starting the command.

+

This setting is secondary to the +window-inherit-working-directory setting. If a previous +Ghostty terminal exists in the same process, +window-inherit-working-directory will take precedence. +Otherwise, this setting will be used. Typically, this setting is used +only for the first window.

+

The default is inherit except in special scenarios +listed next. On macOS, if Ghostty can detect it is launched from launchd +(double-clicked) or open, then it defaults to +home. On Linux with GTK, if Ghostty can detect it was +launched from a desktop launcher, then it defaults to +home.

+

The value of this must be an absolute path, a path prefixed with +~/ (the tilde will be expanded to the user’s home +directory), or one of the special values below:

+
    +
  • home - The home directory of the executing +user.

  • +
  • inherit - The working directory of the launching +process.

  • +
+
+
keybind
+
+

Key bindings. The format is trigger=action. Duplicate +triggers will overwrite previously set values. The list of actions is +available in the documentation or using the +ghostty +list-actions command.

+

Trigger: +-separated list of keys and modifiers. +Example: ctrl+a, ctrl+shift+b, +up.

+

If the key is a single Unicode codepoint, the trigger will match any +presses that produce that codepoint. These are impacted by keyboard +layouts. For example, a will match the a key +on a QWERTY keyboard, but will match the q key on a AZERTY +keyboard (assuming US physical layout).

+

For Unicode codepoints, matching is done by comparing the set of +modifiers with the unmodified codepoint. The unmodified codepoint is +sometimes called an “unshifted character” in other software, but all +modifiers are considered, not only shift. For example, +ctrl+a will match a but not +ctrl+shift+a (which is A on a US +keyboard).

+

Further, codepoint matching is case-insensitive and the unmodified +codepoint is always case folded for comparison. As a result, +ctrl+A configured will match when ctrl+a is +pressed. Note that this means some key combinations are impossible +depending on keyboard layout. For example, ctrl+_ is +impossible on a US keyboard because _ is +shift+- and ctrl+shift+- is not equal to +ctrl+_ (because the modifiers don’t match!). More details +on impossible key combinations can be found at this excellent source +written by Qt developers: +https://doc.qt.io/qt-6/qkeysequence.html#keyboard-layout-issues

+

Physical key codes can be specified by using any of the key codes as +specified by the W3C +specification. For example, KeyA will match the +physical a key on a US standard keyboard regardless of the +keyboard layout. These are case-sensitive.

+

For aesthetic reasons, the w3c codes also support snake case. For +example, key_a is equivalent to KeyA. The only +exceptions are function keys, e.g. F1 is f1 +(no underscore). This is a consequence of our internal code using snake +case but is purposely supported and tested so it is safe to use. It +allows an all-lowercase binding which I find more aesthetically +pleasing.

+

Function keys such as insert, up, +f5, etc. are also specified using the keys as specified by +the previously linked W3C specification.

+

Physical keys always match with a higher priority than Unicode +codepoints, so if you specify both a and KeyA, +the physical key will always be used regardless of what order they are +configured.

+

The special key catch_all can be used to match any key +that is not otherwise bound. This can be combined with modifiers, for +example ctrl+catch_all will match any key pressed with +ctrl that is not otherwise bound. When looking up a +binding, Ghostty first tries to match catch_all with +modifiers. If no match is found and the event has modifiers, it falls +back to catch_all without modifiers.

+

Valid modifiers are shift, ctrl (alias: +control), alt (alias: opt, +option), and super (alias: cmd, +command). You may use the modifier or the alias. When +debugging keybinds, the non-aliased modifier will always be used in +output.

+

Note: The fn or “globe” key on keyboards are not supported as a +modifier. This is a limitation of the operating systems and GUI toolkits +that Ghostty uses.

+

Some additional notes for triggers:

+
    +
  • modifiers cannot repeat, ctrl+ctrl+a is +invalid.

  • +
  • modifiers and keys can be in any order, shift+a+ctrl +is weird, but valid.

  • +
  • only a single key input is allowed, ctrl+a+b is +invalid.

  • +
+

You may also specify multiple triggers separated by > +to require a sequence of triggers to activate the action. For example, +ctrl+a>n=new_window will only trigger the +new_window action if the user presses ctrl+a +followed separately by n. In other software, this is +sometimes called a leader key, a key chord, a key table, etc. There is +no hardcoded limit on the number of parts in a sequence.

+

Warning: If you define a sequence as a CLI argument to +ghostty, you probably have to quote the keybind since +> is a special character in most shells. Example: +ghostty –keybind=‘ctrl+a>n=new_window’

+

A trigger sequence has some special handling:

+
    +
  • Ghostty will wait an indefinite amount of time for the next key +in the sequence. There is no way to specify a timeout. The only way to +force the output of a prefix key is to assign another keybind to +specifically output that key +(e.g. ctrl+a>ctrl+a=text:foo) or press an unbound key +which will send both keys to the program.

  • +
  • If an unbound key is pressed during a sequence and a +catch_all binding exists that would ignore the +input, the entire sequence is dropped and nothing happens. Otherwise, +the entire sequence is encoded and sent to the running program as if no +keybind existed.

  • +
  • If a prefix in a sequence is previously bound, the sequence will +override the previous binding. For example, if ctrl+a is +bound to new_window and ctrl+a>n is bound +to new_tab, pressing ctrl+a will do +nothing.

  • +
  • Adding to the above, if a previously bound sequence prefix is +used in a new, non-sequence binding, the entire previously bound +sequence will be unbound. For example, if you bind +ctrl+a>n and ctrl+a>t, and then bind +ctrl+a directly, both ctrl+a>n and +ctrl+a>t will become unbound.

  • +
  • Trigger sequences are not allowed for global: or +all:-prefixed triggers. This is a limitation we could +remove in the future.

  • +
+

Action is the action to take when the trigger is satisfied. It takes +the format action or action:param. The latter +form is only valid if the action requires a parameter.

+
    +
  • ignore - Do nothing, ignore the key input. This can +be used to black hole certain inputs to have no effect.

  • +
  • unbind - Remove the binding. This makes it so the +previous action is removed, and the key will be sent through to the +child command if it is printable. Unbind will remove any matching +trigger, including physical:-prefixed triggers without +specifying the prefix.

  • +
  • csi:text - Send a CSI sequence. +e.g. csi:A sends “cursor up”.

  • +
  • esc:text - Send an escape sequence. +e.g. esc:d deletes to the end of the word to the +right.

  • +
  • text:text - Send a string. Uses Zig string literal +syntax. e.g. text:\x15 sends Ctrl-U.

  • +
  • All other actions can be found in the documentation or by using +the ghostty +list-actions command.

  • +
+

Some notes for the action:

+
    +
  • The parameter is taken as-is after the :. Double quotes +or other mechanisms are included and NOT parsed. If you want to send a +string value that includes spaces, wrap the entire trigger/action in +double quotes. Example: --keybind="up=csi:A B"
  • +
+

There are some additional special values that can be specified for +keybind:

+
    +
  • keybind=clear will clear all set keybindings. Warning: +this removes ALL keybindings up to this point, including the default +keybindings.
  • +
+

The keybind trigger can be prefixed with some special values to +change the behavior of the keybind. These are:

+
    +
  • all:

    +

    Make the keybind apply to all terminal surfaces. By default, keybinds +only apply to the focused terminal surface. If this is true, then the +keybind will be sent to all terminal surfaces. This only applies to +actions that are surface-specific. For actions that are already global +(e.g. quit), this prefix has no effect.

    +

    Available since: 1.0.0

  • +
  • global:

    +

    Make the keybind global. By default, keybinds only work within +Ghostty and under the right conditions (application focused, sometimes +terminal focused, etc.). If you want a keybind to work globally across +your system (e.g. even when Ghostty is not focused), specify this +prefix. This prefix implies all:.

    +

    Note: this does not work in all environments; see the additional +notes below for more information.

    +

    Available since: 1.0.0 on macOS, 1.2.0 on GTK

  • +
  • unconsumed:

    +

    Do not consume the input. By default, a keybind will consume the +input, meaning that the associated encoding (if any) will not be sent to +the running program in the terminal. If you wish to send the encoded +value to the program, specify the unconsumed: prefix before +the entire keybind. For example: +unconsumed:ctrl+a=reload_config. global: and +all:-prefixed keybinds will always consume the input +regardless of this setting. Since they are not associated with a +specific terminal surface, they’re never encoded.

    +

    Available since: 1.0.0

  • +
  • performable:

    +

    Only consume the input if the action is able to be performed. For +example, the copy_to_clipboard action will only consume the +input if there is a selection to copy. If there is no selection, Ghostty +behaves as if the keybind was not set. This has no effect with +global: or all:-prefixed keybinds. For key +sequences, this will reset the sequence if the action is not performable +(acting identically to not having a keybind set at all).

    +

    Performable keybinds will not appear as menu shortcuts in the +application menu. This is because the menu shortcuts force the action to +be performed regardless of the state of the terminal. Performable +keybinds will still work, they just won’t appear as a shortcut label in +the menu.

    +

    Available since: 1.1.0

  • +
+

Keybind triggers are not unique per prefix combination. For example, +ctrl+a and global:ctrl+a are not two separate +keybinds. The keybind set later will overwrite the keybind set earlier. +In this case, the global: keybind will be used.

+

Multiple prefixes can be specified. For example, +global:unconsumed:ctrl+a=reload_config will make the +keybind global and not consume the input to reload the config.

+

Note: global: is only supported on macOS and certain +Linux platforms.

+

On macOS, this feature requires accessibility permissions to be +granted to Ghostty. When a global: keybind is specified and +Ghostty is launched or reloaded, Ghostty will attempt to request these +permissions. If the permissions are not granted, the keybind will not +work. On macOS, you can find these permissions in System Preferences +-> Privacy & Security -> Accessibility.

+

On Linux, you need a desktop environment that implements the Global +Shortcuts protocol as a part of its XDG desktop protocol +implementation. Desktop environments that are known to support (or not +support) global shortcuts include:

+
    +
  • Users using KDE Plasma (since 5.27) +and GNOME (since 48) should be +able to use global shortcuts with little to no configuration.

  • +
  • Some manual configuration is required on Hyprland. Consult the +steps outlined on the Hyprland +Wiki to set up global shortcuts correctly. (Important: xdg-desktop-portal-hyprland +must also be installed!)

  • +
  • Notably, global shortcuts have not been implemented on +wlroots-based compositors like Sway (see upstream +issue).

  • +
+

Chained Actions

+

A keybind can have multiple actions by using the chain +keyword for subsequent actions. When a keybind is activated, all chained +actions are executed in order. The syntax is:

+
keybind = ctrl+a=new_window
+keybind = chain=goto_split:left
+

This binds ctrl+a to first open a new window, then move +focus to the left split. Each chain entry appends an action +to the most recently defined keybind. You can chain as many actions as +you want:

+
keybind = ctrl+a=new_window
+keybind = chain=goto_split:left
+keybind = chain=toggle_fullscreen
+

Chained actions cannot have prefixes like global: or +unconsumed:. The flags from the original keybind apply to +the entire chain.

+

Chained actions work with key sequences as well. For example:

+
keybind = ctrl+a>n=new_window
+keybind = chain=goto_split:left
+

Chains with key sequences apply to the most recent binding in the +sequence.

+

Chained keybinds are available since Ghostty 1.3.0.

+

Key Tables

+

You may also create a named set of keybindings known as a “key +table.” A key table must be explicitly activated for the bindings to +become available. This can be used to implement features such as a “copy +mode”, “vim mode”, etc. Generically, this can implement modal keyboard +input.

+

Key tables are defined using the syntax +<table>/<binding>. The +<binding> value is everything documented above for +keybinds. The <table> value is the name of the key +table. Table names can contain anything except /, +=, +, and >. The characters ++ and > are reserved for keybind syntax +(modifier combinations and key sequences). For example +foo/ctrl+a=new_window defines a binding within a table +named foo.

+

Tables are activated and deactivated using the binding actions +activate_key_table:<name> and +deactivate_key_table. Other table related binding actions +also exist; see the documentation for a full list. These are the primary +way to interact with key tables.

+

Binding lookup proceeds from the innermost table outward, so keybinds +in the default table remain available unless explicitly unbound in an +inner table.

+

A key table has some special syntax and handling:

+
    +
  • <name>/ (with no binding) defines and clears a +table, resetting all of its keybinds and settings.

  • +
  • You cannot activate a table that is already the innermost table; +such attempts are ignored. However, the same table can appear multiple +times in the stack as long as it is not innermost (e.g., +A -> B -> A -> B is valid, but +A -> B -> B is not).

  • +
  • A table can be activated in one-shot mode using +activate_key_table_once:<name>. A one-shot table is +automatically deactivated when any non-catch-all binding is +invoked.

  • +
  • Key sequences work within tables: +foo/ctrl+a>ctrl+b=new_window. If an invalid key is +pressed, the sequence ends but the table remains active.

  • +
  • Chain actions work within tables, the chain keyword +applies to the most recently defined binding in the table. e.g. if you +set table/ctrl+a=new_window you can chain by using +chain=text:hello. Important: chain itself doesn’t get +prefixed with the table name, since it applies to the most recent +binding in any table.

  • +
  • Prefixes like global: work within tables: +foo/global:ctrl+a=new_window.

  • +
+

Key tables are available since Ghostty 1.3.0.

+
+
key-remap
+
+

Remap modifier keys within Ghostty. This allows you to swap or +reassign modifier keys at the application level without affecting +system-wide settings.

+

The format is from=to where both from and +to are modifier key names. You can use generic names like +ctrl, alt, shift, +super (macOS: cmd/command) or +sided names like left_ctrl, right_alt, +etc.

+

This will NOT change keyboard layout or key encodings outside of +Ghostty. For example, on macOS, option+a may still produce +å even if option is remapped to +ctrl. Desktop environments usually handle key layout long +before Ghostty receives the key events.

+

Example:

+
key-remap = ctrl=super
+key-remap = left_control=right_alt
+

Important notes:

+
    +
  • This is a one-way remap. If you remap ctrl=super, +then the physical Ctrl key acts as Super, but the Super key remains +Super.

  • +
  • Remaps are not transitive. If you remap ctrl=super +and alt=ctrl, pressing Alt will produce Ctrl, NOT +Super.

  • +
  • This affects both keybind matching and terminal input encoding. +This does NOT impact keyboard layout or how keys are interpreted prior +to Ghostty receiving them. For example, option+a on macOS +may still produce å even if option is remapped +to ctrl.

  • +
  • Generic modifiers (e.g. ctrl) match both left and +right physical keys. Use sided names (e.g. left_ctrl) to +remap only one side.

  • +
+

There are other edge case scenarios that may not behave as expected +but are working as intended the way this feature is designed:

+
    +
  • On macOS, bindings in the main menu will trigger before any +remapping is done. This is because macOS itself handles menu activation +and this happens before Ghostty receives the key event. To workaround +this, you should unbind the menu items and rebind them using your +desired modifier.
  • +
+

This configuration can be repeated to specify multiple remaps.

+
+
window-padding-x
+
+

Horizontal window padding. This applies padding between the terminal +cells and the left and right window borders. The value is in points, +meaning that it will be scaled appropriately for screen DPI.

+

If this value is set too large, the screen will render nothing, +because the grid will be completely squished by the padding. It is up to +you as the user to pick a reasonable value. If you pick an unreasonable +value, a warning will appear in the logs.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+

To set a different left and right padding, specify two numerical +values separated by a comma. For example, +window-padding-x = 2,4 will set the left padding to 2 and +the right padding to 4. If you want to set both paddings to the same +value, you can use a single value. For example, +window-padding-x = 2 will set both paddings to 2.

+
+
window-padding-y
+
+

Vertical window padding. This applies padding between the terminal +cells and the top and bottom window borders. The value is in points, +meaning that it will be scaled appropriately for screen DPI.

+

If this value is set too large, the screen will render nothing, +because the grid will be completely squished by the padding. It is up to +you as the user to pick a reasonable value. If you pick an unreasonable +value, a warning will appear in the logs.

+

Changing this configuration at runtime will only affect new +terminals, i.e. new windows, tabs, etc.

+

To set a different top and bottom padding, specify two numerical +values separated by a comma. For example, +window-padding-y = 2,4 will set the top padding to 2 and +the bottom padding to 4. If you want to set both paddings to the same +value, you can use a single value. For example, +window-padding-y = 2 will set both paddings to 2.

+
+
window-padding-balance
+
+

The viewport dimensions are usually not perfectly divisible by the +cell size. In this case, some extra padding on the end of a column and +the bottom of the final row may exist. If this is true, +then this extra padding is automatically balanced between all four edges +to minimize imbalance on one side. If this is false, the +top left grid cell will always hug the edge with zero padding other than +what may be specified with the other window-padding +options.

+

If other window-padding fields are set and this is +true, this will still apply. The other padding is applied +first and may affect how many grid cells actually exist, and this is +applied last in order to balance the padding given a certain viewport +size and grid cell size.

+
+
window-padding-color
+
+

The color of the padding area of the window. Valid values are:

+
    +
  • background - The background color specified in +background.
  • +
  • extend - Extend the background color of the nearest +grid cell.
  • +
  • extend-always - Same as “extend” but always extends +without applying any of the heuristics that disable extending noted +below.
  • +
+

The “extend” value will be disabled in certain scenarios. On primary +screen applications (e.g. not something like Neovim), the color will not +be extended vertically if any of the following are true:

+
    +
  • The nearest row has any cells that have the default background +color. The thinking is that in this case, the default background color +looks fine as a padding color.
  • +
  • The nearest row is a prompt row (requires shell integration). The +thinking here is that prompts often contain powerline glyphs that do not +look good extended.
  • +
  • The nearest row contains a perfect fit powerline character. These +don’t look good extended.
  • +
+
+
window-vsync
+
+

Synchronize rendering with the screen refresh rate. If true, this +will minimize tearing and align redraws with the screen but may cause +input latency. If false, this will maximize redraw frequency but may +cause tearing, and under heavy load may use more CPU and power.

+

This defaults to true because out-of-sync rendering on macOS can +cause kernel panics (macOS 14.4+) and performance issues for external +displays over some hardware such as DisplayLink. If you want to minimize +input latency, set this to false with the known aforementioned +risks.

+

Changing this value at runtime will only affect new terminals.

+

This setting is only supported currently on macOS.

+
+
window-inherit-working-directory
+
+

If true, new windows will inherit the working directory of the +previously focused window. If no window was previously focused, the +default working directory will be used (the +working-directory option).

+
+
tab-inherit-working-directory
+
+

If true, new tabs will inherit the working directory of the +previously focused tab. If no tab was previously focused, the default +working directory will be used (the working-directory +option).

+
+
split-inherit-working-directory
+
+

If true, new split panes will inherit the working directory of the +previously focused split. If no split was previously focused, the +default working directory will be used (the +working-directory option).

+
+
window-inherit-font-size
+
+

If true, new windows and tabs will inherit the font size of the +previously focused window. If no window was previously focused, the +default font size will be used. If this is false, the default font size +specified in the configuration font-size will be used.

+
+
window-decoration
+
+

Configure a preference for window decorations. This setting specifies +a preference; the actual OS, desktop environment, window +manager, etc. may override this preference. Ghostty will do its best to +respect this preference but it may not always be possible.

+

Valid values:

+
    +
  • none

    +

    All window decorations will be disabled. Titlebar, borders, etc. will +not be shown. On macOS, this will also disable tabs (enforced by the +system).

  • +
  • auto

    +

    Automatically decide to use either client-side or server-side +decorations based on the detected preferences of the current OS and +desktop environment. This option usually makes Ghostty look the most +“native” for your desktop.

  • +
  • client

    +

    Prefer client-side decorations.

    +

    Available since: 1.1.0

  • +
  • server

    +

    Prefer server-side decorations. This is only relevant on Linux with +GTK, either on X11, or Wayland on a compositor that supports the +org_kde_kwin_server_decoration protocol (e.g. KDE Plasma, +but almost any non-GNOME desktop supports this protocol).

    +

    If server is set but the environment doesn’t support +server-side decorations, client-side decorations will be used +instead.

    +

    Available since: 1.1.0

  • +
+

The default value is auto.

+

For the sake of backwards compatibility and convenience, this setting +also accepts boolean true and false values. If set to true, +this is equivalent to auto. If set to false, +this is equivalent to none. This is convenient for users +who live primarily on systems that don’t differentiate between client +and server-side decorations (e.g. macOS and Windows).

+

The “toggle_window_decorations” keybind action can be used to create +a keybinding to toggle this setting at runtime.

+

macOS: To hide the titlebar without removing the native window +borders or rounded corners, use +macos-titlebar-style = hidden instead.

+
+
window-title-font-family
+
+

The font that will be used for the application’s window and tab +titles.

+

If this setting is left unset, the system default font will be +used.

+

Note: any font available on the system may be used, this font is not +required to be a fixed-width font.

+

Available since: 1.0.0 on macOS, 1.1.0 on GTK

+
+
window-subtitle
+
+

The text that will be displayed in the subtitle of the window. Valid +values:

+
    +
  • false - Disable the subtitle.
  • +
  • working-directory - Set the subtitle to the working +directory of the surface.
  • +
+

This feature is only supported on GTK.

+

Available since: 1.1.0

+
+
window-theme
+
+

The theme to use for the windows. Valid values:

+
    +
  • auto - Determine the theme based on the configured +terminal background color. This has no effect if the “theme” +configuration has separate light and dark themes. In that case, the +behavior of “auto” is equivalent to “system”.
  • +
  • system - Use the system theme.
  • +
  • light - Use the light theme regardless of system +theme.
  • +
  • dark - Use the dark theme regardless of system +theme.
  • +
  • ghostty - Use the background and foreground colors +specified in the Ghostty configuration. This is only supported on Linux +builds.
  • +
+

On macOS, if macos-titlebar-style is tabs +or transparent, the window theme will be automatically set +based on the luminosity of the terminal background color. This only +applies to terminal windows. This setting will still apply to +non-terminal windows within Ghostty.

+

This is currently only supported on macOS and Linux.

+
+
window-colorspace
+
+

The color space to use when interpreting terminal colors. “Terminal +colors” refers to colors specified in your configuration and colors +produced by direct-color SGR sequences.

+

Valid values:

+
    +
  • srgb - Interpret colors in the sRGB color space. This +is the default.
  • +
  • display-p3 - Interpret colors in the Display P3 color +space.
  • +
+

This setting is currently only supported on macOS.

+
+
window-height
+
+

The initial window size. This size is in terminal grid cells by +default. Both values must be set to take effect. If only one value is +set, it is ignored.

+

We don’t currently support specifying a size in pixels but a future +change can enable that. If this isn’t specified, the app runtime will +determine some default size.

+

Note that the window manager may put limits on the size or override +the size. For example, a tiling window manager may force the window to +be a certain size to fit within the grid. There is nothing Ghostty will +do about this, but it will make an effort.

+

Sizes larger than the screen size will be clamped to the screen size. +This can be used to create a maximized-by-default window size.

+

This will not affect new tabs, splits, or other nested terminal +elements. This only affects the initial window size of any new window. +Changing this value will not affect the size of the window after it has +been created. This is only used for the initial size.

+

BUG: On Linux with GTK, the calculated window size will not properly +take into account window decorations. As a result, the grid dimensions +will not exactly match this configuration. If window decorations are +disabled (see window-decoration), then this will work as +expected.

+

Windows smaller than 10 wide by 4 high are not allowed.

+
+
+

window-width

+
+
window-position-x
+
+

The starting window position. This position is in pixels and is +relative to the top-left corner of the primary monitor. Both values must +be set to take effect. If only one value is set, it is ignored.

+

Note that the window manager may put limits on the position or +override the position. For example, a tiling window manager may force +the window to be a certain position to fit within the grid. There is +nothing Ghostty will do about this, but it will make an effort.

+

Also note that negative values are also up to the operating system +and window manager. Some window managers may not allow windows to be +placed off-screen.

+

Invalid positions are runtime-specific, but generally the positions +are clamped to the nearest valid position.

+

On macOS, the window position is relative to the top-left corner of +the visible screen area. This means that if the menu bar is visible, the +window will be placed below the menu bar.

+

Note: this is only supported on macOS. The GTK runtime does not +support setting the window position, as windows are only allowed +position themselves in X11 and not Wayland.

+
+
+

window-position-y

+
+
window-save-state
+
+

Whether to enable saving and restoring window state. Window state +includes their position, size, tabs, splits, etc. Some window state +requires shell integration, such as preserving working directories. See +shell-integration for more information.

+

There are three valid values for this configuration:

+
    +
  • default will use the default system behavior. On +macOS, this will only save state if the application is forcibly +terminated or if it is configured systemwide via Settings.app.

  • +
  • never will never save window state.

  • +
  • always will always save window state whenever +Ghostty is exited.

  • +
+

If you change this value to never while Ghostty is not +running, the next Ghostty launch will NOT restore the window state.

+

If you change this value to default while Ghostty is not +running and the previous exit saved state, the next Ghostty launch will +still restore the window state. This is because Ghostty cannot know if +the previous exit was due to a forced save or not (macOS doesn’t provide +this information).

+

If you change this value so that window state is saved while Ghostty +is not running, the previous window state will not be restored because +Ghostty only saves state on exit if this is enabled.

+

The default value is default.

+

This is currently only supported on macOS. This has no effect on +Linux.

+
+
window-step-resize
+
+

Resize the window in discrete increments of the focused surface’s +cell size. If this is disabled, surfaces are resized in pixel +increments. Currently only supported on macOS.

+
+
window-new-tab-position
+
+

The position where new tabs are created. Valid values:

+
    +
  • current - Insert the new tab after the currently +focused tab, or at the end if there are no focused tabs.

  • +
  • end - Insert the new tab at the end of the tab +list.

  • +
+
+
window-show-tab-bar
+
+

Whether to show the tab bar.

+

Valid values:

+
    +
  • always

    +

    Always display the tab bar, even when there’s only one tab.

    +

    Available since: 1.2.0

  • +
  • auto (default)

    +

    Automatically show and hide the tab bar. The tab bar is only shown +when there are two or more tabs present.

  • +
  • never

    +

    Never show the tab bar. Tabs are only accessible via the tab overview +or by keybind actions.

  • +
+

Currently only supported on Linux (GTK).

+
+
window-titlebar-background
+
+

Background color for the window titlebar. This only takes effect if +window-theme is set to ghostty. Currently only supported in the GTK app +runtime.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
window-titlebar-foreground
+
+

Foreground color for the window titlebar. This only takes effect if +window-theme is set to ghostty. Currently only supported in the GTK app +runtime.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
resize-overlay
+
+

This controls when resize overlays are shown. Resize overlays are a +transient popup that shows the size of the terminal while the surfaces +are being resized. The possible options are:

+
    +
  • always - Always show resize overlays.
  • +
  • never - Never show resize overlays.
  • +
  • after-first - The resize overlay will not appear when +the surface is first created, but will show up if the surface is +subsequently resized.
  • +
+

The default is after-first.

+
+
resize-overlay-position
+
+

If resize overlays are enabled, this controls the position of the +overlay. The possible options are:

+
    +
  • center
  • +
  • top-left
  • +
  • top-center
  • +
  • top-right
  • +
  • bottom-left
  • +
  • bottom-center
  • +
  • bottom-right
  • +
+

The default is center.

+
+
resize-overlay-duration
+
+

If resize overlays are enabled, this controls how long the overlay is +visible on the screen before it is hidden. The default is ¾ of a second +or 750 ms.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

Available since 1.0.0

+
+
focus-follows-mouse
+
+

If true, when there are multiple split panes, the mouse selects the +pane that is focused. This only applies to the currently focused window; +e.g. mousing over a split in an unfocused window will not focus that +split and bring the window to front.

+

Default is false.

+
+
clipboard-read
+
+

Whether to allow programs running in the terminal to read/write to +the system clipboard (OSC 52, for googling). The default is to allow +clipboard reading after prompting the user and allow writing +unconditionally.

+

Valid values are:

+
    +
  • ask
  • +
  • allow
  • +
  • deny
  • +
+
+
+

clipboard-write

+
+
clipboard-trim-trailing-spaces
+
+

Trims trailing whitespace on data that is copied to the clipboard. +This does not affect data sent to the clipboard via +clipboard-write. This only applies to trailing whitespace +on lines that have other characters. Completely blank lines always have +their whitespace trimmed.

+
+
clipboard-paste-protection
+
+

Require confirmation before pasting text that appears unsafe. This +helps prevent a “copy/paste attack” where a user may accidentally +execute unsafe commands by pasting text with newlines.

+
+
clipboard-paste-bracketed-safe
+
+

If true, bracketed pastes will be considered safe. By default, +bracketed pastes are considered safe. “Bracketed” pastes are pastes +while the running program has bracketed paste mode enabled (a setting +set by the running program, not the terminal emulator).

+
+
title-report
+
+

Enables or disabled title reporting (CSI 21 t). This escape sequence +allows the running program to query the terminal title. This is a common +security issue and is disabled by default.

+

Warning: This can expose sensitive information at best and enable +arbitrary code execution at worst (with a maliciously crafted title and +a minor amount of user interaction).

+

Available since: 1.0.1

+
+
image-storage-limit
+
+

The total amount of bytes that can be used for image data (e.g. the +Kitty image protocol) per terminal screen. The maximum value is +4,294,967,295 (4GiB). The default is 320MB. If this is set to zero, then +all image protocols will be disabled.

+

This value is separate for primary and alternate screens so the +effective limit per surface is double.

+
+
copy-on-select
+
+

Whether to automatically copy selected text to the clipboard. +true will prefer to copy to the selection clipboard, +otherwise it will copy to the system clipboard.

+

The value clipboard will always copy text to the +selection clipboard as well as the system clipboard.

+

Middle-click paste will always use the selection clipboard. +Middle-click paste is always enabled even if this is +false.

+

The default value is true on Linux and macOS.

+
+
right-click-action
+
+

The action to take when the user right-clicks on the terminal +surface.

+

Valid values: * context-menu - Show the context menu. * +paste - Paste the contents of the clipboard. * +copy - Copy the selected text to the clipboard. * +copy-or-paste - If there is a selection, copy the selected +text to the clipboard; otherwise, paste the contents of the clipboard. * +ignore - Do nothing, ignore the right-click.

+

The default value is context-menu.

+
+
click-repeat-interval
+
+

The time in milliseconds between clicks to consider a click a repeat +(double, triple, etc.) or an entirely new single click. A value of zero +will use a platform-specific default. The default on macOS is determined +by the OS settings. On every other platform it is 500ms.

+
+
config-file
+
+

Additional configuration files to read. This configuration can be +repeated to read multiple configuration files. Configuration files +themselves can load more configuration files. Paths are relative to the +file containing the config-file directive. For command-line +arguments, paths are relative to the current working directory.

+

Prepend a ? character to the file path to suppress errors if the file +does not exist. If you want to include a file that begins with a literal +? character, surround the file path in double quotes (“).

+

Cycles are not allowed. If a cycle is detected, an error will be +logged and the configuration file will be ignored.

+

Configuration files are loaded after the configuration they’re +defined within in the order they’re defined. THIS IS A VERY +SUBTLE BUT IMPORTANT POINT. To put it another way: +configuration files do not take effect until after the entire +configuration is loaded. For example, in the configuration below:

+
config-file = "foo"
+a = 1
+

If “foo” contains a = 2, the final value of +a will be 2, because foo is loaded after the +configuration file that configures the nested config-file +value.

+
+
config-default-files
+
+

When this is true, the default configuration file paths will be +loaded. The default configuration file paths are currently only the XDG +config path ($XDG_CONFIG_HOME/ghostty/config.ghostty).

+

If this is false, the default configuration paths will not be loaded. +This is targeted directly at using Ghostty from the CLI in a way that +minimizes external effects.

+

This is a CLI-only configuration. Setting this in a configuration +file will have no effect. It is not an error, but it will not do +anything. This configuration can only be set via CLI arguments.

+
+
confirm-close-surface
+
+

Confirms that a surface should be closed before closing it.

+

This defaults to true. If set to false, +surfaces will close without any confirmation. This can also be set to +always, which will always confirm closing a surface, even +if shell integration says a process isn’t running.

+
+
quit-after-last-window-closed
+
+

Whether or not to quit after the last surface is closed.

+

This defaults to false on macOS since that is standard +behavior for a macOS application. On Linux, this defaults to +true since that is generally expected behavior.

+

On Linux, if this is true, Ghostty can delay quitting +fully until a configurable amount of time has passed after the last +window is closed. See the documentation of +quit-after-last-window-closed-delay.

+
+
quit-after-last-window-closed-delay
+
+

Controls how long Ghostty will stay running after the last open +surface has been closed. This only has an effect if +quit-after-last-window-closed is also set to +true.

+

The minimum value for this configuration is 1s. Any +values lower than this will be clamped to 1s.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

The maximum value is +584y 49w 23h 34m 33s 709ms 551µs 615ns. Any value larger +than this will be clamped to the maximum value.

+

By default quit-after-last-window-closed-delay is unset +and Ghostty will quit immediately after the last window is closed if +quit-after-last-window-closed is true.

+

Only implemented on Linux.

+
+
initial-window
+
+

This controls whether an initial window is created when Ghostty is +run. Note that if quit-after-last-window-closed is +true and quit-after-last-window-closed-delay +is set, setting initial-window to false will +mean that Ghostty will quit after the configured delay if no window is +ever created. Only implemented on Linux and macOS.

+
+
undo-timeout
+
+

The duration that undo operations remain available. After this time, +the operation will be removed from the undo stack and cannot be +undone.

+

The default value is 5 seconds.

+

This timeout applies per operation, meaning that if you perform +multiple operations, each operation will have its own timeout. New +operations do not reset the timeout of previous operations.

+

A timeout of zero will effectively disable undo operations. It is not +possible to set an infinite timeout, but you can set a very large +timeout to effectively disable the timeout (on the order of years). This +is highly discouraged, as it will cause the undo stack to grow +indefinitely, memory usage to grow unbounded, and terminal sessions to +never actually quit.

+

The duration is specified as a series of numbers followed by time +units. Whitespace is allowed between numbers and units. Each number and +unit will be added together to form the total duration.

+

The allowed time units are as follows:

+
    +
  • y - 365 SI days, or 8760 hours, or 31536000 seconds. No +adjustments are made for leap years or leap seconds.
  • +
  • d - one SI day, or 86400 seconds.
  • +
  • h - one hour, or 3600 seconds.
  • +
  • m - one minute, or 60 seconds.
  • +
  • s - one second.
  • +
  • ms - one millisecond, or 0.001 second.
  • +
  • us or µs - one microsecond, or 0.000001 +second.
  • +
  • ns - one nanosecond, or 0.000000001 second.
  • +
+

Examples: * 1h30m * 45s

+

Units can be repeated and will be added together. This means that +1h1h is equivalent to 2h. This is confusing +and should be avoided. A future update may disallow this.

+

This configuration is only supported on macOS. Linux doesn’t support +undo operations at all so this configuration has no effect.

+

Available since: 1.2.0

+
+
quick-terminal-position
+
+

The position of the “quick” terminal window. To learn more about the +quick terminal, see the documentation for the +toggle_quick_terminal binding action.

+

Valid values are:

+
    +
  • top - Terminal appears at the top of the screen.
  • +
  • bottom - Terminal appears at the bottom of the +screen.
  • +
  • left - Terminal appears at the left of the screen.
  • +
  • right - Terminal appears at the right of the +screen.
  • +
  • center - Terminal appears at the center of the +screen.
  • +
+

On macOS, changing this configuration requires restarting Ghostty +completely.

+

Note: There is no default keybind for toggling the quick terminal. To +enable this feature, bind the toggle_quick_terminal action +to a key.

+
+
quick-terminal-size
+
+

The size of the quick terminal.

+

The size can be specified either as a percentage of the screen +dimensions (height/width), or as an absolute size in pixels. Percentage +values are suffixed with % (e.g. 20%) while +pixel values are suffixed with px +(e.g. 300px). A bare value without a suffix is a config +error.

+

When only one size is specified, the size parameter affects the size +of the quick terminal on its primary axis, which depends on its +position: height for quick terminals placed on the top or bottom, and +width for left or right. The primary axis of a centered quick terminal +depends on the monitor’s orientation: height when on a landscape +monitor, and width when on a portrait monitor.

+

The secondary axis would be maximized for non-center +positioned quick terminals unless another size parameter is specified, +separated from the first by a comma (,). Percentage and +pixel sizes can be mixed together: for instance, a size of +50%,500px for a top-positioned quick terminal would be half +a screen tall, and 500 pixels wide.

+

Available since: 1.2.0

+
+
gtk-quick-terminal-layer
+
+

The layer of the quick terminal window. The higher the layer, the +more windows the quick terminal may conceal.

+

Valid values are:

+
    +
  • overlay

    +

    The quick terminal appears in front of all windows.

  • +
  • top (default)

    +

    The quick terminal appears in front of normal windows but behind +fullscreen overlays like lock screens.

  • +
  • bottom

    +

    The quick terminal appears behind normal windows but in front of +wallpapers and other windows in the background layer.

  • +
  • background

    +

    The quick terminal appears behind all windows.

  • +
+

GTK Wayland only.

+

Available since: 1.2.0

+
+
gtk-quick-terminal-namespace
+
+

The namespace for the quick terminal window.

+

This is an identifier that is used by the Wayland compositor and/or +scripts to determine the type of layer surfaces and to possibly apply +unique effects.

+

GTK Wayland only.

+

Available since: 1.2.0

+
+
quick-terminal-screen
+
+

The screen where the quick terminal should show up.

+

Valid values are:

+
    +
  • main - The screen that the operating system +recommends as the main screen. On macOS, this is the screen that is +currently receiving keyboard input. This screen is defined by the +operating system and not chosen by Ghostty.

  • +
  • mouse - The screen that the mouse is currently +hovered over.

  • +
  • macos-menu-bar - The screen that contains the macOS +menu bar as set in the display settings on macOS. This is a bit +confusing because every screen on macOS has a menu bar, but this is the +screen that contains the primary menu bar.

  • +
+

The default value is main because this is the +recommended screen by the operating system.

+

Only implemented on macOS.

+
+
quick-terminal-animation-duration
+
+

Duration (in seconds) of the quick terminal enter and exit animation. +Set it to 0 to disable animation completely. This can be changed at +runtime.

+

Only implemented on macOS.

+
+
quick-terminal-autohide
+
+

Automatically hide the quick terminal when focus shifts to another +window. Set it to false for the quick terminal to remain open even when +it loses focus.

+

Defaults to true on macOS and on false on Linux/BSD. This is because +global shortcuts on Linux require system configuration and are +considerably less accessible than on macOS, meaning that it is more +preferable to keep the quick terminal open until the user has completed +their task. This default may change in the future.

+
+
quick-terminal-space-behavior
+
+

This configuration option determines the behavior of the quick +terminal when switching between macOS spaces. macOS spaces are virtual +desktops that can be manually created or are automatically created when +an application is in full-screen mode.

+

Valid values are:

+
    +
  • move - When switching to another space, the quick +terminal will also moved to the current space.

  • +
  • remain - The quick terminal will stay only in the +space where it was originally opened and will not follow when switching +to another space.

  • +
+

The default value is move.

+

Only implemented on macOS. On Linux the behavior is always equivalent +to move.

+

Available since: 1.1.0

+
+
quick-terminal-keyboard-interactivity
+
+

Determines under which circumstances that the quick terminal should +receive keyboard input. See the corresponding Wayland +documentation for a more detailed explanation of the behavior of +each option.

+
+

[!NOTE] The exact behavior of each option may differ significantly +across compositors – experiment with them on your system to find one +that suits your liking!

+
+

Valid values are:

+
    +
  • none

    +

    The quick terminal will not receive any keyboard input.

  • +
  • on-demand (default)

    +

    The quick terminal would only receive keyboard input when it is +focused.

  • +
  • exclusive

    +

    The quick terminal will always receive keyboard input, even when +another window is currently focused.

  • +
+

Only has an effect on Linux Wayland. On macOS the behavior is always +equivalent to on-demand.

+

Available since: 1.2.0

+
+
shell-integration
+
+

Whether to enable shell integration auto-injection or not. Shell +integration greatly enhances the terminal experience by enabling a +number of features:

+
    +
  • Working directory reporting so new tabs, splits inherit the +previous terminal’s working directory.

  • +
  • Prompt marking that enables the “jump_to_prompt” +keybinding.

  • +
  • If you’re sitting at a prompt, closing a terminal will not ask +for confirmation.

  • +
  • Resizing the window with a complex prompt usually paints much +better.

  • +
+

Allowable values are:

+
    +
  • none - Do not do any automatic injection. You can +still manually configure your shell to enable the integration.

  • +
  • detect - Detect the shell based on the +filename.

  • +
  • bash, elvish, fish, +nushell, zsh - Use this specific shell +injection scheme.

  • +
+

The default value is detect.

+
+
shell-integration-features
+
+

Shell integration features to enable. These require our shell +integration to be loaded, either automatically via shell-integration or +manually.

+

The format of this is a list of features to enable separated by +commas. If you prefix a feature with no- then it is +disabled. If you omit a feature, its default value is used, so you must +explicitly disable features you don’t want. You can also use +true or false to turn all features on or +off.

+

Example: cursor, no-cursor, +sudo, no-sudo, title, +no-title

+

Available features:

+
    +
  • cursor - Set the cursor to a bar at the +prompt.

  • +
  • sudo - Set sudo wrapper to preserve +terminfo.

  • +
  • title - Set the window title via shell +integration.

  • +
  • ssh-env - Enable SSH environment variable +compatibility. Automatically converts TERM from +xterm-ghostty to xterm-256color when +connecting to remote hosts and propagates COLORTERM, TERM_PROGRAM, and +TERM_PROGRAM_VERSION. Whether or not these variables will be accepted by +the remote host(s) will depend on whether or not the variables are +allowed in their sshd_config. (Available since: 1.2.0)

  • +
  • ssh-terminfo - Enable automatic terminfo +installation on remote hosts. Attempts to install Ghostty’s terminfo +entry using infocmp and tic when connecting to +hosts that lack it. Requires infocmp to be available +locally and tic to be available on remote hosts. Once +terminfo is installed on a remote host, it will be automatically +“cached” to avoid repeat installations. If desired, the ++ssh-cache CLI action can be used to manage the +installation cache manually using various arguments. (Available since: +1.2.0)

  • +
  • path - Add Ghostty’s binary directory to PATH. This +ensures the ghostty command is available in the shell even +if shell init scripts reset PATH. This is particularly useful on macOS +where PATH is often overridden by system scripts. The directory is only +added if not already present.

  • +
+

SSH features work independently and can be combined for optimal +experience: when both ssh-env and ssh-terminfo +are enabled, Ghostty will install its terminfo on remote hosts and use +xterm-ghostty as TERM, falling back to +xterm-256color with environment variables if terminfo +installation fails.

+
+
command-palette-entry
+
+

Custom entries into the command palette.

+

Each entry requires the title, the corresponding action, and an +optional description. Each field should be prefixed with the field name, +a colon (:), and then the specified value. The syntax for +actions is identical to the one for keybind actions. Whitespace in +between fields is ignored.

+

If you need to embed commas or any other special characters in the +values, enclose the value in double quotes and it will be interpreted as +a Zig string literal. This is also useful for including whitespace at +the beginning or the end of a value. See the Zig +documentation for more information on string literals. Note that +multiline string literals are not supported.

+

Double quotes can not be used around the field names.

+
command-palette-entry = title:Reset Font Style, action:csi:0m
+command-palette-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main
+command-palette-entry = title:Focus Split: Right,description:"Focus the split to the right, if it exists.",action:goto_split:right
+command-palette-entry = title:"Ghostty",description:"Add a little Ghostty to your terminal.",action:"text:\xf0\x9f\x91\xbb"
+

By default, the command palette is preloaded with most actions that +might be useful in an interactive setting yet do not have easily +accessible or memorizable shortcuts. The default entries can be cleared +by setting this setting to an empty value:

+
command-palette-entry =
+

Available since: 1.2.0

+
+
osc-color-report-format
+
+

Sets the reporting format for OSC sequences that request color +information. Ghostty currently supports OSC 10 (foreground), OSC 11 +(background), and OSC 4 (256 color palette) queries, and by default the +reported values are scaled-up RGB values, where each component are 16 +bits. This is how most terminals report these values. However, some +legacy applications may require 8-bit, unscaled, components. We also +support turning off reporting altogether. The components are lowercase +hex values.

+

Allowable values are:

+
    +
  • none - OSC 4/10/11 queries receive no reply

  • +
  • 8-bit - Color components are return unscaled, +e.g. rr/gg/bb

  • +
  • 16-bit - Color components are returned scaled, +e.g. rrrr/gggg/bbbb

  • +
+

The default value is 16-bit.

+
+
vt-kam-allowed
+
+

If true, allows the “KAM” mode (ANSI mode 2) to be used within the +terminal. KAM disables keyboard input at the request of the application. +This is not a common feature and is not recommended to be enabled. This +will not be documented further because if you know you need KAM, you +know. If you don’t know if you need KAM, you don’t need it.

+
+
custom-shader
+
+

Custom shaders to run after the default shaders. This is a file path +to a GLSL-syntax shader for all platforms.

+

Warning: Invalid shaders can cause Ghostty to become unusable such as +by causing the window to be completely black. If this happens, you can +unset this configuration to disable the shader.

+

Custom shader support is based on and compatible with the Shadertoy +shaders. Shaders should specify a mainImage function and +the available uniforms largely match Shadertoy, with some caveats and +Ghostty-specific extensions.

+

The uniform values available to shaders are as follows:

+
    +
  • sampler2D iChannel0 - Input texture.

    +

    A texture containing the current terminal screen. If multiple custom +shaders are specified, the output of previous shaders is written to this +texture, to allow combining multiple effects.

  • +
  • vec3 iResolution - Output texture size, +[width, height, 1] (in px).

  • +
  • float iTime - Time in seconds since first frame was +rendered.

  • +
  • float iTimeDelta - Time in seconds since previous +frame was rendered.

  • +
  • float iFrameRate - Average framerate. (NOT CURRENTLY +SUPPORTED)

  • +
  • int iFrame - Number of frames that have been +rendered so far.

  • +
  • float iChannelTime[4] - Current time for video or +sound input. (N/A)

  • +
  • vec3 iChannelResolution[4] - Resolutions of the 4 +input samplers.

    +

    Currently only iChannel0 exists, and +iChannelResolution[0] is identical to +iResolution.

  • +
  • vec4 iMouse - Mouse input info. (NOT CURRENTLY +SUPPORTED)

  • +
  • vec4 iDate - Date/time info. (NOT CURRENTLY +SUPPORTED)

  • +
  • float iSampleRate - Sample rate for audio. +(N/A)

  • +
+

Ghostty-specific extensions:

+
    +
  • vec4 iCurrentCursor - Info about the terminal +cursor.

    +
      +
    • iCurrentCursor.xy is the -X, +Y corner of the current +cursor.
    • +
    • iCurrentCursor.zw is the width and height of the +current cursor.
    • +
  • +
  • vec4 iPreviousCursor - Info about the previous +terminal cursor.

  • +
  • vec4 iCurrentCursorColor - Color of the terminal +cursor.

  • +
  • vec4 iPreviousCursorColor - Color of the previous +terminal cursor.

  • +
  • vec4 iCurrentCursorStyle - Style of the terminal +cursor

    +

    Macros simplified use are defined for the various cursor styles:

    +
      +
    • CURSORSTYLE_BLOCK or 0
    • +
    • CURSORSTYLE_BLOCK_HOLLOW or 1
    • +
    • CURSORSTYLE_BAR or 2
    • +
    • CURSORSTYLE_UNDERLINE or 3
    • +
    • CURSORSTYLE_LOCK or 4
    • +
  • +
  • vec4 iPreviousCursorStyle - Style of the previous +terminal cursor

  • +
  • vec4 iCursorVisible - Visibility of the terminal +cursor.

  • +
  • float iTimeCursorChange - Timestamp of terminal +cursor change.

    +

    When the terminal cursor changes position or color, this is set to +the same time as the iTime uniform, allowing you to compute +the time since the change by subtracting this from +iTime.

  • +
  • float iTimeFocus - Timestamp when the surface last +gained iFocus.

    +

    When the surface gains focus, this is set to the current value of +iTime, similar to how iTimeCursorChange works. +This allows you to compute the time since focus was gained or lost by +calculating iTime - iTimeFocus. Use this to create +animations that restart when the terminal regains focus.

  • +
  • int iFocus - Current focus state of the surface.

    +

    Set to 1.0 when the surface is focused, 0.0 when unfocused. This +allows shaders to detect unfocused state and avoid animation artifacts +from large time deltas caused by infrequent “deceptive frames” (e.g., +modifier key presses, link hover events in unfocused split panes). Check +iFocus > 0 to determine if the surface is currently +focused.

  • +
  • vec3 iPalette[256] - The 256-color terminal +palette.

    +

    RGB values for all 256 colors in the terminal palette, normalized to +[0.0, 1.0]. Index 0-15 are the ANSI colors, 16-231 are the 6x6x6 color +cube, and 232-255 are the grayscale colors.

  • +
  • vec3 iBackgroundColor - Terminal background color +(RGB).

  • +
  • vec3 iForegroundColor - Terminal foreground color +(RGB).

  • +
  • vec3 iCursorColor - Terminal cursor color +(RGB).

  • +
  • vec3 iCursorText - Terminal cursor text color +(RGB).

  • +
  • vec3 iSelectionBackgroundColor - Selection +background color (RGB).

  • +
  • vec3 iSelectionForegroundColor - Selection +foreground color (RGB).

  • +
+

If the shader fails to compile, the shader will be ignored. Any +errors related to shader compilation will not show up as configuration +errors and only show up in the log, since shader compilation happens +after configuration loading on the dedicated render thread. For +interactive development, use shadertoy.com.

+

This can be repeated multiple times to load multiple shaders. The +shaders will be run in the order they are specified.

+

This can be changed at runtime and will affect all open +terminals.

+
+
custom-shader-animation
+
+

If true (default), the focused terminal surface will run +an animation loop when custom shaders are used. This uses slightly more +CPU (generally less than 10%) but allows the shader to animate. This +only runs if there are custom shaders and the terminal is focused.

+

If this is set to false, the terminal and custom shader +will only render when the terminal is updated. This is more efficient +but the shader will not animate.

+

This can also be set to always, which will always run +the animation loop regardless of whether the terminal is focused or not. +The animation loop will still only run when custom shaders are used. +Note that this will use more CPU per terminal surface and can become +quite expensive depending on the shader and your terminal usage.

+

This can be changed at runtime and will affect all open +terminals.

+
+
bell-features
+
+

Bell features to enable if bell support is available in your runtime. +Not all features are available on all runtimes. The format of this is a +list of features to enable separated by commas. If you prefix a feature +with no- then it is disabled. If you omit a feature, its +default value is used.

+

Valid values are:

+
    +
  • system

    +

    Instruct the system to notify the user using built-in system +functions. This could result in an audiovisual effect, a notification, +or something else entirely. Changing these effects require altering +system settings: for instance under the “Sound > Alert Sound” setting +in GNOME, or the “Accessibility > System Bell” settings in KDE +Plasma.

    +

    On macOS, this plays the system alert sound.

  • +
  • audio

    +

    Play a custom sound. (Available since 1.3.0 on macOS)

  • +
  • attention (enabled by default)

    +

    Request the user’s attention when Ghostty is unfocused, until it has +received focus again. On macOS, this will bounce the app icon in the +dock once. On Linux, the behavior depends on the desktop environment +and/or the window manager/compositor:

    +
      +
    • On KDE, the background of the desktop icon in the task bar would +be highlighted;

    • +
    • On GNOME, you may receive a notification that, when clicked, +would bring the Ghostty window into focus;

    • +
    • On Sway, the window may be decorated with a distinctly colored +border;

    • +
    • On other systems this may have no effect at all.

    • +
  • +
  • title (enabled by default)

    +

    Prepend a bell emoji (🔔) to the title of the alerted surface until +the terminal is re-focused or interacted with (such as on keyboard +input).

  • +
  • border

    +

    Display a border around the alerted surface until the terminal is +re-focused or interacted with (such as on keyboard input).

    +

    Available since: 1.2.0 on GTK, 1.2.1 on macOS

  • +
+

Example: audio, no-audio, +system, no-system

+

Available since: 1.2.0

+
+
bell-audio-path
+
+

If audio is an enabled bell feature, this is a path to +an audio file. If the path is not absolute, it is considered relative to +the directory of the configuration file that it is referenced from, or +from the current working directory if this is used as a CLI flag. The +path may be prefixed with ~/ to reference the user’s home +directory.

+

Available since: 1.2.0 on GTK, 1.3.0 on macOS.

+
+
bell-audio-volume
+
+

If audio is an enabled bell feature, this is the volume +to play the audio file at (relative to the system volume). This is a +floating point number ranging from 0.0 (silence) to 1.0 (as loud as +possible). The default is 0.5.

+

Available since: 1.2.0 on GTK, 1.3.0 on macOS.

+
+
app-notifications
+
+

Control the in-app notifications that Ghostty shows.

+

On Linux (GTK), in-app notifications show up as toasts. Toasts appear +overlaid on top of the terminal window. They are used to show +information that is not critical but may be important.

+

Possible notifications are:

+
    +
  • clipboard-copy (default: true) - Show a notification +when text is copied to the clipboard.
  • +
  • config-reload (default: true) - Show a notification +when the configuration is reloaded.
  • +
+

To specify a notification to enable, specify the name of the +notification. To specify a notification to disable, prefix the name with +no-. For example, to disable clipboard-copy, +set this configuration to no-clipboard-copy. To enable it, +set this configuration to clipboard-copy.

+

Multiple notifications can be enabled or disabled by separating them +with a comma.

+

A value of “false” will disable all notifications. A value of “true” +will enable all notifications.

+

This configuration only applies to GTK.

+

Available since: 1.1.0

+
+
macos-non-native-fullscreen
+
+

If anything other than false, fullscreen mode on macOS will not use +the native fullscreen, but make the window fullscreen without animations +and using a new space. It’s faster than the native fullscreen mode since +it doesn’t use animations.

+

Important: tabs DO NOT WORK in this mode. Non-native fullscreen +removes the titlebar and macOS native tabs require the titlebar. If you +use tabs, you should not use this mode.

+

If you fullscreen a window with tabs, the currently focused tab will +become fullscreen while the others will remain in a separate window in +the background. You can switch to that window using normal +window-switching keybindings such as command+tilde. When you exit +fullscreen, the window will return to the tabbed state it was in +before.

+

Allowable values are:

+
    +
  • true - Use non-native macOS fullscreen, hide the menu +bar
  • +
  • false - Use native macOS fullscreen
  • +
  • visible-menu - Use non-native macOS fullscreen, keep +the menu bar visible
  • +
  • padded-notch - Use non-native macOS fullscreen, hide +the menu bar, but ensure the window is not obscured by the notch on +applicable devices. The area around the notch will remain transparent +currently, but in the future we may fill it with the window background +color.
  • +
+

Changing this option at runtime works, but will only apply to the +next time the window is made fullscreen. If a window is already +fullscreen, it will retain the previous setting until fullscreen is +exited.

+
+
macos-window-buttons
+
+

Whether the window buttons in the macOS titlebar are visible. The +window buttons are the colored buttons in the upper left corner of most +macOS apps, also known as the traffic lights, that allow you to close, +miniaturize, and zoom the window.

+

This setting has no effect when window-decoration = none +or macos-titlebar-style = hidden, as the window buttons are +always hidden in these modes.

+

Valid values are:

+
    +
  • visible - Show the window buttons.
  • +
  • hidden - Hide the window buttons.
  • +
+

The default value is visible.

+

Changing this option at runtime only applies to new windows.

+

Available since: 1.2.0

+
+
macos-titlebar-style
+
+

The style of the macOS titlebar. Available values are: “native”, +“transparent”, “tabs”, and “hidden”.

+

The “native” style uses the native macOS titlebar with zero +customization. The titlebar will match your window theme (see +window-theme).

+

The “transparent” style is the same as “native” but the titlebar will +be transparent and allow your window background color to come through. +This makes a more seamless window appearance but looks a little less +typical for a macOS application and may not work well with all +themes.

+

The “transparent” style will also update in real-time to dynamic +changes to the window background color, e.g. via OSC 11. To make this +more aesthetically pleasing, this only happens if the terminal is a +window, tab, or split that borders the top of the window. This avoids a +disjointed appearance where the titlebar color changes but all the +topmost terminals don’t match.

+

The “tabs” style is a completely custom titlebar that integrates the +tab bar into the titlebar. This titlebar always matches the background +color of the terminal. There are some limitations to this style: On +macOS 13 and below, saved window state will not restore tabs correctly. +macOS 14 does not have this issue and any other macOS version has not +been tested.

+

The “hidden” style hides the titlebar. Unlike +window-decoration = none, however, it does not remove the +frame from the window or cause it to have squared corners. Changing to +or from this option at run-time may affect existing windows in buggy +ways.

+

When “hidden”, the top titlebar area can no longer be used for +dragging the window. To drag the window, you can use option+click on the +resizable areas of the frame to drag the window. This is a standard +macOS behavior and not something Ghostty enables.

+

The default value is “transparent”. This is an opinionated choice but +its one I think is the most aesthetically pleasing and works in most +cases.

+

Changing this option at runtime only applies to new windows.

+
+
macos-titlebar-proxy-icon
+
+

Whether the proxy icon in the macOS titlebar is visible. The proxy +icon is the icon that represents the folder of the current working +directory. You can see this very clearly in the macOS built-in +Terminal.app titlebar.

+

The proxy icon is only visible with the native macOS titlebar +style.

+

Valid values are:

+
    +
  • visible - Show the proxy icon.
  • +
  • hidden - Hide the proxy icon.
  • +
+

The default value is visible.

+

This setting can be changed at runtime and will affect all currently +open windows but only after their working directory changes again. +Therefore, to make this work after changing the setting, you must +usually cd to a different directory, open a different file +in an editor, etc.

+
+
macos-dock-drop-behavior
+
+

Controls the windowing behavior when dropping a file or folder onto +the Ghostty icon in the macOS dock.

+

Valid values are:

+
    +
  • new-tab - Create a new tab in the current window, or +open a new window if none exist.
  • +
  • new-window - Create a new window unconditionally.
  • +
+

The default value is new-tab.

+

This setting is only supported on macOS and has no effect on other +platforms.

+
+
macos-option-as-alt
+
+

macOS doesn’t have a distinct “alt” key and instead has the “option” +key which behaves slightly differently. On macOS by default, the option +key plus a character will sometimes produce a Unicode character. For +example, on US standard layouts option-b produces “∫”. This may be +undesirable if you want to use “option” as an “alt” key for keybindings +in terminal programs or shells.

+

This configuration lets you change the behavior so that option is +treated as alt.

+

The default behavior (unset) will depend on your active keyboard +layout. If your keyboard layout is one of the keyboard layouts listed +below, then the default value is “true”. Otherwise, the default value is +“false”. Keyboard layouts with a default value of “true” are:

+
    +
  • U.S. Standard
  • +
  • U.S. International
  • +
+

Note that if an Option-sequence doesn’t produce a printable +character, it will be treated as Alt regardless of this +setting. (e.g. alt+ctrl+a).

+

Explicit values that can be set:

+

If true, the Option key will be treated as +Alt. This makes terminal sequences expecting Alt to +work properly, but will break Unicode input sequences on macOS if you +use them via the Alt key.

+

You may set this to false to restore the macOS +Alt key unicode sequences but this will break terminal +sequences expecting Alt to work.

+

The values left or right enable this for +the left or right Option key, respectively.

+
+
macos-window-shadow
+
+

Whether to enable the macOS window shadow. The default value is true. +With some window managers and window transparency settings, you may find +false more visually appealing.

+
+
macos-hidden
+
+

If true, the macOS icon in the dock and app switcher will be hidden. +This is mainly intended for those primarily using the quick-terminal +mode.

+

Note that setting this to true means that keyboard layout changes +will no longer be automatic.

+

Control whether macOS app is excluded from the dock and app switcher, +a “hidden” state. This is mainly intended for those primarily using +quick-terminal mode, but is a general configuration for any use +case.

+

Available values:

+
    +
  • never - The macOS app is never hidden.
  • +
  • always - The macOS app is always hidden.
  • +
+

Note: When the macOS application is hidden, keyboard layout changes +will no longer be automatic. This is a limitation of macOS.

+

Available since: 1.2.0

+
+
macos-auto-secure-input
+
+

If true, Ghostty on macOS will automatically enable the “Secure +Input” feature when it detects that a password prompt is being +displayed.

+

“Secure Input” is a macOS security feature that prevents applications +from reading keyboard events. This can always be enabled manually using +the Ghostty > Secure Keyboard Entry menu item.

+

Note that automatic password prompt detection is based on heuristics +and may not always work as expected. Specifically, it does not work over +SSH connections, but there may be other cases where it also doesn’t +work.

+

A reason to disable this feature is if you find that it is +interfering with legitimate accessibility software (or software that +uses the accessibility APIs), since secure input prevents any +application from reading keyboard events.

+
+
macos-secure-input-indication
+
+

If true, Ghostty will show a graphical indication when secure input +is enabled. This indication is generally recommended to know when secure +input is enabled.

+

Normally, secure input is only active when a password prompt is +displayed or it is manually (and typically temporarily) enabled. +However, if you always have secure input enabled, the indication can be +distracting and you may want to disable it.

+
+
macos-applescript
+
+

If true, Ghostty exposes and handles the built-in AppleScript +dictionary on macOS.

+

If false, all AppleScript interactions are disabled. This includes +AppleScript commands and AppleScript object lookup for windows, tabs, +and terminals.

+

The default is true.

+
+
macos-icon
+
+

Customize the macOS app icon.

+

This only affects the icon that appears in the dock, application +switcher, etc. This does not affect the icon in Finder because that is +controlled by a hardcoded value in the signed application bundle and +can’t be changed at runtime. For more details on what exactly is +affected, see the NSApplication.icon Apple documentation; +that is the API that is being used to set the icon.

+

Valid values:

+
    +
  • official - Use the official Ghostty icon.
  • +
  • blueprint, chalkboard, +microchip, glass, holographic, +paper, retro, xray - Official +variants of the Ghostty icon hand-created by artists (no AI).
  • +
  • custom - Use a completely custom icon. The location +must be specified using the additional macos-custom-icon +configuration
  • +
  • custom-style - Use the official Ghostty icon but with +custom styles applied to various layers. The custom styles must be +specified using the additional macos-icon-prefixed +configurations. The macos-icon-ghost-color and +macos-icon-screen-color configurations are required for +this style.
  • +
+

WARNING: The custom-style option is +experimental. We may change the format of the custom styles in +the future. We’re still finalizing the exact layers and customization +options that will be available.

+

Other caveats:

+
    +
  • The icon in the update dialog will always be the official icon. This +is because the update dialog is managed through a separate framework and +cannot be customized without significant effort.
  • +
+
+
macos-custom-icon
+
+

The absolute path to the custom icon file. Supported formats include +PNG, JPEG, and ICNS.

+

Defaults to ~/.config/ghostty/Ghostty.icns

+
+
macos-icon-frame
+
+

The material to use for the frame of the macOS app icon.

+

Valid values:

+
    +
  • aluminum - A brushed aluminum frame. This is the +default.
  • +
  • beige - A classic 90’s computer beige frame.
  • +
  • plastic - A glossy, dark plastic frame.
  • +
  • chrome - A shiny chrome frame.
  • +
+

Note: This configuration is required when macos-icon is +set to custom-style.

+
+
macos-icon-ghost-color
+
+

The color of the ghost in the macOS app icon.

+

Note: This configuration is required when macos-icon is +set to custom-style.

+

Specified as either hex (#RRGGBB or RRGGBB) +or a named X11 color.

+
+
macos-icon-screen-color
+
+

The color of the screen in the macOS app icon.

+

The screen is a linear gradient so you can specify multiple colors +that make up the gradient. Up to 64 comma-separated colors may be +specified as either hex (#RRGGBB or RRGGBB) or +as named X11 colors. The first color is the bottom of the gradient and +the last color is the top of the gradient.

+

Note: This configuration is required when macos-icon is +set to custom-style.

+
+
macos-shortcuts
+
+

Whether macOS Shortcuts are allowed to control Ghostty.

+

Ghostty exposes a number of actions that allow Shortcuts to control +and interact with Ghostty. This includes creating new terminals, sending +text to terminals, running commands, invoking any keybind action, +etc.

+

This is a powerful feature but can be a security risk if a malicious +shortcut is able to be installed and executed. Therefore, this +configuration allows you to disable this feature.

+

Valid values are:

+
    +
  • ask - Ask the user whether for permission. Ghostty +will remember this choice and never ask again. This is similar to other +macOS permissions such as microphone access, camera access, +etc.

  • +
  • allow - Allow Shortcuts to control Ghostty without +asking.

  • +
  • deny - Deny Shortcuts from controlling +Ghostty.

  • +
+

Available since: 1.2.0

+
+
linux-cgroup
+
+

Put every surface (tab, split, window) into a transient +systemd scope.

+

This allows per-surface resource management. For example, if a shell +program is using too much memory, only that shell will be killed by the +oom monitor instead of the entire Ghostty process. Similarly, if a shell +program is using too much CPU, only that surface will be +CPU-throttled.

+

This will cause startup times to be slower (a hundred milliseconds or +so), so the default value is “single-instance.” In single-instance mode, +only one instance of Ghostty is running (see gtk-single-instance) so the +startup time is a one-time cost. Additionally, single instance Ghostty +is much more likely to have many windows, tabs, etc. so cgroup isolation +is a big benefit.

+

This feature requires systemd. If systemd +is unavailable, cgroup initialization will fail. By default, this will +not prevent Ghostty from working (see +linux-cgroup-hard-fail).

+

Changing this value and reloading the config will not affect existing +surfaces.

+

Valid values are:

+
    +
  • never - Never use cgroups.
  • +
  • always - Always use cgroups.
  • +
  • single-instance - Enable cgroups only for Ghostty +instances launched as single-instance applications (see +gtk-single-instance).
  • +
+
+
linux-cgroup-memory-limit
+
+

Memory limit for any individual terminal process (tab, split, window, +etc.) in bytes. If this is unset then no memory limit will be set.

+

Note that this sets the MemoryHigh setting on the +transient systemd scope, which is a soft limit. You should +configure something like systemd-oom to handle killing +processes that have too much memory pressure.

+

Changing this value and reloading the config will not affect existing +surfaces.

+

See the systemd.resource-control manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html

+
+
linux-cgroup-processes-limit
+
+

Number of processes limit for any individual terminal process (tab, +split, window, etc.). If this is unset then no limit will be set.

+

Note that this sets the TasksMax setting on the +transient systemd scope, which is a hard limit.

+

Changing this value and reloading the config will not affect existing +surfaces.

+

See the systemd.resource-control manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html

+
+
linux-cgroup-hard-fail
+
+

If this is false, then creating a transient systemd +scope (for linux-cgroup) will be allowed to fail and the +failure is ignored. This is useful if you view cgroup isolation as a +“nice to have” and not a critical resource management feature, because +surface creation will not fail if systemd APIs fail.

+

If this is true, then any transient systemd scope +creation failure will cause surface creation to fail.

+

Changing this value and reloading the config will not affect existing +surfaces.

+
+
gtk-opengl-debug
+
+

Enable or disable GTK’s OpenGL debugging logs. The default is +true for debug builds, false for all +others.

+

Available since: 1.1.0

+
+
gtk-single-instance
+
+

If true, the Ghostty GTK application will run in +single-instance mode: each new ghostty process launched +will result in a new window if there is already a running process.

+

If false, each new ghostty process will launch a +separate application.

+

If detect, Ghostty will assume true (single instance) +unless one of the following scenarios is found:

+
    +
  1. TERM_PROGRAM environment variable is a non-empty value. In this +case, we assume Ghostty is being launched from a graphical terminal +session and you want a dedicated instance.

  2. +
  3. Any CLI arguments exist. In this case, we assume you are passing +custom Ghostty configuration. Single instance mode inherits the +configuration from when it was launched, so we must disable single +instance to load the new configuration.

  4. +
+

If either of these scenarios is producing a false positive, you can +set this configuration explicitly to the behavior you want.

+

The pre-1.2 option desktop has been deprecated. Please +replace this with detect.

+

The default value is detect.

+

Note that debug builds of Ghostty have a separate single-instance ID +so you can test single instance without conflicting with release +builds.

+
+
gtk-titlebar
+
+

When enabled, the full GTK titlebar is displayed instead of your +window manager’s simple titlebar. The behavior of this option will vary +with your window manager.

+

This option does nothing when window-decoration is none +or when running under macOS.

+
+
gtk-tabs-location
+
+

Determines the side of the screen that the GTK tab bar will stick to. +Top, bottom, and hidden are supported. The default is top.

+

When hidden is set, a tab button displaying the number +of tabs will appear in the title bar. It has the ability to open a tab +overview for displaying tabs. Alternatively, you can use the +toggle_tab_overview action in a keybind if your window +doesn’t have a title bar, or you can switch tabs with keybinds.

+
+
gtk-titlebar-hide-when-maximized
+
+

If this is true, the titlebar will be hidden when the +window is maximized, and shown when the titlebar is unmaximized. GTK +only.

+

Available since: 1.1.0

+
+
gtk-toolbar-style
+
+

Determines the appearance of the top and bottom bars tab bar.

+

Valid values are:

+
    +
  • flat - Top and bottom bars are flat with the terminal +window.
  • +
  • raised - Top and bottom bars cast a shadow on the +terminal area.
  • +
  • raised-border - Similar to raised but the +shadow is replaced with a more subtle border.
  • +
+
+
gtk-titlebar-style
+
+

The style of the GTK titlebar. Available values are +native and tabs.

+

The native titlebar style is a traditional titlebar with +a title, a few buttons and window controls. A separate tab bar will show +up below the titlebar if you have multiple tabs open in the window.

+

The tabs titlebar merges the tab bar and the traditional +titlebar. This frees up vertical space on your screen if you use +multiple tabs. One limitation of the tabs titlebar is that +you cannot drag the titlebar by the titles any longer (as they are tab +titles now). Other areas of the tabs title bar can be used +to drag the window around.

+

The default style is native.

+
+
gtk-wide-tabs
+
+

If true (default), then the Ghostty GTK tabs will be +“wide.” Wide tabs are the new typical Gnome style where tabs fill their +available space. If you set this to false then tabs will +only take up space they need, which is the old style.

+
+
gtk-custom-css
+
+

Custom CSS files to be loaded.

+

GTK CSS documentation can be found at the following links:

+
    +
  • https://docs.gtk.org/gtk4/css-overview.html - An overview of GTK +CSS.
  • +
  • https://docs.gtk.org/gtk4/css-properties.html - A comprehensive list +of supported CSS properties.
  • +
+

Launch Ghostty with env GTK_DEBUG=interactive ghostty to +tweak Ghostty’s CSS in real time using the GTK Inspector. Errors in your +CSS files would also be reported in the terminal you started Ghostty +from. See https://developer.gnome.org/documentation/tools/inspector.html +for more information about the GTK Inspector.

+

This configuration can be repeated multiple times to load multiple +files. Prepend a ? character to the file path to suppress errors if the +file does not exist. If you want to include a file that begins with a +literal ? character, surround the file path in double quotes (“). The +file size limit for a single stylesheet is 5MiB.

+

Available since: 1.1.0

+
+
desktop-notifications
+
+

If true (default), applications running in the terminal +can show desktop notifications using certain escape sequences such as +OSC 9 or OSC 777.

+
+
progress-style
+
+

If true (default), applications running in the terminal +can show graphical progress bars using the ConEmu OSC 9;4 escape +sequence. If false, progress bar sequences are silently +ignored.

+
+
bold-color
+
+

Modifies the color used for bold text in the terminal.

+

This can be set to a specific color, using the same format as +background or foreground +(e.g. #RRGGBB but other formats are also supported; see the +aforementioned documentation). If a specific color is set, this color +will always be used for the default bold text color. It will set the +rest of the bold colors to bright.

+

This can also be set to bright, which uses the bright +color palette for bold text. For example, if the text is red, then the +bold will use the bright red color. The terminal palette is set with +palette but can also be overridden by the terminal +application itself using escape sequences such as OSC 4. (Since Ghostty +1.2.0, the previous configuration bold-is-bright is +deprecated and replaced by this usage).

+

Available since Ghostty 1.2.0.

+
+
faint-opacity
+
+

The opacity level (opposite of transparency) of the faint text. A +value of 1 is fully opaque and a value of 0 is fully transparent. A +value less than 0 or greater than 1 will be clamped to the nearest valid +value.

+

Available since Ghostty 1.2.0.

+
+
term
+
+

This will be used to set the TERM environment variable. +HACK: We set this with an xterm prefix because vim uses +that to enable key protocols (specifically this will enable +modifyOtherKeys), among other features. An option exists in +vim to modify this: :set keyprotocol=ghostty:kitty, however +a bug in the implementation prevents it from working properly. +https://github.com/vim/vim/pull/13211 fixes this.

+
+
enquiry-response
+
+

String to send when we receive ENQ (0x05) +from the command that we are running. Defaults to an empty string if not +set.

+
+
async-backend
+
+

Configures the low-level API to use for async IO, eventing, etc.

+

Most users should leave this set to auto. This will +automatically detect scenarios where APIs may not be available (for +example io_uring on certain hardened kernels) and fall back +to a different API. However, if you want to force a specific backend for +any reason, you can set this here.

+

Based on various benchmarks, we haven’t found a statistically +significant difference between the backends with regards to memory, CPU, +or latency. The choice of backend is more about compatibility and +features.

+

Available options:

+
    +
  • auto - Automatically choose the best backend for the +platform based on available options.
  • +
  • epoll - Use the epoll API
  • +
  • io_uring - Use the io_uring API
  • +
+

If the selected backend is not available on the platform, Ghostty +will fall back to an automatically chosen backend that is available.

+

Changing this value requires a full application restart to take +effect.

+

This is only supported on Linux, since this is the only platform +where we have multiple options. On macOS, we always use +kqueue.

+

Available since: 1.2.0

+
+
auto-update
+
+

Control the auto-update functionality of Ghostty. This is only +supported on macOS currently, since Linux builds are distributed via +package managers that are not centrally controlled by Ghostty.

+

Checking or downloading an update does not send any information to +the project beyond standard network information mandated by the +underlying protocols. To put it another way: Ghostty doesn’t explicitly +add any tracking to the update process. The update process works by +downloading information about the latest version and comparing it +client-side to the current version.

+

Valid values are:

+
    +
  • off - Disable auto-updates.
  • +
  • check - Check for updates and notify the user if an +update is available, but do not automatically download or install the +update.
  • +
  • download - Check for updates, automatically download +the update, notify the user, but do not automatically install the +update.
  • +
+

If unset, we defer to Sparkle’s default behavior, which respects the +preference stored in the standard user defaults +(defaults(1)).

+

Changing this value at runtime works after a small delay.

+
+
auto-update-channel
+
+

The release channel to use for auto-updates.

+

The default value of this matches the release channel of the +currently running Ghostty version. If you download a pre-release version +of Ghostty then this will be set to tip and you will +receive pre-release updates. If you download a stable version of Ghostty +then this will be set to stable and you will receive stable +updates.

+

Valid values are:

+
    +
  • stable - Stable, tagged releases such as “1.0.0”.
  • +
  • tip - Pre-release versions generated from each commit +to the main branch. This is the version that was in use during private +beta testing by thousands of people. It is generally stable but will +likely have more bugs than the stable channel.
  • +
+

Changing this configuration requires a full restart of Ghostty to +take effect.

+

This only works on macOS since only macOS has an auto-update +feature.

+
+
+

KEYBIND ACTIONS

+
+
ignore
+
+

Ignore this key combination.

+

Ghostty will not process this combination nor forward it to the child +process within the terminal, but it may still be processed by the OS or +other applications.

+
+
unbind
+
+

Unbind a previously bound key binding.

+

This cannot unbind bindings that were not bound by Ghostty or the +user (e.g. bindings set by the OS or some other application).

+
+
csi
+
+

Send a CSI sequence.

+

The value should be the CSI sequence without the CSI header +(ESC [ or \x1b[).

+

For example, csi:0m can be sent to reset all styles of +the current text.

+
+
esc
+
+

Send an ESC sequence.

+
+
text
+
+

Send the specified text.

+

Uses Zig string literal syntax. This is currently not validated. If +the text is invalid (i.e. contains an invalid escape sequence), the +error will currently only show up in logs.

+
+
cursor_key
+
+

Send data to the pty depending on whether cursor key mode is enabled +(application) or disabled (normal).

+
+
reset
+
+

Reset the terminal.

+

This can fix a lot of issues when a running program puts the terminal +into a broken state, equivalent to running the reset +command.

+

If you do this while in a TUI program such as vim, this may break the +program. If you do this while in a shell, you may have to press enter +after to get a new prompt.

+
+
copy_to_clipboard
+
+

Copy the selected text to the clipboard.

+
+
paste_from_clipboard
+
+

Paste the contents of the default clipboard.

+
+
paste_from_selection
+
+

Paste the contents of the selection clipboard.

+
+
copy_url_to_clipboard
+
+

If there is a URL under the cursor, copy it to the default +clipboard.

+
+
copy_title_to_clipboard
+
+

Copy the terminal title to the clipboard. If the terminal title is +not set or is empty this has no effect.

+
+
increase_font_size
+
+

Increase the font size by the specified amount in points (pt).

+

For example, increase_font_size:1.5 will increase the +font size by 1.5 points.

+
+
decrease_font_size
+
+

Decrease the font size by the specified amount in points (pt).

+

For example, decrease_font_size:1.5 will decrease the +font size by 1.5 points.

+
+
reset_font_size
+
+

Reset the font size to the original configured size.

+
+
set_font_size
+
+

Set the font size to the specified size in points (pt).

+

For example, set_font_size:14.5 will set the font size +to 14.5 points.

+
+
search
+
+

Start a search for the given text. If the text is empty, then the +search is canceled. A canceled search will not disable any GUI elements +showing search. For that, the explicit end_search binding should be +used.

+

If a previous search is active, it is replaced.

+
+
search_selection
+
+

Start a search for the current text selection. If there is no +selection, this does nothing. If a search is already active, this +changes the search terms.

+
+
navigate_search
+
+

Navigate the search results. If there is no active search, this is +not performed.

+
+
start_search
+
+

Start a search if it isn’t started already. This doesn’t set any +search terms, but opens the UI for searching.

+
+
end_search
+
+

End the current search if any and hide any GUI elements.

+
+
clear_screen
+
+

Clear the screen and all scrollback.

+
+
select_all
+
+

Select all text on the screen.

+
+
scroll_to_top
+
+

Scroll to the top of the screen.

+
+
scroll_to_bottom
+
+

Scroll to the bottom of the screen.

+
+
scroll_to_selection
+
+

Scroll to the selected text.

+
+
scroll_to_row
+
+

Scroll to the given absolute row in the screen with 0 being the first +row.

+
+
scroll_page_up
+
+

Scroll the screen up by one page.

+
+
scroll_page_down
+
+

Scroll the screen down by one page.

+
+
scroll_page_fractional
+
+

Scroll the screen by the specified fraction of a page.

+

Positive values scroll downwards, and negative values scroll +upwards.

+

For example, scroll_page_fractional:0.5 would scroll the +screen downwards by half a page, while +scroll_page_fractional:-1.5 would scroll it upwards by one +and a half pages.

+
+
scroll_page_lines
+
+

Scroll the screen by the specified amount of lines.

+

Positive values scroll downwards, and negative values scroll +upwards.

+

For example, scroll_page_lines:3 would scroll the screen +downwards by 3 lines, while scroll_page_lines:-10 would +scroll it upwards by 10 lines.

+
+
adjust_selection
+
+

Adjust the current selection in the given direction or position, +relative to the cursor.

+

WARNING: This does not create a new selection, and does nothing when +there currently isn’t one.

+

Valid arguments are:

+
    +
  • left, right

    +

    Adjust the selection one cell to the left or right +respectively.

  • +
  • up, down

    +

    Adjust the selection one line upwards or downwards +respectively.

  • +
  • page_up, page_down

    +

    Adjust the selection one page upwards or downwards +respectively.

  • +
  • home, end

    +

    Adjust the selection to the top-left or the bottom-right corner of +the screen respectively.

  • +
  • beginning_of_line, end_of_line

    +

    Adjust the selection to the beginning or the end of the line +respectively.

  • +
+
+
jump_to_prompt
+
+

Jump the viewport forward or back by the given number of prompts.

+

Requires shell integration.

+

Positive values scroll downwards, and negative values scroll +upwards.

+
+
write_scrollback_file
+
+

Write the entire scrollback into a temporary file with the specified +action. The action determines what to do with the filepath.

+

Valid actions are:

+
    +
  • copy

    +

    Copy the file path into the clipboard.

  • +
  • paste

    +

    Paste the file path into the terminal.

  • +
  • open

    +

    Open the file in the default OS editor for text files.

    +

    The default OS editor is determined by using open on +macOS and xdg-open on Linux.

  • +
+
+
write_screen_file
+
+

Write the contents of the screen into a temporary file with the +specified action.

+

See write_scrollback_file for possible actions.

+
+
write_selection_file
+
+

Write the currently selected text into a temporary file with the +specified action.

+

See write_scrollback_file for possible actions.

+

Does nothing when no text is selected.

+
+
new_window
+
+

Open a new window.

+

If the application isn’t currently focused, this will bring it to the +front.

+
+
new_tab
+
+

Open a new tab.

+
+
previous_tab
+
+

Go to the previous tab.

+
+
next_tab
+
+

Go to the next tab.

+
+
last_tab
+
+

Go to the last tab.

+
+
goto_tab
+
+

Go to the tab with the specific index, starting from 1.

+

If the tab number is higher than the number of tabs, this will go to +the last tab.

+
+
move_tab
+
+

Moves a tab by a relative offset.

+

Positive values move the tab forwards, and negative values move it +backwards. If the new position is out of bounds, it is wrapped around +cyclically within the tab list.

+

For example, move_tab:1 moves the tab one position +forwards, and if it was already the last tab in the list, it wraps +around and becomes the first tab in the list. Likewise, +move_tab:-1 moves the tab one position backwards, and if it +was the first tab, then it will become the last tab.

+
+
toggle_tab_overview
+
+

Toggle the tab overview.

+

This is only supported on Linux and when the system’s libadwaita +version is 1.4 or newer. The current libadwaita version can be found by +running ghostty +version.

+
+
prompt_surface_title
+
+

Change the title of the current focused surface via a pop-up +prompt.

+
+
prompt_tab_title
+
+

Change the title of the current tab via a pop-up prompt. The title +set via this prompt overrides any title set by the terminal and persists +across focus changes within the tab.

+
+
set_surface_title
+
+

Set the title for the current focused surface.

+

If the title is empty, the surface title is reset to an empty +title.

+
+
set_tab_title
+
+

Set the title for the current focused tab.

+

If the title is empty, the tab title override is cleared.

+
+
new_split
+
+

Create a new split in the specified direction.

+

Valid arguments:

+
    +
  • right, down, left, +up

    +

    Creates a new split in the corresponding direction.

  • +
  • auto

    +

    Creates a new split along the larger direction. For example, if the +parent split is currently wider than it is tall, then a left-right split +would be created, and vice versa.

  • +
+
+
goto_split
+
+

Focus on a split either in the specified direction +(right, down, left and +up), or in the adjacent split in the order of creation +(previous and next).

+
+
goto_window
+
+

Focus on either the previous window or the next one (‘previous’, +‘next’)

+
+
toggle_split_zoom
+
+

Zoom in or out of the current split.

+

When a split is zoomed into, it will take up the entire space in the +current tab, hiding other splits. The tab or tab bar would also reflect +this by displaying an icon indicating the zoomed state.

+
+
toggle_readonly
+
+

Toggle read-only mode for the current surface.

+

When a surface is in read-only mode: - No input is sent to the PTY +(mouse events, key encoding) - Input can still be used at the terminal +level to make selections, copy/paste (keybinds), scroll, etc. - Warn +before quit is always enabled in this state even if an active process is +not running

+
+
resize_split
+
+

Resize the current split in the specified direction and amount in +pixels. The two arguments should be joined with a comma +(,), like in resize_split:up,10.

+
+
equalize_splits
+
+

Equalize the size of all splits in the current window.

+
+
reset_window_size
+
+

Reset the window to the default size. The “default size” is the size +that a new window would be created with. This has no effect if the +window is fullscreen.

+

Only implemented on macOS.

+
+
inspector
+
+

Control the visibility of the terminal inspector.

+

Valid arguments: toggle, show, +hide.

+
+
show_gtk_inspector
+
+

Show the GTK inspector.

+

Has no effect on macOS.

+
+
show_on_screen_keyboard
+
+

Show the on-screen keyboard if one is present.

+

Only implemented on Linux (GTK). On GNOME, the “Screen Keyboard” +accessibility feature must be turned on, which can be found under +Settings > Accessibility > Typing. Other platforms are as of now +untested.

+
+
open_config
+
+

Open the configuration file in the default OS editor.

+

If your default OS editor isn’t configured then this will fail. +Currently, any failures to open the configuration will show up only in +the logs.

+
+
reload_config
+
+

Reload the configuration.

+

The exact meaning depends on the app runtime in use, but this usually +involves re-reading the configuration file and applying any changes Note +that not all changes can be applied at runtime.

+
+
close_surface
+
+

Close the current “surface”, whether that is a window, tab, split, +etc.

+

This might trigger a close confirmation popup, depending on the value +of the confirm-close-surface configuration setting.

+
+
close_tab
+
+

Close the current tab and all splits therein, close all other tabs, +or close every tab to the right of the current one depending on the +mode.

+

If the mode is not specified, defaults to closing the current +tab.

+

This might trigger a close confirmation popup, depending on the value +of the confirm-close-surface configuration setting.

+
+
close_window
+
+

Close the current window and all tabs and splits therein.

+

This might trigger a close confirmation popup, depending on the value +of the confirm-close-surface configuration setting.

+
+
close_all_windows
+
+

Close all windows.

+

WARNING: This action has been deprecated and has no effect on either +Linux or macOS. Users are instead encouraged to use +all:close_window instead.

+
+
toggle_maximize
+
+

Maximize or unmaximize the current window.

+

This has no effect on macOS as it does not have the concept of +maximized windows.

+
+
toggle_fullscreen
+
+

Fullscreen or unfullscreen the current window.

+
+
toggle_window_decorations
+
+

Toggle window decorations (titlebar, buttons, etc.) for the current +window.

+

Only implemented on Linux.

+
+
toggle_window_float_on_top
+
+

Toggle whether the terminal window should always float on top of +other windows even when unfocused.

+

Terminal windows always start as normal (not float-on-top) +windows.

+

Only implemented on macOS.

+
+
toggle_secure_input
+
+

Toggle secure input mode.

+

This is used to prevent apps from monitoring your keyboard input when +entering passwords or other sensitive information.

+

This applies to the entire application, not just the focused +terminal. You must manually untoggle it or quit Ghostty entirely to +disable it.

+

Only implemented on macOS, as this uses a built-in system API.

+
+
toggle_mouse_reporting
+
+

Toggle mouse reporting on or off.

+

When mouse reporting is disabled, mouse events will not be reported +to terminal applications even if they request it. This allows you to +always use the mouse for selection and other terminal UI interactions +without applications capturing mouse input.

+

This can also be controlled via the mouse-reporting +configuration option.

+
+
toggle_command_palette
+
+

Toggle the command palette.

+

The command palette is a popup that lets you see what actions you can +perform, their associated keybindings (if any), a search bar to filter +the actions, and the ability to then execute the action.

+

This requires libadwaita 1.5 or newer on Linux. The current +libadwaita version can be found by running +ghostty +version.

+
+
toggle_quick_terminal
+
+

Toggle the quick terminal.

+

The quick terminal, also known as the “Quake-style” or drop-down +terminal, is a terminal window that appears on demand from a keybinding, +often sliding in from a screen edge such as the top. This is useful for +quick access to a terminal without having to open a new window or +tab.

+

The terminal state is preserved between appearances, so showing the +quick terminal after it was already hidden would display the same window +instead of creating a new one.

+

As quick terminals are often useful when other windows are currently +focused, they are best used with global keybinds. For example, +one can define the following key bind to toggle the quick terminal from +anywhere within the system by pressing Cmd+`:

+
keybind = global:cmd+backquote=toggle_quick_terminal
+

The quick terminal has some limitations:

+
    +
  • Only one quick terminal instance can exist at a time.

  • +
  • Unlike normal terminal windows, the quick terminal will not be +restored when the application is restarted on systems that support +window restoration like macOS.

  • +
  • On Linux, the quick terminal is only supported on Wayland and not +X11, and only on Wayland compositors that support the +wlr-layer-shell-v1 protocol. In practice, this means that +only GNOME users would not be able to use this feature.

  • +
  • On Linux, slide-in animations are only supported on KDE, and when +the “Sliding Popups” KWin plugin is enabled.

    +

    If you do not have this plugin enabled, open System Settings > +Apps & Windows > Window Management > Desktop Effects, and +enable the plugin in the plugin list. Ghostty would then need to be +restarted fully for this to take effect.

  • +
  • Quick terminal tabs are only supported on Linux and not on macOS. +This is because tabs on macOS require a title bar.

  • +
  • On macOS, a fullscreened quick terminal will always be in +non-native fullscreen mode. This is a requirement due to how the quick +terminal is rendered.

  • +
+

See the various configurations for the quick terminal in the +configuration file to customize its behavior.

+
+
toggle_visibility
+
+

Show or hide all windows. If all windows become shown, we also ensure +Ghostty becomes focused. When hiding all windows, focus is yielded to +the next application as determined by the OS.

+

Note: When the focused surface is fullscreen, this method does +nothing.

+

Only implemented on macOS.

+
+
toggle_background_opacity
+
+

Toggle the window background opacity between transparent and +opaque.

+

This does nothing when background-opacity is set to 1 or +above.

+

When background-opacity is less than 1, this action will +either make the window transparent or not depending on its current +transparency state.

+

Only implemented on macOS.

+
+
check_for_updates
+
+

Check for updates.

+

Only implemented on macOS.

+
+
undo
+
+

Undo the last undoable action for the focused surface or terminal, if +possible. This can undo actions such as closing tabs or windows.

+

Not every action in Ghostty can be undone or redone. The list of +actions support undo/redo is currently limited to:

+
    +
  • New window, close window
  • +
  • New tab, close tab
  • +
  • New split, close split
  • +
+

All actions are only undoable/redoable for a limited time. For +example, restoring a closed split can only be done for some number of +seconds since the split was closed. The exact amount is configured with +the undo-timeout configuration settings.

+

The undo/redo actions being limited ensures that there is bounded +memory usage over time, closed surfaces don’t continue running in the +background indefinitely, and the keybinds become available for terminal +applications to use.

+

Only implemented on macOS.

+
+
redo
+
+

Redo the last undoable action for the focused surface or terminal, if +possible. See “undo” for more details on what can and cannot be undone +or redone.

+
+
end_key_sequence
+
+

End the currently active key sequence, if any, and flush the keys up +to this point to the terminal, excluding the key that triggered this +action.

+

For example: ctrl+w>escape=end_key_sequence would +encode ctrl+w to the terminal and exit the key +sequence.

+

Normally, an invalid sequence will reset the key sequence and flush +all data including the invalid key. This action allows you to flush only +the prior keys, which is useful when you want to bind something like a +control key (ctrl+w) but not send additional inputs.

+
+
activate_key_table
+
+

Activate a named key table (see keybind configuration +documentation). The named key table will remain active until +deactivate_key_table is called. If you want a one-shot key +table activation, use the activate_key_table_once action +instead.

+

If the named key table does not exist, this action has no effect and +performable will report false.

+

If the named key table is already the currently active key table, +this action has no effect and performable will report false.

+
+
activate_key_table_once
+
+

Same as activate_key_table, but the key table will only be active +until the first valid keybinding from that table is used (including any +defined catch_all bindings).

+

The “once” check is only done if this is the currently active key +table. If another key table is activated later, then this table will +remain active until it pops back out to being the active key table.

+
+
deactivate_key_table
+
+

Deactivate the currently active key table, if any. The next most +recently activated key table (if any) will become active again. If no +key table is active, this action has no effect.

+
+
deactivate_all_key_tables
+
+

Deactivate all active key tables. If no active key table exists, this +will report performable as false.

+
+
quit
+
+

Quit Ghostty.

+
+
crash
+
+

Crash Ghostty in the desired thread for the focused surface.

+

WARNING: This is a hard crash (panic) and data can be lost.

+

The purpose of this action is to test crash handling. For some users, +it may be useful to test crash reporting functionality in order to +determine if it all works as expected.

+

The value determines the crash location:

+
    +
  • main

    +

    Crash on the main (GUI) thread.

  • +
  • io

    +

    Crash on the IO thread for the focused surface.

  • +
  • render

    +

    Crash on the render thread for the focused surface.

  • +
+
+
+

FILES

+
+
$XDG_CONFIG_HOME/ghostty/config.ghostty
+
+

Location of the default configuration file.

+
+
$HOME/Library/Application +Support/com.mitchellh.ghostty/config.ghostty
+
+

On macOS, location of the default configuration +file. This location takes precedence over the XDG environment +locations.

+
+
$LOCALAPPDATA/ghostty/config.ghostty
+
+

On Windows, if $XDG_CONFIG_HOME is not set, +$LOCALAPPDATA will be searched for configuration files.

+
+
+

ENVIRONMENT

+
+
XDG_CONFIG_HOME
+
+

Default location for configuration files.

+
+
$HOME/Library/Application +Support/com.mitchellh.ghostty
+
+

MACOS ONLY default location for configuration files. +This location takes precedence over the XDG environment locations.

+
+
LOCALAPPDATA
+
+

WINDOWS ONLY: alternate location to search for +configuration files.

+
+
+

BUGS

+

See GitHub issues: https://github.com/ghostty-org/ghostty/issues

+

AUTHOR

+

Mitchell Hashimoto m@mitchellh.com Ghostty contributors https://github.com/ghostty-org/ghostty/graphs/contributors

+

SEE ALSO

+

ghostty(1)

+ + diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.md b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.md new file mode 100644 index 0000000..f291b03 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/doc/ghostty.5.md @@ -0,0 +1,5021 @@ +% GHOSTTY(5) Version 1.3.1 | Ghostty terminal emulator configuration file + +# NAME + +**ghostty** - Ghostty terminal emulator configuration file + +# DESCRIPTION + +To configure Ghostty, you must use a configuration file. GUI-based configuration +is on the roadmap but not yet supported. The configuration file must be placed +at `$XDG_CONFIG_HOME/ghostty/config.ghostty`, which defaults to `~/.config/ghostty/config.ghostty` +if the [XDG environment is not set](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html). + +**If you are using macOS, the configuration file can also be placed at +`$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty`.** This is the +default configuration location for macOS. It will be searched before any of the +XDG environment locations listed above. + +The file format is documented below as an example: + + # The syntax is "key = value". The whitespace around the equals doesn't matter. + background = 282c34 + foreground= ffffff + + # Blank lines are ignored! + + keybind = ctrl+z=close_surface + keybind = ctrl+d=new_split:right + + # Colors can be changed by setting the 16 colors of `palette`, which each color + # being defined as regular and bold. + # + # black + palette = 0=#1d2021 + palette = 8=#7c6f64 + # red + palette = 1=#cc241d + palette = 9=#fb4934 + # green + palette = 2=#98971a + palette = 10=#b8bb26 + # yellow + palette = 3=#d79921 + palette = 11=#fabd2f + # blue + palette = 4=#458588 + palette = 12=#83a598 + # purple + palette = 5=#b16286 + palette = 13=#d3869b + # aqua + palette = 6=#689d6a + palette = 14=#8ec07c + # white + palette = 7=#a89984 + palette = 15=#fbf1c7 + +You can view all available configuration options and their documentation by +executing the command `ghostty +show-config --default --docs`. Note that this will +output the full default configuration with docs to stdout, so you may want to +pipe that through a pager, an editor, etc. + +Note: You'll see a lot of weird blank configurations like `font-family =`. This +is a valid syntax to specify the default behavior (no value). The `+show-config` +outputs it so it's clear that key is defaulting and also to have something to +attach the doc comment to. + +You can also see and read all available configuration options in the source +Config structure. The available keys are the keys verbatim, and their possible +values are typically documented in the comments. You also can search for +the public config files of many Ghostty users for examples and inspiration. + +## Configuration Errors + +If your configuration file has any errors, Ghostty does its best to ignore +them and move on. Configuration errors will be logged. + +## Debugging Configuration + +You can verify that configuration is being properly loaded by looking at the +debug output of Ghostty. + +In the debug output, you should see in the first 20 lines or so messages about +loading (or not loading) a configuration file, as well as any errors it may have +encountered. Configuration errors are also shown in a dedicated window on both +macOS and Linux (GTK). Ghostty does not treat configuration errors as fatal and +will fall back to default values for erroneous keys. + +You can also view the full configuration Ghostty is loading using `ghostty ++show-config` from the command-line. Use the `--help` flag to additional options +for that command. + +## Logging + +Ghostty can write logs to a number of destinations. On all platforms, logging to +`stderr` is available. Depending on the platform and how Ghostty was launched, +logs sent to `stderr` may be stored by the system and made available for later +retrieval. + +On Linux if Ghostty is launched by the default `systemd` user service, you can use +`journald` to see Ghostty's logs: `journalctl --user --unit app-com.mitchellh.ghostty.service`. + +On macOS logging to the macOS unified log is available and enabled by default. +--Use the system `log` CLI to view Ghostty's logs: `sudo log stream --level debug +--predicate 'subsystem=="com.mitchellh.ghostty"'`. + +Ghostty's logging can be configured in two ways. The first is by what +optimization level Ghostty is compiled with. If Ghostty is compiled with `Debug` +optimizations debug logs will be output to `stderr`. If Ghostty is compiled with +any other optimization the debug logs will not be output to `stderr`. + +Ghostty also checks the `GHOSTTY_LOG` environment variable. It can be used +to control which destinations receive logs. Ghostty currently defines two +destinations: + +- `stderr` - logging to `stderr`. +- `macos` - logging to macOS's unified log (has no effect on non-macOS platforms). + +Combine values with a comma to enable multiple destinations. Prefix a +destination with `no-` to disable it. Enabling and disabling destinations +can be done at the same time. Setting `GHOSTTY_LOG` to `true` will enable all +destinations. Setting `GHOSTTY_LOG` to `false` will disable all destinations. + +# CONFIGURATION OPTIONS + +**`language`** + +: Set Ghostty's graphical user interface language to a language other than the + system default language. For example: + + language = de + + will force the strings in Ghostty's graphical user interface to be in German + rather than the system default. + + This will not affect the language used by programs run _within_ Ghostty. + Those will continue to use the default system language. There are also many + non-GUI elements in Ghostty that are not translated - this setting will have + no effect on those. + + Warning: This setting cannot be reloaded at runtime. To change the language + you must fully restart Ghostty. + + GTK only. + Available since 1.3.0. + + +**`font-family`** + +: The font families to use. + + You can generate the list of valid values using the CLI: + + ghostty +list-fonts + + This configuration can be repeated multiple times to specify preferred + fallback fonts when the requested codepoint is not available in the primary + font. This is particularly useful for multiple languages, symbolic fonts, + etc. + + Notes on emoji specifically: On macOS, Ghostty by default will always use + Apple Color Emoji and on Linux will always use Noto Emoji. You can + override this behavior by specifying a font family here that contains + emoji glyphs. + + The specific styles (bold, italic, bold italic) do not need to be + explicitly set. If a style is not set, then the regular style (font-family) + will be searched for stylistic variants. If a stylistic variant is not + found, Ghostty will use the regular style. This prevents falling back to a + different font family just to get a style such as bold. This also applies + if you explicitly specify a font family for a style. For example, if you + set `font-family-bold = FooBar` and "FooBar" cannot be found, Ghostty will + use whatever font is set for `font-family` for the bold style. + + Finally, some styles may be synthesized if they are not supported. + For example, if a font does not have an italic style and no alternative + italic font is specified, Ghostty will synthesize an italic style by + applying a slant to the regular style. If you want to disable these + synthesized styles then you can use the `font-style` configurations + as documented below. + + You can disable styles completely by using the `font-style` set of + configurations. See the documentation for `font-style` for more information. + + If you want to overwrite a previous set value rather than append a fallback, + specify the value as `""` (empty string) to reset the list and then set the + new values. For example: + + font-family = "" + font-family = "My Favorite Font" + + Setting any of these as CLI arguments will automatically clear the + values set in configuration files so you don't need to specify + `--font-family=""` before setting a new value. You only need to specify + this within config files if you want to clear previously set values in + configuration files or on the CLI if you want to clear values set on the + CLI. + + +**`font-family-bold`** + +**`font-family-italic`** + +**`font-family-bold-italic`** + +**`font-style`** + +: The named font style to use for each of the requested terminal font styles. + This looks up the style based on the font style string advertised by the + font itself. For example, "Iosevka Heavy" has a style of "Heavy". + + You can also use these fields to completely disable a font style. If you set + the value of the configuration below to literal `false` then that font style + will be disabled. If the running program in the terminal requests a disabled + font style, the regular font style will be used instead. + + These are only valid if its corresponding font-family is also specified. If + no font-family is specified, then the font-style is ignored unless you're + disabling the font style. + + +**`font-style-bold`** + +**`font-style-italic`** + +**`font-style-bold-italic`** + +**`font-synthetic-style`** + +: Control whether Ghostty should synthesize a style if the requested style is + not available in the specified font-family. + + Ghostty can synthesize bold, italic, and bold italic styles if the font + does not have a specific style. For bold, this is done by drawing an + outline around the glyph of varying thickness. For italic, this is done by + applying a slant to the glyph. For bold italic, both of these are applied. + + Synthetic styles are not perfect and will generally not look as good + as a font that has the style natively. However, they are useful to + provide styled text when the font does not have the style. + + Set this to "false" or "true" to disable or enable synthetic styles + completely. You can disable specific styles using "no-bold", "no-italic", + and "no-bold-italic". You can disable multiple styles by separating them + with a comma. For example, "no-bold,no-italic". + + Available style keys are: `bold`, `italic`, `bold-italic`. + + If synthetic styles are disabled, then the regular style will be used + instead if the requested style is not available. If the font has the + requested style, then the font will be used as-is since the style is + not synthetic. + + Warning: An easy mistake is to disable `bold` or `italic` but not + `bold-italic`. Disabling only `bold` or `italic` will NOT disable either + in the `bold-italic` style. If you want to disable `bold-italic`, you must + explicitly disable it. You cannot partially disable `bold-italic`. + + By default, synthetic styles are enabled. + + +**`font-feature`** + +: Apply a font feature. To enable multiple font features you can repeat + this multiple times or use a comma-separated list of feature settings. + + The syntax for feature settings is as follows, where `feat` is a feature: + + * Enable features with e.g. `feat`, `+feat`, `feat on`, `feat=1`. + * Disabled features with e.g. `-feat`, `feat off`, `feat=0`. + * Set a feature value with e.g. `feat=2`, `feat = 3`, `feat 4`. + * Feature names may be wrapped in quotes, meaning this config should be + syntactically compatible with the `font-feature-settings` CSS property. + + The syntax is fairly loose, but invalid settings will be silently ignored. + + The font feature will apply to all fonts rendered by Ghostty. A future + enhancement will allow targeting specific faces. + + To disable programming ligatures, use `-calt` since this is the typical + feature name for programming ligatures. To look into what font features + your font has and what they do, use a font inspection tool such as + [fontdrop.info](https://fontdrop.info). + + To generally disable most ligatures, use `-calt, -liga, -dlig`. + + +**`font-size`** + +: Font size in points. This value can be a non-integer and the nearest integer + pixel size will be selected. If you have a high dpi display where 1pt = 2px + then you can get an odd numbered pixel size by specifying a half point. + + For example, 13.5pt @ 2px/pt = 27px + + Changing this configuration at runtime will only affect existing + terminals that have NOT manually adjusted their font size in some way + (e.g. increased or decreased the font size). Terminals that have manually + adjusted their font size will retain their manually adjusted size. + Otherwise, the font size of existing terminals will be updated on + reload. + + On Linux with GTK, font size is scaled according to both display-wide and + text-specific scaling factors, which are often managed by your desktop + environment (e.g. the GNOME display scale and large text settings). + + +**`font-variation`** + +: A repeatable configuration to set one or more font variations values for + a variable font. A variable font is a single font, usually with a filename + ending in `-VF.ttf` or `-VF.otf` that contains one or more configurable axes + for things such as weight, slant, etc. Not all fonts support variations; + only fonts that explicitly state they are variable fonts will work. + + The format of this is `id=value` where `id` is the axis identifier. An axis + identifier is always a 4 character string, such as `wght`. To get the list + of supported axes, look at your font documentation or use a font inspection + tool. + + Invalid ids and values are usually ignored. For example, if a font only + supports weights from 100 to 700, setting `wght=800` will do nothing (it + will not be clamped to 700). You must consult your font's documentation to + see what values are supported. + + Common axes are: `wght` (weight), `slnt` (slant), `ital` (italic), `opsz` + (optical size), `wdth` (width), `GRAD` (gradient), etc. + + +**`font-variation-bold`** + +**`font-variation-italic`** + +**`font-variation-bold-italic`** + +**`font-codepoint-map`** + +: Force one or a range of Unicode codepoints to map to a specific named font. + This is useful if you want to support special symbols or if you want to use + specific glyphs that render better for your specific font. + + The syntax is `codepoint=fontname` where `codepoint` is either a single + codepoint or a range. Codepoints must be specified as full Unicode + hex values, such as `U+ABCD`. Codepoints ranges are specified as + `U+ABCD-U+DEFG`. You can specify multiple ranges for the same font separated + by commas, such as `U+ABCD-U+DEFG,U+1234-U+5678=fontname`. The font name is + the same value as you would use for `font-family`. + + This configuration can be repeated multiple times to specify multiple + codepoint mappings. + + Changing this configuration at runtime will only affect new terminals, + i.e. new windows, tabs, etc. + + +**`clipboard-codepoint-map`** + +: Map specific Unicode codepoints to replacement values when copying text + to clipboard. + + This configuration allows you to replace specific Unicode characters with + other characters or strings when copying terminal content to the clipboard. + This is useful for converting special terminal symbols to more compatible + characters for pasting into other applications. + + The syntax is similar to `font-codepoint-map`: + - Single codepoint: `U+1234=U+ABCD` or `U+1234=replacement_text` + - Codepoint range: `U+1234-U+5678=U+ABCD` + + Examples: + - `clipboard-codepoint-map = U+2500=U+002D` (box drawing horizontal → hyphen) + - `clipboard-codepoint-map = U+2502=U+007C` (box drawing vertical → pipe) + - `clipboard-codepoint-map = U+03A3=SUM` (Greek sigma → "SUM") + + This configuration can be repeated multiple times to specify multiple + mappings. Later entries take priority over earlier ones for overlapping + ranges. + + Note: This only applies to text copying operations, not URL copying. + + +**`font-thicken`** + +: Draw fonts with a thicker stroke, if supported. + This is currently only supported on macOS. + + +**`font-thicken-strength`** + +: Strength of thickening when `font-thicken` is enabled. + + Valid values are integers between `0` and `255`. `0` does not correspond to + *no* thickening, rather it corresponds to the lightest available thickening. + + Has no effect when `font-thicken` is set to `false`. + + This is currently only supported on macOS. + + +**`font-shaping-break`** + +: Locations to break font shaping into multiple runs. + + A "run" is a contiguous segment of text that is shaped together. "Shaping" + is the process of converting text (codepoints) into glyphs (renderable + characters). This is how ligatures are formed, among other things. + For example, if a coding font turns "!=" into a single glyph, then it + must see "!" and "=" next to each other in a single run. When a run + is broken, the text is shaped separately. To continue our example, if + "!" is at the end of one run and "=" is at the start of the next run, + then the ligature will not be formed. + + Ghostty breaks runs at certain points to improve readability or usability. + For example, Ghostty by default will break runs under the cursor so that + text editing can see the individual characters rather than a ligature. + This configuration lets you configure this behavior. + + Combine values with a comma to set multiple options. Prefix an + option with "no-" to disable it. Enabling and disabling options + can be done at the same time. + + Available options: + + * `cursor` - Break runs under the cursor. + + Available since: 1.2.0 + + +**`alpha-blending`** + +: What color space to use when performing alpha blending. + + This affects the appearance of text and of any images with transparency. + Additionally, custom shaders will receive colors in the configured space. + + On macOS the default is `native`, on all other platforms the default is + `linear-corrected`. + + Valid values: + + * `native` - Perform alpha blending in the native color space for the OS. + On macOS this corresponds to Display P3, and on Linux it's sRGB. + + * `linear` - Perform alpha blending in linear space. This will eliminate + the darkening artifacts around the edges of text that are very visible + when certain color combinations are used (e.g. red / green), but makes + dark text look much thinner than normal and light text much thicker. + This is also sometimes known as "gamma correction". + + * `linear-corrected` - Same as `linear`, but with a correction step applied + for text that makes it look nearly or completely identical to `native`, + but without any of the darkening artifacts. + + Available since: 1.1.0 + + +**`adjust-cell-width`** + +: All of the configurations behavior adjust various metrics determined by the + font. The values can be integers (1, -1, etc.) or a percentage (20%, -15%, + etc.). In each case, the values represent the amount to change the original + value. + + For example, a value of `1` increases the value by 1; it does not set it to + literally 1. A value of `20%` increases the value by 20%. And so on. + + There is little to no validation on these values so the wrong values (e.g. + `-100%`) can cause the terminal to be unusable. Use with caution and reason. + + Some values are clamped to minimum or maximum values. This can make it + appear that certain values are ignored. For example, many `*-thickness` + adjustments cannot go below 1px. + + `adjust-cell-height` has some additional behaviors to describe: + + * The font will be centered vertically in the cell. + + * The cursor will remain the same size as the font, but may be + adjusted separately with `adjust-cursor-height`. + + * Powerline glyphs will be adjusted along with the cell height so + that things like status lines continue to look aligned. + + +**`adjust-cell-height`** + +**`adjust-font-baseline`** + +: Distance in pixels or percentage adjustment from the bottom of the cell to the text baseline. + Increase to move baseline UP, decrease to move baseline DOWN. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-underline-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the underline. + Increase to move underline DOWN, decrease to move underline UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-underline-thickness`** + +: Thickness in pixels of the underline. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-strikethrough-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the strikethrough. + Increase to move strikethrough DOWN, decrease to move strikethrough UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-strikethrough-thickness`** + +: Thickness in pixels or percentage adjustment of the strikethrough. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-overline-position`** + +: Distance in pixels or percentage adjustment from the top of the cell to the top of the overline. + Increase to move overline DOWN, decrease to move overline UP. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-overline-thickness`** + +: Thickness in pixels or percentage adjustment of the overline. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-cursor-thickness`** + +: Thickness in pixels or percentage adjustment of the bar cursor and outlined rect cursor. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-cursor-height`** + +: Height in pixels or percentage adjustment of the cursor. Currently applies to all cursor types: + bar, rect, and outlined rect. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-box-thickness`** + +: Thickness in pixels or percentage adjustment of box drawing characters. + See the notes about adjustments in `adjust-cell-width`. + + +**`adjust-icon-height`** + +: Height in pixels or percentage adjustment of maximum height for nerd font icons. + + A positive (negative) value will increase (decrease) the maximum icon + height. This may not affect all icons equally: the effect depends on whether + the default size of the icon is height-constrained, which in turn depends on + the aspect ratio of both the icon and your primary font. + + Certain icons designed for box drawing and terminal graphics, such as + Powerline symbols, are not affected by this option. + + See the notes about adjustments in `adjust-cell-width`. + + Available in: 1.2.0 + + +**`grapheme-width-method`** + +: The method to use for calculating the cell width of a grapheme cluster. + The default value is `unicode` which uses the Unicode standard to determine + grapheme width. This results in correct grapheme width but may result in + cursor-desync issues with some programs (such as shells) that may use a + legacy method such as `wcswidth`. + + Valid values are: + + * `legacy` - Use a legacy method to determine grapheme width, such as + wcswidth This maximizes compatibility with legacy programs but may result + in incorrect grapheme width for certain graphemes such as skin-tone + emoji, non-English characters, etc. + + This is called "legacy" and not something more specific because the + behavior is undefined and we want to retain the ability to modify it. + For example, we may or may not use libc `wcswidth` now or in the future. + + * `unicode` - Use the Unicode standard to determine grapheme width. + + If a running program explicitly enables terminal mode 2027, then `unicode` + width will be forced regardless of this configuration. When mode 2027 is + reset, this configuration will be used again. + + This configuration can be changed at runtime but will not affect existing + terminals. Only new terminals will use the new configuration. + + +**`freetype-load-flags`** + +: FreeType load flags to enable. The format of this is a list of flags to + enable separated by commas. If you prefix a flag with `no-` then it is + disabled. If you omit a flag, its default value is used, so you must + explicitly disable flags you don't want. You can also use `true` or `false` + to turn all flags on or off. + + This configuration only applies to Ghostty builds that use FreeType. + This is usually the case only for Linux builds. macOS uses CoreText + and does not have an equivalent configuration. + + Available flags: + + * `hinting` - Enable or disable hinting. Enabled by default. + + * `force-autohint` - Always use the freetype auto-hinter instead of + the font's native hinter. Disabled by default. + + * `monochrome` - Instructs renderer to use 1-bit monochrome rendering. + This will disable anti-aliasing, and probably not look very good unless + you're using a pixel font. Disabled by default. + + * `autohint` - Enable the freetype auto-hinter. Enabled by default. + + * `light` - Use a light hinting style, better preserving glyph shapes. + This is the most common setting in GTK apps and therefore also Ghostty's + default. This has no effect if `monochrome` is enabled. Enabled by + default. + + Example: `hinting`, `no-hinting`, `force-autohint`, `no-force-autohint` + + +**`theme`** + +: A theme to use. This can be a built-in theme name, a custom theme + name, or an absolute path to a custom theme file. Ghostty also supports + specifying a different theme to use for light and dark mode. Each + option is documented below. + + If the theme is an absolute pathname, Ghostty will attempt to load that + file as a theme. If that file does not exist or is inaccessible, an error + will be logged and no other directories will be searched. + + If the theme is not an absolute pathname, two different directories will be + searched for a file name that matches the theme. This is case sensitive on + systems with case-sensitive filesystems. It is an error for a theme name to + include path separators unless it is an absolute pathname. + + The first directory is the `themes` subdirectory of your Ghostty + configuration directory. This is `$XDG_CONFIG_HOME/ghostty/themes` or + `~/.config/ghostty/themes`. + + The second directory is the `themes` subdirectory of the Ghostty resources + directory. Ghostty ships with a multitude of themes that will be installed + into this directory. On macOS, this list is in the + `Ghostty.app/Contents/Resources/ghostty/themes` directory. On Linux, this + list is in the `share/ghostty/themes` directory (wherever you installed the + Ghostty "share" directory. + + To see a list of available themes, run `ghostty +list-themes`. + + A theme file is simply another Ghostty configuration file. They share + the same syntax and same configuration options. A theme can set any valid + configuration option so please do not use a theme file from an untrusted + source. The built-in themes are audited to only set safe configuration + options. + + Some options cannot be set within theme files. The reason these are not + supported should be self-evident. A theme file cannot set `theme` or + `config-file`. At the time of writing this, Ghostty will not show any + warnings or errors if you set these options in a theme file but they will + be silently ignored. + + Any additional colors specified via background, foreground, palette, etc. + will override the colors specified in the theme. + + To specify a different theme for light and dark mode, use the following + syntax: `light:theme-name,dark:theme-name`. For example: + `light:Rose Pine Dawn,dark:Rose Pine`. Whitespace around all values are + trimmed and order of light and dark does not matter. Both light and dark + must be specified in this form. In this form, the theme used will be + based on the current desktop environment theme. + + There are some known bugs with light/dark mode theming. These will + be fixed in a future update: + + - macOS: titlebar tabs style is not updated when switching themes. + + +**`background`** + +: Background color for the window. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`foreground`** + +: Foreground color for the window. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`background-image`** + +: Background image for the terminal. + + This should be a path to a PNG or JPEG file, other image formats are + not yet supported. + + The background image is currently per-terminal, not per-window. If + you are a heavy split user, the background image will be repeated across + splits. A future improvement to Ghostty will address this. + + WARNING: Background images are currently duplicated in VRAM per-terminal. + For sufficiently large images, this could lead to a large increase in + memory usage (specifically VRAM usage). A future Ghostty improvement + will resolve this by sharing image textures across terminals. + + Available since: 1.2.0 + + +**`background-image-opacity`** + +: Background image opacity. + + This is relative to the value of `background-opacity`. + + A value of `1.0` (the default) will result in the background image being + placed on top of the general background color, and then the combined result + will be adjusted to the opacity specified by `background-opacity`. + + A value less than `1.0` will result in the background image being mixed + with the general background color before the combined result is adjusted + to the configured `background-opacity`. + + A value greater than `1.0` will result in the background image having a + higher opacity than the general background color. For instance, if the + configured `background-opacity` is `0.5` and `background-image-opacity` + is set to `1.5`, then the final opacity of the background image will be + `0.5 * 1.5 = 0.75`. + + Available since: 1.2.0 + + +**`background-image-position`** + +: Background image position. + + Valid values are: + * `top-left` + * `top-center` + * `top-right` + * `center-left` + * `center` + * `center-right` + * `bottom-left` + * `bottom-center` + * `bottom-right` + + The default value is `center`. + + Available since: 1.2.0 + + +**`background-image-fit`** + +: Background image fit. + + Valid values are: + + * `contain` + + Preserving the aspect ratio, scale the background image to the largest + size that can still be contained within the terminal, so that the whole + image is visible. + + * `cover` + + Preserving the aspect ratio, scale the background image to the smallest + size that can completely cover the terminal. This may result in one or + more edges of the image being clipped by the edge of the terminal. + + * `stretch` + + Stretch the background image to the full size of the terminal, without + preserving the aspect ratio. + + * `none` + + Don't scale the background image. + + The default value is `contain`. + + Available since: 1.2.0 + + +**`background-image-repeat`** + +: Whether to repeat the background image or not. + + If this is set to true, the background image will be repeated if there + would otherwise be blank space around it because it doesn't completely + fill the terminal area. + + The default value is `false`. + + Available since: 1.2.0 + + +**`selection-foreground`** + +: The foreground and background color for selection. If this is not set, then + the selection color is just the inverted window background and foreground + (note: not to be confused with the cell bg/fg). + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + Since version 1.2.0, this can also be set to `cell-foreground` to match + the cell foreground color, or `cell-background` to match the cell + background color. + + +**`selection-background`** + +**`selection-clear-on-typing`** + +: Whether to clear selected text when typing. This defaults to `true`. + This is typical behavior for most terminal emulators as well as + text input fields. If you set this to `false`, then the selected text + will not be cleared when typing. + + "Typing" is specifically defined as any non-modifier (shift, control, + alt, etc.) keypress that produces data to be sent to the application + running within the terminal (e.g. the shell). Additionally, selection + is cleared when any preedit or composition state is started (e.g. + when typing languages such as Japanese). + + If this is `false`, then the selection can still be manually + cleared by clicking once or by pressing `escape`. + + Available since: 1.2.0 + + +**`selection-clear-on-copy`** + +: Whether to clear selected text after copying. This defaults to `false`. + + When set to `true`, the selection will be automatically cleared after + any copy operation that invokes the `copy_to_clipboard` keyboard binding. + Importantly, this will not clear the selection if the copy operation + was invoked via `copy-on-select`. + + When set to `false`, the selection remains visible after copying, allowing + to see what was copied and potentially perform additional operations + on the same selection. + + +**`selection-word-chars`** + +: Characters that mark word boundaries during text selection operations such + as double-clicking. When selecting a word, the selection will stop at any + of these characters. + + This is similar to the `WORDCHARS` environment variable in zsh, except this + specifies the boundary characters rather than the word characters. The + default includes common delimiters and punctuation that typically separate + words in code and prose. + + Each character in this string becomes a word boundary. Multi-byte UTF-8 + characters are supported, but only single codepoints can be specified. + Multi-codepoint sequences (e.g. emoji) are not supported. + + The null character (U+0000) is always treated as a boundary and does not + need to be included in this configuration. + + Default: `` \t'"│`|:;,()[]{}<>$ `` + + To add or remove specific characters, you can set this to a custom value. + For example, to treat semicolons as part of words: + + selection-word-chars = " \t'\"│`|:,()[]{}<>$" + + Available since: 1.3.0 + + +**`minimum-contrast`** + +: The minimum contrast ratio between the foreground and background colors. + The contrast ratio is a value between 1 and 21. A value of 1 allows for no + contrast (e.g. black on black). This value is the contrast ratio as defined + by the [WCAG 2.0 specification](https://www.w3.org/TR/WCAG20/). + + If you want to avoid invisible text (same color as background), a value of + 1.1 is a good value. If you want to avoid text that is difficult to read, a + value of 3 or higher is a good value. The higher the value, the more likely + that text will become black or white. + + This value does not apply to Emoji or images. + + +**`palette`** + +: Color palette for the 256 color form that many terminal applications use. + The syntax of this configuration is `N=COLOR` where `N` is 0 to 255 (for + the 256 colors in the terminal color table) and `COLOR` is a typical RGB + color code such as `#AABBCC` or `AABBCC`, or a named X11 color. For example, + `palette = 5=#BB78D9` will set the 'purple' color. + + The palette index can be in decimal, binary, octal, or hexadecimal. + Decimal is assumed unless a prefix is used: `0b` for binary, `0o` for octal, + and `0x` for hexadecimal. + + For definitions on the color indices and what they canonically map to, + [see this cheat sheet](https://www.ditig.com/256-colors-cheat-sheet). + + For most themes, you only need to set the first 16 colors (0–15) since the + rest of the palette (16–255) will be automatically generated by + default (see `palette-generate` for more details). + + +**`palette-generate`** + +: Whether to automatically generate the extended 256 color palette + (indices 16–255) from the base 16 ANSI colors. + + This lets theme authors specify only the base 16 colors and have the + rest of the palette be automatically generated in a consistent and + aesthetic way. + + When enabled, the 6×6×6 color cube and 24-step grayscale ramp are + derived from interpolations of the base palette, giving a more cohesive + look. Colors that have been explicitly set via `palette` are never + overwritten. + + The default value is false (disabled), because many legacy programs + using the 256-color palette hardcode assumptions about what these + colors are (mostly assuming the xterm 256 color palette). However, this + is still a very useful tool for theme authors and users who want + to customize their palette without having to specify all 256 colors. + + For more information on how the generation works, see here: + https://gist.github.com/jake-stewart/0a8ea46159a7da2c808e5be2177e1783 + + Available since: 1.3.0 + + +**`palette-harmonious`** + +: Invert the palette colors generated when `palette-generate` is enabled, + so that the colors go in reverse order. This allows palette-based + applications to work well in both light and dark mode since the + palettes are always relatively good colors. + + This defaults to off because some legacy terminal applications + hardcode the assumption that palette indices 16–231 are ordered from + darkest to lightest, so enabling this would make them unreadable. + This is not a generally good assumption and we encourage modern + terminal applications to use the indices in a more semantic way. + + This has no effect if `palette-generate` is disabled. + + For more information see `palette-generate`. + + Available since: 1.3.0 + + +**`cursor-color`** + +: The color of the cursor. If this is not set, a default will be chosen. + + Direct colors can be specified as either hex (`#RRGGBB` or `RRGGBB`) + or a named X11 color. + + Additionally, special values can be used to set the color to match + other colors at runtime: + + * `cell-foreground` - Match the cell foreground color. + (Available since: 1.2.0) + + * `cell-background` - Match the cell background color. + (Available since: 1.2.0) + + +**`cursor-opacity`** + +: The opacity level (opposite of transparency) of the cursor. A value of 1 + is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. Note that a + sufficiently small value such as 0.3 may be effectively invisible and may + make it difficult to find the cursor. + + +**`cursor-style`** + +: The style of the cursor. This sets the default style. A running program can + still request an explicit cursor style using escape sequences (such as `CSI + q`). Shell configurations will often request specific cursor styles. + + Note that shell integration will automatically set the cursor to a bar at + a prompt, regardless of this configuration. You can disable that behavior + by specifying `shell-integration-features = no-cursor` or disabling shell + integration entirely. + + Valid values are: + + * `block` + * `bar` + * `underline` + * `block_hollow` + + +**`cursor-style-blink`** + +: Sets the default blinking state of the cursor. This is just the default + state; running programs may override the cursor style using `DECSCUSR` (`CSI + q`). + + If this is not set, the cursor blinks by default. Note that this is not the + same as a "true" value, as noted below. + + If this is not set at all (`null`), then Ghostty will respect DEC Mode 12 + (AT&T cursor blink) as an alternate approach to turning blinking on/off. If + this is set to any value other than null, DEC mode 12 will be ignored but + `DECSCUSR` will still be respected. + + Valid values are: + + * ` ` (blank) + * `true` + * `false` + + +**`cursor-text`** + +: The color of the text under the cursor. If this is not set, a default will + be chosen. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + Since version 1.2.0, this can also be set to `cell-foreground` to match + the cell foreground color, or `cell-background` to match the cell + background color. + + +**`cursor-click-to-move`** + +: Enables the ability to move the cursor at prompts by clicking on a + location in the prompt text. + + This feature requires shell integration, specifically prompt marking + via `OSC 133`. Some shells like Fish (v4) and Nu (0.111+) natively + support this while others may require additional configuration or + Ghostty's shell integration features to be enabled. + + Depending on the shell, this works either by translating your click + position into a series of synthetic arrow key movements or by sending + a click event directly to the shell. In either case, some unexpected + behavior around edge cases is possible. + + +**`mouse-hide-while-typing`** + +: Hide the mouse immediately when typing. The mouse becomes visible again + when the mouse is used (button, movement, etc.). Platform-specific behavior + may dictate other scenarios where the mouse is shown. For example on macOS, + the mouse is shown again when a new window, tab, or split is created. + + +**`scroll-to-bottom`** + +: When to scroll the surface to the bottom. The format of this is a list of + options to enable separated by commas. If you prefix an option with `no-` + then it is disabled. If you omit an option, its default value is used. + + Available options: + + - `keystroke` If set, scroll the surface to the bottom when the user + presses a key that results in data being sent to the PTY (basically + anything but modifiers or keybinds that are processed by Ghostty). + + - `output` If set, scroll the surface to the bottom if there is new data + to display (e.g., when new lines are printed to the terminal). + + The default is `keystroke, no-output`. + + +**`mouse-shift-capture`** + +: Determines whether running programs can detect the shift key pressed with a + mouse click. Typically, the shift key is used to extend mouse selection. + + The default value of `false` means that the shift key is not sent with + the mouse protocol and will extend the selection. This value can be + conditionally overridden by the running program with the `XTSHIFTESCAPE` + sequence. + + The value `true` means that the shift key is sent with the mouse protocol + but the running program can override this behavior with `XTSHIFTESCAPE`. + + The value `never` is the same as `false` but the running program cannot + override this behavior with `XTSHIFTESCAPE`. The value `always` is the + same as `true` but the running program cannot override this behavior with + `XTSHIFTESCAPE`. + + If you always want shift to extend mouse selection even if the program + requests otherwise, set this to `never`. + + Valid values are: + + * `true` + * `false` + * `always` + * `never` + + +**`mouse-reporting`** + +: Enable or disable mouse reporting. When set to `false`, mouse events will + not be reported to terminal applications even if they request it. This + allows you to always use the mouse for selection and other terminal UI + interactions without applications capturing mouse input. + + When set to `true` (the default), terminal applications can request mouse + reporting and will receive mouse events according to their requested mode. + + This can be toggled at runtime using the `toggle_mouse_reporting` keybind + action. + + +**`mouse-scroll-multiplier`** + +: Multiplier for scrolling distance with the mouse wheel. + + A prefix of `precision:` or `discrete:` can be used to set the multiplier + only for scrolling with the specific type of devices. These can be + comma-separated to set both types of multipliers at the same time, e.g. + `precision:0.1,discrete:3`. If no prefix is used, the multiplier applies + to all scrolling devices. Specifying a prefix was introduced in Ghostty + 1.2.1. + + The value will be clamped to [0.01, 10,000]. Both of these are extreme + and you're likely to have a bad experience if you set either extreme. + + The default value is "3" for discrete devices and "1" for precision devices. + + +**`background-opacity`** + +: The opacity level (opposite of transparency) of the background. A value of + 1 is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. + + On macOS, background opacity is disabled when the terminal enters native + fullscreen. This is because the background becomes gray and it can cause + widgets to show through which isn't generally desirable. + + On macOS, changing this configuration requires restarting Ghostty completely. + + +**`background-opacity-cells`** + +: Applies background opacity to cells with an explicit background color + set. + + Normally, `background-opacity` is only applied to the window background. + If a cell has an explicit background color set, such as red, then that + background color will be fully opaque. An effect of this is that some + terminal applications that repaint the background color of the terminal + such as a Neovim and Tmux may not respect the `background-opacity` + (by design). + + Setting this to `true` will apply the `background-opacity` to all cells + regardless of whether they have an explicit background color set or not. + + Available since: 1.2.0 + + +**`background-blur`** + +: Whether to blur the background when `background-opacity` is less than 1. + + Valid values are: + + * a nonnegative integer specifying the *blur intensity* + * `false`, equivalent to a blur intensity of 0 + * `true`, equivalent to the default blur intensity of 20, which is + reasonable for a good looking blur. Higher blur intensities may + cause strange rendering and performance issues. + + On macOS 26.0 and later, there are additional special values that + can be set to use the native macOS glass effects: + + * `macos-glass-regular` - Standard glass effect with some opacity + * `macos-glass-clear` - Highly transparent glass effect + + If the macOS values are set, then this implies `background-blur = true` + on non-macOS platforms. + + Supported on macOS and on some Linux desktop environments, including: + + * KDE Plasma (Wayland and X11) + + Warning: the exact blur intensity is _ignored_ under KDE Plasma, and setting + this setting to either `true` or any positive blur intensity value would + achieve the same effect. The reason is that KWin, the window compositor + powering Plasma, only has one global blur setting and does not allow + applications to specify individual blur settings. + + To configure KWin's global blur setting, open System Settings and go to + "Apps & Windows" > "Window Management" > "Desktop Effects" and select the + "Blur" plugin. If disabled, enable it by ticking the checkbox to the left. + Then click on the "Configure" button and there will be two sliders that + allow you to set background blur and noise intensities for all apps, + including Ghostty. + + All other Linux desktop environments are as of now unsupported. Users may + need to set environment-specific settings and/or install third-party plugins + in order to support background blur, as there isn't a unified interface for + doing so. + + +**`unfocused-split-opacity`** + +: The opacity level (opposite of transparency) of an unfocused split. + Unfocused splits by default are slightly faded out to make it easier to see + which split is focused. To disable this feature, set this value to 1. + + A value of 1 is fully opaque and a value of 0 is fully transparent. Because + "0" is not useful (it makes the window look very weird), the minimum value + is 0.15. This value still looks weird but you can at least see what's going + on. A value outside of the range 0.15 to 1 will be clamped to the nearest + valid value. + + +**`unfocused-split-fill`** + +: The color to dim the unfocused split. Unfocused splits are dimmed by + rendering a semi-transparent rectangle over the split. This sets the color of + that rectangle and can be used to carefully control the dimming effect. + + This will default to the background color. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`split-divider-color`** + +: The color of the split divider. If this is not set, a default will be chosen. + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + Available since: 1.1.0 + + +**`split-preserve-zoom`** + +: Control when Ghostty preserves a zoomed split. Under normal circumstances, + any operation that changes focus or layout of the split tree in a window + will unzoom any zoomed split. This configuration allows you to control + this behavior. + + This can be set to `navigation` to preserve the zoomed split state + when navigating to another split (e.g. via `goto_split`). This will + change the zoomed split to the newly focused split instead of unzooming. + + Any options can also be prefixed with `no-` to disable that option. + + Example: `split-preserve-zoom = navigation` + + Available since: 1.3.0 + + +**`search-foreground`** + +: The foreground and background color for search matches. This only applies + to non-focused search matches, also known as candidate matches. + + Valid values: + + - Hex (`#RRGGBB` or `RRGGBB`) + - Named X11 color + - "cell-foreground" to match the cell foreground color + - "cell-background" to match the cell background color + + The default value is black text on a golden yellow background. + + +**`search-background`** + +**`search-selected-foreground`** + +: The foreground and background color for the currently selected search match. + This is the focused match that will be jumped to when using next/previous + search navigation. + + Valid values: + + - Hex (`#RRGGBB` or `RRGGBB`) + - Named X11 color + - "cell-foreground" to match the cell foreground color + - "cell-background" to match the cell background color + + The default value is black text on a soft peach background. + + +**`search-selected-background`** + +**`command`** + +: The command to run, usually a shell. If this is not an absolute path, it'll + be looked up in the `PATH`. If this is not set, a default will be looked up + from your system. The rules for the default lookup are: + + * `SHELL` environment variable + + * `passwd` entry (user information) + + This can contain additional arguments to run the command with. If additional + arguments are provided, the command will be executed using `/bin/sh -c` + to offload shell argument expansion. + + To avoid shell expansion altogether, prefix the command with `direct:`, e.g. + `direct:nvim foo`. This will avoid the roundtrip to `/bin/sh` but will also + not support any shell parsing such as arguments with spaces, filepaths with + `~`, globs, etc. (Available since: 1.2.0) + + You can also explicitly prefix the command with `shell:` to always wrap the + command in a shell. This can be used to ensure our heuristics to choose the + right mode are not used in case they are wrong. (Available since: 1.2.0) + + This command will be used for all new terminal surfaces, i.e. new windows, + tabs, etc. If you want to run a command only for the first terminal surface + created when Ghostty starts, use the `initial-command` configuration. + + Ghostty supports the common `-e` flag for executing a command with + arguments. For example, `ghostty -e fish --with --custom --args`. + This flag sets the `initial-command` configuration, see that for more + information. + + +**`initial-command`** + +: This is the same as "command", but only applies to the first terminal + surface created when Ghostty starts. Subsequent terminal surfaces will use + the `command` configuration. + + After the first terminal surface is created (or closed), there is no + way to run this initial command again automatically. As such, setting + this at runtime works but will only affect the next terminal surface + if it is the first one ever created. + + If you're using the `ghostty` CLI there is also a shortcut to set this + with arguments directly: you can use the `-e` flag. For example: `ghostty -e + fish --with --custom --args`. The `-e` flag automatically forces some + other behaviors as well: + + * Disables shell expansion since the input is expected to already + be shell-expanded by the upstream (e.g. the shell used to type in + the `ghostty -e` command). + + * `gtk-single-instance=false` - This ensures that a new instance is + launched and the CLI args are respected. + + * `quit-after-last-window-closed=true` - This ensures that the Ghostty + process will exit when the command exits. Additionally, the + `quit-after-last-window-closed-delay` is unset. + + * `shell-integration=detect` (if not `none`) - This prevents forcibly + injecting any configured shell integration into the command's + environment. With `-e` its highly unlikely that you're executing a + shell and forced shell integration is likely to cause problems + (e.g. by wrapping your command in a shell, setting env vars, etc.). + This is a safety measure to prevent unexpected behavior. If you want + shell integration with a `-e`-executed command, you must either + name your binary appropriately or source the shell integration script + manually. + + +**`notify-on-command-finish`** + +: Controls when command finished notifications are sent. There are + three options: + + * `never` - Never send notifications (the default). + * `unfocused` - Only send notifications if the surface that the command is + running in is not focused. + * `always` - Always send notifications. + + Command finished notifications requires that either shell integration is + enabled, or that your shell sends OSC 133 escape sequences to mark the start + and end of commands. + + On GTK, there is a context menu item that will enable command finished + notifications for a single command, overriding the `never` and `unfocused` + options. + + Available since 1.3.0. + + +**`notify-on-command-finish-action`** + +: If command finished notifications are enabled, this controls how the user is + notified. + + Available options: + + * `bell` - enabled by default + * `notify` - disabled by default + + Options can be combined by listing them as a comma separated list. Options + can be negated by prefixing them with `no-`. For example `no-bell,notify`. + + Available since 1.3.0. + + +**`notify-on-command-finish-after`** + +: If command finished notifications are enabled, this controls how long a + command must have been running before a notification will be sent. The + default is five seconds. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + Available since 1.3.0 + + +**`env`** + +: Extra environment variables to pass to commands launched in a terminal + surface. The format is `env=KEY=VALUE`. + + `env = foo=bar` + `env = bar=baz` + + Setting `env` to an empty string will reset the entire map to default + (empty). + + `env =` + + Setting a key to an empty string will remove that particular key and + corresponding value from the map. + + `env = foo=bar` + `env = foo=` + + will result in `foo` not being passed to the launched commands. + + Setting a key multiple times will overwrite previous entries. + + `env = foo=bar` + `env = foo=baz` + + will result in `foo=baz` being passed to the launched commands. + + These environment variables will override any existing environment + variables set by Ghostty. For example, if you set `GHOSTTY_RESOURCES_DIR` + then the value you set here will override the value Ghostty typically + automatically injects. + + These environment variables _will not_ be passed to commands run by Ghostty + for other purposes, like `open` or `xdg-open` used to open URLs in your + browser. + + Available since: 1.2.0 + + +**`input`** + +: Data to send as input to the command on startup. + + The configured `command` will be launched using the typical rules, + then the data specified as this input will be written to the pty + before any other input can be provided. + + The bytes are sent as-is with no additional encoding. Therefore, be + cautious about input that can contain control characters, because this + can be used to execute programs in a shell. + + The format of this value is: + + * `raw:` - Send raw text as-is. This uses Zig string literal + syntax so you can specify control characters and other standard + escapes. + + * `path:` - Read a filepath and send the contents. The path + must be to a file with finite length. e.g. don't use a device + such as `/dev/stdin` or `/dev/urandom` as these will block + terminal startup indefinitely. Files are limited to 10MB + in size to prevent excessive memory usage. If you have files + larger than this you should write a script to read the file + and send it to the terminal. + + If no valid prefix is found, it is assumed to be a `raw:` input. + This is an ergonomic choice to allow you to simply write + `input = "Hello, world!"` (a common case) without needing to prefix + every value with `raw:`. + + This can be repeated multiple times to send more data. The data + is concatenated directly with no separator characters in between + (e.g. no newline). + + If any of the input sources do not exist, then none of the input + will be sent. Input sources are not verified until the terminal + is starting, so missing paths will not show up in config validation. + + Changing this configuration at runtime will only affect new + terminals. + + Available since: 1.2.0 + + +**`wait-after-command`** + +: If true, keep the terminal open after the command exits. Normally, the + terminal window closes when the running command (such as a shell) exits. + With this true, the terminal window will stay open until any keypress is + received. + + This is primarily useful for scripts or debugging. + + +**`abnormal-command-exit-runtime`** + +: The number of milliseconds of runtime below which we consider a process exit + to be abnormal. This is used to show an error message when the process exits + too quickly. + + On Linux, this must be paired with a non-zero exit code. On macOS, we allow + any exit code because of the way shell processes are launched via the login + command. + + +**`scrollback-limit`** + +: The size of the scrollback buffer in bytes. This also includes the active + screen. No matter what this is set to, enough memory will always be + allocated for the visible screen and anything leftover is the limit for + the scrollback. + + When this limit is reached, the oldest lines are removed from the + scrollback. + + Scrollback currently exists completely in memory. This means that the + larger this value, the larger potential memory usage. Scrollback is + allocated lazily up to this limit, so if you set this to a very large + value, it will not immediately consume a lot of memory. + + This size is per terminal surface, not for the entire application. + + It is not currently possible to set an unlimited scrollback buffer. + This is a future planned feature. + + This can be changed at runtime but will only affect new terminal surfaces. + + +**`scrollbar`** + +: Control when the scrollbar is shown to scroll the scrollback buffer. + + The default value is `system`. + + Valid values: + + * `system` - Respect the system settings for when to show scrollbars. + For example, on macOS, this will respect the "Scrollbar behavior" + system setting which by default usually only shows scrollbars while + actively scrolling or hovering the gutter. + + * `never` - Never show a scrollbar. You can still scroll using the mouse, + keybind actions, etc. but you will not have a visual UI widget showing + a scrollbar. + + +**`link`** + +: Match a regular expression against the terminal text and associate clicking + it with an action. This can be used to match URLs, file paths, etc. Actions + can be opening using the system opener (e.g. `open` or `xdg-open`) or + executing any arbitrary binding action. + + Links that are configured earlier take precedence over links that are + configured later. + + A default link that matches a URL and opens it in the system opener always + exists. This can be disabled using `link-url`. + + TODO: This can't currently be set! + + +**`link-url`** + +: Enable URL matching. URLs are matched on hover with control (Linux) or + command (macOS) pressed and open using the default system application for + the linked URL. + + The URL matcher is always lowest priority of any configured links (see + `link`). If you want to customize URL matching, use `link` and disable this. + + +**`link-previews`** + +: Show link previews for a matched URL. + + When true, link previews are shown for all matched URLs. When false, link + previews are never shown. When set to "osc8", link previews are only shown + for hyperlinks created with the OSC 8 sequence (in this case, the link text + can differ from the link destination). + + Available since: 1.2.0 + + +**`maximize`** + +: Whether to start the window in a maximized state. This setting applies + to new windows and does not apply to tabs, splits, etc. However, this setting + will apply to all new windows, not just the first one. + + Available since: 1.1.0 + + +**`fullscreen`** + +: Start new windows in fullscreen. This setting applies to new windows and + does not apply to tabs, splits, etc. However, this setting will apply to all + new windows, not just the first one. + + Allowable values are: + + * `false` - Don't start in fullscreen (default) + * `true` - Start in native fullscreen + * `non-native` - (macOS only) Start in non-native fullscreen, hiding the + menu bar. This is faster than native fullscreen since it doesn't use + animations. On non-macOS platforms, this behaves the same as `true`. + * `non-native-visible-menu` - (macOS only) Start in non-native fullscreen, + keeping the menu bar visible. On non-macOS platforms, behaves like `true`. + * `non-native-padded-notch` - (macOS only) Start in non-native fullscreen, + hiding the menu bar but padding for the notch on applicable devices. + On non-macOS platforms, behaves like `true`. + + Important: tabs DO NOT WORK with non-native fullscreen modes. Non-native + fullscreen removes the titlebar and macOS native tabs require the titlebar. + If you use tabs, use `true` (native) instead. + + On macOS, `true` (native fullscreen) does not work if `window-decoration` + is set to `false`, because native fullscreen on macOS requires window + decorations. + + +**`title`** + +: The title Ghostty will use for the window. This will force the title of the + window to be this title at all times and Ghostty will ignore any set title + escape sequences programs (such as Neovim) may send. + + If you want a blank title, set this to one or more spaces by quoting + the value. For example, `title = " "`. This effectively hides the title. + This is necessary because setting a blank value resets the title to the + default value of the running program. + + This configuration can be reloaded at runtime. If it is set, the title + will update for all windows. If it is unset, the next title change escape + sequence will be honored but previous changes will not retroactively + be set. This latter case may require you to restart programs such as Neovim + to get the new title. + + +**`class`** + +: The setting that will change the application class value. + + This controls the class field of the `WM_CLASS` X11 property (when running + under X11), the Wayland application ID (when running under Wayland), and the + bus name that Ghostty uses to connect to DBus. + + Note that changing this value between invocations will create new, separate + instances, of Ghostty when running with `gtk-single-instance=true`. See that + option for more details. + + Changing this value may break launching Ghostty from `.desktop` files, via + DBus activation, or systemd user services as the system is expecting Ghostty + to connect to DBus using the default `class` when it is launched. + + The class name must follow the requirements defined [in the GTK + documentation](https://docs.gtk.org/gio/type_func.Application.id_is_valid.html). + + The default is `com.mitchellh.ghostty`. + + This only affects GTK builds. + + +**`x11-instance-name`** + +: This controls the instance name field of the `WM_CLASS` X11 property when + running under X11. It has no effect otherwise. + + The default is `ghostty`. + + This only affects GTK builds. + + +**`working-directory`** + +: The directory to change to after starting the command. + + This setting is secondary to the `window-inherit-working-directory` + setting. If a previous Ghostty terminal exists in the same process, + `window-inherit-working-directory` will take precedence. Otherwise, this + setting will be used. Typically, this setting is used only for the first + window. + + The default is `inherit` except in special scenarios listed next. On macOS, + if Ghostty can detect it is launched from launchd (double-clicked) or + `open`, then it defaults to `home`. On Linux with GTK, if Ghostty can detect + it was launched from a desktop launcher, then it defaults to `home`. + + The value of this must be an absolute path, a path prefixed with `~/` + (the tilde will be expanded to the user's home directory), or + one of the special values below: + + * `home` - The home directory of the executing user. + + * `inherit` - The working directory of the launching process. + + +**`keybind`** + +: Key bindings. The format is `trigger=action`. Duplicate triggers will + overwrite previously set values. The list of actions is available in + the documentation or using the `ghostty +list-actions` command. + + Trigger: `+`-separated list of keys and modifiers. Example: `ctrl+a`, + `ctrl+shift+b`, `up`. + + If the key is a single Unicode codepoint, the trigger will match + any presses that produce that codepoint. These are impacted by + keyboard layouts. For example, `a` will match the `a` key on a + QWERTY keyboard, but will match the `q` key on a AZERTY keyboard + (assuming US physical layout). + + For Unicode codepoints, matching is done by comparing the set of + modifiers with the unmodified codepoint. The unmodified codepoint is + sometimes called an "unshifted character" in other software, but all + modifiers are considered, not only shift. For example, `ctrl+a` will match + `a` but not `ctrl+shift+a` (which is `A` on a US keyboard). + + Further, codepoint matching is case-insensitive and the unmodified + codepoint is always case folded for comparison. As a result, + `ctrl+A` configured will match when `ctrl+a` is pressed. Note that + this means some key combinations are impossible depending on keyboard + layout. For example, `ctrl+_` is impossible on a US keyboard because + `_` is `shift+-` and `ctrl+shift+-` is not equal to `ctrl+_` (because + the modifiers don't match!). More details on impossible key combinations + can be found at this excellent source written by Qt developers: + https://doc.qt.io/qt-6/qkeysequence.html#keyboard-layout-issues + + Physical key codes can be specified by using any of the key codes + as specified by the [W3C specification](https://www.w3.org/TR/uievents-code/). + For example, `KeyA` will match the physical `a` key on a US standard + keyboard regardless of the keyboard layout. These are case-sensitive. + + For aesthetic reasons, the w3c codes also support snake case. For + example, `key_a` is equivalent to `KeyA`. The only exceptions are + function keys, e.g. `F1` is `f1` (no underscore). This is a consequence + of our internal code using snake case but is purposely supported + and tested so it is safe to use. It allows an all-lowercase binding + which I find more aesthetically pleasing. + + Function keys such as `insert`, `up`, `f5`, etc. are also specified + using the keys as specified by the previously linked W3C specification. + + Physical keys always match with a higher priority than Unicode codepoints, + so if you specify both `a` and `KeyA`, the physical key will always be used + regardless of what order they are configured. + + The special key `catch_all` can be used to match any key that is not + otherwise bound. This can be combined with modifiers, for example + `ctrl+catch_all` will match any key pressed with `ctrl` that is not + otherwise bound. When looking up a binding, Ghostty first tries to match + `catch_all` with modifiers. If no match is found and the event has + modifiers, it falls back to `catch_all` without modifiers. + + Valid modifiers are `shift`, `ctrl` (alias: `control`), `alt` (alias: `opt`, + `option`), and `super` (alias: `cmd`, `command`). You may use the modifier + or the alias. When debugging keybinds, the non-aliased modifier will always + be used in output. + + Note: The fn or "globe" key on keyboards are not supported as a + modifier. This is a limitation of the operating systems and GUI toolkits + that Ghostty uses. + + Some additional notes for triggers: + + * modifiers cannot repeat, `ctrl+ctrl+a` is invalid. + + * modifiers and keys can be in any order, `shift+a+ctrl` is *weird*, + but valid. + + * only a single key input is allowed, `ctrl+a+b` is invalid. + + You may also specify multiple triggers separated by `>` to require a + sequence of triggers to activate the action. For example, + `ctrl+a>n=new_window` will only trigger the `new_window` action if the + user presses `ctrl+a` followed separately by `n`. In other software, this + is sometimes called a leader key, a key chord, a key table, etc. There + is no hardcoded limit on the number of parts in a sequence. + + Warning: If you define a sequence as a CLI argument to `ghostty`, + you probably have to quote the keybind since `>` is a special character + in most shells. Example: ghostty --keybind='ctrl+a>n=new_window' + + A trigger sequence has some special handling: + + * Ghostty will wait an indefinite amount of time for the next key in + the sequence. There is no way to specify a timeout. The only way to + force the output of a prefix key is to assign another keybind to + specifically output that key (e.g. `ctrl+a>ctrl+a=text:foo`) or + press an unbound key which will send both keys to the program. + + * If an unbound key is pressed during a sequence and a `catch_all` + binding exists that would `ignore` the input, the entire sequence + is dropped and nothing happens. Otherwise, the entire sequence is + encoded and sent to the running program as if no keybind existed. + + * If a prefix in a sequence is previously bound, the sequence will + override the previous binding. For example, if `ctrl+a` is bound to + `new_window` and `ctrl+a>n` is bound to `new_tab`, pressing `ctrl+a` + will do nothing. + + * Adding to the above, if a previously bound sequence prefix is + used in a new, non-sequence binding, the entire previously bound + sequence will be unbound. For example, if you bind `ctrl+a>n` and + `ctrl+a>t`, and then bind `ctrl+a` directly, both `ctrl+a>n` and + `ctrl+a>t` will become unbound. + + * Trigger sequences are not allowed for `global:` or `all:`-prefixed + triggers. This is a limitation we could remove in the future. + + Action is the action to take when the trigger is satisfied. It takes the + format `action` or `action:param`. The latter form is only valid if the + action requires a parameter. + + * `ignore` - Do nothing, ignore the key input. This can be used to + black hole certain inputs to have no effect. + + * `unbind` - Remove the binding. This makes it so the previous action + is removed, and the key will be sent through to the child command + if it is printable. Unbind will remove any matching trigger, + including `physical:`-prefixed triggers without specifying the + prefix. + + * `csi:text` - Send a CSI sequence. e.g. `csi:A` sends "cursor up". + + * `esc:text` - Send an escape sequence. e.g. `esc:d` deletes to the + end of the word to the right. + + * `text:text` - Send a string. Uses Zig string literal syntax. + e.g. `text:\x15` sends Ctrl-U. + + * All other actions can be found in the documentation or by using the + `ghostty +list-actions` command. + + Some notes for the action: + + * The parameter is taken as-is after the `:`. Double quotes or + other mechanisms are included and NOT parsed. If you want to + send a string value that includes spaces, wrap the entire + trigger/action in double quotes. Example: `--keybind="up=csi:A B"` + + There are some additional special values that can be specified for + keybind: + + * `keybind=clear` will clear all set keybindings. Warning: this + removes ALL keybindings up to this point, including the default + keybindings. + + The keybind trigger can be prefixed with some special values to change + the behavior of the keybind. These are: + + * `all:` + + Make the keybind apply to all terminal surfaces. By default, + keybinds only apply to the focused terminal surface. If this is true, + then the keybind will be sent to all terminal surfaces. This only + applies to actions that are surface-specific. For actions that + are already global (e.g. `quit`), this prefix has no effect. + + Available since: 1.0.0 + + * `global:` + + Make the keybind global. By default, keybinds only work within Ghostty + and under the right conditions (application focused, sometimes terminal + focused, etc.). If you want a keybind to work globally across your system + (e.g. even when Ghostty is not focused), specify this prefix. + This prefix implies `all:`. + + Note: this does not work in all environments; see the additional notes + below for more information. + + Available since: 1.0.0 on macOS, 1.2.0 on GTK + + * `unconsumed:` + + Do not consume the input. By default, a keybind will consume the input, + meaning that the associated encoding (if any) will not be sent to the + running program in the terminal. If you wish to send the encoded value + to the program, specify the `unconsumed:` prefix before the entire + keybind. For example: `unconsumed:ctrl+a=reload_config`. `global:` and + `all:`-prefixed keybinds will always consume the input regardless of + this setting. Since they are not associated with a specific terminal + surface, they're never encoded. + + Available since: 1.0.0 + + * `performable:` + + Only consume the input if the action is able to be performed. + For example, the `copy_to_clipboard` action will only consume the input + if there is a selection to copy. If there is no selection, Ghostty + behaves as if the keybind was not set. This has no effect with `global:` + or `all:`-prefixed keybinds. For key sequences, this will reset the + sequence if the action is not performable (acting identically to not + having a keybind set at all). + + Performable keybinds will not appear as menu shortcuts in the + application menu. This is because the menu shortcuts force the + action to be performed regardless of the state of the terminal. + Performable keybinds will still work, they just won't appear as + a shortcut label in the menu. + + Available since: 1.1.0 + + Keybind triggers are not unique per prefix combination. For example, + `ctrl+a` and `global:ctrl+a` are not two separate keybinds. The keybind + set later will overwrite the keybind set earlier. In this case, the + `global:` keybind will be used. + + Multiple prefixes can be specified. For example, + `global:unconsumed:ctrl+a=reload_config` will make the keybind global + and not consume the input to reload the config. + + Note: `global:` is only supported on macOS and certain Linux platforms. + + On macOS, this feature requires accessibility permissions to be granted + to Ghostty. When a `global:` keybind is specified and Ghostty is launched + or reloaded, Ghostty will attempt to request these permissions. + If the permissions are not granted, the keybind will not work. On macOS, + you can find these permissions in System Preferences -> Privacy & Security + -> Accessibility. + + On Linux, you need a desktop environment that implements the + [Global Shortcuts](https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html) + protocol as a part of its XDG desktop protocol implementation. + Desktop environments that are known to support (or not support) + global shortcuts include: + + - Users using KDE Plasma (since [5.27](https://kde.org/announcements/plasma/5/5.27.0/#wayland)) + and GNOME (since [48](https://release.gnome.org/48/#and-thats-not-all)) should be able + to use global shortcuts with little to no configuration. + + - Some manual configuration is required on Hyprland. Consult the steps + outlined on the [Hyprland Wiki](https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts) + to set up global shortcuts correctly. + (Important: [`xdg-desktop-portal-hyprland`](https://wiki.hyprland.org/Hypr-Ecosystem/xdg-desktop-portal-hyprland/) + must also be installed!) + + - Notably, global shortcuts have not been implemented on wlroots-based + compositors like Sway (see [upstream issue](https://github.com/emersion/xdg-desktop-portal-wlr/issues/240)). + + ## Chained Actions + + A keybind can have multiple actions by using the `chain` keyword for + subsequent actions. When a keybind is activated, all chained actions are + executed in order. The syntax is: + + ```ini + keybind = ctrl+a=new_window + keybind = chain=goto_split:left + ``` + + This binds `ctrl+a` to first open a new window, then move focus to the + left split. Each `chain` entry appends an action to the most recently + defined keybind. You can chain as many actions as you want: + + ```ini + keybind = ctrl+a=new_window + keybind = chain=goto_split:left + keybind = chain=toggle_fullscreen + ``` + + Chained actions cannot have prefixes like `global:` or `unconsumed:`. + The flags from the original keybind apply to the entire chain. + + Chained actions work with key sequences as well. For example: + + ```ini + keybind = ctrl+a>n=new_window + keybind = chain=goto_split:left + ```` + + Chains with key sequences apply to the most recent binding in the + sequence. + + Chained keybinds are available since Ghostty 1.3.0. + + ## Key Tables + + You may also create a named set of keybindings known as a "key table." + A key table must be explicitly activated for the bindings to become + available. This can be used to implement features such as a + "copy mode", "vim mode", etc. Generically, this can implement modal + keyboard input. + + Key tables are defined using the syntax `
/`. The + `` value is everything documented above for keybinds. The + `
` value is the name of the key table. Table names can contain + anything except `/`, `=`, `+`, and `>`. The characters `+` and `>` are + reserved for keybind syntax (modifier combinations and key sequences). + For example `foo/ctrl+a=new_window` defines a binding within a table + named `foo`. + + Tables are activated and deactivated using the binding actions + `activate_key_table:` and `deactivate_key_table`. Other table + related binding actions also exist; see the documentation for a full list. + These are the primary way to interact with key tables. + + Binding lookup proceeds from the innermost table outward, so keybinds in + the default table remain available unless explicitly unbound in an inner + table. + + A key table has some special syntax and handling: + + * `/` (with no binding) defines and clears a table, resetting all + of its keybinds and settings. + + * You cannot activate a table that is already the innermost table; such + attempts are ignored. However, the same table can appear multiple times + in the stack as long as it is not innermost (e.g., `A -> B -> A -> B` + is valid, but `A -> B -> B` is not). + + * A table can be activated in one-shot mode using + `activate_key_table_once:`. A one-shot table is automatically + deactivated when any non-catch-all binding is invoked. + + * Key sequences work within tables: `foo/ctrl+a>ctrl+b=new_window`. + If an invalid key is pressed, the sequence ends but the table remains + active. + + * Chain actions work within tables, the `chain` keyword applies to + the most recently defined binding in the table. e.g. if you set + `table/ctrl+a=new_window` you can chain by using `chain=text:hello`. + Important: chain itself doesn't get prefixed with the table name, + since it applies to the most recent binding in any table. + + * Prefixes like `global:` work within tables: + `foo/global:ctrl+a=new_window`. + + Key tables are available since Ghostty 1.3.0. + + +**`key-remap`** + +: Remap modifier keys within Ghostty. This allows you to swap or reassign + modifier keys at the application level without affecting system-wide + settings. + + The format is `from=to` where both `from` and `to` are modifier key names. + You can use generic names like `ctrl`, `alt`, `shift`, `super` (macOS: + `cmd`/`command`) or sided names like `left_ctrl`, `right_alt`, etc. + + This will NOT change keyboard layout or key encodings outside of Ghostty. + For example, on macOS, `option+a` may still produce `å` even if `option` is + remapped to `ctrl`. Desktop environments usually handle key layout long + before Ghostty receives the key events. + + Example: + + key-remap = ctrl=super + key-remap = left_control=right_alt + + Important notes: + + * This is a one-way remap. If you remap `ctrl=super`, then the physical + Ctrl key acts as Super, but the Super key remains Super. + + * Remaps are not transitive. If you remap `ctrl=super` and `alt=ctrl`, + pressing Alt will produce Ctrl, NOT Super. + + * This affects both keybind matching and terminal input encoding. + This does NOT impact keyboard layout or how keys are interpreted + prior to Ghostty receiving them. For example, `option+a` on macOS + may still produce `å` even if `option` is remapped to `ctrl`. + + * Generic modifiers (e.g. `ctrl`) match both left and right physical keys. + Use sided names (e.g. `left_ctrl`) to remap only one side. + + There are other edge case scenarios that may not behave as expected + but are working as intended the way this feature is designed: + + * On macOS, bindings in the main menu will trigger before any remapping + is done. This is because macOS itself handles menu activation and + this happens before Ghostty receives the key event. To workaround + this, you should unbind the menu items and rebind them using your + desired modifier. + + This configuration can be repeated to specify multiple remaps. + + +**`window-padding-x`** + +: Horizontal window padding. This applies padding between the terminal cells + and the left and right window borders. The value is in points, meaning that + it will be scaled appropriately for screen DPI. + + If this value is set too large, the screen will render nothing, because the + grid will be completely squished by the padding. It is up to you as the user + to pick a reasonable value. If you pick an unreasonable value, a warning + will appear in the logs. + + Changing this configuration at runtime will only affect new terminals, i.e. + new windows, tabs, etc. + + To set a different left and right padding, specify two numerical values + separated by a comma. For example, `window-padding-x = 2,4` will set the + left padding to 2 and the right padding to 4. If you want to set both + paddings to the same value, you can use a single value. For example, + `window-padding-x = 2` will set both paddings to 2. + + +**`window-padding-y`** + +: Vertical window padding. This applies padding between the terminal cells and + the top and bottom window borders. The value is in points, meaning that it + will be scaled appropriately for screen DPI. + + If this value is set too large, the screen will render nothing, because the + grid will be completely squished by the padding. It is up to you as the user + to pick a reasonable value. If you pick an unreasonable value, a warning + will appear in the logs. + + Changing this configuration at runtime will only affect new terminals, + i.e. new windows, tabs, etc. + + To set a different top and bottom padding, specify two numerical values + separated by a comma. For example, `window-padding-y = 2,4` will set the + top padding to 2 and the bottom padding to 4. If you want to set both + paddings to the same value, you can use a single value. For example, + `window-padding-y = 2` will set both paddings to 2. + + +**`window-padding-balance`** + +: The viewport dimensions are usually not perfectly divisible by the cell + size. In this case, some extra padding on the end of a column and the bottom + of the final row may exist. If this is `true`, then this extra padding + is automatically balanced between all four edges to minimize imbalance on + one side. If this is `false`, the top left grid cell will always hug the + edge with zero padding other than what may be specified with the other + `window-padding` options. + + If other `window-padding` fields are set and this is `true`, this will still + apply. The other padding is applied first and may affect how many grid cells + actually exist, and this is applied last in order to balance the padding + given a certain viewport size and grid cell size. + + +**`window-padding-color`** + +: The color of the padding area of the window. Valid values are: + + * `background` - The background color specified in `background`. + * `extend` - Extend the background color of the nearest grid cell. + * `extend-always` - Same as "extend" but always extends without applying + any of the heuristics that disable extending noted below. + + The "extend" value will be disabled in certain scenarios. On primary + screen applications (e.g. not something like Neovim), the color will not + be extended vertically if any of the following are true: + + * The nearest row has any cells that have the default background color. + The thinking is that in this case, the default background color looks + fine as a padding color. + * The nearest row is a prompt row (requires shell integration). The + thinking here is that prompts often contain powerline glyphs that + do not look good extended. + * The nearest row contains a perfect fit powerline character. These + don't look good extended. + + +**`window-vsync`** + +: Synchronize rendering with the screen refresh rate. If true, this will + minimize tearing and align redraws with the screen but may cause input + latency. If false, this will maximize redraw frequency but may cause tearing, + and under heavy load may use more CPU and power. + + This defaults to true because out-of-sync rendering on macOS can + cause kernel panics (macOS 14.4+) and performance issues for external + displays over some hardware such as DisplayLink. If you want to minimize + input latency, set this to false with the known aforementioned risks. + + Changing this value at runtime will only affect new terminals. + + This setting is only supported currently on macOS. + + +**`window-inherit-working-directory`** + +: If true, new windows will inherit the working directory of the + previously focused window. If no window was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`tab-inherit-working-directory`** + +: If true, new tabs will inherit the working directory of the + previously focused tab. If no tab was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`split-inherit-working-directory`** + +: If true, new split panes will inherit the working directory of the + previously focused split. If no split was previously focused, the default + working directory will be used (the `working-directory` option). + + +**`window-inherit-font-size`** + +: If true, new windows and tabs will inherit the font size of the previously + focused window. If no window was previously focused, the default font size + will be used. If this is false, the default font size specified in the + configuration `font-size` will be used. + + +**`window-decoration`** + +: Configure a preference for window decorations. This setting specifies + a _preference_; the actual OS, desktop environment, window manager, etc. + may override this preference. Ghostty will do its best to respect this + preference but it may not always be possible. + + Valid values: + + * `none` + + All window decorations will be disabled. Titlebar, borders, etc. will + not be shown. On macOS, this will also disable tabs (enforced by the + system). + + * `auto` + + Automatically decide to use either client-side or server-side + decorations based on the detected preferences of the current OS and + desktop environment. This option usually makes Ghostty look the most + "native" for your desktop. + + * `client` + + Prefer client-side decorations. + + Available since: 1.1.0 + + * `server` + + Prefer server-side decorations. This is only relevant on Linux with GTK, + either on X11, or Wayland on a compositor that supports the + `org_kde_kwin_server_decoration` protocol (e.g. KDE Plasma, but almost + any non-GNOME desktop supports this protocol). + + If `server` is set but the environment doesn't support server-side + decorations, client-side decorations will be used instead. + + Available since: 1.1.0 + + The default value is `auto`. + + For the sake of backwards compatibility and convenience, this setting also + accepts boolean true and false values. If set to `true`, this is equivalent + to `auto`. If set to `false`, this is equivalent to `none`. + This is convenient for users who live primarily on systems that don't + differentiate between client and server-side decorations (e.g. macOS and + Windows). + + The "toggle_window_decorations" keybind action can be used to create + a keybinding to toggle this setting at runtime. + + macOS: To hide the titlebar without removing the native window borders + or rounded corners, use `macos-titlebar-style = hidden` instead. + + +**`window-title-font-family`** + +: The font that will be used for the application's window and tab titles. + + If this setting is left unset, the system default font will be used. + + Note: any font available on the system may be used, this font is not + required to be a fixed-width font. + + Available since: 1.0.0 on macOS, 1.1.0 on GTK + + +**`window-subtitle`** + +: The text that will be displayed in the subtitle of the window. Valid values: + + * `false` - Disable the subtitle. + * `working-directory` - Set the subtitle to the working directory of the + surface. + + This feature is only supported on GTK. + + Available since: 1.1.0 + + +**`window-theme`** + +: The theme to use for the windows. Valid values: + + * `auto` - Determine the theme based on the configured terminal + background color. This has no effect if the "theme" configuration + has separate light and dark themes. In that case, the behavior + of "auto" is equivalent to "system". + * `system` - Use the system theme. + * `light` - Use the light theme regardless of system theme. + * `dark` - Use the dark theme regardless of system theme. + * `ghostty` - Use the background and foreground colors specified in the + Ghostty configuration. This is only supported on Linux builds. + + On macOS, if `macos-titlebar-style` is `tabs` or `transparent`, the window theme will be + automatically set based on the luminosity of the terminal background color. + This only applies to terminal windows. This setting will still apply to + non-terminal windows within Ghostty. + + This is currently only supported on macOS and Linux. + + +**`window-colorspace`** + +: The color space to use when interpreting terminal colors. "Terminal colors" + refers to colors specified in your configuration and colors produced by + direct-color SGR sequences. + + Valid values: + + * `srgb` - Interpret colors in the sRGB color space. This is the default. + * `display-p3` - Interpret colors in the Display P3 color space. + + This setting is currently only supported on macOS. + + +**`window-height`** + +: The initial window size. This size is in terminal grid cells by default. + Both values must be set to take effect. If only one value is set, it is + ignored. + + We don't currently support specifying a size in pixels but a future change + can enable that. If this isn't specified, the app runtime will determine + some default size. + + Note that the window manager may put limits on the size or override the + size. For example, a tiling window manager may force the window to be a + certain size to fit within the grid. There is nothing Ghostty will do about + this, but it will make an effort. + + Sizes larger than the screen size will be clamped to the screen size. + This can be used to create a maximized-by-default window size. + + This will not affect new tabs, splits, or other nested terminal elements. + This only affects the initial window size of any new window. Changing this + value will not affect the size of the window after it has been created. This + is only used for the initial size. + + BUG: On Linux with GTK, the calculated window size will not properly take + into account window decorations. As a result, the grid dimensions will not + exactly match this configuration. If window decorations are disabled (see + `window-decoration`), then this will work as expected. + + Windows smaller than 10 wide by 4 high are not allowed. + + +**`window-width`** + +**`window-position-x`** + +: The starting window position. This position is in pixels and is relative + to the top-left corner of the primary monitor. Both values must be set to take + effect. If only one value is set, it is ignored. + + Note that the window manager may put limits on the position or override + the position. For example, a tiling window manager may force the window + to be a certain position to fit within the grid. There is nothing Ghostty + will do about this, but it will make an effort. + + Also note that negative values are also up to the operating system and + window manager. Some window managers may not allow windows to be placed + off-screen. + + Invalid positions are runtime-specific, but generally the positions are + clamped to the nearest valid position. + + On macOS, the window position is relative to the top-left corner of + the visible screen area. This means that if the menu bar is visible, the + window will be placed below the menu bar. + + Note: this is only supported on macOS. The GTK runtime does not support + setting the window position, as windows are only allowed position + themselves in X11 and not Wayland. + + +**`window-position-y`** + +**`window-save-state`** + +: Whether to enable saving and restoring window state. Window state includes + their position, size, tabs, splits, etc. Some window state requires shell + integration, such as preserving working directories. See `shell-integration` + for more information. + + There are three valid values for this configuration: + + * `default` will use the default system behavior. On macOS, this + will only save state if the application is forcibly terminated + or if it is configured systemwide via Settings.app. + + * `never` will never save window state. + + * `always` will always save window state whenever Ghostty is exited. + + If you change this value to `never` while Ghostty is not running, the next + Ghostty launch will NOT restore the window state. + + If you change this value to `default` while Ghostty is not running and the + previous exit saved state, the next Ghostty launch will still restore the + window state. This is because Ghostty cannot know if the previous exit was + due to a forced save or not (macOS doesn't provide this information). + + If you change this value so that window state is saved while Ghostty is not + running, the previous window state will not be restored because Ghostty only + saves state on exit if this is enabled. + + The default value is `default`. + + This is currently only supported on macOS. This has no effect on Linux. + + +**`window-step-resize`** + +: Resize the window in discrete increments of the focused surface's cell size. + If this is disabled, surfaces are resized in pixel increments. Currently + only supported on macOS. + + +**`window-new-tab-position`** + +: The position where new tabs are created. Valid values: + + * `current` - Insert the new tab after the currently focused tab, + or at the end if there are no focused tabs. + + * `end` - Insert the new tab at the end of the tab list. + + +**`window-show-tab-bar`** + +: Whether to show the tab bar. + + Valid values: + + - `always` + + Always display the tab bar, even when there's only one tab. + + Available since: 1.2.0 + + - `auto` *(default)* + + Automatically show and hide the tab bar. The tab bar is only + shown when there are two or more tabs present. + + - `never` + + Never show the tab bar. Tabs are only accessible via the tab + overview or by keybind actions. + + Currently only supported on Linux (GTK). + + +**`window-titlebar-background`** + +: Background color for the window titlebar. This only takes effect if + window-theme is set to ghostty. Currently only supported in the GTK app + runtime. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`window-titlebar-foreground`** + +: Foreground color for the window titlebar. This only takes effect if + window-theme is set to ghostty. Currently only supported in the GTK app + runtime. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`resize-overlay`** + +: This controls when resize overlays are shown. Resize overlays are a + transient popup that shows the size of the terminal while the surfaces are + being resized. The possible options are: + + * `always` - Always show resize overlays. + * `never` - Never show resize overlays. + * `after-first` - The resize overlay will not appear when the surface + is first created, but will show up if the surface is + subsequently resized. + + The default is `after-first`. + + +**`resize-overlay-position`** + +: If resize overlays are enabled, this controls the position of the overlay. + The possible options are: + + * `center` + * `top-left` + * `top-center` + * `top-right` + * `bottom-left` + * `bottom-center` + * `bottom-right` + + The default is `center`. + + +**`resize-overlay-duration`** + +: If resize overlays are enabled, this controls how long the overlay is + visible on the screen before it is hidden. The default is ¾ of a second or + 750 ms. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + Available since 1.0.0 + + +**`focus-follows-mouse`** + +: If true, when there are multiple split panes, the mouse selects the pane + that is focused. This only applies to the currently focused window; e.g. + mousing over a split in an unfocused window will not focus that split + and bring the window to front. + + Default is false. + + +**`clipboard-read`** + +: Whether to allow programs running in the terminal to read/write to the + system clipboard (OSC 52, for googling). The default is to allow clipboard + reading after prompting the user and allow writing unconditionally. + + Valid values are: + + * `ask` + * `allow` + * `deny` + + + +**`clipboard-write`** + +**`clipboard-trim-trailing-spaces`** + +: Trims trailing whitespace on data that is copied to the clipboard. This does + not affect data sent to the clipboard via `clipboard-write`. This only + applies to trailing whitespace on lines that have other characters. + Completely blank lines always have their whitespace trimmed. + + +**`clipboard-paste-protection`** + +: Require confirmation before pasting text that appears unsafe. This helps + prevent a "copy/paste attack" where a user may accidentally execute unsafe + commands by pasting text with newlines. + + +**`clipboard-paste-bracketed-safe`** + +: If true, bracketed pastes will be considered safe. By default, bracketed + pastes are considered safe. "Bracketed" pastes are pastes while the running + program has bracketed paste mode enabled (a setting set by the running + program, not the terminal emulator). + + +**`title-report`** + +: Enables or disabled title reporting (CSI 21 t). This escape sequence + allows the running program to query the terminal title. This is a common + security issue and is disabled by default. + + Warning: This can expose sensitive information at best and enable + arbitrary code execution at worst (with a maliciously crafted title + and a minor amount of user interaction). + + Available since: 1.0.1 + + +**`image-storage-limit`** + +: The total amount of bytes that can be used for image data (e.g. the Kitty + image protocol) per terminal screen. The maximum value is 4,294,967,295 + (4GiB). The default is 320MB. If this is set to zero, then all image + protocols will be disabled. + + This value is separate for primary and alternate screens so the effective + limit per surface is double. + + +**`copy-on-select`** + +: Whether to automatically copy selected text to the clipboard. `true` + will prefer to copy to the selection clipboard, otherwise it will copy to + the system clipboard. + + The value `clipboard` will always copy text to the selection clipboard + as well as the system clipboard. + + Middle-click paste will always use the selection clipboard. Middle-click + paste is always enabled even if this is `false`. + + The default value is true on Linux and macOS. + + +**`right-click-action`** + +: The action to take when the user right-clicks on the terminal surface. + + Valid values: + * `context-menu` - Show the context menu. + * `paste` - Paste the contents of the clipboard. + * `copy` - Copy the selected text to the clipboard. + * `copy-or-paste` - If there is a selection, copy the selected text to + the clipboard; otherwise, paste the contents of the clipboard. + * `ignore` - Do nothing, ignore the right-click. + + The default value is `context-menu`. + + +**`click-repeat-interval`** + +: The time in milliseconds between clicks to consider a click a repeat + (double, triple, etc.) or an entirely new single click. A value of zero will + use a platform-specific default. The default on macOS is determined by the + OS settings. On every other platform it is 500ms. + + +**`config-file`** + +: Additional configuration files to read. This configuration can be repeated + to read multiple configuration files. Configuration files themselves can + load more configuration files. Paths are relative to the file containing the + `config-file` directive. For command-line arguments, paths are relative to + the current working directory. + + Prepend a ? character to the file path to suppress errors if the file does + not exist. If you want to include a file that begins with a literal ? + character, surround the file path in double quotes ("). + + Cycles are not allowed. If a cycle is detected, an error will be logged and + the configuration file will be ignored. + + Configuration files are loaded after the configuration they're defined + within in the order they're defined. **THIS IS A VERY SUBTLE BUT IMPORTANT + POINT.** To put it another way: configuration files do not take effect + until after the entire configuration is loaded. For example, in the + configuration below: + + ``` + config-file = "foo" + a = 1 + ``` + + If "foo" contains `a = 2`, the final value of `a` will be 2, because + `foo` is loaded after the configuration file that configures the + nested `config-file` value. + + +**`config-default-files`** + +: When this is true, the default configuration file paths will be loaded. + The default configuration file paths are currently only the XDG + config path ($XDG_CONFIG_HOME/ghostty/config.ghostty). + + If this is false, the default configuration paths will not be loaded. + This is targeted directly at using Ghostty from the CLI in a way + that minimizes external effects. + + This is a CLI-only configuration. Setting this in a configuration file + will have no effect. It is not an error, but it will not do anything. + This configuration can only be set via CLI arguments. + + +**`confirm-close-surface`** + +: Confirms that a surface should be closed before closing it. + + This defaults to `true`. If set to `false`, surfaces will close without + any confirmation. This can also be set to `always`, which will always + confirm closing a surface, even if shell integration says a process isn't + running. + + +**`quit-after-last-window-closed`** + +: Whether or not to quit after the last surface is closed. + + This defaults to `false` on macOS since that is standard behavior for + a macOS application. On Linux, this defaults to `true` since that is + generally expected behavior. + + On Linux, if this is `true`, Ghostty can delay quitting fully until a + configurable amount of time has passed after the last window is closed. + See the documentation of `quit-after-last-window-closed-delay`. + + +**`quit-after-last-window-closed-delay`** + +: Controls how long Ghostty will stay running after the last open surface has + been closed. This only has an effect if `quit-after-last-window-closed` is + also set to `true`. + + The minimum value for this configuration is `1s`. Any values lower than + this will be clamped to `1s`. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any + value larger than this will be clamped to the maximum value. + + By default `quit-after-last-window-closed-delay` is unset and + Ghostty will quit immediately after the last window is closed if + `quit-after-last-window-closed` is `true`. + + Only implemented on Linux. + + +**`initial-window`** + +: This controls whether an initial window is created when Ghostty + is run. Note that if `quit-after-last-window-closed` is `true` and + `quit-after-last-window-closed-delay` is set, setting `initial-window` to + `false` will mean that Ghostty will quit after the configured delay if no + window is ever created. Only implemented on Linux and macOS. + + +**`undo-timeout`** + +: The duration that undo operations remain available. After this + time, the operation will be removed from the undo stack and + cannot be undone. + + The default value is 5 seconds. + + This timeout applies per operation, meaning that if you perform + multiple operations, each operation will have its own timeout. + New operations do not reset the timeout of previous operations. + + A timeout of zero will effectively disable undo operations. It is + not possible to set an infinite timeout, but you can set a very + large timeout to effectively disable the timeout (on the order of years). + This is highly discouraged, as it will cause the undo stack to grow + indefinitely, memory usage to grow unbounded, and terminal sessions + to never actually quit. + + The duration is specified as a series of numbers followed by time units. + Whitespace is allowed between numbers and units. Each number and unit will + be added together to form the total duration. + + The allowed time units are as follows: + + * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments + are made for leap years or leap seconds. + * `d` - one SI day, or 86400 seconds. + * `h` - one hour, or 3600 seconds. + * `m` - one minute, or 60 seconds. + * `s` - one second. + * `ms` - one millisecond, or 0.001 second. + * `us` or `µs` - one microsecond, or 0.000001 second. + * `ns` - one nanosecond, or 0.000000001 second. + + Examples: + * `1h30m` + * `45s` + + Units can be repeated and will be added together. This means that + `1h1h` is equivalent to `2h`. This is confusing and should be avoided. + A future update may disallow this. + + This configuration is only supported on macOS. Linux doesn't + support undo operations at all so this configuration has no + effect. + + Available since: 1.2.0 + + +**`quick-terminal-position`** + +: The position of the "quick" terminal window. To learn more about the + quick terminal, see the documentation for the `toggle_quick_terminal` + binding action. + + Valid values are: + + * `top` - Terminal appears at the top of the screen. + * `bottom` - Terminal appears at the bottom of the screen. + * `left` - Terminal appears at the left of the screen. + * `right` - Terminal appears at the right of the screen. + * `center` - Terminal appears at the center of the screen. + + On macOS, changing this configuration requires restarting Ghostty + completely. + + Note: There is no default keybind for toggling the quick terminal. + To enable this feature, bind the `toggle_quick_terminal` action to a key. + + +**`quick-terminal-size`** + +: The size of the quick terminal. + + The size can be specified either as a percentage of the screen dimensions + (height/width), or as an absolute size in pixels. Percentage values are + suffixed with `%` (e.g. `20%`) while pixel values are suffixed with `px` + (e.g. `300px`). A bare value without a suffix is a config error. + + When only one size is specified, the size parameter affects the size of + the quick terminal on its *primary axis*, which depends on its position: + height for quick terminals placed on the top or bottom, and width for left + or right. The primary axis of a centered quick terminal depends on the + monitor's orientation: height when on a landscape monitor, and width when + on a portrait monitor. + + The *secondary axis* would be maximized for non-center positioned + quick terminals unless another size parameter is specified, separated + from the first by a comma (`,`). Percentage and pixel sizes can be mixed + together: for instance, a size of `50%,500px` for a top-positioned quick + terminal would be half a screen tall, and 500 pixels wide. + + Available since: 1.2.0 + + +**`gtk-quick-terminal-layer`** + +: The layer of the quick terminal window. The higher the layer, + the more windows the quick terminal may conceal. + + Valid values are: + + * `overlay` + + The quick terminal appears in front of all windows. + + * `top` (default) + + The quick terminal appears in front of normal windows but behind + fullscreen overlays like lock screens. + + * `bottom` + + The quick terminal appears behind normal windows but in front of + wallpapers and other windows in the background layer. + + * `background` + + The quick terminal appears behind all windows. + + GTK Wayland only. + + Available since: 1.2.0 + + +**`gtk-quick-terminal-namespace`** + +: The namespace for the quick terminal window. + + This is an identifier that is used by the Wayland compositor and/or + scripts to determine the type of layer surfaces and to possibly apply + unique effects. + + GTK Wayland only. + + Available since: 1.2.0 + + +**`quick-terminal-screen`** + +: The screen where the quick terminal should show up. + + Valid values are: + + * `main` - The screen that the operating system recommends as the main + screen. On macOS, this is the screen that is currently receiving + keyboard input. This screen is defined by the operating system and + not chosen by Ghostty. + + * `mouse` - The screen that the mouse is currently hovered over. + + * `macos-menu-bar` - The screen that contains the macOS menu bar as + set in the display settings on macOS. This is a bit confusing because + every screen on macOS has a menu bar, but this is the screen that + contains the primary menu bar. + + The default value is `main` because this is the recommended screen + by the operating system. + + Only implemented on macOS. + + +**`quick-terminal-animation-duration`** + +: Duration (in seconds) of the quick terminal enter and exit animation. + Set it to 0 to disable animation completely. This can be changed at + runtime. + + Only implemented on macOS. + + +**`quick-terminal-autohide`** + +: Automatically hide the quick terminal when focus shifts to another window. + Set it to false for the quick terminal to remain open even when it loses focus. + + Defaults to true on macOS and on false on Linux/BSD. This is because global + shortcuts on Linux require system configuration and are considerably less + accessible than on macOS, meaning that it is more preferable to keep the + quick terminal open until the user has completed their task. + This default may change in the future. + + +**`quick-terminal-space-behavior`** + +: This configuration option determines the behavior of the quick terminal + when switching between macOS spaces. macOS spaces are virtual desktops + that can be manually created or are automatically created when an + application is in full-screen mode. + + Valid values are: + + * `move` - When switching to another space, the quick terminal will + also moved to the current space. + + * `remain` - The quick terminal will stay only in the space where it + was originally opened and will not follow when switching to another + space. + + The default value is `move`. + + Only implemented on macOS. + On Linux the behavior is always equivalent to `move`. + + Available since: 1.1.0 + + +**`quick-terminal-keyboard-interactivity`** + +: Determines under which circumstances that the quick terminal should receive + keyboard input. See the corresponding [Wayland documentation](https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_surface_v1:enum:keyboard_interactivity) + for a more detailed explanation of the behavior of each option. + + > [!NOTE] + > The exact behavior of each option may differ significantly across + > compositors -- experiment with them on your system to find one that + > suits your liking! + + Valid values are: + + * `none` + + The quick terminal will not receive any keyboard input. + + * `on-demand` (default) + + The quick terminal would only receive keyboard input when it is focused. + + * `exclusive` + + The quick terminal will always receive keyboard input, even when another + window is currently focused. + + Only has an effect on Linux Wayland. + On macOS the behavior is always equivalent to `on-demand`. + + Available since: 1.2.0 + + +**`shell-integration`** + +: Whether to enable shell integration auto-injection or not. Shell integration + greatly enhances the terminal experience by enabling a number of features: + + * Working directory reporting so new tabs, splits inherit the + previous terminal's working directory. + + * Prompt marking that enables the "jump_to_prompt" keybinding. + + * If you're sitting at a prompt, closing a terminal will not ask + for confirmation. + + * Resizing the window with a complex prompt usually paints much + better. + + Allowable values are: + + * `none` - Do not do any automatic injection. You can still manually + configure your shell to enable the integration. + + * `detect` - Detect the shell based on the filename. + + * `bash`, `elvish`, `fish`, `nushell`, `zsh` - Use this specific shell injection scheme. + + The default value is `detect`. + + +**`shell-integration-features`** + +: Shell integration features to enable. These require our shell integration + to be loaded, either automatically via shell-integration or manually. + + The format of this is a list of features to enable separated by commas. If + you prefix a feature with `no-` then it is disabled. If you omit a feature, + its default value is used, so you must explicitly disable features you don't + want. You can also use `true` or `false` to turn all features on or off. + + Example: `cursor`, `no-cursor`, `sudo`, `no-sudo`, `title`, `no-title` + + Available features: + + * `cursor` - Set the cursor to a bar at the prompt. + + * `sudo` - Set sudo wrapper to preserve terminfo. + + * `title` - Set the window title via shell integration. + + * `ssh-env` - Enable SSH environment variable compatibility. Automatically + converts TERM from `xterm-ghostty` to `xterm-256color` when connecting to + remote hosts and propagates COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. + Whether or not these variables will be accepted by the remote host(s) will + depend on whether or not the variables are allowed in their sshd_config. + (Available since: 1.2.0) + + * `ssh-terminfo` - Enable automatic terminfo installation on remote hosts. + Attempts to install Ghostty's terminfo entry using `infocmp` and `tic` when + connecting to hosts that lack it. Requires `infocmp` to be available locally + and `tic` to be available on remote hosts. Once terminfo is installed on a + remote host, it will be automatically "cached" to avoid repeat installations. + If desired, the `+ssh-cache` CLI action can be used to manage the installation + cache manually using various arguments. + (Available since: 1.2.0) + + * `path` - Add Ghostty's binary directory to PATH. This ensures the `ghostty` + command is available in the shell even if shell init scripts reset PATH. + This is particularly useful on macOS where PATH is often overridden by + system scripts. The directory is only added if not already present. + + SSH features work independently and can be combined for optimal experience: + when both `ssh-env` and `ssh-terminfo` are enabled, Ghostty will install its + terminfo on remote hosts and use `xterm-ghostty` as TERM, falling back to + `xterm-256color` with environment variables if terminfo installation fails. + + +**`command-palette-entry`** + +: Custom entries into the command palette. + + Each entry requires the title, the corresponding action, and an optional + description. Each field should be prefixed with the field name, a colon + (`:`), and then the specified value. The syntax for actions is identical + to the one for keybind actions. Whitespace in between fields is ignored. + + If you need to embed commas or any other special characters in the values, + enclose the value in double quotes and it will be interpreted as a Zig + string literal. This is also useful for including whitespace at the + beginning or the end of a value. See the + [Zig documentation](https://ziglang.org/documentation/master/#Escape-Sequences) + for more information on string literals. Note that multiline string literals + are not supported. + + Double quotes can not be used around the field names. + + ```ini + command-palette-entry = title:Reset Font Style, action:csi:0m + command-palette-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main + command-palette-entry = title:Focus Split: Right,description:"Focus the split to the right, if it exists.",action:goto_split:right + command-palette-entry = title:"Ghostty",description:"Add a little Ghostty to your terminal.",action:"text:\xf0\x9f\x91\xbb" + ``` + + By default, the command palette is preloaded with most actions that might + be useful in an interactive setting yet do not have easily accessible or + memorizable shortcuts. The default entries can be cleared by setting this + setting to an empty value: + + ```ini + command-palette-entry = + ``` + + Available since: 1.2.0 + + +**`osc-color-report-format`** + +: Sets the reporting format for OSC sequences that request color information. + Ghostty currently supports OSC 10 (foreground), OSC 11 (background), and + OSC 4 (256 color palette) queries, and by default the reported values + are scaled-up RGB values, where each component are 16 bits. This is how + most terminals report these values. However, some legacy applications may + require 8-bit, unscaled, components. We also support turning off reporting + altogether. The components are lowercase hex values. + + Allowable values are: + + * `none` - OSC 4/10/11 queries receive no reply + + * `8-bit` - Color components are return unscaled, e.g. `rr/gg/bb` + + * `16-bit` - Color components are returned scaled, e.g. `rrrr/gggg/bbbb` + + The default value is `16-bit`. + + +**`vt-kam-allowed`** + +: If true, allows the "KAM" mode (ANSI mode 2) to be used within + the terminal. KAM disables keyboard input at the request of the + application. This is not a common feature and is not recommended + to be enabled. This will not be documented further because + if you know you need KAM, you know. If you don't know if you + need KAM, you don't need it. + + +**`custom-shader`** + +: Custom shaders to run after the default shaders. This is a file path + to a GLSL-syntax shader for all platforms. + + Warning: Invalid shaders can cause Ghostty to become unusable such as by + causing the window to be completely black. If this happens, you can + unset this configuration to disable the shader. + + Custom shader support is based on and compatible with the Shadertoy shaders. + Shaders should specify a `mainImage` function and the available uniforms + largely match Shadertoy, with some caveats and Ghostty-specific extensions. + + The uniform values available to shaders are as follows: + + * `sampler2D iChannel0` - Input texture. + + A texture containing the current terminal screen. If multiple custom + shaders are specified, the output of previous shaders is written to + this texture, to allow combining multiple effects. + + * `vec3 iResolution` - Output texture size, `[width, height, 1]` (in px). + + * `float iTime` - Time in seconds since first frame was rendered. + + * `float iTimeDelta` - Time in seconds since previous frame was rendered. + + * `float iFrameRate` - Average framerate. (NOT CURRENTLY SUPPORTED) + + * `int iFrame` - Number of frames that have been rendered so far. + + * `float iChannelTime[4]` - Current time for video or sound input. (N/A) + + * `vec3 iChannelResolution[4]` - Resolutions of the 4 input samplers. + + Currently only `iChannel0` exists, and `iChannelResolution[0]` is + identical to `iResolution`. + + * `vec4 iMouse` - Mouse input info. (NOT CURRENTLY SUPPORTED) + + * `vec4 iDate` - Date/time info. (NOT CURRENTLY SUPPORTED) + + * `float iSampleRate` - Sample rate for audio. (N/A) + + Ghostty-specific extensions: + + * `vec4 iCurrentCursor` - Info about the terminal cursor. + + - `iCurrentCursor.xy` is the -X, +Y corner of the current cursor. + - `iCurrentCursor.zw` is the width and height of the current cursor. + + * `vec4 iPreviousCursor` - Info about the previous terminal cursor. + + * `vec4 iCurrentCursorColor` - Color of the terminal cursor. + + * `vec4 iPreviousCursorColor` - Color of the previous terminal cursor. + + * `vec4 iCurrentCursorStyle` - Style of the terminal cursor + + Macros simplified use are defined for the various cursor styles: + + - `CURSORSTYLE_BLOCK` or `0` + - `CURSORSTYLE_BLOCK_HOLLOW` or `1` + - `CURSORSTYLE_BAR` or `2` + - `CURSORSTYLE_UNDERLINE` or `3` + - `CURSORSTYLE_LOCK` or `4` + + * `vec4 iPreviousCursorStyle` - Style of the previous terminal cursor + + * `vec4 iCursorVisible` - Visibility of the terminal cursor. + + * `float iTimeCursorChange` - Timestamp of terminal cursor change. + + When the terminal cursor changes position or color, this is set to + the same time as the `iTime` uniform, allowing you to compute the + time since the change by subtracting this from `iTime`. + + * `float iTimeFocus` - Timestamp when the surface last gained iFocus. + + When the surface gains focus, this is set to the current value of + `iTime`, similar to how `iTimeCursorChange` works. This allows you + to compute the time since focus was gained or lost by calculating + `iTime - iTimeFocus`. Use this to create animations that restart + when the terminal regains focus. + + * `int iFocus` - Current focus state of the surface. + + Set to 1.0 when the surface is focused, 0.0 when unfocused. This + allows shaders to detect unfocused state and avoid animation artifacts + from large time deltas caused by infrequent "deceptive frames" + (e.g., modifier key presses, link hover events in unfocused split panes). + Check `iFocus > 0` to determine if the surface is currently focused. + + * `vec3 iPalette[256]` - The 256-color terminal palette. + + RGB values for all 256 colors in the terminal palette, normalized + to [0.0, 1.0]. Index 0-15 are the ANSI colors, 16-231 are the 6x6x6 + color cube, and 232-255 are the grayscale colors. + + * `vec3 iBackgroundColor` - Terminal background color (RGB). + + * `vec3 iForegroundColor` - Terminal foreground color (RGB). + + * `vec3 iCursorColor` - Terminal cursor color (RGB). + + * `vec3 iCursorText` - Terminal cursor text color (RGB). + + * `vec3 iSelectionBackgroundColor` - Selection background color (RGB). + + * `vec3 iSelectionForegroundColor` - Selection foreground color (RGB). + + If the shader fails to compile, the shader will be ignored. Any errors + related to shader compilation will not show up as configuration errors + and only show up in the log, since shader compilation happens after + configuration loading on the dedicated render thread. For interactive + development, use [shadertoy.com](https://shadertoy.com). + + This can be repeated multiple times to load multiple shaders. The shaders + will be run in the order they are specified. + + This can be changed at runtime and will affect all open terminals. + + +**`custom-shader-animation`** + +: If `true` (default), the focused terminal surface will run an animation + loop when custom shaders are used. This uses slightly more CPU (generally + less than 10%) but allows the shader to animate. This only runs if there + are custom shaders and the terminal is focused. + + If this is set to `false`, the terminal and custom shader will only render + when the terminal is updated. This is more efficient but the shader will + not animate. + + This can also be set to `always`, which will always run the animation + loop regardless of whether the terminal is focused or not. The animation + loop will still only run when custom shaders are used. Note that this + will use more CPU per terminal surface and can become quite expensive + depending on the shader and your terminal usage. + + This can be changed at runtime and will affect all open terminals. + + +**`bell-features`** + +: Bell features to enable if bell support is available in your runtime. Not + all features are available on all runtimes. The format of this is a list of + features to enable separated by commas. If you prefix a feature with `no-` + then it is disabled. If you omit a feature, its default value is used. + + Valid values are: + + * `system` + + Instruct the system to notify the user using built-in system functions. + This could result in an audiovisual effect, a notification, or something + else entirely. Changing these effects require altering system settings: + for instance under the "Sound > Alert Sound" setting in GNOME, + or the "Accessibility > System Bell" settings in KDE Plasma. + + On macOS, this plays the system alert sound. + + * `audio` + + Play a custom sound. (Available since 1.3.0 on macOS) + + * `attention` *(enabled by default)* + + Request the user's attention when Ghostty is unfocused, until it has + received focus again. On macOS, this will bounce the app icon in the + dock once. On Linux, the behavior depends on the desktop environment + and/or the window manager/compositor: + + - On KDE, the background of the desktop icon in the task bar would be + highlighted; + + - On GNOME, you may receive a notification that, when clicked, would + bring the Ghostty window into focus; + + - On Sway, the window may be decorated with a distinctly colored border; + + - On other systems this may have no effect at all. + + * `title` *(enabled by default)* + + Prepend a bell emoji (🔔) to the title of the alerted surface until the + terminal is re-focused or interacted with (such as on keyboard input). + + * `border` + + Display a border around the alerted surface until the terminal is + re-focused or interacted with (such as on keyboard input). + + Available since: 1.2.0 on GTK, 1.2.1 on macOS + + Example: `audio`, `no-audio`, `system`, `no-system` + + Available since: 1.2.0 + + +**`bell-audio-path`** + +: If `audio` is an enabled bell feature, this is a path to an audio file. If + the path is not absolute, it is considered relative to the directory of the + configuration file that it is referenced from, or from the current working + directory if this is used as a CLI flag. The path may be prefixed with `~/` + to reference the user's home directory. + + Available since: 1.2.0 on GTK, 1.3.0 on macOS. + + +**`bell-audio-volume`** + +: If `audio` is an enabled bell feature, this is the volume to play the audio + file at (relative to the system volume). This is a floating point number + ranging from 0.0 (silence) to 1.0 (as loud as possible). The default is 0.5. + + Available since: 1.2.0 on GTK, 1.3.0 on macOS. + + +**`app-notifications`** + +: Control the in-app notifications that Ghostty shows. + + On Linux (GTK), in-app notifications show up as toasts. Toasts appear + overlaid on top of the terminal window. They are used to show information + that is not critical but may be important. + + Possible notifications are: + + - `clipboard-copy` (default: true) - Show a notification when text is copied + to the clipboard. + - `config-reload` (default: true) - Show a notification when + the configuration is reloaded. + + To specify a notification to enable, specify the name of the notification. + To specify a notification to disable, prefix the name with `no-`. For + example, to disable `clipboard-copy`, set this configuration to + `no-clipboard-copy`. To enable it, set this configuration to `clipboard-copy`. + + Multiple notifications can be enabled or disabled by separating them + with a comma. + + A value of "false" will disable all notifications. A value of "true" will + enable all notifications. + + This configuration only applies to GTK. + + Available since: 1.1.0 + + +**`macos-non-native-fullscreen`** + +: If anything other than false, fullscreen mode on macOS will not use the + native fullscreen, but make the window fullscreen without animations and + using a new space. It's faster than the native fullscreen mode since it + doesn't use animations. + + Important: tabs DO NOT WORK in this mode. Non-native fullscreen removes + the titlebar and macOS native tabs require the titlebar. If you use tabs, + you should not use this mode. + + If you fullscreen a window with tabs, the currently focused tab will + become fullscreen while the others will remain in a separate window in + the background. You can switch to that window using normal window-switching + keybindings such as command+tilde. When you exit fullscreen, the window + will return to the tabbed state it was in before. + + Allowable values are: + + * `true` - Use non-native macOS fullscreen, hide the menu bar + * `false` - Use native macOS fullscreen + * `visible-menu` - Use non-native macOS fullscreen, keep the menu bar + visible + * `padded-notch` - Use non-native macOS fullscreen, hide the menu bar, + but ensure the window is not obscured by the notch on applicable + devices. The area around the notch will remain transparent currently, + but in the future we may fill it with the window background color. + + Changing this option at runtime works, but will only apply to the next + time the window is made fullscreen. If a window is already fullscreen, + it will retain the previous setting until fullscreen is exited. + + +**`macos-window-buttons`** + +: Whether the window buttons in the macOS titlebar are visible. The window + buttons are the colored buttons in the upper left corner of most macOS apps, + also known as the traffic lights, that allow you to close, miniaturize, and + zoom the window. + + This setting has no effect when `window-decoration = none` or + `macos-titlebar-style = hidden`, as the window buttons are always hidden in + these modes. + + Valid values are: + + * `visible` - Show the window buttons. + * `hidden` - Hide the window buttons. + + The default value is `visible`. + + Changing this option at runtime only applies to new windows. + + Available since: 1.2.0 + + +**`macos-titlebar-style`** + +: The style of the macOS titlebar. Available values are: "native", + "transparent", "tabs", and "hidden". + + The "native" style uses the native macOS titlebar with zero customization. + The titlebar will match your window theme (see `window-theme`). + + The "transparent" style is the same as "native" but the titlebar will + be transparent and allow your window background color to come through. + This makes a more seamless window appearance but looks a little less + typical for a macOS application and may not work well with all themes. + + The "transparent" style will also update in real-time to dynamic + changes to the window background color, e.g. via OSC 11. To make this + more aesthetically pleasing, this only happens if the terminal is + a window, tab, or split that borders the top of the window. This + avoids a disjointed appearance where the titlebar color changes + but all the topmost terminals don't match. + + The "tabs" style is a completely custom titlebar that integrates the + tab bar into the titlebar. This titlebar always matches the background + color of the terminal. There are some limitations to this style: + On macOS 13 and below, saved window state will not restore tabs correctly. + macOS 14 does not have this issue and any other macOS version has not + been tested. + + The "hidden" style hides the titlebar. Unlike `window-decoration = none`, + however, it does not remove the frame from the window or cause it to have + squared corners. Changing to or from this option at run-time may affect + existing windows in buggy ways. + + When "hidden", the top titlebar area can no longer be used for dragging + the window. To drag the window, you can use option+click on the resizable + areas of the frame to drag the window. This is a standard macOS behavior + and not something Ghostty enables. + + The default value is "transparent". This is an opinionated choice + but its one I think is the most aesthetically pleasing and works in + most cases. + + Changing this option at runtime only applies to new windows. + + +**`macos-titlebar-proxy-icon`** + +: Whether the proxy icon in the macOS titlebar is visible. The proxy icon + is the icon that represents the folder of the current working directory. + You can see this very clearly in the macOS built-in Terminal.app + titlebar. + + The proxy icon is only visible with the native macOS titlebar style. + + Valid values are: + + * `visible` - Show the proxy icon. + * `hidden` - Hide the proxy icon. + + The default value is `visible`. + + This setting can be changed at runtime and will affect all currently + open windows but only after their working directory changes again. + Therefore, to make this work after changing the setting, you must + usually `cd` to a different directory, open a different file in an + editor, etc. + + +**`macos-dock-drop-behavior`** + +: Controls the windowing behavior when dropping a file or folder + onto the Ghostty icon in the macOS dock. + + Valid values are: + + * `new-tab` - Create a new tab in the current window, or open + a new window if none exist. + * `new-window` - Create a new window unconditionally. + + The default value is `new-tab`. + + This setting is only supported on macOS and has no effect on other + platforms. + + +**`macos-option-as-alt`** + +: macOS doesn't have a distinct "alt" key and instead has the "option" + key which behaves slightly differently. On macOS by default, the + option key plus a character will sometimes produce a Unicode character. + For example, on US standard layouts option-b produces "∫". This may be + undesirable if you want to use "option" as an "alt" key for keybindings + in terminal programs or shells. + + This configuration lets you change the behavior so that option is treated + as alt. + + The default behavior (unset) will depend on your active keyboard + layout. If your keyboard layout is one of the keyboard layouts listed + below, then the default value is "true". Otherwise, the default + value is "false". Keyboard layouts with a default value of "true" are: + + - U.S. Standard + - U.S. International + + Note that if an *Option*-sequence doesn't produce a printable character, it + will be treated as *Alt* regardless of this setting. (e.g. `alt+ctrl+a`). + + Explicit values that can be set: + + If `true`, the *Option* key will be treated as *Alt*. This makes terminal + sequences expecting *Alt* to work properly, but will break Unicode input + sequences on macOS if you use them via the *Alt* key. + + You may set this to `false` to restore the macOS *Alt* key unicode + sequences but this will break terminal sequences expecting *Alt* to work. + + The values `left` or `right` enable this for the left or right *Option* + key, respectively. + + +**`macos-window-shadow`** + +: Whether to enable the macOS window shadow. The default value is true. + With some window managers and window transparency settings, you may + find false more visually appealing. + + +**`macos-hidden`** + +: If true, the macOS icon in the dock and app switcher will be hidden. This is + mainly intended for those primarily using the quick-terminal mode. + + Note that setting this to true means that keyboard layout changes + will no longer be automatic. + + Control whether macOS app is excluded from the dock and app switcher, + a "hidden" state. This is mainly intended for those primarily using + quick-terminal mode, but is a general configuration for any use + case. + + Available values: + + * `never` - The macOS app is never hidden. + * `always` - The macOS app is always hidden. + + Note: When the macOS application is hidden, keyboard layout changes + will no longer be automatic. This is a limitation of macOS. + + Available since: 1.2.0 + + +**`macos-auto-secure-input`** + +: If true, Ghostty on macOS will automatically enable the "Secure Input" + feature when it detects that a password prompt is being displayed. + + "Secure Input" is a macOS security feature that prevents applications from + reading keyboard events. This can always be enabled manually using the + `Ghostty > Secure Keyboard Entry` menu item. + + Note that automatic password prompt detection is based on heuristics + and may not always work as expected. Specifically, it does not work + over SSH connections, but there may be other cases where it also + doesn't work. + + A reason to disable this feature is if you find that it is interfering + with legitimate accessibility software (or software that uses the + accessibility APIs), since secure input prevents any application from + reading keyboard events. + + +**`macos-secure-input-indication`** + +: If true, Ghostty will show a graphical indication when secure input is + enabled. This indication is generally recommended to know when secure input + is enabled. + + Normally, secure input is only active when a password prompt is displayed + or it is manually (and typically temporarily) enabled. However, if you + always have secure input enabled, the indication can be distracting and + you may want to disable it. + + +**`macos-applescript`** + +: If true, Ghostty exposes and handles the built-in AppleScript dictionary + on macOS. + + If false, all AppleScript interactions are disabled. This includes + AppleScript commands and AppleScript object lookup for windows, tabs, + and terminals. + + The default is true. + + +**`macos-icon`** + +: Customize the macOS app icon. + + This only affects the icon that appears in the dock, application + switcher, etc. This does not affect the icon in Finder because + that is controlled by a hardcoded value in the signed application + bundle and can't be changed at runtime. For more details on what + exactly is affected, see the `NSApplication.icon` Apple documentation; + that is the API that is being used to set the icon. + + Valid values: + + * `official` - Use the official Ghostty icon. + * `blueprint`, `chalkboard`, `microchip`, `glass`, `holographic`, + `paper`, `retro`, `xray` - Official variants of the Ghostty icon + hand-created by artists (no AI). + * `custom` - Use a completely custom icon. The location must be specified + using the additional `macos-custom-icon` configuration + * `custom-style` - Use the official Ghostty icon but with custom + styles applied to various layers. The custom styles must be + specified using the additional `macos-icon`-prefixed configurations. + The `macos-icon-ghost-color` and `macos-icon-screen-color` + configurations are required for this style. + + WARNING: The `custom-style` option is _experimental_. We may change + the format of the custom styles in the future. We're still finalizing + the exact layers and customization options that will be available. + + Other caveats: + + * The icon in the update dialog will always be the official icon. + This is because the update dialog is managed through a + separate framework and cannot be customized without significant + effort. + + +**`macos-custom-icon`** + +: The absolute path to the custom icon file. + Supported formats include PNG, JPEG, and ICNS. + + Defaults to `~/.config/ghostty/Ghostty.icns` + + +**`macos-icon-frame`** + +: The material to use for the frame of the macOS app icon. + + Valid values: + + * `aluminum` - A brushed aluminum frame. This is the default. + * `beige` - A classic 90's computer beige frame. + * `plastic` - A glossy, dark plastic frame. + * `chrome` - A shiny chrome frame. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + +**`macos-icon-ghost-color`** + +: The color of the ghost in the macOS app icon. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + Specified as either hex (`#RRGGBB` or `RRGGBB`) or a named X11 color. + + +**`macos-icon-screen-color`** + +: The color of the screen in the macOS app icon. + + The screen is a linear gradient so you can specify multiple colors + that make up the gradient. Up to 64 comma-separated colors may be + specified as either hex (`#RRGGBB` or `RRGGBB`) or as named X11 + colors. The first color is the bottom of the gradient and the last + color is the top of the gradient. + + Note: This configuration is required when `macos-icon` is set to + `custom-style`. + + +**`macos-shortcuts`** + +: Whether macOS Shortcuts are allowed to control Ghostty. + + Ghostty exposes a number of actions that allow Shortcuts to + control and interact with Ghostty. This includes creating new + terminals, sending text to terminals, running commands, invoking + any keybind action, etc. + + This is a powerful feature but can be a security risk if a malicious + shortcut is able to be installed and executed. Therefore, this + configuration allows you to disable this feature. + + Valid values are: + + * `ask` - Ask the user whether for permission. Ghostty will remember + this choice and never ask again. This is similar to other macOS + permissions such as microphone access, camera access, etc. + + * `allow` - Allow Shortcuts to control Ghostty without asking. + + * `deny` - Deny Shortcuts from controlling Ghostty. + + Available since: 1.2.0 + + +**`linux-cgroup`** + +: Put every surface (tab, split, window) into a transient `systemd` scope. + + This allows per-surface resource management. For example, if a shell program + is using too much memory, only that shell will be killed by the oom monitor + instead of the entire Ghostty process. Similarly, if a shell program is + using too much CPU, only that surface will be CPU-throttled. + + This will cause startup times to be slower (a hundred milliseconds or so), + so the default value is "single-instance." In single-instance mode, only + one instance of Ghostty is running (see gtk-single-instance) so the startup + time is a one-time cost. Additionally, single instance Ghostty is much + more likely to have many windows, tabs, etc. so cgroup isolation is a + big benefit. + + This feature requires `systemd`. If `systemd` is unavailable, cgroup + initialization will fail. By default, this will not prevent Ghostty from + working (see `linux-cgroup-hard-fail`). + + Changing this value and reloading the config will not affect existing + surfaces. + + Valid values are: + + * `never` - Never use cgroups. + * `always` - Always use cgroups. + * `single-instance` - Enable cgroups only for Ghostty instances launched + as single-instance applications (see gtk-single-instance). + + +**`linux-cgroup-memory-limit`** + +: Memory limit for any individual terminal process (tab, split, window, + etc.) in bytes. If this is unset then no memory limit will be set. + + Note that this sets the `MemoryHigh` setting on the transient `systemd` + scope, which is a soft limit. You should configure something like + `systemd-oom` to handle killing processes that have too much memory + pressure. + + Changing this value and reloading the config will not affect existing + surfaces. + + See the `systemd.resource-control` manual page for more information: + https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html + + +**`linux-cgroup-processes-limit`** + +: Number of processes limit for any individual terminal process (tab, split, + window, etc.). If this is unset then no limit will be set. + + Note that this sets the `TasksMax` setting on the transient `systemd` scope, + which is a hard limit. + + Changing this value and reloading the config will not affect existing + surfaces. + + See the `systemd.resource-control` manual page for more information: + https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html + + +**`linux-cgroup-hard-fail`** + +: If this is false, then creating a transient `systemd` scope (for + `linux-cgroup`) will be allowed to fail and the failure is ignored. This is + useful if you view cgroup isolation as a "nice to have" and not a critical + resource management feature, because surface creation will not fail if + `systemd` APIs fail. + + If this is true, then any transient `systemd` scope creation failure will + cause surface creation to fail. + + Changing this value and reloading the config will not affect existing + surfaces. + + +**`gtk-opengl-debug`** + +: Enable or disable GTK's OpenGL debugging logs. The default is `true` for + debug builds, `false` for all others. + + Available since: 1.1.0 + + +**`gtk-single-instance`** + +: If `true`, the Ghostty GTK application will run in single-instance mode: + each new `ghostty` process launched will result in a new window if there is + already a running process. + + If `false`, each new ghostty process will launch a separate application. + + If `detect`, Ghostty will assume true (single instance) unless one of + the following scenarios is found: + + 1. TERM_PROGRAM environment variable is a non-empty value. In this + case, we assume Ghostty is being launched from a graphical terminal + session and you want a dedicated instance. + + 2. Any CLI arguments exist. In this case, we assume you are passing + custom Ghostty configuration. Single instance mode inherits the + configuration from when it was launched, so we must disable single + instance to load the new configuration. + + If either of these scenarios is producing a false positive, you can + set this configuration explicitly to the behavior you want. + + The pre-1.2 option `desktop` has been deprecated. Please replace + this with `detect`. + + The default value is `detect`. + + Note that debug builds of Ghostty have a separate single-instance ID + so you can test single instance without conflicting with release builds. + + +**`gtk-titlebar`** + +: When enabled, the full GTK titlebar is displayed instead of your window + manager's simple titlebar. The behavior of this option will vary with your + window manager. + + This option does nothing when `window-decoration` is none or when running + under macOS. + + +**`gtk-tabs-location`** + +: Determines the side of the screen that the GTK tab bar will stick to. + Top, bottom, and hidden are supported. The default is top. + + When `hidden` is set, a tab button displaying the number of tabs will appear + in the title bar. It has the ability to open a tab overview for displaying + tabs. Alternatively, you can use the `toggle_tab_overview` action in a + keybind if your window doesn't have a title bar, or you can switch tabs + with keybinds. + + +**`gtk-titlebar-hide-when-maximized`** + +: If this is `true`, the titlebar will be hidden when the window is maximized, + and shown when the titlebar is unmaximized. GTK only. + + Available since: 1.1.0 + + +**`gtk-toolbar-style`** + +: Determines the appearance of the top and bottom bars tab bar. + + Valid values are: + + * `flat` - Top and bottom bars are flat with the terminal window. + * `raised` - Top and bottom bars cast a shadow on the terminal area. + * `raised-border` - Similar to `raised` but the shadow is replaced with a + more subtle border. + + +**`gtk-titlebar-style`** + +: The style of the GTK titlebar. Available values are `native` and `tabs`. + + The `native` titlebar style is a traditional titlebar with a title, a few + buttons and window controls. A separate tab bar will show up below the + titlebar if you have multiple tabs open in the window. + + The `tabs` titlebar merges the tab bar and the traditional titlebar. + This frees up vertical space on your screen if you use multiple tabs. One + limitation of the `tabs` titlebar is that you cannot drag the titlebar + by the titles any longer (as they are tab titles now). Other areas of the + `tabs` title bar can be used to drag the window around. + + The default style is `native`. + + +**`gtk-wide-tabs`** + +: If `true` (default), then the Ghostty GTK tabs will be "wide." Wide tabs + are the new typical Gnome style where tabs fill their available space. + If you set this to `false` then tabs will only take up space they need, + which is the old style. + + +**`gtk-custom-css`** + +: Custom CSS files to be loaded. + + GTK CSS documentation can be found at the following links: + + * https://docs.gtk.org/gtk4/css-overview.html - An overview of GTK CSS. + * https://docs.gtk.org/gtk4/css-properties.html - A comprehensive list + of supported CSS properties. + + Launch Ghostty with `env GTK_DEBUG=interactive ghostty` to tweak Ghostty's + CSS in real time using the GTK Inspector. Errors in your CSS files would + also be reported in the terminal you started Ghostty from. See + https://developer.gnome.org/documentation/tools/inspector.html for more + information about the GTK Inspector. + + This configuration can be repeated multiple times to load multiple files. + Prepend a ? character to the file path to suppress errors if the file does + not exist. If you want to include a file that begins with a literal ? + character, surround the file path in double quotes ("). + The file size limit for a single stylesheet is 5MiB. + + Available since: 1.1.0 + + +**`desktop-notifications`** + +: If `true` (default), applications running in the terminal can show desktop + notifications using certain escape sequences such as OSC 9 or OSC 777. + + +**`progress-style`** + +: If `true` (default), applications running in the terminal can show + graphical progress bars using the ConEmu OSC 9;4 escape sequence. + If `false`, progress bar sequences are silently ignored. + + +**`bold-color`** + +: Modifies the color used for bold text in the terminal. + + This can be set to a specific color, using the same format as + `background` or `foreground` (e.g. `#RRGGBB` but other formats + are also supported; see the aforementioned documentation). If a + specific color is set, this color will always be used for the default + bold text color. It will set the rest of the bold colors to `bright`. + + This can also be set to `bright`, which uses the bright color palette + for bold text. For example, if the text is red, then the bold will + use the bright red color. The terminal palette is set with `palette` + but can also be overridden by the terminal application itself using + escape sequences such as OSC 4. (Since Ghostty 1.2.0, the previous + configuration `bold-is-bright` is deprecated and replaced by this + usage). + + Available since Ghostty 1.2.0. + + +**`faint-opacity`** + +: The opacity level (opposite of transparency) of the faint text. A value of + 1 is fully opaque and a value of 0 is fully transparent. A value less than 0 + or greater than 1 will be clamped to the nearest valid value. + + Available since Ghostty 1.2.0. + + +**`term`** + +: This will be used to set the `TERM` environment variable. + HACK: We set this with an `xterm` prefix because vim uses that to enable key + protocols (specifically this will enable `modifyOtherKeys`), among other + features. An option exists in vim to modify this: `:set + keyprotocol=ghostty:kitty`, however a bug in the implementation prevents it + from working properly. https://github.com/vim/vim/pull/13211 fixes this. + + +**`enquiry-response`** + +: String to send when we receive `ENQ` (`0x05`) from the command that we are + running. Defaults to an empty string if not set. + + +**`async-backend`** + +: Configures the low-level API to use for async IO, eventing, etc. + + Most users should leave this set to `auto`. This will automatically detect + scenarios where APIs may not be available (for example `io_uring` on + certain hardened kernels) and fall back to a different API. However, if + you want to force a specific backend for any reason, you can set this + here. + + Based on various benchmarks, we haven't found a statistically significant + difference between the backends with regards to memory, CPU, or latency. + The choice of backend is more about compatibility and features. + + Available options: + + * `auto` - Automatically choose the best backend for the platform + based on available options. + * `epoll` - Use the `epoll` API + * `io_uring` - Use the `io_uring` API + + If the selected backend is not available on the platform, Ghostty will + fall back to an automatically chosen backend that is available. + + Changing this value requires a full application restart to take effect. + + This is only supported on Linux, since this is the only platform + where we have multiple options. On macOS, we always use `kqueue`. + + Available since: 1.2.0 + + +**`auto-update`** + +: Control the auto-update functionality of Ghostty. This is only supported + on macOS currently, since Linux builds are distributed via package + managers that are not centrally controlled by Ghostty. + + Checking or downloading an update does not send any information to + the project beyond standard network information mandated by the + underlying protocols. To put it another way: Ghostty doesn't explicitly + add any tracking to the update process. The update process works by + downloading information about the latest version and comparing it + client-side to the current version. + + Valid values are: + + * `off` - Disable auto-updates. + * `check` - Check for updates and notify the user if an update is + available, but do not automatically download or install the update. + * `download` - Check for updates, automatically download the update, + notify the user, but do not automatically install the update. + + If unset, we defer to Sparkle's default behavior, which respects the + preference stored in the standard user defaults (`defaults(1)`). + + Changing this value at runtime works after a small delay. + + +**`auto-update-channel`** + +: The release channel to use for auto-updates. + + The default value of this matches the release channel of the currently + running Ghostty version. If you download a pre-release version of Ghostty + then this will be set to `tip` and you will receive pre-release updates. + If you download a stable version of Ghostty then this will be set to + `stable` and you will receive stable updates. + + Valid values are: + + * `stable` - Stable, tagged releases such as "1.0.0". + * `tip` - Pre-release versions generated from each commit to the + main branch. This is the version that was in use during private + beta testing by thousands of people. It is generally stable but + will likely have more bugs than the stable channel. + + Changing this configuration requires a full restart of + Ghostty to take effect. + + This only works on macOS since only macOS has an auto-update feature. + + + +# KEYBIND ACTIONS + +**`ignore`** + +: Ignore this key combination. + + Ghostty will not process this combination nor forward it to the child + process within the terminal, but it may still be processed by the OS or + other applications. + + +**`unbind`** + +: Unbind a previously bound key binding. + + This cannot unbind bindings that were not bound by Ghostty or the user + (e.g. bindings set by the OS or some other application). + + +**`csi`** + +: Send a CSI sequence. + + The value should be the CSI sequence without the CSI header (`ESC [` or + `\x1b[`). + + For example, `csi:0m` can be sent to reset all styles of the current text. + + +**`esc`** + +: Send an `ESC` sequence. + + +**`text`** + +: Send the specified text. + + Uses Zig string literal syntax. This is currently not validated. + If the text is invalid (i.e. contains an invalid escape sequence), + the error will currently only show up in logs. + + +**`cursor_key`** + +: Send data to the pty depending on whether cursor key mode is enabled + (`application`) or disabled (`normal`). + + +**`reset`** + +: Reset the terminal. + + This can fix a lot of issues when a running program puts the terminal + into a broken state, equivalent to running the `reset` command. + + If you do this while in a TUI program such as vim, this may break + the program. If you do this while in a shell, you may have to press + enter after to get a new prompt. + + +**`copy_to_clipboard`** + +: Copy the selected text to the clipboard. + + +**`paste_from_clipboard`** + +: Paste the contents of the default clipboard. + + +**`paste_from_selection`** + +: Paste the contents of the selection clipboard. + + +**`copy_url_to_clipboard`** + +: If there is a URL under the cursor, copy it to the default clipboard. + + +**`copy_title_to_clipboard`** + +: Copy the terminal title to the clipboard. If the terminal title is not + set or is empty this has no effect. + + +**`increase_font_size`** + +: Increase the font size by the specified amount in points (pt). + + For example, `increase_font_size:1.5` will increase the font size + by 1.5 points. + + +**`decrease_font_size`** + +: Decrease the font size by the specified amount in points (pt). + + For example, `decrease_font_size:1.5` will decrease the font size + by 1.5 points. + + +**`reset_font_size`** + +: Reset the font size to the original configured size. + + +**`set_font_size`** + +: Set the font size to the specified size in points (pt). + + For example, `set_font_size:14.5` will set the font size + to 14.5 points. + + +**`search`** + +: Start a search for the given text. If the text is empty, then + the search is canceled. A canceled search will not disable any GUI + elements showing search. For that, the explicit end_search binding + should be used. + + If a previous search is active, it is replaced. + + +**`search_selection`** + +: Start a search for the current text selection. If there is no + selection, this does nothing. If a search is already active, this + changes the search terms. + + +**`navigate_search`** + +: Navigate the search results. If there is no active search, this + is not performed. + + +**`start_search`** + +: Start a search if it isn't started already. This doesn't set any + search terms, but opens the UI for searching. + + +**`end_search`** + +: End the current search if any and hide any GUI elements. + + +**`clear_screen`** + +: Clear the screen and all scrollback. + + +**`select_all`** + +: Select all text on the screen. + + +**`scroll_to_top`** + +: Scroll to the top of the screen. + + +**`scroll_to_bottom`** + +: Scroll to the bottom of the screen. + + +**`scroll_to_selection`** + +: Scroll to the selected text. + + +**`scroll_to_row`** + +: Scroll to the given absolute row in the screen with 0 being + the first row. + + +**`scroll_page_up`** + +: Scroll the screen up by one page. + + +**`scroll_page_down`** + +: Scroll the screen down by one page. + + +**`scroll_page_fractional`** + +: Scroll the screen by the specified fraction of a page. + + Positive values scroll downwards, and negative values scroll upwards. + + For example, `scroll_page_fractional:0.5` would scroll the screen + downwards by half a page, while `scroll_page_fractional:-1.5` would + scroll it upwards by one and a half pages. + + +**`scroll_page_lines`** + +: Scroll the screen by the specified amount of lines. + + Positive values scroll downwards, and negative values scroll upwards. + + For example, `scroll_page_lines:3` would scroll the screen downwards + by 3 lines, while `scroll_page_lines:-10` would scroll it upwards by 10 + lines. + + +**`adjust_selection`** + +: Adjust the current selection in the given direction or position, + relative to the cursor. + + WARNING: This does not create a new selection, and does nothing when + there currently isn't one. + + Valid arguments are: + + - `left`, `right` + + Adjust the selection one cell to the left or right respectively. + + - `up`, `down` + + Adjust the selection one line upwards or downwards respectively. + + - `page_up`, `page_down` + + Adjust the selection one page upwards or downwards respectively. + + - `home`, `end` + + Adjust the selection to the top-left or the bottom-right corner + of the screen respectively. + + - `beginning_of_line`, `end_of_line` + + Adjust the selection to the beginning or the end of the line + respectively. + + + +**`jump_to_prompt`** + +: Jump the viewport forward or back by the given number of prompts. + + Requires shell integration. + + Positive values scroll downwards, and negative values scroll upwards. + + +**`write_scrollback_file`** + +: Write the entire scrollback into a temporary file with the specified + action. The action determines what to do with the filepath. + + Valid actions are: + + - `copy` + + Copy the file path into the clipboard. + + - `paste` + + Paste the file path into the terminal. + + - `open` + + Open the file in the default OS editor for text files. + + The default OS editor is determined by using `open` on macOS + and `xdg-open` on Linux. + + + +**`write_screen_file`** + +: Write the contents of the screen into a temporary file with the + specified action. + + See `write_scrollback_file` for possible actions. + + +**`write_selection_file`** + +: Write the currently selected text into a temporary file with the + specified action. + + See `write_scrollback_file` for possible actions. + + Does nothing when no text is selected. + + +**`new_window`** + +: Open a new window. + + If the application isn't currently focused, + this will bring it to the front. + + +**`new_tab`** + +: Open a new tab. + + +**`previous_tab`** + +: Go to the previous tab. + + +**`next_tab`** + +: Go to the next tab. + + +**`last_tab`** + +: Go to the last tab. + + +**`goto_tab`** + +: Go to the tab with the specific index, starting from 1. + + If the tab number is higher than the number of tabs, + this will go to the last tab. + + +**`move_tab`** + +: Moves a tab by a relative offset. + + Positive values move the tab forwards, and negative values move it + backwards. If the new position is out of bounds, it is wrapped around + cyclically within the tab list. + + For example, `move_tab:1` moves the tab one position forwards, and if + it was already the last tab in the list, it wraps around and becomes + the first tab in the list. Likewise, `move_tab:-1` moves the tab one + position backwards, and if it was the first tab, then it will become + the last tab. + + +**`toggle_tab_overview`** + +: Toggle the tab overview. + + This is only supported on Linux and when the system's libadwaita + version is 1.4 or newer. The current libadwaita version can be + found by running `ghostty +version`. + + +**`prompt_surface_title`** + +: Change the title of the current focused surface via a pop-up prompt. + + +**`prompt_tab_title`** + +: Change the title of the current tab via a pop-up prompt. The + title set via this prompt overrides any title set by the terminal + and persists across focus changes within the tab. + + +**`set_surface_title`** + +: Set the title for the current focused surface. + + If the title is empty, the surface title is reset to an empty title. + + +**`set_tab_title`** + +: Set the title for the current focused tab. + + If the title is empty, the tab title override is cleared. + + +**`new_split`** + +: Create a new split in the specified direction. + + Valid arguments: + + - `right`, `down`, `left`, `up` + + Creates a new split in the corresponding direction. + + - `auto` + + Creates a new split along the larger direction. + For example, if the parent split is currently wider than it is tall, + then a left-right split would be created, and vice versa. + + + +**`goto_split`** + +: Focus on a split either in the specified direction (`right`, `down`, + `left` and `up`), or in the adjacent split in the order of creation + (`previous` and `next`). + + +**`goto_window`** + +: Focus on either the previous window or the next one ('previous', 'next') + + +**`toggle_split_zoom`** + +: Zoom in or out of the current split. + + When a split is zoomed into, it will take up the entire space in + the current tab, hiding other splits. The tab or tab bar would also + reflect this by displaying an icon indicating the zoomed state. + + +**`toggle_readonly`** + +: Toggle read-only mode for the current surface. + + When a surface is in read-only mode: + - No input is sent to the PTY (mouse events, key encoding) + - Input can still be used at the terminal level to make selections, + copy/paste (keybinds), scroll, etc. + - Warn before quit is always enabled in this state even if an active + process is not running + + +**`resize_split`** + +: Resize the current split in the specified direction and amount in + pixels. The two arguments should be joined with a comma (`,`), + like in `resize_split:up,10`. + + +**`equalize_splits`** + +: Equalize the size of all splits in the current window. + + +**`reset_window_size`** + +: Reset the window to the default size. The "default size" is the + size that a new window would be created with. This has no effect + if the window is fullscreen. + + Only implemented on macOS. + + +**`inspector`** + +: Control the visibility of the terminal inspector. + + Valid arguments: `toggle`, `show`, `hide`. + + +**`show_gtk_inspector`** + +: Show the GTK inspector. + + Has no effect on macOS. + + +**`show_on_screen_keyboard`** + +: Show the on-screen keyboard if one is present. + + Only implemented on Linux (GTK). On GNOME, the "Screen Keyboard" + accessibility feature must be turned on, which can be found under + Settings > Accessibility > Typing. Other platforms are as of now + untested. + + +**`open_config`** + +: Open the configuration file in the default OS editor. + + If your default OS editor isn't configured then this will fail. + Currently, any failures to open the configuration will show up only in + the logs. + + +**`reload_config`** + +: Reload the configuration. + + The exact meaning depends on the app runtime in use, but this usually + involves re-reading the configuration file and applying any changes + Note that not all changes can be applied at runtime. + + +**`close_surface`** + +: Close the current "surface", whether that is a window, tab, split, etc. + + This might trigger a close confirmation popup, depending on the value + of the `confirm-close-surface` configuration setting. + + +**`close_tab`** + +: Close the current tab and all splits therein, close all other tabs, or + close every tab to the right of the current one depending on the mode. + + If the mode is not specified, defaults to closing the current tab. + + This might trigger a close confirmation popup, depending on the value + of the `confirm-close-surface` configuration setting. + + +**`close_window`** + +: Close the current window and all tabs and splits therein. + + This might trigger a close confirmation popup, depending on the value + of the `confirm-close-surface` configuration setting. + + +**`close_all_windows`** + +: Close all windows. + + WARNING: This action has been deprecated and has no effect on either + Linux or macOS. Users are instead encouraged to use `all:close_window` + instead. + + +**`toggle_maximize`** + +: Maximize or unmaximize the current window. + + This has no effect on macOS as it does not have the concept of + maximized windows. + + +**`toggle_fullscreen`** + +: Fullscreen or unfullscreen the current window. + + +**`toggle_window_decorations`** + +: Toggle window decorations (titlebar, buttons, etc.) for the current window. + + Only implemented on Linux. + + +**`toggle_window_float_on_top`** + +: Toggle whether the terminal window should always float on top of other + windows even when unfocused. + + Terminal windows always start as normal (not float-on-top) windows. + + Only implemented on macOS. + + +**`toggle_secure_input`** + +: Toggle secure input mode. + + This is used to prevent apps from monitoring your keyboard input + when entering passwords or other sensitive information. + + This applies to the entire application, not just the focused terminal. + You must manually untoggle it or quit Ghostty entirely to disable it. + + Only implemented on macOS, as this uses a built-in system API. + + +**`toggle_mouse_reporting`** + +: Toggle mouse reporting on or off. + + When mouse reporting is disabled, mouse events will not be reported to + terminal applications even if they request it. This allows you to always + use the mouse for selection and other terminal UI interactions without + applications capturing mouse input. + + This can also be controlled via the `mouse-reporting` configuration + option. + + +**`toggle_command_palette`** + +: Toggle the command palette. + + The command palette is a popup that lets you see what actions + you can perform, their associated keybindings (if any), a search bar + to filter the actions, and the ability to then execute the action. + + This requires libadwaita 1.5 or newer on Linux. The current libadwaita + version can be found by running `ghostty +version`. + + +**`toggle_quick_terminal`** + +: Toggle the quick terminal. + + The quick terminal, also known as the "Quake-style" or drop-down + terminal, is a terminal window that appears on demand from a keybinding, + often sliding in from a screen edge such as the top. This is useful for + quick access to a terminal without having to open a new window or tab. + + The terminal state is preserved between appearances, so showing the + quick terminal after it was already hidden would display the same + window instead of creating a new one. + + As quick terminals are often useful when other windows are currently + focused, they are best used with *global* keybinds. For example, one + can define the following key bind to toggle the quick terminal from + anywhere within the system by pressing `` Cmd+` ``: + + ```ini + keybind = global:cmd+backquote=toggle_quick_terminal + ``` + + The quick terminal has some limitations: + + - Only one quick terminal instance can exist at a time. + + - Unlike normal terminal windows, the quick terminal will not be + restored when the application is restarted on systems that support + window restoration like macOS. + + - On Linux, the quick terminal is only supported on Wayland and not + X11, and only on Wayland compositors that support the `wlr-layer-shell-v1` + protocol. In practice, this means that only GNOME users would not be + able to use this feature. + + - On Linux, slide-in animations are only supported on KDE, and when + the "Sliding Popups" KWin plugin is enabled. + + If you do not have this plugin enabled, open System Settings > Apps + & Windows > Window Management > Desktop Effects, and enable the + plugin in the plugin list. Ghostty would then need to be restarted + fully for this to take effect. + + - Quick terminal tabs are only supported on Linux and not on macOS. + This is because tabs on macOS require a title bar. + + - On macOS, a fullscreened quick terminal will always be in non-native + fullscreen mode. This is a requirement due to how the quick terminal + is rendered. + + See the various configurations for the quick terminal in the + configuration file to customize its behavior. + + +**`toggle_visibility`** + +: Show or hide all windows. If all windows become shown, we also ensure + Ghostty becomes focused. When hiding all windows, focus is yielded + to the next application as determined by the OS. + + Note: When the focused surface is fullscreen, this method does nothing. + + Only implemented on macOS. + + +**`toggle_background_opacity`** + +: Toggle the window background opacity between transparent and opaque. + + This does nothing when `background-opacity` is set to 1 or above. + + When `background-opacity` is less than 1, this action will either make + the window transparent or not depending on its current transparency state. + + Only implemented on macOS. + + +**`check_for_updates`** + +: Check for updates. + + Only implemented on macOS. + + +**`undo`** + +: Undo the last undoable action for the focused surface or terminal, + if possible. This can undo actions such as closing tabs or + windows. + + Not every action in Ghostty can be undone or redone. The list + of actions support undo/redo is currently limited to: + + - New window, close window + - New tab, close tab + - New split, close split + + All actions are only undoable/redoable for a limited time. + For example, restoring a closed split can only be done for + some number of seconds since the split was closed. The exact + amount is configured with the `undo-timeout` configuration settings. + + The undo/redo actions being limited ensures that there is + bounded memory usage over time, closed surfaces don't continue running + in the background indefinitely, and the keybinds become available + for terminal applications to use. + + Only implemented on macOS. + + +**`redo`** + +: Redo the last undoable action for the focused surface or terminal, + if possible. See "undo" for more details on what can and cannot + be undone or redone. + + +**`end_key_sequence`** + +: End the currently active key sequence, if any, and flush the + keys up to this point to the terminal, excluding the key that + triggered this action. + + For example: `ctrl+w>escape=end_key_sequence` would encode + `ctrl+w` to the terminal and exit the key sequence. + + Normally, an invalid sequence will reset the key sequence and + flush all data including the invalid key. This action allows + you to flush only the prior keys, which is useful when you want + to bind something like a control key (`ctrl+w`) but not send + additional inputs. + + +**`activate_key_table`** + +: Activate a named key table (see `keybind` configuration documentation). + The named key table will remain active until `deactivate_key_table` + is called. If you want a one-shot key table activation, use the + `activate_key_table_once` action instead. + + If the named key table does not exist, this action has no effect + and performable will report false. + + If the named key table is already the currently active key table, + this action has no effect and performable will report false. + + +**`activate_key_table_once`** + +: Same as activate_key_table, but the key table will only be active + until the first valid keybinding from that table is used (including + any defined `catch_all` bindings). + + The "once" check is only done if this is the currently active + key table. If another key table is activated later, then this + table will remain active until it pops back out to being the + active key table. + + +**`deactivate_key_table`** + +: Deactivate the currently active key table, if any. The next most + recently activated key table (if any) will become active again. + If no key table is active, this action has no effect. + + +**`deactivate_all_key_tables`** + +: Deactivate all active key tables. If no active key table exists, + this will report performable as false. + + +**`quit`** + +: Quit Ghostty. + + +**`crash`** + +: Crash Ghostty in the desired thread for the focused surface. + + WARNING: This is a hard crash (panic) and data can be lost. + + The purpose of this action is to test crash handling. For some + users, it may be useful to test crash reporting functionality in + order to determine if it all works as expected. + + The value determines the crash location: + + - `main` + + Crash on the main (GUI) thread. + + - `io` + + Crash on the IO thread for the focused surface. + + - `render` + + Crash on the render thread for the focused surface. + + + +# FILES + +_\$XDG_CONFIG_HOME/ghostty/config.ghostty_ + +: Location of the default configuration file. + +_\$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty_ + +: **On macOS**, location of the default configuration file. This location takes +precedence over the XDG environment locations. + +_\$LOCALAPPDATA/ghostty/config.ghostty_ + +: **On Windows**, if _\$XDG_CONFIG_HOME_ is not set, _\$LOCALAPPDATA_ will be searched +for configuration files. + +# ENVIRONMENT + +**XDG_CONFIG_HOME** + +: Default location for configuration files. + +**$HOME/Library/Application Support/com.mitchellh.ghostty** + +: **MACOS ONLY** default location for configuration files. This location takes +precedence over the XDG environment locations. + +**LOCALAPPDATA** + +: **WINDOWS ONLY:** alternate location to search for configuration files. + +# BUGS + +See GitHub issues: + +# AUTHOR + +Mitchell Hashimoto +Ghostty contributors + +# SEE ALSO + +**ghostty(1)** diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/bash-preexec.sh b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/bash-preexec.sh new file mode 100644 index 0000000..f20ece1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/bash-preexec.sh @@ -0,0 +1,382 @@ +# bash-preexec.sh -- Bash support for ZSH-like 'preexec' and 'precmd' functions. +# https://github.com/rcaloras/bash-preexec +# +# +# 'preexec' functions are executed before each interactive command is +# executed, with the interactive command as its argument. The 'precmd' +# function is executed before each prompt is displayed. +# +# Author: Ryan Caloras (ryan@bashhub.com) +# Forked from Original Author: Glyph Lefkowitz +# +# V0.6.0 +# + +# General Usage: +# +# 1. Source this file at the end of your bash profile so as not to interfere +# with anything else that's using PROMPT_COMMAND. +# +# 2. Add any precmd or preexec functions by appending them to their arrays: +# e.g. +# precmd_functions+=(my_precmd_function) +# precmd_functions+=(some_other_precmd_function) +# +# preexec_functions+=(my_preexec_function) +# +# 3. Consider changing anything using the DEBUG trap or PROMPT_COMMAND +# to use preexec and precmd instead. Preexisting usages will be +# preserved, but doing so manually may be less surprising. +# +# Note: This module requires two Bash features which you must not otherwise be +# using: the "DEBUG" trap, and the "PROMPT_COMMAND" variable. If you override +# either of these after bash-preexec has been installed it will most likely break. + +# Tell shellcheck what kind of file this is. +# shellcheck shell=bash + +# Make sure this is bash that's running and return otherwise. +# Use POSIX syntax for this line: +if [ -z "${BASH_VERSION-}" ]; then + return 1 +fi + +# We only support Bash 3.1+. +# Note: BASH_VERSINFO is first available in Bash-2.0. +if [[ -z "${BASH_VERSINFO-}" ]] || (( BASH_VERSINFO[0] < 3 || (BASH_VERSINFO[0] == 3 && BASH_VERSINFO[1] < 1) )); then + return 1 +fi + +# Avoid duplicate inclusion +if [[ -n "${bash_preexec_imported:-}" || -n "${__bp_imported:-}" ]]; then + return 0 +fi +bash_preexec_imported="defined" + +# WARNING: This variable is no longer used and should not be relied upon. +# Use ${bash_preexec_imported} instead. +# shellcheck disable=SC2034 +__bp_imported="${bash_preexec_imported}" + +# Should be available to each precmd and preexec +# functions, should they want it. $? and $_ are available as $? and $_, but +# $PIPESTATUS is available only in a copy, $BP_PIPESTATUS. +# TODO: Figure out how to restore PIPESTATUS before each precmd or preexec +# function. +__bp_last_ret_value="$?" +BP_PIPESTATUS=("${PIPESTATUS[@]}") +__bp_last_argument_prev_command="$_" + +__bp_inside_precmd=0 +__bp_inside_preexec=0 + +# Initial PROMPT_COMMAND string that is removed from PROMPT_COMMAND post __bp_install +__bp_install_string=$'__bp_trap_string="$(trap -p DEBUG)"\ntrap - DEBUG\n__bp_install' + +# Fails if any of the given variables are readonly +# Reference https://stackoverflow.com/a/4441178 +__bp_require_not_readonly() { + local var + for var; do + if ! ( unset "$var" 2> /dev/null ); then + echo "bash-preexec requires write access to ${var}" >&2 + return 1 + fi + done +} + +# Remove ignorespace and or replace ignoreboth from HISTCONTROL +# so we can accurately invoke preexec with a command from our +# history even if it starts with a space. +__bp_adjust_histcontrol() { + local histcontrol + histcontrol="${HISTCONTROL:-}" + histcontrol="${histcontrol//ignorespace}" + # Replace ignoreboth with ignoredups + if [[ "$histcontrol" == *"ignoreboth"* ]]; then + histcontrol="ignoredups:${histcontrol//ignoreboth}" + fi + export HISTCONTROL="$histcontrol" +} + +# This variable describes whether we are currently in "interactive mode"; +# i.e. whether this shell has just executed a prompt and is waiting for user +# input. It documents whether the current command invoked by the trace hook is +# run interactively by the user; it's set immediately after the prompt hook, +# and unset as soon as the trace hook is run. +__bp_preexec_interactive_mode="" + +# These arrays are used to add functions to be run before, or after, prompts. +declare -a precmd_functions +declare -a preexec_functions + +# Trims leading and trailing whitespace from $2 and writes it to the variable +# name passed as $1 +__bp_trim_whitespace() { + local var=${1:?} text=${2:-} + text="${text#"${text%%[![:space:]]*}"}" # remove leading whitespace characters + text="${text%"${text##*[![:space:]]}"}" # remove trailing whitespace characters + printf -v "$var" '%s' "$text" +} + + +# Trims whitespace and removes any leading or trailing semicolons from $2 and +# writes the resulting string to the variable name passed as $1. Used for +# manipulating substrings in PROMPT_COMMAND +__bp_sanitize_string() { + local var=${1:?} text=${2:-} sanitized + __bp_trim_whitespace sanitized "$text" + sanitized=${sanitized%;} + sanitized=${sanitized#;} + __bp_trim_whitespace sanitized "$sanitized" + printf -v "$var" '%s' "$sanitized" +} + +# This function is installed as part of the PROMPT_COMMAND; +# It sets a variable to indicate that the prompt was just displayed, +# to allow the DEBUG trap to know that the next command is likely interactive. +__bp_interactive_mode() { + __bp_preexec_interactive_mode="on" +} + + +# This function is installed as part of the PROMPT_COMMAND. +# It will invoke any functions defined in the precmd_functions array. +__bp_precmd_invoke_cmd() { + # Save the returned value from our last command, and from each process in + # its pipeline. Note: this MUST be the first thing done in this function. + # BP_PIPESTATUS may be unused, ignore + # shellcheck disable=SC2034 + + __bp_last_ret_value="$?" BP_PIPESTATUS=("${PIPESTATUS[@]}") + + # Don't invoke precmds if we are inside an execution of an "original + # prompt command" by another precmd execution loop. This avoids infinite + # recursion. + if (( __bp_inside_precmd > 0 )); then + return + fi + local __bp_inside_precmd=1 + + # Invoke every function defined in our function array. + local precmd_function + for precmd_function in "${precmd_functions[@]}"; do + + # Only execute this function if it actually exists. + # Test existence of functions with: declare -[Ff] + if type -t "$precmd_function" 1>/dev/null; then + __bp_set_ret_value "$__bp_last_ret_value" "$__bp_last_argument_prev_command" + # Quote our function invocation to prevent issues with IFS + "$precmd_function" + fi + done + + __bp_set_ret_value "$__bp_last_ret_value" +} + +# Sets a return value in $?. We may want to get access to the $? variable in our +# precmd functions. This is available for instance in zsh. We can simulate it in bash +# by setting the value here. +__bp_set_ret_value() { + return ${1:+"$1"} +} + +__bp_in_prompt_command() { + + local prompt_command_array IFS=$'\n;' + read -rd '' -a prompt_command_array <<< "${PROMPT_COMMAND[*]:-}" + + local trimmed_arg + __bp_trim_whitespace trimmed_arg "${1:-}" + + local command trimmed_command + for command in "${prompt_command_array[@]:-}"; do + __bp_trim_whitespace trimmed_command "$command" + if [[ "$trimmed_command" == "$trimmed_arg" ]]; then + return 0 + fi + done + + return 1 +} + +# This function is installed as the DEBUG trap. It is invoked before each +# interactive prompt display. Its purpose is to inspect the current +# environment to attempt to detect if the current command is being invoked +# interactively, and invoke 'preexec' if so. +__bp_preexec_invoke_exec() { + + # Save the contents of $_ so that it can be restored later on. + # https://stackoverflow.com/questions/40944532/bash-preserve-in-a-debug-trap#40944702 + __bp_last_argument_prev_command="${1:-}" + # Don't invoke preexecs if we are inside of another preexec. + if (( __bp_inside_preexec > 0 )); then + return + fi + local __bp_inside_preexec=1 + + # Checks if the file descriptor is not standard out (i.e. '1') + # __bp_delay_install checks if we're in test. Needed for bats to run. + # Prevents preexec from being invoked for functions in PS1 + if [[ ! -t 1 && -z "${__bp_delay_install:-}" ]]; then + return + fi + + if [[ -n "${COMP_POINT:-}" || -n "${READLINE_POINT:-}" ]]; then + # We're in the middle of a completer or a keybinding set up by "bind + # -x". This obviously can't be an interactively issued command. + return + fi + if [[ -z "${__bp_preexec_interactive_mode:-}" ]]; then + # We're doing something related to displaying the prompt. Let the + # prompt set the title instead of me. + return + else + # If we're in a subshell, then the prompt won't be re-displayed to put + # us back into interactive mode, so let's not set the variable back. + # In other words, if you have a subshell like + # (sleep 1; sleep 2) + # You want to see the 'sleep 2' as a set_command_title as well. + if [[ 0 -eq "${BASH_SUBSHELL:-}" ]]; then + __bp_preexec_interactive_mode="" + fi + fi + + if __bp_in_prompt_command "${BASH_COMMAND:-}"; then + # If we're executing something inside our prompt_command then we don't + # want to call preexec. Bash prior to 3.1 can't detect this at all :/ + __bp_preexec_interactive_mode="" + return + fi + + local this_command + this_command=$(LC_ALL=C HISTTIMEFORMAT='' builtin history 1) + this_command="${this_command#*[[:digit:]][* ] }" + + # Sanity check to make sure we have something to invoke our function with. + if [[ -z "$this_command" ]]; then + return + fi + + # Invoke every function defined in our function array. + local preexec_function + local preexec_function_ret_value + local preexec_ret_value=0 + for preexec_function in "${preexec_functions[@]:-}"; do + + # Only execute each function if it actually exists. + # Test existence of function with: declare -[fF] + if type -t "$preexec_function" 1>/dev/null; then + __bp_set_ret_value "${__bp_last_ret_value:-}" + # Quote our function invocation to prevent issues with IFS + "$preexec_function" "$this_command" + preexec_function_ret_value="$?" + if [[ "$preexec_function_ret_value" != 0 ]]; then + preexec_ret_value="$preexec_function_ret_value" + fi + fi + done + + # Restore the last argument of the last executed command, and set the return + # value of the DEBUG trap to be the return code of the last preexec function + # to return an error. + # If `extdebug` is enabled a non-zero return value from any preexec function + # will cause the user's command not to execute. + # Run `shopt -s extdebug` to enable + __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command" +} + +__bp_install() { + # Exit if we already have this installed. + if [[ "${PROMPT_COMMAND[*]:-}" == *"__bp_precmd_invoke_cmd"* ]]; then + return 1 + fi + + trap '__bp_preexec_invoke_exec "$_"' DEBUG + + # Preserve any prior DEBUG trap as a preexec function + eval "local trap_argv=(${__bp_trap_string:-})" + local prior_trap=${trap_argv[2]:-} + unset __bp_trap_string + if [[ -n "$prior_trap" ]]; then + eval '__bp_original_debug_trap() { + '"$prior_trap"' + }' + preexec_functions+=(__bp_original_debug_trap) + fi + + # Adjust our HISTCONTROL Variable if needed. + # + # GHOSTTY: Don't modify HISTCONTROL. This hack is only needed to improve the + # accuracy of the command argument passed to the preexec functions, and we + # don't use that argument in our bash shell integration script (and nor does + # the __bp_original_debug_trap function above, which is the only other active + # preexec function). + #__bp_adjust_histcontrol + + # Issue #25. Setting debug trap for subshells causes sessions to exit for + # backgrounded subshell commands (e.g. (pwd)& ). Believe this is a bug in Bash. + # + # Disabling this by default. It can be enabled by setting this variable. + if [[ -n "${__bp_enable_subshells:-}" ]]; then + + # Set so debug trap will work be invoked in subshells. + set -o functrace > /dev/null 2>&1 + shopt -s extdebug > /dev/null 2>&1 + fi + + local existing_prompt_command + # Remove setting our trap install string and sanitize the existing prompt command string + existing_prompt_command="${PROMPT_COMMAND:-}" + # Edge case of appending to PROMPT_COMMAND + existing_prompt_command="${existing_prompt_command//$__bp_install_string/:}" # no-op + existing_prompt_command="${existing_prompt_command//$'\n':$'\n'/$'\n'}" # remove known-token only + existing_prompt_command="${existing_prompt_command//$'\n':;/$'\n'}" # remove known-token only + __bp_sanitize_string existing_prompt_command "$existing_prompt_command" + if [[ "${existing_prompt_command:-:}" == ":" ]]; then + existing_prompt_command= + fi + + # Install our hooks in PROMPT_COMMAND to allow our trap to know when we've + # actually entered something. + PROMPT_COMMAND='__bp_precmd_invoke_cmd' + PROMPT_COMMAND+=${existing_prompt_command:+$'\n'$existing_prompt_command} + if (( BASH_VERSINFO[0] > 5 || (BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 1) )); then + PROMPT_COMMAND+=('__bp_interactive_mode') + else + # shellcheck disable=SC2179 # PROMPT_COMMAND is not an array in bash <= 5.0 + PROMPT_COMMAND+=$'\n__bp_interactive_mode' + fi + + # Add two functions to our arrays for convenience + # of definition. + precmd_functions+=(precmd) + preexec_functions+=(preexec) + + # Invoke our two functions manually that were added to $PROMPT_COMMAND + __bp_precmd_invoke_cmd + __bp_interactive_mode +} + +# Sets an installation string as part of our PROMPT_COMMAND to install +# after our session has started. This allows bash-preexec to be included +# at any point in our bash profile. +__bp_install_after_session_init() { + # bash-preexec needs to modify these variables in order to work correctly + # if it can't, just stop the installation + __bp_require_not_readonly PROMPT_COMMAND HISTCONTROL HISTTIMEFORMAT || return + + local sanitized_prompt_command + __bp_sanitize_string sanitized_prompt_command "${PROMPT_COMMAND:-}" + if [[ -n "$sanitized_prompt_command" ]]; then + # shellcheck disable=SC2178 # PROMPT_COMMAND is not an array in bash <= 5.0 + PROMPT_COMMAND=${sanitized_prompt_command}$'\n' + fi + # shellcheck disable=SC2179 # PROMPT_COMMAND is not an array in bash <= 5.0 + PROMPT_COMMAND+=${__bp_install_string} +} + +# Run our install so long as we're not delaying it. +if [[ -z "${__bp_delay_install:-}" ]]; then + __bp_install_after_session_init +fi diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/ghostty.bash b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/ghostty.bash new file mode 100644 index 0000000..48c8916 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/bash/ghostty.bash @@ -0,0 +1,315 @@ +# Parts of this script are based on Kitty's bash integration. Kitty is +# distributed under GPLv3, so this file is also distributed under GPLv3. +# The license header is reproduced below: +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# We need to be in interactive mode to proceed. +if [[ "$-" != *i* ]]; then builtin return; fi + +# When automatic shell integration is active, we were started in POSIX +# mode and need to manually recreate the bash startup sequence. +if [ -n "$GHOSTTY_BASH_INJECT" ]; then + # Store a temporary copy of our startup flags and unset these global + # environment variables so we can safely handle reentrancy. + builtin declare __ghostty_bash_flags="$GHOSTTY_BASH_INJECT" + builtin unset ENV GHOSTTY_BASH_INJECT + + # Restore an existing ENV that was replaced by the shell integration code. + if [[ -n "$GHOSTTY_BASH_ENV" ]]; then + builtin export ENV=$GHOSTTY_BASH_ENV + builtin unset GHOSTTY_BASH_ENV + fi + + # Restore bash's default 'posix' behavior. Also reset 'inherit_errexit', + # which doesn't happen as part of the 'posix' reset. + builtin set +o posix + builtin shopt -u inherit_errexit 2>/dev/null + + # Unexport HISTFILE if it was set by the shell integration code. + if [[ -n "$GHOSTTY_BASH_UNEXPORT_HISTFILE" ]]; then + builtin export -n HISTFILE + builtin unset GHOSTTY_BASH_UNEXPORT_HISTFILE + fi + + # Manually source the startup files. See INVOCATION in bash(1) and + # run_startup_files() in shell.c in the Bash source code. + if builtin shopt -q login_shell; then + if [[ $__ghostty_bash_flags != *"--noprofile"* ]]; then + [ -r /etc/profile ] && builtin source "/etc/profile" + for __ghostty_rcfile in "$HOME/.bash_profile" "$HOME/.bash_login" "$HOME/.profile"; do + [ -r "$__ghostty_rcfile" ] && { + builtin source "$__ghostty_rcfile" + break + } + done + fi + else + if [[ $__ghostty_bash_flags != *"--norc"* ]]; then + # The location of the system bashrc is determined at bash build + # time via -DSYS_BASHRC and can therefore vary across distros: + # Arch, Debian, Ubuntu use /etc/bash.bashrc + # Fedora uses /etc/bashrc sourced from ~/.bashrc instead of SYS_BASHRC + # Void Linux uses /etc/bash/bashrc + # Nixos uses /etc/bashrc + for __ghostty_rcfile in /etc/bash.bashrc /etc/bash/bashrc /etc/bashrc; do + [ -r "$__ghostty_rcfile" ] && { + builtin source "$__ghostty_rcfile" + break + } + done + if [[ -z "$GHOSTTY_BASH_RCFILE" ]]; then GHOSTTY_BASH_RCFILE="$HOME/.bashrc"; fi + [ -r "$GHOSTTY_BASH_RCFILE" ] && builtin source "$GHOSTTY_BASH_RCFILE" + fi + fi + + builtin unset __ghostty_rcfile + builtin unset __ghostty_bash_flags + builtin unset GHOSTTY_BASH_RCFILE +fi + +# Add Ghostty binary to PATH if the path feature is enabled +if [[ "$GHOSTTY_SHELL_FEATURES" == *"path"* && -n "$GHOSTTY_BIN_DIR" ]]; then + if [[ ":$PATH:" != *":$GHOSTTY_BIN_DIR:"* ]]; then + export PATH="$PATH:$GHOSTTY_BIN_DIR" + fi +fi + +# Sudo +if [[ "$GHOSTTY_SHELL_FEATURES" == *"sudo"* && -n "$TERMINFO" ]]; then + # Wrap `sudo` command to ensure Ghostty terminfo is preserved. + # + # This approach supports wrapping a `sudo` alias, but the alias definition + # must come _after_ this function is defined. Otherwise, the alias expansion + # will take precedence over this function, and it won't be wrapped. + function sudo { + builtin local sudo_has_sudoedit_flags="no" + for arg in "$@"; do + # Check if argument is '-e' or '--edit' (sudoedit flags) + if [[ "$arg" == "-e" || $arg == "--edit" ]]; then + sudo_has_sudoedit_flags="yes" + builtin break + fi + # Check if argument is neither an option nor a key-value pair + if [[ "$arg" != -* && "$arg" != *=* ]]; then + builtin break + fi + done + if [[ "$sudo_has_sudoedit_flags" == "yes" ]]; then + builtin command sudo "$@" + else + builtin command sudo --preserve-env=TERMINFO "$@" + fi + } +fi + +# SSH Integration +if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-* ]]; then + function ssh() { + builtin local ssh_term ssh_opts + ssh_term="xterm-256color" + ssh_opts=() + + # Configure environment variables for remote session + if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-env* ]]; then + ssh_opts+=(-o "SetEnv COLORTERM=truecolor") + ssh_opts+=(-o "SendEnv TERM_PROGRAM TERM_PROGRAM_VERSION") + fi + + # Install terminfo on remote host if needed + if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-terminfo* ]]; then + builtin local ssh_user ssh_hostname + + while IFS=' ' read -r ssh_key ssh_value; do + case "$ssh_key" in + user) ssh_user="$ssh_value" ;; + hostname) ssh_hostname="$ssh_value" ;; + esac + [[ -n "$ssh_user" && -n "$ssh_hostname" ]] && break + done < <(builtin command ssh -G "$@" 2>/dev/null) + + if [[ -n "$ssh_hostname" ]]; then + builtin local ssh_target="${ssh_user}@${ssh_hostname}" + + # Check if terminfo is already cached + if "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --host="$ssh_target" >/dev/null 2>&1; then + ssh_term="xterm-ghostty" + elif builtin command -v infocmp >/dev/null 2>&1; then + builtin local ssh_terminfo ssh_cpath_dir ssh_cpath + + ssh_terminfo=$(infocmp -0 -x xterm-ghostty 2>/dev/null) + + if [[ -n "$ssh_terminfo" ]]; then + builtin echo "Setting up xterm-ghostty terminfo on $ssh_hostname..." >&2 + + ssh_cpath_dir=$(mktemp -d "/tmp/ghostty-ssh-$ssh_user.XXXXXX" 2>/dev/null) || ssh_cpath_dir="/tmp/ghostty-ssh-$ssh_user.$$" + ssh_cpath="$ssh_cpath_dir/socket" + + if builtin echo "$ssh_terminfo" | builtin command ssh -o ControlMaster=yes -o ControlPath="$ssh_cpath" -o ControlPersist=60s "$@" ' + infocmp xterm-ghostty >/dev/null 2>&1 && exit 0 + command -v tic >/dev/null 2>&1 || exit 1 + mkdir -p ~/.terminfo 2>/dev/null && tic -x - 2>/dev/null && exit 0 + exit 1 + ' 2>/dev/null; then + ssh_term="xterm-ghostty" + ssh_opts+=(-o "ControlPath=$ssh_cpath") + + # Cache successful installation + "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --add="$ssh_target" >/dev/null 2>&1 || true + else + builtin echo "Warning: Failed to install terminfo." >&2 + fi + else + builtin echo "Warning: Could not generate terminfo data." >&2 + fi + else + builtin echo "Warning: ghostty command not available for cache management." >&2 + fi + fi + fi + + # Execute SSH with TERM environment variable + TERM="$ssh_term" builtin command ssh "${ssh_opts[@]}" "$@" + } +fi + +# This is set to 1 when we're executing a command so that we don't +# send prompt marks multiple times. +_ghostty_executing="" +_ghostty_last_reported_cwd="" + +function __ghostty_precmd() { + local ret="$?" + if test "$_ghostty_executing" != "0"; then + _GHOSTTY_SAVE_PS1="$PS1" + _GHOSTTY_SAVE_PS2="$PS2" + + # Use 133;P (not 133;A) inside PS1 to avoid fresh-line behavior on + # readline redraws (e.g., vi mode switches, Ctrl-L). The initial + # 133;A with fresh-line is emitted once via printf below. + PS1='\[\e]133;P;k=i\a\]'$PS1'\[\e]133;B\a\]' + PS2='\[\e]133;P;k=s\a\]'$PS2'\[\e]133;B\a\]' + + # Bash doesn't redraw the leading lines in a multiline prompt so we mark + # the start of each line (after each newline) as a secondary prompt. This + # correctly handles multiline prompts by setting the first to primary and + # the subsequent lines to secondary. + # + # We only replace the \n prompt escape, not literal newlines ($'\n'), + # because literal newlines may appear inside $(...) command substitutions + # where inserting escape sequences would break shell syntax. + if [[ "$PS1" == *"\n"* ]]; then + PS1="${PS1//\\n/\\n$'\\[\\e]133;P;k=s\\a\\]'}" + fi + + # Cursor + if [[ "$GHOSTTY_SHELL_FEATURES" == *"cursor"* ]]; then + builtin local cursor=5 # blinking bar + [[ "$GHOSTTY_SHELL_FEATURES" == *"cursor:steady"* ]] && cursor=6 # steady bar + + [[ "$PS1" != *"\[\e[${cursor} q\]"* ]] && PS1=$PS1"\[\e[${cursor} q\]" + [[ "$PS0" != *'\[\e[0 q\]'* ]] && PS0=$PS0'\[\e[0 q\]' # reset + fi + + # Title (working directory) + if [[ "$GHOSTTY_SHELL_FEATURES" == *"title"* ]]; then + PS1=$PS1'\[\e]2;\w\a\]' + fi + fi + + if test "$_ghostty_executing" != ""; then + # End of current command. Report its status. + builtin printf "\e]133;D;%s;aid=%s\a" "$ret" "$BASHPID" + fi + + # Fresh line and start of prompt. + builtin printf "\e]133;A;redraw=last;cl=line;aid=%s\a" "$BASHPID" + + # unfortunately bash provides no hooks to detect cwd changes + # in particular this means cwd reporting will not happen for a + # command like cd /test && cat. PS0 is evaluated before cd is run. + if [[ "$_ghostty_last_reported_cwd" != "$PWD" ]]; then + _ghostty_last_reported_cwd="$PWD" + builtin printf "\e]7;kitty-shell-cwd://%s%s\a" "$HOSTNAME" "$PWD" + fi + + _ghostty_executing=0 +} + +function __ghostty_preexec() { + builtin local cmd="$1" + + PS1="$_GHOSTTY_SAVE_PS1" + PS2="$_GHOSTTY_SAVE_PS2" + + # Title (current command) + if [[ -n $cmd && "$GHOSTTY_SHELL_FEATURES" == *"title"* ]]; then + builtin printf "\e]2;%s\a" "${cmd//[[:cntrl:]]/}" + fi + + # End of input, start of output. + builtin printf "\e]133;C;\a" + _ghostty_executing=1 +} + +if (( BASH_VERSINFO[0] > 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 4) )); then + __ghostty_preexec_hook() { + builtin local cmd + cmd=$(LC_ALL=C HISTTIMEFORMAT='' builtin history 1) + cmd="${cmd#*[[:digit:]][* ] }" # remove leading history number + [[ -n "$cmd" ]] && __ghostty_preexec "$cmd" + } + + # Use function substitution in 5.3+. Otherwise, use command substitution. + # Any output (including escape sequences) goes to the terminal. + # Only define if not already set (allows re-sourcing). + if [[ -z "${__ghostty_ps0+x}" ]]; then + if (( BASH_VERSINFO[0] > 5 || (BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 3) )); then + # shellcheck disable=SC2016 + builtin readonly __ghostty_ps0='${ __ghostty_preexec_hook; }' + else + # shellcheck disable=SC2016 + builtin readonly __ghostty_ps0='$(__ghostty_preexec_hook >/dev/tty)' + fi + fi + + __ghostty_hook() { + builtin local ret=$? + __ghostty_precmd "$ret" + if [[ "$PS0" != *"$__ghostty_ps0"* ]]; then + PS0=$PS0"${__ghostty_ps0}" + fi + } + + # Append our hook to PROMPT_COMMAND, preserving its existing type. + # shellcheck disable=SC2128,SC2178,SC2179 + if [[ ";${PROMPT_COMMAND[*]:-};" != *";__ghostty_hook;"* ]]; then + if [[ -z "${PROMPT_COMMAND[*]}" ]]; then + if (( BASH_VERSINFO[0] > 5 || (BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 1) )); then + PROMPT_COMMAND=(__ghostty_hook) + else + PROMPT_COMMAND="__ghostty_hook" + fi + elif [[ $(builtin declare -p PROMPT_COMMAND 2>/dev/null) == "declare -a "* ]]; then + PROMPT_COMMAND+=(__ghostty_hook) + else + [[ "${PROMPT_COMMAND}" =~ \;[[:space:]]*$ ]] || PROMPT_COMMAND+=";" + PROMPT_COMMAND+=" __ghostty_hook" + fi + fi +else + builtin source "$(dirname -- "${BASH_SOURCE[0]}")/bash-preexec.sh" + preexec_functions+=(__ghostty_preexec) + precmd_functions+=(__ghostty_precmd) +fi diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/elvish/lib/ghostty-integration.elv b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/elvish/lib/ghostty-integration.elv new file mode 100644 index 0000000..87fd0a9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/elvish/lib/ghostty-integration.elv @@ -0,0 +1,191 @@ +{ + use platform + use str + + # Clean up XDG_DATA_DIRS by removing GHOSTTY_SHELL_INTEGRATION_XDG_DIR + if (and (has-env GHOSTTY_SHELL_INTEGRATION_XDG_DIR) (has-env XDG_DATA_DIRS)) { + set-env XDG_DATA_DIRS (str:replace $E:GHOSTTY_SHELL_INTEGRATION_XDG_DIR":" "" $E:XDG_DATA_DIRS) + unset-env GHOSTTY_SHELL_INTEGRATION_XDG_DIR + } + + # List of enabled shell integration features + var features = [(str:split ',' $E:GHOSTTY_SHELL_FEATURES)] + + # State tracking for semantic prompt sequences + # Values: 'prompt-start', 'pre-exec', 'post-exec' + fn set-prompt-state {|new| set-env __ghostty_prompt_state $new } + + fn mark-prompt-start { + if (not-eq $E:__ghostty_prompt_state 'prompt-start') { + printf "\e]133;D;aid="$pid"\a" + } + set-prompt-state 'prompt-start' + printf "\e]133;A;aid="$pid"\a" + } + + fn mark-output-start {|_| + set-prompt-state 'pre-exec' + printf "\e]133;C\a" + } + + fn mark-output-end {|cmd-info| + set-prompt-state 'post-exec' + + var exit-status = 0 + + # in case of error: retrieve exit status, + # unless does not exist (= builtin function failure), then default to 1 + if (not-eq $nil $cmd-info[error]) { + set exit-status = 1 + + if (has-key $cmd-info[error] reason) { + if (has-key $cmd-info[error][reason] exit-status) { + set exit-status = $cmd-info[error][reason][exit-status] + } + } + } + + printf "\e]133;D;"$exit-status";aid="$pid"\a" + } + + # NOTE: OSC 133;B (end of prompt, start of input) cannot be reliably + # implemented at the script level in Elvish. The prompt function's output is + # escaped, and writing to /dev/tty has timing issues because Elvish renders + # its prompts on a background thread. Full semantic prompt support requires a + # native implementation: https://github.com/elves/elvish/pull/1917 + + fn sudo-with-terminfo {|@args| + var sudoedit = $false + for arg $args { + if (str:has-prefix $arg --) { + if (eq $arg --edit) { + set sudoedit = $true + break + } + } elif (str:has-prefix $arg -) { + if (str:contains (str:trim-prefix $arg -) e) { + set sudoedit = $true + break + } + } elif (not (str:contains $arg =)) { + break + } + } + + if (not $sudoedit) { set args = [ --preserve-env=TERMINFO $@args ] } + (external sudo) $@args + } + + fn ssh-integration {|@args| + var ssh-term = "xterm-256color" + var ssh-opts = [] + + # Configure environment variables for remote session + if (has-value $features ssh-env) { + set ssh-opts = (conj $ssh-opts ^ + -o "SetEnv COLORTERM=truecolor" ^ + -o "SendEnv TERM_PROGRAM TERM_PROGRAM_VERSION") + } + + if (has-value $features ssh-terminfo) { + var ssh-user = "" + var ssh-hostname = "" + + # Parse ssh config + for line [((external ssh) -G $@args)] { + var parts = [(str:fields $line)] + if (> (count $parts) 1) { + var ssh-key = $parts[0] + var ssh-value = $parts[1] + if (eq $ssh-key user) { + set ssh-user = $ssh-value + } elif (eq $ssh-key hostname) { + set ssh-hostname = $ssh-value + } + if (and (not-eq $ssh-user "") (not-eq $ssh-hostname "")) { + break + } + } + } + + if (not-eq $ssh-hostname "") { + var ghostty = $E:GHOSTTY_BIN_DIR/"ghostty" + var ssh-target = $ssh-user"@"$ssh-hostname + + # Check if terminfo is already cached + if (bool ?($ghostty +ssh-cache --host=$ssh-target)) { + set ssh-term = "xterm-ghostty" + } elif (has-external infocmp) { + var ssh-terminfo = ((external infocmp) -0 -x xterm-ghostty 2>/dev/null | slurp) + + if (not-eq $ssh-terminfo "") { + echo "Setting up xterm-ghostty terminfo on "$ssh-hostname"..." >&2 + + use os + var ssh-cpath-dir = (os:temp-dir "ghostty-ssh-"$ssh-user".*") + var ssh-cpath = $ssh-cpath-dir"/socket" + + if (bool ?(echo $ssh-terminfo | (external ssh) $@ssh-opts -o ControlMaster=yes -o ControlPath=$ssh-cpath -o ControlPersist=60s $@args ' + infocmp xterm-ghostty >/dev/null 2>&1 && exit 0 + command -v tic >/dev/null 2>&1 || exit 1 + mkdir -p ~/.terminfo 2>/dev/null && tic -x - 2>/dev/null && exit 0 + exit 1 + ' 2>/dev/null)) { + set ssh-term = "xterm-ghostty" + set ssh-opts = (conj $ssh-opts -o ControlPath=$ssh-cpath) + + # Cache successful installation + $ghostty +ssh-cache --add=$ssh-target >/dev/null + } else { + echo "Warning: Failed to install terminfo." >&2 + } + } else { + echo "Warning: Could not generate terminfo data." >&2 + } + } else { + echo "Warning: ghostty command not available for cache management." >&2 + } + } + } + + with [E:TERM = $ssh-term] { + (external ssh) $@ssh-opts $@args + } + } + + defer { + mark-prompt-start + } + + set edit:before-readline = (conj $edit:before-readline $mark-prompt-start~) + set edit:after-readline = (conj $edit:after-readline $mark-output-start~) + set edit:after-command = (conj $edit:after-command $mark-output-end~) + + if (str:contains $E:GHOSTTY_SHELL_FEATURES "cursor") { + var cursor = "5" # blinking bar + if (has-value $features cursor:steady) { + set cursor = "6" # steady bar + } + + fn beam { printf "\e["$cursor" q" } + fn reset { printf "\e[0 q" } + set edit:before-readline = (conj $edit:before-readline $beam~) + set edit:after-readline = (conj $edit:after-readline {|_| reset }) + } + if (and (has-value $features path) (has-env GHOSTTY_BIN_DIR)) { + if (not (has-value $paths $E:GHOSTTY_BIN_DIR)) { + set paths = [$@paths $E:GHOSTTY_BIN_DIR] + } + } + if (and (has-value $features sudo) (not-eq "" $E:TERMINFO) (has-external sudo)) { + edit:add-var sudo~ $sudo-with-terminfo~ + } + if (and (str:contains $E:GHOSTTY_SHELL_FEATURES ssh-) (has-external ssh)) { + edit:add-var ssh~ $ssh-integration~ + } + + # Report changes to the current directory. + fn report-pwd { printf "\e]7;kitty-shell-cwd://%s%s\a" (platform:hostname) $pwd } + set after-chdir = (conj $after-chdir {|_| report-pwd }) + report-pwd +} diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish new file mode 100644 index 0000000..3f1f609 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish @@ -0,0 +1,246 @@ +# This shell script aims to be written in a way where it can't really fail +# or all failure scenarios are handled, so that we never leave the shell in +# a weird state. If you find a way to break this, please report a bug! + +function ghostty_restore_xdg_data_dir -d "restore the original XDG_DATA_DIR value" + # If we don't have our own data dir then we don't need to do anything. + if not set -q GHOSTTY_SHELL_INTEGRATION_XDG_DIR + return + end + + # If the data dir isn't set at all then we don't need to do anything. + if not set -q XDG_DATA_DIRS + return + end + + # We need to do this so that XDG_DATA_DIRS turns into an array. + set --function --path xdg_data_dirs "$XDG_DATA_DIRS" + + # If our data dir is in the list then remove it. + if set --function index (contains --index "$GHOSTTY_SHELL_INTEGRATION_XDG_DIR" $xdg_data_dirs) + set --erase --function xdg_data_dirs[$index] + end + + # Re-export our data dir + if set -q xdg_data_dirs[1] + set --global --export --unpath XDG_DATA_DIRS "$xdg_data_dirs" + else + set --erase --global XDG_DATA_DIRS + end + + set --erase GHOSTTY_SHELL_INTEGRATION_XDG_DIR +end + +function ghostty_exit -d "exit the shell integration setup" + functions -e ghostty_restore_xdg_data_dir + functions -e ghostty_exit + exit 0 +end + +# We always try to restore the XDG data dir +ghostty_restore_xdg_data_dir + +# If we aren't interactive or we've already run, don't run. +status --is-interactive || ghostty_exit + +# We do the full setup on the first prompt render. We do this so that other +# shell integrations that setup the prompt and modify things are able to run +# first. We want to run _last_. +function __ghostty_setup --on-event fish_prompt -d "Setup ghostty integration" + functions -e __ghostty_setup + + set --local features (string split , $GHOSTTY_SHELL_FEATURES) + + # Parse the fish version for feature detection. + # Default to 0.0 if version is unavailable or malformed. + set -l fish_major 0 + set -l fish_minor 0 + if set -q version[1] + set -l fish_ver (string match -r '(\d+)\.(\d+)' -- $version[1]) + if set -q fish_ver[2]; and test -n "$fish_ver[2]" + set fish_major "$fish_ver[2]" + end + if set -q fish_ver[3]; and test -n "$fish_ver[3]" + set fish_minor "$fish_ver[3]" + end + end + + # Our OSC133A (prompt start) sequence. If we're using Fish >= 4.1 + # then it supports click_events so we enable that. + set -g __ghostty_prompt_start_mark "\e]133;A\a" + if test "$fish_major" -gt 4; or test "$fish_major" -eq 4 -a "$fish_minor" -ge 1 + set -g __ghostty_prompt_start_mark "\e]133;A;click_events=1\a" + end + + if string match -q 'cursor*' -- $features + set -l cursor 5 # blinking bar + contains cursor:steady $features && set cursor 6 # steady bar + + # Change the cursor to a beam on prompt. + function __ghostty_set_cursor_beam --on-event fish_prompt -V cursor -d "Set cursor shape" + if not functions -q fish_vi_cursor_handle + echo -en "\e[$cursor q" + end + end + function __ghostty_reset_cursor --on-event fish_preexec -d "Reset cursor shape" + if not functions -q fish_vi_cursor_handle + echo -en "\e[0 q" + end + end + end + + # Add Ghostty binary to PATH if the path feature is enabled + if contains path $features; and test -n "$GHOSTTY_BIN_DIR" + fish_add_path --global --path --append "$GHOSTTY_BIN_DIR" + end + + # When using sudo shell integration feature, ensure $TERMINFO is set + # and `sudo` is not already a function or alias + if contains sudo $features; and test -n "$TERMINFO"; and test file = (type -t sudo 2> /dev/null; or echo "x") + # Wrap `sudo` command to ensure Ghostty terminfo is preserved + function sudo -d "Wrap sudo to preserve terminfo" + set --function sudo_has_sudoedit_flags no + for arg in $argv + # Check if argument is '-e' or '--edit' (sudoedit flags) + if string match -q -- -e "$arg"; or string match -q -- --edit "$arg" + set --function sudo_has_sudoedit_flags yes + break + end + # Check if argument is neither an option nor a key-value pair + if not string match -r -q -- "^-" "$arg"; and not string match -r -q -- "=" "$arg" + break + end + end + if test "$sudo_has_sudoedit_flags" = yes + command sudo $argv + else + command sudo --preserve-env=TERMINFO $argv + end + end + end + + # SSH Integration + set -l features (string split ',' -- "$GHOSTTY_SHELL_FEATURES") + if contains ssh-env $features; or contains ssh-terminfo $features + function ssh --wraps=ssh --description "SSH wrapper with Ghostty integration" + set -l features (string split ',' -- "$GHOSTTY_SHELL_FEATURES") + set -l ssh_term xterm-256color + set -l ssh_opts + + # Configure environment variables for remote session + if contains ssh-env $features + set -a ssh_opts -o "SetEnv COLORTERM=truecolor" + set -a ssh_opts -o "SendEnv TERM_PROGRAM TERM_PROGRAM_VERSION" + end + + # Install terminfo on remote host if needed + if contains ssh-terminfo $features + set -l ssh_user + set -l ssh_hostname + + for line in (command ssh -G $argv 2>/dev/null) + set -l parts (string split ' ' -- $line) + if test (count $parts) -ge 2 + switch $parts[1] + case user + set ssh_user $parts[2] + case hostname + set ssh_hostname $parts[2] + end + if test -n "$ssh_user"; and test -n "$ssh_hostname" + break + end + end + end + + if test -n "$ssh_hostname" + set -l ssh_target "$ssh_user@$ssh_hostname" + + # Check if terminfo is already cached + if test -x "$GHOSTTY_BIN_DIR/ghostty"; and "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --host="$ssh_target" >/dev/null 2>&1 + set ssh_term xterm-ghostty + else if command -q infocmp + set -l ssh_terminfo + set -l ssh_cpath_dir + set -l ssh_cpath + + set ssh_terminfo "$(infocmp -0 -x xterm-ghostty 2>/dev/null)" + + if test -n "$ssh_terminfo" + echo "Setting up xterm-ghostty terminfo on $ssh_hostname..." >&2 + + set ssh_cpath_dir (mktemp -d "/tmp/ghostty-ssh-$ssh_user.XXXXXX" 2>/dev/null; or echo "/tmp/ghostty-ssh-$ssh_user."(random)) + set ssh_cpath "$ssh_cpath_dir/socket" + + if echo "$ssh_terminfo" | command ssh $ssh_opts -o ControlMaster=yes -o ControlPath="$ssh_cpath" -o ControlPersist=60s $argv ' + infocmp xterm-ghostty >/dev/null 2>&1 && exit 0 + command -v tic >/dev/null 2>&1 || exit 1 + mkdir -p ~/.terminfo 2>/dev/null && tic -x - 2>/dev/null && exit 0 + exit 1 + ' 2>/dev/null + set ssh_term xterm-ghostty + set -a ssh_opts -o "ControlPath=$ssh_cpath" + + # Cache successful installation + if test -x "$GHOSTTY_BIN_DIR/ghostty" + "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --add="$ssh_target" >/dev/null 2>&1; or true + end + else + echo "Warning: Failed to install terminfo." >&2 + end + else + echo "Warning: Could not generate terminfo data." >&2 + end + else + echo "Warning: ghostty command not available for cache management." >&2 + end + end + end + + # Execute SSH with TERM environment variable + TERM="$ssh_term" command ssh $ssh_opts $argv + end + end + + # Setup prompt marking + function __ghostty_mark_prompt_start --on-event fish_prompt --on-event fish_posterror + # If we never got the output end event, then we need to send it now. + if test "$__ghostty_prompt_state" != prompt-start + echo -en "\e]133;D\a" + end + + set --global __ghostty_prompt_state prompt-start + echo -en $__ghostty_prompt_start_mark + end + + function __ghostty_mark_output_start --on-event fish_preexec + set --global __ghostty_prompt_state pre-exec + echo -en "\e]133;C\a" + end + + function __ghostty_mark_output_end --on-event fish_postexec + set --global __ghostty_prompt_state post-exec + echo -en "\e]133;D;$status\a" + end + + # Report pwd. This is actually built-in to fish but only for terminals + # that match an allowlist and that isn't us. + function __update_cwd_osc --on-variable PWD -d 'Notify capable terminals when $PWD changes' + if status --is-command-substitution || set -q INSIDE_EMACS + return + end + printf \e\]7\;file://%s%s\a $hostname (string escape --style=url $PWD) + end + + # Enable fish to handle reflow because Ghostty clears the prompt on resize. + set --global fish_handle_reflow 1 + + # Initial calls for first prompt + if string match -q 'cursor*' -- $features + __ghostty_set_cursor_beam + end + __ghostty_mark_prompt_start + __update_cwd_osc +end + +ghostty_exit diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/nushell/vendor/autoload/ghostty.nu b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/nushell/vendor/autoload/ghostty.nu new file mode 100644 index 0000000..78c981e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/nushell/vendor/autoload/ghostty.nu @@ -0,0 +1,110 @@ +# Ghostty shell integration +export module ghostty { + def has_feature [feature: string] { + $feature in ($env.GHOSTTY_SHELL_FEATURES | default "" | split row ',') + } + + # Wrap `ssh` with Ghostty TERMINFO support + export def --wrapped ssh [...args] { + mut ssh_env = {} + mut ssh_opts = [] + + # `ssh-env`: use xterm-256color and propagate COLORTERM/TERM_PROGRAM vars + if (has_feature "ssh-env") { + $ssh_env.TERM = "xterm-256color" + $ssh_opts = [ + "-o" "SetEnv COLORTERM=truecolor" + "-o" "SendEnv TERM_PROGRAM TERM_PROGRAM_VERSION" + ] + } + + # `ssh-terminfo`: auto-install xterm-ghostty terminfo on remote hosts + if (has_feature "ssh-terminfo") { + let ghostty = ($env.GHOSTTY_BIN_DIR? | default "") | path join "ghostty" + + let ssh_cfg = ^ssh -G ...$args + | lines + | parse "{key} {value}" + | where key in ["user" "hostname"] + | select key value + | transpose -rd + | default {user: $env.USER hostname: "localhost"} + let ssh_id = $"($ssh_cfg.user)@($ssh_cfg.hostname)" + + if (^$ghostty "+ssh-cache" $"--host=($ssh_id)" | complete | $in.exit_code == 0) { + $ssh_env.TERM = "xterm-ghostty" + } else { + $ssh_env.TERM = "xterm-256color" + + let terminfo = try { + ^infocmp -0 -x xterm-ghostty + } catch { + print -e "infocmp failed, using xterm-256color" + } + + if ($terminfo | is-not-empty) { + print $"Setting up xterm-ghostty terminfo on ($ssh_cfg.hostname)..." + + let ctrl_path = ( + mktemp -td $"ghostty-ssh-($ssh_cfg.user).XXXXXX" + | path join "socket" + ) + + let remote_args = $ssh_opts ++ [ + "-o" "ControlMaster=yes" + "-o" $"ControlPath=($ctrl_path)" + "-o" "ControlPersist=60s" + ] ++ $args + + $terminfo | ^ssh ...$remote_args ' + infocmp xterm-ghostty >/dev/null 2>&1 && exit 0 + command -v tic >/dev/null 2>&1 || exit 1 + mkdir -p ~/.terminfo 2>/dev/null && tic -x - 2>/dev/null && exit 0 + exit 1' + | complete + | if $in.exit_code == 0 { + ^$ghostty "+ssh-cache" $"--add=($ssh_id)" e>| print -e + $ssh_env.TERM = "xterm-ghostty" + $ssh_opts = ($ssh_opts ++ ["-o" $"ControlPath=($ctrl_path)"]) + } else { + print -e "terminfo install failed, using xterm-256color" + } + } + } + } + + let ssh_args = $ssh_opts ++ $args + with-env $ssh_env { + ^ssh ...$ssh_args + } + } + + # Wrap `sudo` to preserve Ghostty's TERMINFO environment variable + export def --wrapped sudo [...args] { + mut sudo_args = $args + + if (has_feature "sudo") { + # Extract just the sudo options (before the command) + let sudo_options = ( + $args | take until {|arg| + not (($arg | str starts-with "-") or ($arg | str contains "=")) + } + ) + + # Prepend TERMINFO preservation flag if not using sudoedit + if (not ("-e" in $sudo_options or "--edit" in $sudo_options)) { + $sudo_args = ($args | prepend "--preserve-env=TERMINFO") + } + } + + ^sudo ...$sudo_args + } +} + +# Clean up XDG_DATA_DIRS by removing GHOSTTY_SHELL_INTEGRATION_XDG_DIR +if 'GHOSTTY_SHELL_INTEGRATION_XDG_DIR' in $env { + if 'XDG_DATA_DIRS' in $env { + $env.XDG_DATA_DIRS = ($env.XDG_DATA_DIRS | str replace $"($env.GHOSTTY_SHELL_INTEGRATION_XDG_DIR):" "") + } + hide-env GHOSTTY_SHELL_INTEGRATION_XDG_DIR +} diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/.zshenv b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/.zshenv new file mode 100644 index 0000000..62dcf27 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/.zshenv @@ -0,0 +1,61 @@ +# Based on (started as) a copy of Kitty's zsh integration. Kitty is +# distributed under GPLv3, so this file is also distributed under GPLv3. +# The license header is reproduced below: +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This script is sourced automatically by zsh when ZDOTDIR is set to this +# directory. It therefore assumes it's running within our shell integration +# environment and should not be sourced manually (unlike ghostty-integration). +# +# This file can get sourced with aliases enabled. To avoid alias expansion +# we quote everything that can be quoted. Some aliases will still break us +# though. + +# Restore the original ZDOTDIR value if GHOSTTY_ZSH_ZDOTDIR is set. +# Otherwise, unset the ZDOTDIR that was set during shell injection. +if [[ -n "${GHOSTTY_ZSH_ZDOTDIR+X}" ]]; then + 'builtin' 'export' ZDOTDIR="$GHOSTTY_ZSH_ZDOTDIR" + 'builtin' 'unset' 'GHOSTTY_ZSH_ZDOTDIR' +else + 'builtin' 'unset' 'ZDOTDIR' +fi + +# Use try-always to have the right error code. +{ + # Zsh treats unset ZDOTDIR as if it was HOME. We do the same. + # + # Source the user's .zshenv before sourcing ghostty-integration because the + # former might set fpath and other things without which ghostty-integration + # won't work. + # + # Use typeset in case we are in a function with warn_create_global in + # effect. Unlikely but better safe than sorry. + 'builtin' 'typeset' _ghostty_file=${ZDOTDIR-$HOME}"/.zshenv" + # Zsh ignores unreadable rc files. We do the same. + # Zsh ignores rc files that are directories, and so does source. + [[ ! -r "$_ghostty_file" ]] || 'builtin' 'source' '--' "$_ghostty_file" +} always { + if [[ -o 'interactive' ]]; then + # ${(%):-%x} is the path to the current file. + # On top of it we add :A:h to get the directory. + 'builtin' 'typeset' _ghostty_file="${${(%):-%x}:A:h}"/ghostty-integration + if [[ -r "$_ghostty_file" ]]; then + 'builtin' 'autoload' '-Uz' '--' "$_ghostty_file" + "${_ghostty_file:t}" + 'builtin' 'unfunction' '--' "${_ghostty_file:t}" + fi + fi + 'builtin' 'unset' '_ghostty_file' +} diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/ghostty-integration b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/ghostty-integration new file mode 100644 index 0000000..dc9bd16 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/shell-integration/zsh/ghostty-integration @@ -0,0 +1,458 @@ +# vim:ft=zsh +# +# Based on (started as) a copy of Kitty's zsh integration. Kitty is +# distributed under GPLv3, so this file is also distributed under GPLv3. +# The license header is reproduced below: +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# Enables integration between zsh and ghostty. +# +# This is an autoloadable function. It's invoked automatically in shells +# directly spawned by Ghostty but not in any other shells. For example, running +# `exec zsh`, `sudo -E zsh`, `tmux`, or plain `zsh` will create a shell where +# ghostty-integration won't automatically run. Zsh users who want integration with +# Ghostty in all shells should add the following lines to their .zshrc: +# +# if [[ -n $GHOSTTY_RESOURCES_DIR ]]; then +# source "$GHOSTTY_RESOURCES_DIR"/shell-integration/zsh/ghostty-integration +# fi +# +# Implementation note: We can assume that alias expansion is disabled in this +# file, so no need to quote defensively. We still have to defensively prefix all +# builtins with `builtin` to avoid accidentally invoking user-defined functions. +# We avoid `function` reserved word as an additional defensive measure. + +# Note that updating options with `builtin emulate -L zsh` affects the global options +# if it's called outside of a function. So nearly all code has to be in functions. +_entrypoint() { + builtin emulate -L zsh -o no_warn_create_global -o no_aliases + + [[ -o interactive ]] || builtin return 0 # non-interactive shell + (( ! $+_ghostty_state )) || builtin return 0 # already initialized + + # We require zsh 5.1+ (released Sept 2015) for features like functions_source, + # introspection arrays, and array pattern substitution. + if ! { builtin autoload -- is-at-least 2>/dev/null && is-at-least 5.1; }; then + builtin echo "Zsh ${ZSH_VERSION} is too old for ghostty shell integration (5.1+ required)" >&2 + builtin return 1 + fi + + # 0: no OSC 133 [AC] marks have been written yet. + # 1: the last written OSC 133 C has not been closed with D yet. + # 2: none of the above. + builtin typeset -gi _ghostty_state + + # Attempt to create a writable file descriptor to the TTY so that we can print + # to the TTY later even when STDOUT is redirected. This code is fairly subtle. + # + # - It's tempting to do `[[ -t 1 ]] && exec {_ghostty_state}>&1` but we cannot do this + # because it'll create a file descriptor >= 10 without O_CLOEXEC. This file + # descriptor will leak to child processes. + # - If we do `exec {3}>&1`, the file descriptor won't leak to the child processes + # but it'll still leak if the current process is replaced with another. In + # addition, it'll break user code that relies on fd 3 being available. + # - Zsh doesn't expose dup3, which would have allowed us to copy STDOUT with + # O_CLOEXEC. The only way to create a file descriptor with O_CLOEXEC is via + # sysopen. + # - `zmodload zsh/system` and `sysopen -o cloexec -wu _ghostty_fd -- /dev/tty` can + # fail with an error message to STDERR (the latter can happen even if /dev/tty + # is writable), hence the redirection of STDERR. We do it for the whole block + # for performance reasons (redirections are slow). + # - We must open the file descriptor right here rather than in _ghostty_deferred_init + # because there are broken zsh plugins out there that run `exec {fd}< <(cmd)` + # and then close the file descriptor more than once while suppressing errors. + # This could end up closing our file descriptor if we opened it in + # _ghostty_deferred_init. + typeset -gi _ghostty_fd + { + builtin zmodload zsh/system && (( $+builtins[sysopen] )) && { + { [[ -w $TTY ]] && builtin sysopen -o cloexec -wu _ghostty_fd -- $TTY } || + { [[ -w /dev/tty ]] && builtin sysopen -o cloexec -wu _ghostty_fd -- /dev/tty } + } + } 2>/dev/null || (( _ghostty_fd = 1 )) + + # Defer initialization so that other zsh init files can be configure + # the integration. + builtin typeset -ag precmd_functions + precmd_functions+=(_ghostty_deferred_init) +} + +_ghostty_deferred_init() { + builtin emulate -L zsh -o no_warn_create_global -o no_aliases + + # Enable semantic markup with OSC 133. + _ghostty_precmd() { + builtin local -i cmd_status=$? + builtin emulate -L zsh -o no_warn_create_global -o no_aliases + + # Don't write OSC 133 D when our precmd handler is invoked from zle. + # Some plugins do that to update prompt on cd. + if ! builtin zle; then + # This code works incorrectly in the presence of a precmd or chpwd + # hook that prints. For example, sindresorhus/pure prints an empty + # line on precmd and marlonrichert/zsh-snap prints $PWD on chpwd. + # We'll end up writing our OSC 133 D mark too late. + # + # Another failure mode is when the output of a command doesn't end + # with LF and prompst_sp is set (it is by default). In this case + # we'll incorrectly state that '%' from prompt_sp is a part of the + # command's output. + if (( _ghostty_state == 1 )); then + # The last written OSC 133 C has not been closed with D yet. + # Close it and supply status. + builtin print -nu $_ghostty_fd '\e]133;D;'$cmd_status'\a' + (( _ghostty_state = 2 )) + elif (( _ghostty_state == 2 )); then + # There might be an unclosed OSC 133 C. Close that. + builtin print -nu $_ghostty_fd '\e]133;D\a' + fi + fi + + builtin local mark1=$'%{\e]133;A;cl=line\a%}' + if [[ -o prompt_percent ]]; then + builtin typeset -g precmd_functions + if [[ ${precmd_functions[-1]} == _ghostty_precmd ]]; then + # This is the best case for us: we can add our marks to PS1 and + # PS2. This way our marks will be printed whenever zsh + # redisplays prompt: on reset-prompt, on SIGWINCH, and on + # SIGCHLD if notify is set. Themes that update prompt + # asynchronously from a `zle -F` handler might still remove our + # marks. Oh well. + + # Restore PS1/PS2 to their pre-mark state if nothing else has + # modified them since we last added marks. This avoids exposing + # PS1 with our marks to other hooks (which can break themes like + # Pure that use pattern matching to strip/rebuild the prompt). + # If PS1 was modified (by a theme, async update, etc.), we + # keep the modified version, prioritizing the theme's changes. + builtin local ps1_changed=0 + if [[ -n ${_ghostty_saved_ps1+x} ]]; then + if [[ $PS1 == $_ghostty_marked_ps1 ]]; then + PS1=$_ghostty_saved_ps1 + PS2=$_ghostty_saved_ps2 + elif [[ $PS1 != $_ghostty_saved_ps1 ]]; then + ps1_changed=1 + fi + fi + + # Save the clean PS1/PS2 before we add marks. + _ghostty_saved_ps1=$PS1 + _ghostty_saved_ps2=$PS2 + + # Add our marks. Since we always start from a clean PS1 + # (either restored above or freshly set by a theme), we can + # unconditionally add mark1 and markB. + builtin local mark2=$'%{\e]133;A;k=s\a%}' + builtin local markB=$'%{\e]133;B\a%}' + PS1=${mark1}${PS1}${markB} + + # Handle multiline prompts by marking newline-separated + # continuation lines with k=s (mark2). We skip the newline + # immediately after mark1 to avoid introducing a double + # newline due to OSC 133;A's fresh-line behavior. + # + # We skip this when PS1 changed because injecting marks into + # newlines can break pattern matching in themes that + # strip/rebuild the prompt dynamically (e.g., Pure). + if (( ! ps1_changed )) && [[ $PS1 == *$'\n'* ]]; then + if [[ $PS1 == ${mark1}$'\n'* ]]; then + builtin local rest=${PS1#${mark1}$'\n'} + if [[ $rest == *$'\n'* ]]; then + PS1=${mark1}$'\n'${rest//$'\n'/$'\n'${mark2}} + fi + else + PS1=${PS1//$'\n'/$'\n'${mark2}} + fi + fi + + # PS2 mark is needed when clearing the prompt on resize + PS2=${mark2}${PS2}${markB} + + # Save the marked PS1 so we can detect modifications + # by other hooks in the next cycle. + _ghostty_marked_ps1=$PS1 + (( _ghostty_state = 2 )) + else + # If our precmd hook is not the last, we cannot rely on prompt + # changes to stick, so we don't even try. At least we can move + # our hook to the end to have better luck next time. If there is + # another piece of code that wants to take this privileged + # position, this won't work well. We'll break them as much as + # they are breaking us. + precmd_functions=(${precmd_functions:#_ghostty_precmd} _ghostty_precmd) + # Plugins that invoke precmd hooks from zle do that before zle + # is trashed. This means that the cursor is in the middle of + # BUFFER and we cannot print our mark there. Prompt might + # already have a mark, so the following reset-prompt will write + # it. If it doesn't, there is nothing we can do. + if ! builtin zle; then + builtin print -rnu $_ghostty_fd -- $mark1[3,-3] + (( _ghostty_state = 2 )) + fi + fi + elif ! builtin zle; then + # Without prompt_percent we cannot patch prompt. Just print the + # mark, except when we are invoked from zle. In the latter case we + # cannot do anything. + builtin print -rnu $_ghostty_fd -- $mark1[3,-3] + (( _ghostty_state = 2 )) + fi + } + + _ghostty_preexec() { + builtin emulate -L zsh -o no_warn_create_global -o no_aliases + + # Restore the original PS1/PS2 if nothing else has modified them + # since our precmd added marks. This ensures other preexec hooks + # see a clean PS1 without our marks. If PS1 was modified (e.g., + # by an async theme update), we leave it alone. + if [[ -n ${_ghostty_saved_ps1+x} && $PS1 == $_ghostty_marked_ps1 ]]; then + PS1=$_ghostty_saved_ps1 + PS2=$_ghostty_saved_ps2 + fi + + # This will work incorrectly in the presence of a preexec hook that + # prints. For example, if MichaelAquilina/zsh-you-should-use installs + # its preexec hook before us, we'll incorrectly mark its output as + # belonging to the command (as if the user typed it into zle) rather + # than command output. + builtin print -nu $_ghostty_fd '\e]133;C\a' + (( _ghostty_state = 1 )) + } + + # Enable reporting current working dir to terminal. Ghostty supports + # the kitty-shell-cwd format. + _ghostty_report_pwd() { builtin print -nu $_ghostty_fd '\e]7;kitty-shell-cwd://'"$HOST""$PWD"'\a'; } + chpwd_functions=(${chpwd_functions[@]} "_ghostty_report_pwd") + # An executed program could change cwd and report the changed cwd, so also report cwd at each new prompt + # as in this case chpwd_functions is insufficient. chpwd_functions is still needed for things like: cd x && something + functions[_ghostty_precmd]+=" + _ghostty_report_pwd" + _ghostty_report_pwd + + if [[ "$GHOSTTY_SHELL_FEATURES" == *"title"* ]]; then + # Enable terminal title changes, formatted for user-friendly display. + functions[_ghostty_precmd]+=" + builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${(%):-%(4~|…/%3~|%~)}\"\$'\\a'" + functions[_ghostty_preexec]+=" + builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${1//[[:cntrl:]]}\"\$'\\a'" + fi + + if [[ "$GHOSTTY_SHELL_FEATURES" == *"cursor"* ]]; then + # Enable cursor shape changes depending on the current keymap. + # This implementation leaks blinking block cursor into external commands + # executed from zle. For example, users of fzf-based widgets may find + # themselves with a blinking block cursor within fzf. + _ghostty_zle_line_init _ghostty_zle_line_finish _ghostty_zle_keymap_select() { + builtin local steady=0 + [[ "$GHOSTTY_SHELL_FEATURES" == *"cursor:steady"* ]] && steady=1 + case ${KEYMAP-} in + vicmd|visual) builtin print -nu "$_ghostty_fd" "\e[$(( 1 + steady )) q" ;; # block + *) builtin print -nu "$_ghostty_fd" "\e[$(( 5 + steady )) q" ;; # bar + esac + } + # Restore the default shape before executing an external command + functions[_ghostty_preexec]+=" + builtin print -rnu $_ghostty_fd \$'\\e[0 q'" + fi + + # Emit semantic prompt markers at line-init if PS1 doesn't contain our + # marks. This ensures the terminal sees prompt markers even if another + # plugin (like zinit or oh-my-posh) regenerated PS1 after our precmd ran. + # We use 133;P instead of 133;A to avoid fresh-line behavior which would + # disrupt the display since the prompt has already been drawn. We also + # emit 133;B to mark the input area, which is needed for click-to-move. + (( $+functions[_ghostty_zle_line_init] )) || _ghostty_zle_line_init() { builtin true; } + functions[_ghostty_zle_line_init]=" + if [[ \$PS1 != *$'%{\\e]133;A'* ]]; then + builtin print -nu \$_ghostty_fd '\\e]133;P;k=i\\a\\e]133;B\\a' + fi + "${functions[_ghostty_zle_line_init]} + + # Add Ghostty binary to PATH if the path feature is enabled + if [[ "$GHOSTTY_SHELL_FEATURES" == *"path"* ]] && [[ -n "$GHOSTTY_BIN_DIR" ]]; then + if [[ ":$PATH:" != *":$GHOSTTY_BIN_DIR:"* ]]; then + builtin export PATH="$PATH:$GHOSTTY_BIN_DIR" + fi + fi + + # Sudo + if [[ "$GHOSTTY_SHELL_FEATURES" == *"sudo"* ]] && [[ -n "$TERMINFO" ]]; then + # Wrap `sudo` command to ensure Ghostty terminfo is preserved + function sudo() { + builtin local sudo_has_sudoedit_flags="no" + for arg in "$@"; do + # Check if argument is '-e' or '--edit' (sudoedit flags) + if [[ "$arg" == "-e" || $arg == "--edit" ]]; then + sudo_has_sudoedit_flags="yes" + builtin break + fi + # Check if argument is neither an option nor a key-value pair + if [[ "$arg" != -* && "$arg" != *=* ]]; then + builtin break + fi + done + if [[ "$sudo_has_sudoedit_flags" == "yes" ]]; then + builtin command sudo "$@"; + else + builtin command sudo --preserve-env=TERMINFO "$@"; + fi + } + fi + + # SSH Integration + if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-* ]]; then + function ssh() { + emulate -L zsh + setopt local_options no_glob_subst + + local ssh_term ssh_opts + ssh_term="xterm-256color" + ssh_opts=() + + # Configure environment variables for remote session + if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-env* ]]; then + ssh_opts+=(-o "SetEnv COLORTERM=truecolor") + ssh_opts+=(-o "SendEnv TERM_PROGRAM TERM_PROGRAM_VERSION") + fi + + # Install terminfo on remote host if needed + if [[ "$GHOSTTY_SHELL_FEATURES" == *ssh-terminfo* ]]; then + local ssh_user ssh_hostname + + while IFS=' ' read -r ssh_key ssh_value; do + case "$ssh_key" in + user) ssh_user="$ssh_value" ;; + hostname) ssh_hostname="$ssh_value" ;; + esac + [[ -n "$ssh_user" && -n "$ssh_hostname" ]] && break + done < <(command ssh -G "$@" 2>/dev/null) + + if [[ -n "$ssh_hostname" ]]; then + local ssh_target="${ssh_user}@${ssh_hostname}" + + # Check if terminfo is already cached + if "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --host="$ssh_target" >/dev/null 2>&1; then + ssh_term="xterm-ghostty" + elif (( $+commands[infocmp] )); then + local ssh_terminfo ssh_cpath_dir ssh_cpath + + ssh_terminfo=$(infocmp -0 -x xterm-ghostty 2>/dev/null) + + if [[ -n "$ssh_terminfo" ]]; then + print "Setting up xterm-ghostty terminfo on $ssh_hostname..." >&2 + + ssh_cpath_dir=$(mktemp -d "/tmp/ghostty-ssh-$ssh_user.XXXXXX" 2>/dev/null) || ssh_cpath_dir="/tmp/ghostty-ssh-$ssh_user.$$" + ssh_cpath="$ssh_cpath_dir/socket" + + if builtin print -r "$ssh_terminfo" | command ssh "${ssh_opts[@]}" -o ControlMaster=yes -o ControlPath="$ssh_cpath" -o ControlPersist=60s "$@" ' + infocmp xterm-ghostty >/dev/null 2>&1 && exit 0 + command -v tic >/dev/null 2>&1 || exit 1 + mkdir -p ~/.terminfo 2>/dev/null && tic -x - 2>/dev/null && exit 0 + exit 1 + ' 2>/dev/null; then + ssh_term="xterm-ghostty" + ssh_opts+=(-o "ControlPath=$ssh_cpath") + + # Cache successful installation + "$GHOSTTY_BIN_DIR/ghostty" +ssh-cache --add="$ssh_target" >/dev/null 2>&1 || true + else + print "Warning: Failed to install terminfo." >&2 + fi + else + print "Warning: Could not generate terminfo data." >&2 + fi + else + print "Warning: ghostty command not available for cache management." >&2 + fi + fi + fi + + # Execute SSH with TERM environment variable + TERM="$ssh_term" command ssh "${ssh_opts[@]}" "$@" + } + fi + + # Some zsh users manually run `source ~/.zshrc` in order to apply rc file + # changes to the current shell. This is a terrible practice that breaks many + # things, including our shell integration. For example, Oh My Zsh and Prezto + # (both very popular among zsh users) will remove zle-line-init and + # zle-line-finish hooks if .zshrc is manually sourced. Prezto will also remove + # zle-keymap-select. + # + # Another common (and much more robust) way to apply rc file changes to the + # current shell is `exec zsh`. This will remove our integration from the shell + # unless it's explicitly invoked from .zshrc. This is not an issue with + # `exec zsh` but rather with our implementation of automatic shell integration. + + # In the ideal world we would use add-zle-hook-widget to hook zle-line-init + # and similar widget. This breaks user configs though, so we have do this + # horrible thing instead. + builtin local hook func widget orig_widget flag + for hook in line-init line-finish keymap-select; do + func=_ghostty_zle_${hook/-/_} + (( $+functions[$func] )) || builtin continue + widget=zle-$hook + if [[ $widgets[$widget] == user:azhw:* && + $+functions[add-zle-hook-widget] -eq 1 ]]; then + # If the widget is already hooked by add-zle-hook-widget at the top + # level, add our hook at the end. We MUST do it this way. We cannot + # just wrap the widget ourselves in this case because it would + # trigger bugs in add-zle-hook-widget. + add-zle-hook-widget $hook $func + else + if (( $+widgets[$widget] )); then + # There is a widget but it's not from add-zle-hook-widget. We + # can rename the original widget, install our own and invoke + # the original when we are called. + # + # Note: The leading dot is to work around bugs in + # zsh-syntax-highlighting. + orig_widget=._ghostty_orig_$widget + builtin zle -A $widget $orig_widget + if [[ $widgets[$widget] == user:* ]]; then + # No -w here to preserve $WIDGET within the original widget. + flag= + else + flag=w + fi + functions[$func]+=" + builtin zle $orig_widget -N$flag -- \"\$@\"" + fi + builtin zle -N $widget $func + fi + done + + if (( $+functions[_ghostty_preexec] )); then + builtin typeset -ag preexec_functions + preexec_functions+=(_ghostty_preexec) + fi + + builtin typeset -ag precmd_functions + if (( $+functions[_ghostty_precmd] )); then + precmd_functions=(${precmd_functions:#_ghostty_deferred_init} _ghostty_precmd) + _ghostty_precmd + else + precmd_functions=(${precmd_functions:#_ghostty_deferred_init}) + fi + + # Unfunction _ghostty_deferred_init to save memory. Don't unfunction + # ghostty-integration though because decent public functions aren't supposed to + # to unfunction themselves when invoked. Unfunctioning is done by calling code. + builtin unfunction _ghostty_deferred_init +} + +_entrypoint diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/0x96f b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/0x96f new file mode 100644 index 0000000..9646f22 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/0x96f @@ -0,0 +1,22 @@ +palette = 0=#262427 +palette = 1=#ff666d +palette = 2=#b3e03a +palette = 3=#ffc739 +palette = 4=#00cde8 +palette = 5=#a392e8 +palette = 6=#9deaf6 +palette = 7=#fcfcfa +palette = 8=#545452 +palette = 9=#ff7e83 +palette = 10=#bee55e +palette = 11=#ffd05e +palette = 12=#1bd5eb +palette = 13=#b0a3eb +palette = 14=#acedf8 +palette = 15=#fcfcfa +background = #262427 +foreground = #fcfcfa +cursor-color = #fcfcfa +cursor-text = #000000 +selection-background = #fcfcfa +selection-foreground = #262427 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/12-bit Rainbow b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/12-bit Rainbow new file mode 100644 index 0000000..634867d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/12-bit Rainbow @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#a03050 +palette = 2=#40d080 +palette = 3=#e09040 +palette = 4=#3060b0 +palette = 5=#603090 +palette = 6=#0090c0 +palette = 7=#dbded8 +palette = 8=#685656 +palette = 9=#c06060 +palette = 10=#90d050 +palette = 11=#e0d000 +palette = 12=#00b0c0 +palette = 13=#801070 +palette = 14=#20b0c0 +palette = 15=#ffffff +background = #040404 +foreground = #feffff +cursor-color = #e0d000 +cursor-text = #000000 +selection-background = #606060 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Day b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Day new file mode 100644 index 0000000..87d789c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Day @@ -0,0 +1,22 @@ +palette = 0=#090300 +palette = 1=#db2d20 +palette = 2=#01a252 +palette = 3=#caba00 +palette = 4=#01a0e4 +palette = 5=#a16a94 +palette = 6=#8fbece +palette = 7=#a5a2a2 +palette = 8=#5c5855 +palette = 9=#dbaec3 +palette = 10=#3a3432 +palette = 11=#4a4543 +palette = 12=#807d7c +palette = 13=#bcbbba +palette = 14=#cdab53 +palette = 15=#f7f7f7 +background = #f7f7f7 +foreground = #4a4543 +cursor-color = #4a4543 +cursor-text = #f7f7f7 +selection-background = #a5a2a2 +selection-foreground = #4a4543 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Night b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Night new file mode 100644 index 0000000..4be7ffd --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/3024 Night @@ -0,0 +1,22 @@ +palette = 0=#090300 +palette = 1=#db2d20 +palette = 2=#01a252 +palette = 3=#fded02 +palette = 4=#01a0e4 +palette = 5=#a16a94 +palette = 6=#b5e4f4 +palette = 7=#a5a2a2 +palette = 8=#5c5855 +palette = 9=#e8bbd0 +palette = 10=#47413f +palette = 11=#4a4543 +palette = 12=#807d7c +palette = 13=#d6d5d4 +palette = 14=#cdab53 +palette = 15=#f7f7f7 +background = #090300 +foreground = #a5a2a2 +cursor-color = #a5a2a2 +cursor-text = #090300 +selection-background = #4a4543 +selection-foreground = #a5a2a2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aardvark Blue b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aardvark Blue new file mode 100644 index 0000000..25c5e4f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aardvark Blue @@ -0,0 +1,22 @@ +palette = 0=#191919 +palette = 1=#aa342e +palette = 2=#4b8c0f +palette = 3=#dbba00 +palette = 4=#1370d3 +palette = 5=#c43ac3 +palette = 6=#008eb0 +palette = 7=#bebebe +palette = 8=#525252 +palette = 9=#f05b50 +palette = 10=#95dc55 +palette = 11=#ffe763 +palette = 12=#60a4ec +palette = 13=#e26be2 +palette = 14=#60b6cb +palette = 15=#f7f7f7 +background = #102040 +foreground = #dddddd +cursor-color = #007acc +cursor-text = #bfdbfe +selection-background = #bfdbfe +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Abernathy b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Abernathy new file mode 100644 index 0000000..e004d86 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Abernathy @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cd0000 +palette = 2=#00cd00 +palette = 3=#cdcd00 +palette = 4=#1093f5 +palette = 5=#cd00cd +palette = 6=#00cdcd +palette = 7=#faebd7 +palette = 8=#404040 +palette = 9=#ff0000 +palette = 10=#00ff00 +palette = 11=#ffff00 +palette = 12=#11b5f6 +palette = 13=#ff00ff +palette = 14=#00ffff +palette = 15=#ffffff +background = #111416 +foreground = #eeeeec +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #eeeeec +selection-foreground = #333333 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure new file mode 100644 index 0000000..2c025c0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure @@ -0,0 +1,22 @@ +palette = 0=#040404 +palette = 1=#d84a33 +palette = 2=#5da602 +palette = 3=#eebb6e +palette = 4=#417ab3 +palette = 5=#e5c499 +palette = 6=#bdcfe5 +palette = 7=#dbded8 +palette = 8=#685656 +palette = 9=#d76b42 +palette = 10=#99b52c +palette = 11=#ffb670 +palette = 12=#97d7ef +palette = 13=#aa7900 +palette = 14=#bdcfe5 +palette = 15=#e4d5c7 +background = #040404 +foreground = #feffff +cursor-color = #feffff +cursor-text = #000000 +selection-background = #606060 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure Time b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure Time new file mode 100644 index 0000000..91639ea --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adventure Time @@ -0,0 +1,22 @@ +palette = 0=#050404 +palette = 1=#bd0013 +palette = 2=#4ab118 +palette = 3=#e7741e +palette = 4=#0f4ac6 +palette = 5=#665993 +palette = 6=#70a598 +palette = 7=#f8dcc0 +palette = 8=#4e7cbf +palette = 9=#fc5f5a +palette = 10=#9eff6e +palette = 11=#efc11a +palette = 12=#1997c6 +palette = 13=#9b5953 +palette = 14=#c8faf4 +palette = 15=#f6f5fb +background = #1f1d45 +foreground = #f8dcc0 +cursor-color = #efbf38 +cursor-text = #08080a +selection-background = #706b4e +selection-foreground = #f3d9c4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita new file mode 100644 index 0000000..78c0dfe --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita @@ -0,0 +1,22 @@ +palette = 0=#241f31 +palette = 1=#c01c28 +palette = 2=#2ec27e +palette = 3=#e8b504 +palette = 4=#1e78e4 +palette = 5=#9841bb +palette = 6=#0ab9dc +palette = 7=#c0bfbc +palette = 8=#5e5c64 +palette = 9=#ed333b +palette = 10=#4ad67c +palette = 11=#d2be36 +palette = 12=#51a1ff +palette = 13=#c061cb +palette = 14=#4fd2fd +palette = 15=#f6f5f4 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #c0bfbc +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita Dark new file mode 100644 index 0000000..aee24c7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Adwaita Dark @@ -0,0 +1,22 @@ +palette = 0=#241f31 +palette = 1=#c01c28 +palette = 2=#2ec27e +palette = 3=#f5c211 +palette = 4=#1e78e4 +palette = 5=#9841bb +palette = 6=#0ab9dc +palette = 7=#c0bfbc +palette = 8=#5e5c64 +palette = 9=#ed333b +palette = 10=#57e389 +palette = 11=#f8e45c +palette = 12=#51a1ff +palette = 13=#c061cb +palette = 14=#4fd2fd +palette = 15=#f6f5f4 +background = #1d1d20 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #1d1d20 +selection-background = #ffffff +selection-foreground = #5e5c64 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Afterglow b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Afterglow new file mode 100644 index 0000000..8b32342 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Afterglow @@ -0,0 +1,22 @@ +palette = 0=#151515 +palette = 1=#ac4142 +palette = 2=#7e8e50 +palette = 3=#e5b567 +palette = 4=#6c99bb +palette = 5=#9f4e85 +palette = 6=#7dd6cf +palette = 7=#d0d0d0 +palette = 8=#505050 +palette = 9=#ac4142 +palette = 10=#7e8e50 +palette = 11=#e5b567 +palette = 12=#6c99bb +palette = 13=#9f4e85 +palette = 14=#7dd6cf +palette = 15=#f5f5f5 +background = #212121 +foreground = #d0d0d0 +cursor-color = #d0d0d0 +cursor-text = #151515 +selection-background = #303030 +selection-foreground = #d0d0d0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Dark new file mode 100644 index 0000000..faf67e0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Dark @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#f08898 +palette = 2=#a4e09c +palette = 3=#f5dea4 +palette = 4=#84b4f8 +palette = 5=#c8a2f4 +palette = 6=#90dcd0 +palette = 7=#d0d6f0 +palette = 8=#444444 +palette = 9=#f08898 +palette = 10=#a4e09c +palette = 11=#f5dea4 +palette = 12=#84b4f8 +palette = 13=#c8a2f4 +palette = 14=#90dcd0 +palette = 15=#ffffff +background = #1a1a1a +foreground = #d0d6f0 +cursor-color = #f8b080 +cursor-text = #1a1a1a +selection-background = #333333 +selection-foreground = #d0d6f0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Light new file mode 100644 index 0000000..b473dee --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aizen Light @@ -0,0 +1,22 @@ +palette = 0=#f0f2f6 +palette = 1=#d00c36 +palette = 2=#3e9e28 +palette = 3=#dd8c1a +palette = 4=#1c64f2 +palette = 5=#8636ec +palette = 6=#159096 +palette = 7=#4a4d66 +palette = 8=#adb2bc +palette = 9=#d00c36 +palette = 10=#3e9e28 +palette = 11=#dd8c1a +palette = 12=#1c64f2 +palette = 13=#8636ec +palette = 14=#159096 +palette = 15=#4a4d66 +background = #f0f2f6 +foreground = #4a4d66 +cursor-color = #fc6008 +cursor-text = #f0f2f6 +selection-background = #bdc2cc +selection-foreground = #4a4d66 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alabaster b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alabaster new file mode 100644 index 0000000..88a7d77 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alabaster @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#aa3731 +palette = 2=#448c27 +palette = 3=#cb9000 +palette = 4=#325cc0 +palette = 5=#7a3e9d +palette = 6=#0083b2 +palette = 7=#b7b7b7 +palette = 8=#777777 +palette = 9=#f05050 +palette = 10=#60cb00 +palette = 11=#f2af50 +palette = 12=#007acc +palette = 13=#e64ce6 +palette = 14=#00aacb +palette = 15=#f7f7f7 +background = #f7f7f7 +foreground = #000000 +cursor-color = #007acc +cursor-text = #bfdbfe +selection-background = #bfdbfe +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alien Blood b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alien Blood new file mode 100644 index 0000000..a41024c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Alien Blood @@ -0,0 +1,22 @@ +palette = 0=#112616 +palette = 1=#7f2b27 +palette = 2=#2f7e25 +palette = 3=#717f24 +palette = 4=#2f6a7f +palette = 5=#47587f +palette = 6=#327f77 +palette = 7=#647d75 +palette = 8=#3c4812 +palette = 9=#e08009 +palette = 10=#18e000 +palette = 11=#bde000 +palette = 12=#00aae0 +palette = 13=#0058e0 +palette = 14=#00e0c4 +palette = 15=#73fa91 +background = #0f1610 +foreground = #637d75 +cursor-color = #73fa91 +cursor-text = #0f1610 +selection-background = #1d4125 +selection-foreground = #73fa91 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Andromeda b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Andromeda new file mode 100644 index 0000000..c4f46e4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Andromeda @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cd3131 +palette = 2=#05bc79 +palette = 3=#e5e512 +palette = 4=#2472c8 +palette = 5=#bc3fbc +palette = 6=#0fa8cd +palette = 7=#e5e5e5 +palette = 8=#666666 +palette = 9=#cd3131 +palette = 10=#05bc79 +palette = 11=#e5e512 +palette = 12=#2472c8 +palette = 13=#bc3fbc +palette = 14=#0fa8cd +palette = 15=#e5e5e5 +background = #262a33 +foreground = #e5e5e5 +cursor-color = #f8f8f0 +cursor-text = #b5b5a8 +selection-background = #5a5c62 +selection-foreground = #ece7e7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple Classic b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple Classic new file mode 100644 index 0000000..a0919a5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple Classic @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c91b00 +palette = 2=#00c200 +palette = 3=#c7c400 +palette = 4=#1c3fe1 +palette = 5=#ca30c7 +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#5ffa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#ff77ff +palette = 14=#60fdff +palette = 15=#ffffff +background = #2c2b2b +foreground = #d5a200 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #6b5b02 +selection-foreground = #67e000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors new file mode 100644 index 0000000..a4dd1a3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#cc372e +palette = 2=#26a439 +palette = 3=#cdac08 +palette = 4=#0869cb +palette = 5=#9647bf +palette = 6=#479ec2 +palette = 7=#98989d +palette = 8=#464646 +palette = 9=#ff453a +palette = 10=#32d74b +palette = 11=#ffd60a +palette = 12=#0a84ff +palette = 13=#bf5af2 +palette = 14=#76d6ff +palette = 15=#ffffff +background = #1e1e1e +foreground = #ffffff +cursor-color = #98989d +cursor-text = #ffffff +selection-background = #3f638b +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors Light new file mode 100644 index 0000000..8612369 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Apple System Colors Light @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#cc372e +palette = 2=#26a439 +palette = 3=#cdac08 +palette = 4=#0869cb +palette = 5=#9647bf +palette = 6=#479ec2 +palette = 7=#98989d +palette = 8=#464646 +palette = 9=#ff453a +palette = 10=#32d74b +palette = 11=#e5bc00 +palette = 12=#0a84ff +palette = 13=#bf5af2 +palette = 14=#69c9f2 +palette = 15=#ffffff +background = #feffff +foreground = #000000 +cursor-color = #98989d +cursor-text = #ffffff +selection-background = #abd8ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arcoiris b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arcoiris new file mode 100644 index 0000000..eaecfff --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arcoiris @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#da2700 +palette = 2=#12c258 +palette = 3=#ffc656 +palette = 4=#518bfc +palette = 5=#e37bd9 +palette = 6=#63fad5 +palette = 7=#bab2b2 +palette = 8=#777777 +palette = 9=#ffb9b9 +palette = 10=#e3f6aa +palette = 11=#ffddaa +palette = 12=#b3e8f3 +palette = 13=#cbbaf9 +palette = 14=#bcffc7 +palette = 15=#efefef +background = #201f1e +foreground = #eee4d9 +cursor-color = #872929 +cursor-text = #fffbf2 +selection-background = #25524a +selection-foreground = #f3fffd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ardoise b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ardoise new file mode 100644 index 0000000..0285fa9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ardoise @@ -0,0 +1,22 @@ +palette = 0=#2c2c2c +palette = 1=#d3322d +palette = 2=#588b35 +palette = 3=#fca93a +palette = 4=#2465c2 +palette = 5=#7332b4 +palette = 6=#64e1b8 +palette = 7=#f7f7f7 +palette = 8=#535353 +palette = 9=#fa5852 +palette = 10=#8dc252 +palette = 11=#ffea51 +palette = 12=#6ab5f8 +palette = 13=#be68ca +palette = 14=#89ffdb +palette = 15=#fefefe +background = #1e1e1e +foreground = #eaeaea +cursor-color = #f7f7f7 +cursor-text = #000000 +selection-background = #46515e +selection-foreground = #f1f3f5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Argonaut b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Argonaut new file mode 100644 index 0000000..d8a78db --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Argonaut @@ -0,0 +1,22 @@ +palette = 0=#232323 +palette = 1=#ff000f +palette = 2=#8ce10b +palette = 3=#ffb900 +palette = 4=#008df8 +palette = 5=#6d43a6 +palette = 6=#00d8eb +palette = 7=#ffffff +palette = 8=#444444 +palette = 9=#ff2740 +palette = 10=#abe15b +palette = 11=#ffd242 +palette = 12=#0092ff +palette = 13=#9a5feb +palette = 14=#67fff0 +palette = 15=#ffffff +background = #0e1019 +foreground = #fffaf4 +cursor-color = #ff0018 +cursor-text = #ff8ca4 +selection-background = #002a3b +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arthur b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arthur new file mode 100644 index 0000000..b2d0803 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Arthur @@ -0,0 +1,22 @@ +palette = 0=#3d352a +palette = 1=#cd5c5c +palette = 2=#86af80 +palette = 3=#e8ae5b +palette = 4=#6495ed +palette = 5=#deb887 +palette = 6=#b0c4de +palette = 7=#bbaa99 +palette = 8=#554444 +palette = 9=#cc5533 +palette = 10=#88aa22 +palette = 11=#ffa75d +palette = 12=#87ceeb +palette = 13=#996600 +palette = 14=#b0c4de +palette = 15=#ddccbb +background = #1c1c1c +foreground = #ddeedd +cursor-color = #e2bbef +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atelier Sulphurpool b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atelier Sulphurpool new file mode 100644 index 0000000..69a74c8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atelier Sulphurpool @@ -0,0 +1,22 @@ +palette = 0=#202746 +palette = 1=#c94922 +palette = 2=#ac9739 +palette = 3=#c08b30 +palette = 4=#3d8fd1 +palette = 5=#6679cc +palette = 6=#22a2c9 +palette = 7=#979db4 +palette = 8=#6b7394 +palette = 9=#c76b29 +palette = 10=#4f587c +palette = 11=#5e6687 +palette = 12=#898ea4 +palette = 13=#dfe2f1 +palette = 14=#9c637a +palette = 15=#f5f7ff +background = #202746 +foreground = #979db4 +cursor-color = #979db4 +cursor-text = #202746 +selection-background = #5e6687 +selection-foreground = #979db4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom new file mode 100644 index 0000000..8eb2395 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fd5ff1 +palette = 2=#87c38a +palette = 3=#ffd7b1 +palette = 4=#85befd +palette = 5=#b9b6fc +palette = 6=#85befd +palette = 7=#e0e0e0 +palette = 8=#4c4c4c +palette = 9=#fd5ff1 +palette = 10=#94fa36 +palette = 11=#f5ffa8 +palette = 12=#96cbfe +palette = 13=#b9b6fc +palette = 14=#85befd +palette = 15=#e0e0e0 +background = #161719 +foreground = #c5c8c6 +cursor-color = #d0d0d0 +cursor-text = #151515 +selection-background = #444444 +selection-foreground = #c5c8c6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Dark new file mode 100644 index 0000000..5f870b5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Dark @@ -0,0 +1,22 @@ +palette = 0=#21252b +palette = 1=#e06c75 +palette = 2=#98c379 +palette = 3=#e5c07b +palette = 4=#61afef +palette = 5=#c678dd +palette = 6=#56b6c2 +palette = 7=#abb2bf +palette = 8=#767676 +palette = 9=#e06c75 +palette = 10=#98c379 +palette = 11=#e5c07b +palette = 12=#61afef +palette = 13=#c678dd +palette = 14=#56b6c2 +palette = 15=#abb2bf +background = #21252b +foreground = #abb2bf +cursor-color = #abb2bf +cursor-text = #21252b +selection-background = #323844 +selection-foreground = #abb2bf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Light new file mode 100644 index 0000000..53236fc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Atom One Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#de3e35 +palette = 2=#3f953a +palette = 3=#d2b67c +palette = 4=#2f5af3 +palette = 5=#950095 +palette = 6=#3f953a +palette = 7=#bbbbbb +palette = 8=#000000 +palette = 9=#de3e35 +palette = 10=#3f953a +palette = 11=#d2b67c +palette = 12=#2f5af3 +palette = 13=#a00095 +palette = 14=#3f953a +palette = 15=#ffffff +background = #f9f9f9 +foreground = #2a2c33 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #ededed +selection-foreground = #2a2c33 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aura b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aura new file mode 100644 index 0000000..98355da --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aura @@ -0,0 +1,22 @@ +palette = 0=#110f18 +palette = 1=#ff6767 +palette = 2=#61ffca +palette = 3=#ffca85 +palette = 4=#a277ff +palette = 5=#a277ff +palette = 6=#61ffca +palette = 7=#edecee +palette = 8=#4d4d4d +palette = 9=#ffca85 +palette = 10=#a277ff +palette = 11=#ffca85 +palette = 12=#a277ff +palette = 13=#a277ff +palette = 14=#61ffca +palette = 15=#edecee +background = #15141b +foreground = #edecee +cursor-color = #a277ff +cursor-text = #edecee +selection-background = #a277ff +selection-foreground = #edecee diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aurora b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aurora new file mode 100644 index 0000000..2fc6ac5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Aurora @@ -0,0 +1,22 @@ +palette = 0=#23262e +palette = 1=#f0266f +palette = 2=#8fd46d +palette = 3=#ffe66d +palette = 4=#102ee4 +palette = 5=#ee5d43 +palette = 6=#03d6b8 +palette = 7=#c74ded +palette = 8=#4f545e +palette = 9=#f92672 +palette = 10=#8fd46d +palette = 11=#ffe66d +palette = 12=#03d6b8 +palette = 13=#ee5d43 +palette = 14=#03d6b8 +palette = 15=#c74ded +background = #23262e +foreground = #ffca28 +cursor-color = #ee5d43 +cursor-text = #ffd29c +selection-background = #292e38 +selection-foreground = #00e8c6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu new file mode 100644 index 0000000..d4fddb9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu @@ -0,0 +1,22 @@ +palette = 0=#11151c +palette = 1=#ea6c73 +palette = 2=#7fd962 +palette = 3=#f9af4f +palette = 4=#53bdfa +palette = 5=#cda1fa +palette = 6=#90e1c6 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#f07178 +palette = 10=#aad94c +palette = 11=#ffb454 +palette = 12=#59c2ff +palette = 13=#d2a6ff +palette = 14=#95e6cb +palette = 15=#ffffff +background = #0b0e14 +foreground = #bfbdb6 +cursor-color = #e6b450 +cursor-text = #0b0e14 +selection-background = #409fff +selection-foreground = #0b0e14 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Light new file mode 100644 index 0000000..f55c529 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ea6c6d +palette = 2=#6cbf43 +palette = 3=#eca944 +palette = 4=#3199e1 +palette = 5=#9e75c7 +palette = 6=#46ba94 +palette = 7=#bababa +palette = 8=#686868 +palette = 9=#f07171 +palette = 10=#86b300 +palette = 11=#f2ae49 +palette = 12=#399ee6 +palette = 13=#a37acc +palette = 14=#4cbf99 +palette = 15=#d1d1d1 +background = #f8f9fa +foreground = #5c6166 +cursor-color = #ffaa33 +cursor-text = #f8f9fa +selection-background = #035bd6 +selection-foreground = #f8f9fa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Mirage b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Mirage new file mode 100644 index 0000000..c781cd9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ayu Mirage @@ -0,0 +1,22 @@ +palette = 0=#171b24 +palette = 1=#ed8274 +palette = 2=#87d96c +palette = 3=#facc6e +palette = 4=#6dcbfa +palette = 5=#dabafa +palette = 6=#90e1c6 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#f28779 +palette = 10=#d5ff80 +palette = 11=#ffd173 +palette = 12=#73d0ff +palette = 13=#dfbfff +palette = 14=#95e6cb +palette = 15=#ffffff +background = #1f2430 +foreground = #cccac2 +cursor-color = #ffcc66 +cursor-text = #1f2430 +selection-background = #409fff +selection-foreground = #1f2430 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Banana Blueberry b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Banana Blueberry new file mode 100644 index 0000000..5fd1c69 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Banana Blueberry @@ -0,0 +1,22 @@ +palette = 0=#17141f +palette = 1=#ff6b7f +palette = 2=#00bd9c +palette = 3=#e6c62f +palette = 4=#22e8df +palette = 5=#dc396a +palette = 6=#56b6c2 +palette = 7=#f1f1f1 +palette = 8=#495162 +palette = 9=#fe9ea1 +palette = 10=#98c379 +palette = 11=#f9e46b +palette = 12=#91fff4 +palette = 13=#da70d6 +palette = 14=#bcf3ff +palette = 15=#ffffff +background = #191323 +foreground = #cccccc +cursor-color = #e07d13 +cursor-text = #ffffff +selection-background = #220525 +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Batman b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Batman new file mode 100644 index 0000000..78596ce --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Batman @@ -0,0 +1,22 @@ +palette = 0=#1b1d1e +palette = 1=#e6dc44 +palette = 2=#c8be46 +palette = 3=#f4fd22 +palette = 4=#737174 +palette = 5=#747271 +palette = 6=#62605f +palette = 7=#c6c5bf +palette = 8=#505354 +palette = 9=#fff78e +palette = 10=#fff27d +palette = 11=#feed6c +palette = 12=#919495 +palette = 13=#9a9a9d +palette = 14=#a3a3a6 +palette = 15=#dadbd6 +background = #1b1d1e +foreground = #6f6f6f +cursor-color = #fcef0c +cursor-text = #000000 +selection-background = #4d504c +selection-foreground = #f0e04a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Day b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Day new file mode 100644 index 0000000..4692530 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Day @@ -0,0 +1,22 @@ +palette = 0=#20111b +palette = 1=#be100e +palette = 2=#858162 +palette = 3=#d08b30 +palette = 4=#426a79 +palette = 5=#97522c +palette = 6=#989a9c +palette = 7=#968c83 +palette = 8=#5e5252 +palette = 9=#be100e +palette = 10=#858162 +palette = 11=#d08b30 +palette = 12=#426a79 +palette = 13=#97522c +palette = 14=#989a9c +palette = 15=#d5ccba +background = #d5ccba +foreground = #45373c +cursor-color = #45373c +cursor-text = #d5ccba +selection-background = #968c83 +selection-foreground = #45373c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Night b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Night new file mode 100644 index 0000000..0960f2b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Belafonte Night @@ -0,0 +1,22 @@ +palette = 0=#20111b +palette = 1=#be100e +palette = 2=#858162 +palette = 3=#eaa549 +palette = 4=#426a79 +palette = 5=#97522c +palette = 6=#989a9c +palette = 7=#968c83 +palette = 8=#5e5252 +palette = 9=#be100e +palette = 10=#858162 +palette = 11=#eaa549 +palette = 12=#426a79 +palette = 13=#97522c +palette = 14=#989a9c +palette = 15=#d5ccba +background = #20111b +foreground = #968c83 +cursor-color = #968c83 +cursor-text = #20111b +selection-background = #45373c +selection-foreground = #968c83 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Birds Of Paradise b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Birds Of Paradise new file mode 100644 index 0000000..995bfe5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Birds Of Paradise @@ -0,0 +1,22 @@ +palette = 0=#573d26 +palette = 1=#be2d26 +palette = 2=#6ba18a +palette = 3=#e99d2a +palette = 4=#5a86ad +palette = 5=#ac80a6 +palette = 6=#74a6ad +palette = 7=#e0dbb7 +palette = 8=#9b6c4a +palette = 9=#e84627 +palette = 10=#95d8ba +palette = 11=#d0d150 +palette = 12=#b8d3ed +palette = 13=#d19ecb +palette = 14=#93cfd7 +palette = 15=#fff9d5 +background = #2a1f1d +foreground = #e0dbb7 +cursor-color = #644a33 +cursor-text = #8a7059 +selection-background = #563c27 +selection-foreground = #e0dbbb diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal new file mode 100644 index 0000000..db1c232 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#486e6f +palette = 2=#dd9999 +palette = 3=#a06666 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#486e6f +palette = 10=#dd9999 +palette = 11=#a06666 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Bathory) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Bathory) new file mode 100644 index 0000000..e19ce99 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Bathory) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#fbcb97 +palette = 3=#e78a53 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#fbcb97 +palette = 11=#e78a53 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Burzum) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Burzum) new file mode 100644 index 0000000..6c11a3b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Burzum) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#ddeecc +palette = 3=#99bbaa +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#ddeecc +palette = 11=#99bbaa +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Dark Funeral) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Dark Funeral) new file mode 100644 index 0000000..6db052c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Dark Funeral) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#d0dfee +palette = 3=#5f81a5 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#d0dfee +palette = 11=#5f81a5 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Gorgoroth) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Gorgoroth) new file mode 100644 index 0000000..2ac7a17 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Gorgoroth) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#9b8d7f +palette = 3=#8c7f70 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#9b8d7f +palette = 11=#8c7f70 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Immortal) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Immortal) new file mode 100644 index 0000000..c99e282 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Immortal) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#7799bb +palette = 3=#556677 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#7799bb +palette = 11=#556677 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Khold) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Khold) new file mode 100644 index 0000000..ffedba3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Khold) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#eceee3 +palette = 3=#974b46 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#eceee3 +palette = 11=#974b46 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Marduk) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Marduk) new file mode 100644 index 0000000..f81d5c5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Marduk) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#a5aaa7 +palette = 3=#626b67 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#a5aaa7 +palette = 11=#626b67 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Mayhem) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Mayhem) new file mode 100644 index 0000000..6b2a22f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Mayhem) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#f3ecd4 +palette = 3=#eecc6c +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#f3ecd4 +palette = 11=#eecc6c +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Nile) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Nile) new file mode 100644 index 0000000..17b809c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Nile) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#aa9988 +palette = 3=#777755 +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#aa9988 +palette = 11=#777755 +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Venom) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Venom) new file mode 100644 index 0000000..7ec5f35 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Black Metal (Venom) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#5f8787 +palette = 2=#f8f7f2 +palette = 3=#79241f +palette = 4=#888888 +palette = 5=#999999 +palette = 6=#aaaaaa +palette = 7=#c1c1c1 +palette = 8=#404040 +palette = 9=#5f8787 +palette = 10=#f8f7f2 +palette = 11=#79241f +palette = 12=#888888 +palette = 13=#999999 +palette = 14=#aaaaaa +palette = 15=#c1c1c1 +background = #000000 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #8e8e8e +selection-background = #c1c1c1 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blazer b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blazer new file mode 100644 index 0000000..d595ef8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blazer @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b87a7a +palette = 2=#7ab87a +palette = 3=#b8b87a +palette = 4=#7a7ab8 +palette = 5=#b87ab8 +palette = 6=#7ab8b8 +palette = 7=#d9d9d9 +palette = 8=#4c4c4c +palette = 9=#dbbdbd +palette = 10=#bddbbd +palette = 11=#dbdbbd +palette = 12=#bdbddb +palette = 13=#dbbddb +palette = 14=#bddbdb +palette = 15=#ffffff +background = #0d1926 +foreground = #d9e6f2 +cursor-color = #d9e6f2 +cursor-text = #0d1926 +selection-background = #c1ddff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Berry Pie b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Berry Pie new file mode 100644 index 0000000..b93f719 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Berry Pie @@ -0,0 +1,22 @@ +palette = 0=#0a4c62 +palette = 1=#99246e +palette = 2=#5cb1b3 +palette = 3=#eab9a8 +palette = 4=#90a5bd +palette = 5=#9d54a7 +palette = 6=#7e83cc +palette = 7=#f0e8d6 +palette = 8=#463c5d +palette = 9=#c87272 +palette = 10=#0a6c7e +palette = 11=#7a3188 +palette = 12=#5f3d63 +palette = 13=#bc94b7 +palette = 14=#5e6071 +palette = 15=#0a6c7e +background = #1c0c28 +foreground = #babab9 +cursor-color = #fcfad6 +cursor-text = #000000 +selection-background = #606060 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Dolphin b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Dolphin new file mode 100644 index 0000000..13e6845 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Dolphin @@ -0,0 +1,22 @@ +palette = 0=#292d3e +palette = 1=#ff8288 +palette = 2=#b4e88d +palette = 3=#f4d69f +palette = 4=#82aaff +palette = 5=#e9c1ff +palette = 6=#89ebff +palette = 7=#d0d0d0 +palette = 8=#9094a4 +palette = 9=#ff8b92 +palette = 10=#ddffa7 +palette = 11=#ffe585 +palette = 12=#9cc4ff +palette = 13=#ddb0f6 +palette = 14=#a3f7ff +palette = 15=#ffffff +background = #006984 +foreground = #c5f2ff +cursor-color = #ffcc00 +cursor-text = #292d3e +selection-background = #2baeca +selection-foreground = #eceff1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Matrix b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Matrix new file mode 100644 index 0000000..75096c8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Blue Matrix @@ -0,0 +1,22 @@ +palette = 0=#101116 +palette = 1=#ff5680 +palette = 2=#00ff9c +palette = 3=#fffc58 +palette = 4=#00b0ff +palette = 5=#d57bff +palette = 6=#76c1ff +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#5ffa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#d682ec +palette = 14=#60fdff +palette = 15=#ffffff +background = #101116 +foreground = #00a2ff +cursor-color = #76ff9f +cursor-text = #a6a6a6 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Dark new file mode 100644 index 0000000..e870a19 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Dark @@ -0,0 +1,22 @@ +palette = 0=#41444d +palette = 1=#fc2f52 +palette = 2=#25a45c +palette = 3=#ff936a +palette = 4=#3476ff +palette = 5=#7a82da +palette = 6=#4483aa +palette = 7=#cdd4e0 +palette = 8=#8f9aae +palette = 9=#ff6480 +palette = 10=#3fc56b +palette = 11=#f9c859 +palette = 12=#10b1fe +palette = 13=#ff78f8 +palette = 14=#5fb9bc +palette = 15=#ffffff +background = #282c34 +foreground = #b9c0cb +cursor-color = #ffcc00 +cursor-text = #282c34 +selection-background = #b9c0ca +selection-foreground = #272b33 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Light new file mode 100644 index 0000000..05785fd --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bluloco Light @@ -0,0 +1,22 @@ +palette = 0=#373a41 +palette = 1=#d52753 +palette = 2=#23974a +palette = 3=#df631c +palette = 4=#275fe4 +palette = 5=#823ff1 +palette = 6=#27618d +palette = 7=#babbc2 +palette = 8=#676a77 +palette = 9=#ff6480 +palette = 10=#3cbc66 +palette = 11=#c5a332 +palette = 12=#0099e1 +palette = 13=#ce33c0 +palette = 14=#6d93bb +palette = 15=#d3d3d3 +background = #f9f9f9 +foreground = #373a41 +cursor-color = #f32759 +cursor-text = #ffffff +selection-background = #daf0ff +selection-foreground = #373a41 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Borland b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Borland new file mode 100644 index 0000000..96c8ec0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Borland @@ -0,0 +1,22 @@ +palette = 0=#4f4f4f +palette = 1=#ff6c60 +palette = 2=#a8ff60 +palette = 3=#ffffb6 +palette = 4=#96cbfe +palette = 5=#ff73fd +palette = 6=#c6c5fe +palette = 7=#eeeeee +palette = 8=#7c7c7c +palette = 9=#ffb6b0 +palette = 10=#ceffac +palette = 11=#ffffcc +palette = 12=#b5dcff +palette = 13=#ff9cfe +palette = 14=#dfdffe +palette = 15=#ffffff +background = #0000a4 +foreground = #ffff4e +cursor-color = #ffa560 +cursor-text = #ffffff +selection-background = #a4a4a4 +selection-foreground = #0000a4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Box b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Box new file mode 100644 index 0000000..422f3e4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Box @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0403 +palette = 2=#19cb00 +palette = 3=#cecb00 +palette = 4=#0d73cc +palette = 5=#cb1ed1 +palette = 6=#0dcdcd +palette = 7=#dddddd +palette = 8=#767676 +palette = 9=#f2201f +palette = 10=#23fd00 +palette = 11=#fffd00 +palette = 12=#1a8fff +palette = 13=#fd28ff +palette = 14=#14ffff +palette = 15=#ffffff +background = #141d2b +foreground = #9fef00 +cursor-color = #9fef00 +cursor-text = #111111 +selection-background = #a4b1cd +selection-foreground = #141d2b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breadog b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breadog new file mode 100644 index 0000000..4b71c84 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breadog @@ -0,0 +1,22 @@ +palette = 0=#362c24 +palette = 1=#b10b00 +palette = 2=#007232 +palette = 3=#8b4c00 +palette = 4=#005cb4 +palette = 5=#9b0097 +palette = 6=#006a78 +palette = 7=#baa99d +palette = 8=#514337 +palette = 9=#de1100 +palette = 10=#008f40 +palette = 11=#ae6000 +palette = 12=#0074e1 +palette = 13=#c300bd +palette = 14=#008697 +palette = 15=#eae1da +background = #f1ebe6 +foreground = #362c24 +cursor-color = #362c24 +cursor-text = #f1ebe6 +selection-background = #362c24 +selection-foreground = #f1ebe6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breeze b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breeze new file mode 100644 index 0000000..ec1d8a6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Breeze @@ -0,0 +1,22 @@ +palette = 0=#31363b +palette = 1=#ed1515 +palette = 2=#11d116 +palette = 3=#f67400 +palette = 4=#1d99f3 +palette = 5=#9b59b6 +palette = 6=#1abc9c +palette = 7=#eff0f1 +palette = 8=#7f8c8d +palette = 9=#c0392b +palette = 10=#1cdc9a +palette = 11=#fdbc4b +palette = 12=#3daee9 +palette = 13=#8e44ad +palette = 14=#16a085 +palette = 15=#fcfcfc +background = #31363b +foreground = #eff0f1 +cursor-color = #eff0f1 +cursor-text = #31363b +selection-background = #eff0f1 +selection-foreground = #31363b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bright Lights b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bright Lights new file mode 100644 index 0000000..1d73f9f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Bright Lights @@ -0,0 +1,22 @@ +palette = 0=#191919 +palette = 1=#ff355b +palette = 2=#b7e876 +palette = 3=#ffc251 +palette = 4=#76d4ff +palette = 5=#ba76e7 +palette = 6=#6cbfb5 +palette = 7=#c2c8d7 +palette = 8=#4c4c4c +palette = 9=#ff355b +palette = 10=#b7e876 +palette = 11=#ffc251 +palette = 12=#76d5ff +palette = 13=#ba76e7 +palette = 14=#6cbfb5 +palette = 15=#c2c8d7 +background = #191919 +foreground = #b3c9d7 +cursor-color = #f34b00 +cursor-text = #002831 +selection-background = #b3c9d7 +selection-foreground = #191919 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Broadcast b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Broadcast new file mode 100644 index 0000000..78262d1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Broadcast @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#da4939 +palette = 2=#519f50 +palette = 3=#ffd24a +palette = 4=#6d9cbe +palette = 5=#d0d0ff +palette = 6=#6e9cbe +palette = 7=#ffffff +palette = 8=#585858 +palette = 9=#ff7b6b +palette = 10=#83d182 +palette = 11=#ffff7c +palette = 12=#9fcef0 +palette = 13=#ffffff +palette = 14=#a0cef0 +palette = 15=#ffffff +background = #2b2b2b +foreground = #e6e1dc +cursor-color = #ffffff +cursor-text = #c0bbb6 +selection-background = #5a647e +selection-foreground = #e6e1dc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Brogrammer b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Brogrammer new file mode 100644 index 0000000..d8e79f2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Brogrammer @@ -0,0 +1,22 @@ +palette = 0=#1f1f1f +palette = 1=#f81118 +palette = 2=#2dc55e +palette = 3=#ecba0f +palette = 4=#2a84d2 +palette = 5=#4e5ab7 +palette = 6=#1081d6 +palette = 7=#d6dbe5 +palette = 8=#d6dbe5 +palette = 9=#de352e +palette = 10=#1dd361 +palette = 11=#f3bd09 +palette = 12=#1081d6 +palette = 13=#5350b9 +palette = 14=#0f7ddb +palette = 15=#ffffff +background = #131313 +foreground = #d6dbe5 +cursor-color = #b9b9b9 +cursor-text = #101010 +selection-background = #1f1f1f +selection-foreground = #d6dbe5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Dark new file mode 100644 index 0000000..c3975e7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#bb0000 +palette = 2=#00bb00 +palette = 3=#bbbb00 +palette = 4=#0d0dc8 +palette = 5=#bb00bb +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #bbbbbb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Light new file mode 100644 index 0000000..c5f423a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#bb0000 +palette = 2=#00bb00 +palette = 3=#bbbb00 +palette = 4=#0000bb +palette = 5=#bb00bb +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#2fd92f +palette = 11=#bfbf15 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#22cccc +palette = 15=#ffffff +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Pastel Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Pastel Dark new file mode 100644 index 0000000..0e13d34 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Pastel Dark @@ -0,0 +1,22 @@ +palette = 0=#4f4f4f +palette = 1=#ff6c60 +palette = 2=#a8ff60 +palette = 3=#ffffb6 +palette = 4=#96cbfe +palette = 5=#ff73fd +palette = 6=#c6c5fe +palette = 7=#eeeeee +palette = 8=#7c7c7c +palette = 9=#ffb6b0 +palette = 10=#ceffac +palette = 11=#ffffcc +palette = 12=#b5dcff +palette = 13=#ff9cfe +palette = 14=#dfdffe +palette = 15=#ffffff +background = #000000 +foreground = #bbbbbb +cursor-color = #ffa560 +cursor-text = #ffffff +selection-background = #363983 +selection-foreground = #f2f2f2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Dark new file mode 100644 index 0000000..365d7ee --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0000 +palette = 2=#4e9a06 +palette = 3=#c4a000 +palette = 4=#3465a4 +palette = 5=#75507b +palette = 6=#06989a +palette = 7=#d3d7cf +palette = 8=#555753 +palette = 9=#ef2929 +palette = 10=#8ae234 +palette = 11=#fce94f +palette = 12=#729fcf +palette = 13=#ad7fa8 +palette = 14=#34e2e2 +palette = 15=#eeeeec +background = #000000 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Light new file mode 100644 index 0000000..beab582 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Builtin Tango Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0000 +palette = 2=#4e9a06 +palette = 3=#c4a000 +palette = 4=#3465a4 +palette = 5=#75507b +palette = 6=#06989a +palette = 7=#b9bdb5 +palette = 8=#555753 +palette = 9=#ef2929 +palette = 10=#7dd527 +palette = 11=#d6c329 +palette = 12=#729fcf +palette = 13=#ad7fa8 +palette = 14=#27d5d5 +palette = 15=#eeeeec +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/C64 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/C64 new file mode 100644 index 0000000..46e59c5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/C64 @@ -0,0 +1,22 @@ +palette = 0=#090300 +palette = 1=#a2524c +palette = 2=#55a049 +palette = 3=#bfce72 +palette = 4=#6657b3 +palette = 5=#984ca3 +palette = 6=#67b6bd +palette = 7=#ffffff +palette = 8=#000000 +palette = 9=#a2524c +palette = 10=#55a049 +palette = 11=#bfce72 +palette = 12=#6657b3 +palette = 13=#984ca3 +palette = 14=#67b6bd +palette = 15=#f7f7f7 +background = #40318d +foreground = #7869c4 +cursor-color = #7869c4 +cursor-text = #40318d +selection-background = #7869c4 +selection-foreground = #40318d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CGA b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CGA new file mode 100644 index 0000000..4dafb2f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CGA @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#aa0000 +palette = 2=#00aa00 +palette = 3=#aa5500 +palette = 4=#0d0db7 +palette = 5=#aa00aa +palette = 6=#00aaaa +palette = 7=#aaaaaa +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #aaaaaa +cursor-color = #b8b8b8 +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CLRS b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CLRS new file mode 100644 index 0000000..10579e6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/CLRS @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f8282a +palette = 2=#328a5d +palette = 3=#fa701d +palette = 4=#135cd0 +palette = 5=#9f00bd +palette = 6=#33c3c1 +palette = 7=#b3b3b3 +palette = 8=#555753 +palette = 9=#fb0416 +palette = 10=#2cc631 +palette = 11=#e3bd0e +palette = 12=#1670ff +palette = 13=#e900b0 +palette = 14=#3ad5ce +palette = 15=#eeeeec +background = #ffffff +foreground = #262626 +cursor-color = #62c6ef +cursor-text = #ffffff +selection-background = #6fd3fc +selection-foreground = #041730 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Calamity b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Calamity new file mode 100644 index 0000000..04e382c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Calamity @@ -0,0 +1,22 @@ +palette = 0=#2f2833 +palette = 1=#fc644d +palette = 2=#a5f69c +palette = 3=#e9d7a5 +palette = 4=#3b79c7 +palette = 5=#f92672 +palette = 6=#74d3de +palette = 7=#d5ced9 +palette = 8=#7e6c88 +palette = 9=#fc644d +palette = 10=#a5f69c +palette = 11=#e9d7a5 +palette = 12=#3b79c7 +palette = 13=#f92672 +palette = 14=#74d3de +palette = 15=#ffffff +background = #2f2833 +foreground = #d5ced9 +cursor-color = #d5ced9 +cursor-text = #2f2833 +selection-background = #7e6c88 +selection-foreground = #d5ced9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Carbonfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Carbonfox new file mode 100644 index 0000000..eeaea4c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Carbonfox @@ -0,0 +1,22 @@ +palette = 0=#282828 +palette = 1=#ee5396 +palette = 2=#25be6a +palette = 3=#08bdba +palette = 4=#78a9ff +palette = 5=#be95ff +palette = 6=#33b1ff +palette = 7=#dfdfe0 +palette = 8=#484848 +palette = 9=#f16da6 +palette = 10=#46c880 +palette = 11=#2dc7c4 +palette = 12=#8cb6ff +palette = 13=#c8a5ff +palette = 14=#52bdff +palette = 15=#e4e4e5 +background = #161616 +foreground = #f2f4f8 +cursor-color = #f2f4f8 +cursor-text = #161616 +selection-background = #2a2a2a +selection-foreground = #f2f4f8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Frappe b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Frappe new file mode 100644 index 0000000..0866543 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Frappe @@ -0,0 +1,22 @@ +palette = 0=#51576d +palette = 1=#e78284 +palette = 2=#a6d189 +palette = 3=#e5c890 +palette = 4=#8caaee +palette = 5=#f4b8e4 +palette = 6=#81c8be +palette = 7=#a5adce +palette = 8=#626880 +palette = 9=#e67172 +palette = 10=#8ec772 +palette = 11=#d9ba73 +palette = 12=#7b9ef0 +palette = 13=#f2a4db +palette = 14=#5abfb5 +palette = 15=#b5bfe2 +background = #303446 +foreground = #c6d0f5 +cursor-color = #f2d5cf +cursor-text = #303446 +selection-background = #626880 +selection-foreground = #c6d0f5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Latte b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Latte new file mode 100644 index 0000000..94cb2ba --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Latte @@ -0,0 +1,22 @@ +palette = 0=#5c5f77 +palette = 1=#d20f39 +palette = 2=#40a02b +palette = 3=#df8e1d +palette = 4=#1e66f5 +palette = 5=#ea76cb +palette = 6=#179299 +palette = 7=#acb0be +palette = 8=#6c6f85 +palette = 9=#de293e +palette = 10=#49af3d +palette = 11=#eea02d +palette = 12=#456eff +palette = 13=#fe85d8 +palette = 14=#2d9fa8 +palette = 15=#bcc0cc +background = #eff1f5 +foreground = #4c4f69 +cursor-color = #dc8a78 +cursor-text = #eff1f5 +selection-background = #acb0be +selection-foreground = #4c4f69 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Macchiato b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Macchiato new file mode 100644 index 0000000..974b032 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Macchiato @@ -0,0 +1,22 @@ +palette = 0=#494d64 +palette = 1=#ed8796 +palette = 2=#a6da95 +palette = 3=#eed49f +palette = 4=#8aadf4 +palette = 5=#f5bde6 +palette = 6=#8bd5ca +palette = 7=#a5adcb +palette = 8=#5b6078 +palette = 9=#ec7486 +palette = 10=#8ccf7f +palette = 11=#e1c682 +palette = 12=#78a1f6 +palette = 13=#f2a9dd +palette = 14=#63cbc0 +palette = 15=#b8c0e0 +background = #24273a +foreground = #cad3f5 +cursor-color = #f4dbd6 +cursor-text = #24273a +selection-background = #5b6078 +selection-foreground = #cad3f5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Mocha b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Mocha new file mode 100644 index 0000000..2b2ec39 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Catppuccin Mocha @@ -0,0 +1,22 @@ +palette = 0=#45475a +palette = 1=#f38ba8 +palette = 2=#a6e3a1 +palette = 3=#f9e2af +palette = 4=#89b4fa +palette = 5=#f5c2e7 +palette = 6=#94e2d5 +palette = 7=#a6adc8 +palette = 8=#585b70 +palette = 9=#f37799 +palette = 10=#89d88b +palette = 11=#ebd391 +palette = 12=#74a8fc +palette = 13=#f2aede +palette = 14=#6bd7ca +palette = 15=#bac2de +background = #1e1e2e +foreground = #cdd6f4 +cursor-color = #f5e0dc +cursor-text = #1e1e2e +selection-background = #585b70 +selection-foreground = #cdd6f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalk b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalk new file mode 100644 index 0000000..5673943 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalk @@ -0,0 +1,22 @@ +palette = 0=#7d8b8f +palette = 1=#b23a52 +palette = 2=#789b6a +palette = 3=#b9ac4a +palette = 4=#2a7fac +palette = 5=#bd4f5a +palette = 6=#44a799 +palette = 7=#d2d8d9 +palette = 8=#888888 +palette = 9=#f24840 +palette = 10=#80c470 +palette = 11=#ffeb62 +palette = 12=#4196ff +palette = 13=#fc5275 +palette = 14=#53cdbd +palette = 15=#d2d8d9 +background = #2b2d2e +foreground = #d2d8d9 +cursor-color = #708284 +cursor-text = #002831 +selection-background = #e4e8ed +selection-foreground = #3f4041 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalkboard b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalkboard new file mode 100644 index 0000000..62e1291 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chalkboard @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c37372 +palette = 2=#72c373 +palette = 3=#c2c372 +palette = 4=#7372c3 +palette = 5=#c372c2 +palette = 6=#72c2c3 +palette = 7=#d9d9d9 +palette = 8=#585858 +palette = 9=#dbaaaa +palette = 10=#aadbaa +palette = 11=#dadbaa +palette = 12=#aaaadb +palette = 13=#dbaada +palette = 14=#aadadb +palette = 15=#ffffff +background = #29262f +foreground = #d9e6f2 +cursor-color = #d9e6f2 +cursor-text = #29262f +selection-background = #073642 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Challenger Deep b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Challenger Deep new file mode 100644 index 0000000..21d3ade --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Challenger Deep @@ -0,0 +1,22 @@ +palette = 0=#141228 +palette = 1=#ff5458 +palette = 2=#62d196 +palette = 3=#ffb378 +palette = 4=#65b2ff +palette = 5=#906cff +palette = 6=#63f2f1 +palette = 7=#a6b3cc +palette = 8=#565575 +palette = 9=#ff8080 +palette = 10=#95ffa4 +palette = 11=#ffe9aa +palette = 12=#91ddff +palette = 13=#c991e1 +palette = 14=#aaffe4 +palette = 15=#cbe3e7 +background = #1e1c31 +foreground = #cbe1e7 +cursor-color = #fbfcfc +cursor-text = #ff271d +selection-background = #cbe1e7 +selection-foreground = #1e1c31 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chester b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chester new file mode 100644 index 0000000..8310c3f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Chester @@ -0,0 +1,22 @@ +palette = 0=#080200 +palette = 1=#fa5e5b +palette = 2=#16c98d +palette = 3=#ffc83f +palette = 4=#288ad6 +palette = 5=#d34590 +palette = 6=#28ddde +palette = 7=#e7e7e7 +palette = 8=#6f6b68 +palette = 9=#fa5e5b +palette = 10=#16c98d +palette = 11=#feef6d +palette = 12=#278ad6 +palette = 13=#d34590 +palette = 14=#27dede +palette = 15=#ffffff +background = #2c3643 +foreground = #ffffff +cursor-color = #b4b1b1 +cursor-text = #000000 +selection-background = #67747c +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ciapre b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ciapre new file mode 100644 index 0000000..349ee31 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ciapre @@ -0,0 +1,22 @@ +palette = 0=#181818 +palette = 1=#8e0d16 +palette = 2=#48513b +palette = 3=#cc8b3f +palette = 4=#576d8c +palette = 5=#724d7c +palette = 6=#5c4f4b +palette = 7=#aea47f +palette = 8=#555555 +palette = 9=#ac3835 +palette = 10=#a6a75d +palette = 11=#dcdf7c +palette = 12=#3097c6 +palette = 13=#d33061 +palette = 14=#f3dbb2 +palette = 15=#f4f4f4 +background = #191c27 +foreground = #aea47a +cursor-color = #92805b +cursor-text = #181818 +selection-background = #172539 +selection-foreground = #aea47f diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Citruszest b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Citruszest new file mode 100644 index 0000000..1438813 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Citruszest @@ -0,0 +1,22 @@ +palette = 0=#404040 +palette = 1=#ff5454 +palette = 2=#00cc7a +palette = 3=#ffd400 +palette = 4=#00bfff +palette = 5=#ff90fe +palette = 6=#48d1cc +palette = 7=#bfbfbf +palette = 8=#808080 +palette = 9=#ff1a75 +palette = 10=#1affa3 +palette = 11=#ffff00 +palette = 12=#33cfff +palette = 13=#ffb2fe +palette = 14=#00fff2 +palette = 15=#f9f9f9 +background = #121212 +foreground = #bfbfbf +cursor-color = #666666 +cursor-text = #f9f9f9 +selection-background = #ff8c00 +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Neon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Neon new file mode 100644 index 0000000..0826a44 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Neon @@ -0,0 +1,22 @@ +palette = 0=#142631 +palette = 1=#ff2320 +palette = 2=#3ba5ff +palette = 3=#e9e75c +palette = 4=#8ff586 +palette = 5=#781aa0 +palette = 6=#8ff586 +palette = 7=#ba46b2 +palette = 8=#fff688 +palette = 9=#d4312e +palette = 10=#8ff586 +palette = 11=#e9f06d +palette = 12=#3c7dd2 +palette = 13=#8230a7 +palette = 14=#6cbc67 +palette = 15=#8ff586 +background = #142838 +foreground = #8ff586 +cursor-color = #c4206f +cursor-text = #8ff586 +selection-background = #094fb1 +selection-foreground = #8ff586 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next new file mode 100644 index 0000000..e99505f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff527b +palette = 2=#8cc98f +palette = 3=#ffc64c +palette = 4=#409dd4 +palette = 5=#cba3c7 +palette = 6=#37b5b4 +palette = 7=#d7deea +palette = 8=#62747f +palette = 9=#e47e8b +palette = 10=#baddbb +palette = 11=#ffdc91 +palette = 12=#7ac0eb +palette = 13=#f3ccef +palette = 14=#84e4e3 +palette = 15=#ffffff +background = #162c35 +foreground = #d7deea +cursor-color = #ffc64c +cursor-text = #8a919d +selection-background = #4c5b67 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Dark new file mode 100644 index 0000000..aa26538 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Dark @@ -0,0 +1,22 @@ +palette = 0=#262f37 +palette = 1=#f94967 +palette = 2=#8cc98f +palette = 3=#ffc64c +palette = 4=#409dd4 +palette = 5=#cba3c7 +palette = 6=#37b5b4 +palette = 7=#d7deea +palette = 8=#62747f +palette = 9=#e47e8b +palette = 10=#baddbb +palette = 11=#ffdc91 +palette = 12=#7ac0eb +palette = 13=#f3ccef +palette = 14=#84e4e3 +palette = 15=#ffffff +background = #0b1c24 +foreground = #d7deea +cursor-color = #ffc64c +cursor-text = #999999 +selection-background = #37b5b4 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Minimal b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Minimal new file mode 100644 index 0000000..de3a838 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt Next Minimal @@ -0,0 +1,22 @@ +palette = 0=#323d47 +palette = 1=#ff657a +palette = 2=#8cc98f +palette = 3=#ffc64c +palette = 4=#409dd4 +palette = 5=#cba3c7 +palette = 6=#37b5b4 +palette = 7=#d7deea +palette = 8=#62747f +palette = 9=#e47e8b +palette = 10=#baddbb +palette = 11=#ffdc91 +palette = 12=#7ac0eb +palette = 13=#f3ccef +palette = 14=#84e4e3 +palette = 15=#ffffff +background = #0b1c24 +foreground = #d7deea +cursor-color = #37b5b4 +cursor-text = #ffffff +selection-background = #37b5b4 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt2 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt2 new file mode 100644 index 0000000..2349381 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cobalt2 @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff0000 +palette = 2=#38de21 +palette = 3=#ffe50a +palette = 4=#1460d2 +palette = 5=#ff005d +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#f40e17 +palette = 10=#3bd01d +palette = 11=#edc809 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#6ae3fa +palette = 15=#ffffff +background = #132738 +foreground = #ffffff +cursor-color = #f0cc09 +cursor-text = #98998c +selection-background = #18354f +selection-foreground = #b5b5b5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Coffee Theme b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Coffee Theme new file mode 100644 index 0000000..c141327 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Coffee Theme @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c91b00 +palette = 2=#00c200 +palette = 3=#adaa00 +palette = 4=#0225c7 +palette = 5=#ca30c7 +palette = 6=#00b8ba +palette = 7=#a1a1a1 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#1fba28 +palette = 11=#b2af1b +palette = 12=#6871ff +palette = 13=#f26af2 +palette = 14=#20bdbf +palette = 15=#ffffff +background = #f5deb3 +foreground = #000000 +cursor-color = #a1a1a1 +cursor-text = #fffc67 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Crayon Pony Fish b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Crayon Pony Fish new file mode 100644 index 0000000..564fcad --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Crayon Pony Fish @@ -0,0 +1,22 @@ +palette = 0=#2b1b1d +palette = 1=#91002b +palette = 2=#579524 +palette = 3=#ab311b +palette = 4=#8c87b0 +palette = 5=#692f50 +palette = 6=#e8a866 +palette = 7=#68525a +palette = 8=#4a383b +palette = 9=#c5255d +palette = 10=#8dff57 +palette = 11=#c8381d +palette = 12=#cfc9ff +palette = 13=#fc6cba +palette = 14=#ffceaf +palette = 15=#b0949d +background = #150707 +foreground = #68525a +cursor-color = #68525a +cursor-text = #140707 +selection-background = #2b1b1d +selection-foreground = #69525a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cursor Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cursor Dark new file mode 100644 index 0000000..8d7e812 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cursor Dark @@ -0,0 +1,22 @@ +palette = 0=#2a2a2a +palette = 1=#bf616a +palette = 2=#a3be8c +palette = 3=#ebcb8b +palette = 4=#81a1c1 +palette = 5=#b48ead +palette = 6=#88c0d0 +palette = 7=#d8dee9 +palette = 8=#505050 +palette = 9=#bf616a +palette = 10=#a3be8c +palette = 11=#ebcb8b +palette = 12=#81a1c1 +palette = 13=#b48ead +palette = 14=#88c0d0 +palette = 15=#ffffff +background = #141414 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #141414 +selection-background = #303030 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cutie Pro b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cutie Pro new file mode 100644 index 0000000..1642a67 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cutie Pro @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f56e7f +palette = 2=#bec975 +palette = 3=#f58669 +palette = 4=#42d9c5 +palette = 5=#d286b7 +palette = 6=#37cb8a +palette = 7=#d5c3c3 +palette = 8=#88847f +palette = 9=#e5a1a3 +palette = 10=#e8d6a7 +palette = 11=#f1bb79 +palette = 12=#80c5de +palette = 13=#b294bb +palette = 14=#9dccbb +palette = 15=#ffffff +background = #181818 +foreground = #d5d0c9 +cursor-color = #efc4cd +cursor-text = #181818 +selection-background = #363636 +selection-foreground = #d5d0c9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberdyne b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberdyne new file mode 100644 index 0000000..28b0206 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberdyne @@ -0,0 +1,22 @@ +palette = 0=#080808 +palette = 1=#ff8373 +palette = 2=#00c172 +palette = 3=#d2a700 +palette = 4=#0071cf +palette = 5=#ff90fe +palette = 6=#6bffdd +palette = 7=#f1f1f1 +palette = 8=#484848 +palette = 9=#ffc4be +palette = 10=#d6fcba +palette = 11=#fffed5 +palette = 12=#c2e3ff +palette = 13=#ffb2fe +palette = 14=#e6e7fe +palette = 15=#ffffff +background = #151144 +foreground = #00ff92 +cursor-color = #00ff9c +cursor-text = #a6a6a6 +selection-background = #454d96 +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk new file mode 100644 index 0000000..5464b1a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff7092 +palette = 2=#00fbac +palette = 3=#fffa6a +palette = 4=#00bfff +palette = 5=#df95ff +palette = 6=#86cbfe +palette = 7=#ffffff +palette = 8=#595959 +palette = 9=#ff8aa4 +palette = 10=#21f6bc +palette = 11=#fff787 +palette = 12=#1bccfd +palette = 13=#e6aefe +palette = 14=#99d6fc +palette = 15=#ffffff +background = #332a57 +foreground = #e5e5e5 +cursor-color = #21f6bc +cursor-text = #999999 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk Scarlet Protocol b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk Scarlet Protocol new file mode 100644 index 0000000..7b814a9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Cyberpunk Scarlet Protocol @@ -0,0 +1,22 @@ +palette = 0=#101116 +palette = 1=#ff0051 +palette = 2=#01dc84 +palette = 3=#faf945 +palette = 4=#0271b6 +palette = 5=#c930c7 +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#60fa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#bd35ec +palette = 14=#60fdff +palette = 15=#ffffff +background = #101116 +foreground = #e41951 +cursor-color = #76ff9f +cursor-text = #a6a6a6 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Modern b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Modern new file mode 100644 index 0000000..784f22a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Modern @@ -0,0 +1,22 @@ +palette = 0=#272727 +palette = 1=#f74949 +palette = 2=#2ea043 +palette = 3=#9e6a03 +palette = 4=#0078d4 +palette = 5=#d01273 +palette = 6=#1db4d6 +palette = 7=#cccccc +palette = 8=#5d5d5d +palette = 9=#dc5452 +palette = 10=#23d18b +palette = 11=#f5f543 +palette = 12=#3b8eea +palette = 13=#d670d6 +palette = 14=#29b8db +palette = 15=#e5e5e5 +background = #1f1f1f +foreground = #cccccc +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #3a3d41 +selection-foreground = #e0e0e0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Pastel b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Pastel new file mode 100644 index 0000000..6eb1dfd --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark Pastel @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5555 +palette = 2=#55ff55 +palette = 3=#ffff55 +palette = 4=#5555ff +palette = 5=#ff55ff +palette = 6=#55ffff +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #ffffff +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark+ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark+ new file mode 100644 index 0000000..bcc22ea --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dark+ @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cd3131 +palette = 2=#0dbc79 +palette = 3=#e5e510 +palette = 4=#2472c8 +palette = 5=#bc3fbc +palette = 6=#11a8cd +palette = 7=#e5e5e5 +palette = 8=#666666 +palette = 9=#f14c4c +palette = 10=#23d18b +palette = 11=#f5f543 +palette = 12=#3b8eea +palette = 13=#d670d6 +palette = 14=#29b8db +palette = 15=#e5e5e5 +background = #1e1e1e +foreground = #cccccc +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #3a3d41 +selection-foreground = #e0e0e0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkermatrix b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkermatrix new file mode 100644 index 0000000..95db8fc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkermatrix @@ -0,0 +1,22 @@ +palette = 0=#091013 +palette = 1=#1a4831 +palette = 2=#6fa64c +palette = 3=#595900 +palette = 4=#00cb6b +palette = 5=#4e375a +palette = 6=#125459 +palette = 7=#1a4833 +palette = 8=#404040 +palette = 9=#0d452a +palette = 10=#90d762 +palette = 11=#e2e500 +palette = 12=#00ff87 +palette = 13=#4e375a +palette = 14=#176c73 +palette = 15=#00381e +background = #070c0e +foreground = #35451a +cursor-color = #444733 +cursor-text = #00ff87 +selection-background = #0f191c +selection-foreground = #00ff87 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkmatrix b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkmatrix new file mode 100644 index 0000000..e7d026b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkmatrix @@ -0,0 +1,22 @@ +palette = 0=#091013 +palette = 1=#006536 +palette = 2=#6fa64c +palette = 3=#7e8000 +palette = 4=#2c9a84 +palette = 5=#523a60 +palette = 6=#114d53 +palette = 7=#006536 +palette = 8=#404040 +palette = 9=#00733d +palette = 10=#90d762 +palette = 11=#e2e500 +palette = 12=#46d8b8 +palette = 13=#573d66 +palette = 14=#12545a +palette = 15=#006536 +background = #070c0e +foreground = #3e5715 +cursor-color = #9fa86e +cursor-text = #00ff87 +selection-background = #0f191c +selection-foreground = #00ff87 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkside b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkside new file mode 100644 index 0000000..9f16d36 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Darkside @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e8341c +palette = 2=#68c256 +palette = 3=#f2d42c +palette = 4=#1c98e8 +palette = 5=#8e69c9 +palette = 6=#1c98e8 +palette = 7=#bababa +palette = 8=#4c4c4c +palette = 9=#e05a4f +palette = 10=#77b869 +palette = 11=#efd64b +palette = 12=#387cd3 +palette = 13=#957bbe +palette = 14=#3d97e2 +palette = 15=#bababa +background = #222324 +foreground = #bababa +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #303333 +selection-foreground = #bababa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dawnfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dawnfox new file mode 100644 index 0000000..6b878e2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dawnfox @@ -0,0 +1,22 @@ +palette = 0=#575279 +palette = 1=#b4637a +palette = 2=#618774 +palette = 3=#ea9d34 +palette = 4=#286983 +palette = 5=#907aa9 +palette = 6=#56949f +palette = 7=#b2b6bd +palette = 8=#5f5695 +palette = 9=#c26d85 +palette = 10=#629f81 +palette = 11=#eea846 +palette = 12=#2d81a3 +palette = 13=#9a80b9 +palette = 14=#5ca7b4 +palette = 15=#e6ebf3 +background = #faf4ed +foreground = #575279 +cursor-color = #575279 +cursor-text = #faf4ed +selection-background = #d0d8d8 +selection-foreground = #575279 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dayfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dayfox new file mode 100644 index 0000000..85941f5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dayfox @@ -0,0 +1,22 @@ +palette = 0=#352c24 +palette = 1=#a5222f +palette = 2=#396847 +palette = 3=#ac5402 +palette = 4=#2848a9 +palette = 5=#6e33ce +palette = 6=#287980 +palette = 7=#bfb6ae +palette = 8=#534c45 +palette = 9=#b3434e +palette = 10=#577f63 +palette = 11=#b86e28 +palette = 12=#4863b6 +palette = 13=#8452d5 +palette = 14=#488d93 +palette = 15=#f4ece6 +background = #f6f2ee +foreground = #3d2b5a +cursor-color = #3d2b5a +cursor-text = #f6f2ee +selection-background = #e7d2be +selection-foreground = #3d2b5a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Deep b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Deep new file mode 100644 index 0000000..893aa7f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Deep @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d70005 +palette = 2=#1cd915 +palette = 3=#d9bd26 +palette = 4=#5665ff +palette = 5=#b052da +palette = 6=#50d2da +palette = 7=#e0e0e0 +palette = 8=#535353 +palette = 9=#fb0007 +palette = 10=#22ff18 +palette = 11=#fedc2b +palette = 12=#9fa9ff +palette = 13=#e09aff +palette = 14=#8df9ff +palette = 15=#ffffff +background = #090909 +foreground = #cdcdcd +cursor-color = #d0d0d0 +cursor-text = #151515 +selection-background = #780002 +selection-foreground = #ececec diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Desert b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Desert new file mode 100644 index 0000000..8eec3d2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Desert @@ -0,0 +1,22 @@ +palette = 0=#4d4d4d +palette = 1=#ff2b2b +palette = 2=#98fb98 +palette = 3=#f0e68c +palette = 4=#cd853f +palette = 5=#ffdead +palette = 6=#ffa0a0 +palette = 7=#f5deb3 +palette = 8=#626262 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#87ceff +palette = 13=#ff55ff +palette = 14=#ffd700 +palette = 15=#ffffff +background = #333333 +foreground = #ffffff +cursor-color = #00ff00 +cursor-text = #000000 +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Detuned b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Detuned new file mode 100644 index 0000000..413bff8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Detuned @@ -0,0 +1,22 @@ +palette = 0=#171717 +palette = 1=#fe4386 +palette = 2=#a6e32d +palette = 3=#e6da73 +palette = 4=#0094d9 +palette = 5=#9b37ff +palette = 6=#50b7d9 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#fa80ac +palette = 10=#bde371 +palette = 11=#fff27f +palette = 12=#00beff +palette = 13=#be9eff +palette = 14=#5ed7ff +palette = 15=#ffffff +background = #000000 +foreground = #c7c7c7 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimidium b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimidium new file mode 100644 index 0000000..8528c2c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimidium @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cf494c +palette = 2=#60b442 +palette = 3=#db9c11 +palette = 4=#0575d8 +palette = 5=#af5ed2 +palette = 6=#1db6bb +palette = 7=#bab7b6 +palette = 8=#817e7e +palette = 9=#ff643b +palette = 10=#37e57b +palette = 11=#fccd1a +palette = 12=#688dfd +palette = 13=#ed6fe9 +palette = 14=#32e0fb +palette = 15=#dee3e4 +background = #141414 +foreground = #bab7b6 +cursor-color = #37e57b +cursor-text = #141414 +selection-background = #8db8e5 +selection-foreground = #141414 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimmed Monokai b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimmed Monokai new file mode 100644 index 0000000..9de0861 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dimmed Monokai @@ -0,0 +1,22 @@ +palette = 0=#3a3d43 +palette = 1=#be3f48 +palette = 2=#879a3b +palette = 3=#c5a635 +palette = 4=#4f76a1 +palette = 5=#855c8d +palette = 6=#578fa4 +palette = 7=#b9bcba +palette = 8=#888987 +palette = 9=#fb001f +palette = 10=#0f722f +palette = 11=#c47033 +palette = 12=#186de3 +palette = 13=#fb0067 +palette = 14=#2e706d +palette = 15=#fdffb9 +background = #1f1f1f +foreground = #b9bcba +cursor-color = #f83e19 +cursor-text = #171717 +selection-background = #2a2d32 +selection-foreground = #b9bcba diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django new file mode 100644 index 0000000..eb1ac59 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fd6209 +palette = 2=#41a83e +palette = 3=#ffe862 +palette = 4=#315d3f +palette = 5=#f8f8f8 +palette = 6=#9df39f +palette = 7=#ffffff +palette = 8=#585858 +palette = 9=#ff943b +palette = 10=#73da70 +palette = 11=#ffff94 +palette = 12=#568264 +palette = 13=#ffffff +palette = 14=#cfffd1 +palette = 15=#ffffff +background = #0b2f20 +foreground = #f8f8f8 +cursor-color = #336442 +cursor-text = #f8f8f8 +selection-background = #245032 +selection-foreground = #f8f8f8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Reborn Again b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Reborn Again new file mode 100644 index 0000000..9d10b04 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Reborn Again @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fd6209 +palette = 2=#41a83e +palette = 3=#ffe862 +palette = 4=#245032 +palette = 5=#f8f8f8 +palette = 6=#9df39f +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#ff943b +palette = 10=#73da70 +palette = 11=#ffff94 +palette = 12=#568264 +palette = 13=#ffffff +palette = 14=#cfffd1 +palette = 15=#ffffff +background = #051f14 +foreground = #dadedc +cursor-color = #ffcc00 +cursor-text = #9a9e9c +selection-background = #203727 +selection-foreground = #dadedc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Smooth b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Smooth new file mode 100644 index 0000000..c0b7bb2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Django Smooth @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fd6209 +palette = 2=#41a83e +palette = 3=#ffe862 +palette = 4=#989898 +palette = 5=#f8f8f8 +palette = 6=#9df39f +palette = 7=#e8e8e7 +palette = 8=#727272 +palette = 9=#ff943b +palette = 10=#73da70 +palette = 11=#ffff94 +palette = 12=#cacaca +palette = 13=#ffffff +palette = 14=#cfffd1 +palette = 15=#ffffff +background = #245032 +foreground = #f8f8f8 +cursor-color = #4c7e5c +cursor-text = #f8f8f8 +selection-background = #336442 +selection-foreground = #f8f8f8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom One b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom One new file mode 100644 index 0000000..2d96083 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom One @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff6c6b +palette = 2=#98be65 +palette = 3=#ecbe7b +palette = 4=#a9a1e1 +palette = 5=#c678dd +palette = 6=#51afef +palette = 7=#bbc2cf +palette = 8=#595959 +palette = 9=#ff6655 +palette = 10=#99bb66 +palette = 11=#ecbe7b +palette = 12=#a9a1e1 +palette = 13=#c678dd +palette = 14=#51afef +palette = 15=#bfbfbf +background = #282c34 +foreground = #bbc2cf +cursor-color = #51afef +cursor-text = #1b1b1b +selection-background = #42444b +selection-foreground = #bbc2cf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom Peacock b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom Peacock new file mode 100644 index 0000000..0c54f1b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Doom Peacock @@ -0,0 +1,22 @@ +palette = 0=#1c1f24 +palette = 1=#cb4b16 +palette = 2=#26a6a6 +palette = 3=#bcd42a +palette = 4=#2a6cc6 +palette = 5=#a9a1e1 +palette = 6=#5699af +palette = 7=#ede0ce +palette = 8=#51504d +palette = 9=#ff5d38 +palette = 10=#98be65 +palette = 11=#e6f972 +palette = 12=#51afef +palette = 13=#c678dd +palette = 14=#46d9ff +palette = 15=#dfdfdf +background = #2b2a27 +foreground = #ede0ce +cursor-color = #9c9c9d +cursor-text = #36312b +selection-background = #a60033 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dot Gov b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dot Gov new file mode 100644 index 0000000..3560668 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dot Gov @@ -0,0 +1,22 @@ +palette = 0=#191919 +palette = 1=#bf091d +palette = 2=#3d9751 +palette = 3=#f6bb34 +palette = 4=#17b2e0 +palette = 5=#7830b0 +palette = 6=#8bd2ed +palette = 7=#ffffff +palette = 8=#595959 +palette = 9=#bf091d +palette = 10=#3d9751 +palette = 11=#f6bb34 +palette = 12=#17b2e0 +palette = 13=#7830b0 +palette = 14=#8bd2ed +palette = 15=#ffffff +background = #262c35 +foreground = #ebebeb +cursor-color = #d9002f +cursor-text = #ffffff +selection-background = #1a4080 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula new file mode 100644 index 0000000..341ec58 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula @@ -0,0 +1,22 @@ +palette = 0=#21222c +palette = 1=#ff5555 +palette = 2=#50fa7b +palette = 3=#f1fa8c +palette = 4=#bd93f9 +palette = 5=#ff79c6 +palette = 6=#8be9fd +palette = 7=#f8f8f2 +palette = 8=#6272a4 +palette = 9=#ff6e6e +palette = 10=#69ff94 +palette = 11=#ffffa5 +palette = 12=#d6acff +palette = 13=#ff92df +palette = 14=#a4ffff +palette = 15=#ffffff +background = #282a36 +foreground = #f8f8f2 +cursor-color = #f8f8f2 +cursor-text = #282a36 +selection-background = #44475a +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula+ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula+ new file mode 100644 index 0000000..e47b882 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Dracula+ @@ -0,0 +1,22 @@ +palette = 0=#21222c +palette = 1=#ff5555 +palette = 2=#50fa7b +palette = 3=#ffcb6b +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#8be9fd +palette = 7=#f8f8f2 +palette = 8=#545454 +palette = 9=#ff6e6e +palette = 10=#69ff94 +palette = 11=#ffcb6b +palette = 12=#d6acff +palette = 13=#ff92df +palette = 14=#a4ffff +palette = 15=#f8f8f2 +background = #212121 +foreground = #f8f8f2 +cursor-color = #eceff4 +cursor-text = #282828 +selection-background = #f8f8f2 +selection-foreground = #545454 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duckbones b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duckbones new file mode 100644 index 0000000..5110244 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duckbones @@ -0,0 +1,22 @@ +palette = 0=#0e101a +palette = 1=#e03600 +palette = 2=#5dcd97 +palette = 3=#e39500 +palette = 4=#00a3cb +palette = 5=#795ccc +palette = 6=#00a3cb +palette = 7=#ebefc0 +palette = 8=#444860 +palette = 9=#ff4821 +palette = 10=#58db9e +palette = 11=#f6a100 +palette = 12=#00b4e0 +palette = 13=#b3a1e6 +palette = 14=#00b4e0 +palette = 15=#b3b692 +background = #0e101a +foreground = #ebefc0 +cursor-color = #edf2c2 +cursor-text = #0e101a +selection-background = #37382d +selection-foreground = #ebefc0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duotone Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duotone Dark new file mode 100644 index 0000000..50457dc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duotone Dark @@ -0,0 +1,22 @@ +palette = 0=#1f1d27 +palette = 1=#d9393e +palette = 2=#2dcd73 +palette = 3=#d9b76e +palette = 4=#ffc284 +palette = 5=#de8d40 +palette = 6=#2488ff +palette = 7=#b7a1ff +palette = 8=#4e4a60 +palette = 9=#d9393e +palette = 10=#2dcd73 +palette = 11=#d9b76e +palette = 12=#ffc284 +palette = 13=#de8d40 +palette = 14=#2488ff +palette = 15=#eae5ff +background = #1f1d27 +foreground = #b7a1ff +cursor-color = #ff9839 +cursor-text = #1f1d27 +selection-background = #353147 +selection-foreground = #b7a2ff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duskfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duskfox new file mode 100644 index 0000000..e387add --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Duskfox @@ -0,0 +1,22 @@ +palette = 0=#393552 +palette = 1=#eb6f92 +palette = 2=#a3be8c +palette = 3=#f6c177 +palette = 4=#569fba +palette = 5=#c4a7e7 +palette = 6=#9ccfd8 +palette = 7=#e0def4 +palette = 8=#544d8a +palette = 9=#f083a2 +palette = 10=#b1d196 +palette = 11=#f9cb8c +palette = 12=#65b1cd +palette = 13=#ccb1ed +palette = 14=#a6dae3 +palette = 15=#e2e0f7 +background = #232136 +foreground = #e0def4 +cursor-color = #e0def4 +cursor-text = #232136 +selection-background = #433c59 +selection-foreground = #e0def4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/ENCOM b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/ENCOM new file mode 100644 index 0000000..fc59ee1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/ENCOM @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#9f0000 +palette = 2=#008b00 +palette = 3=#ffd000 +palette = 4=#0081ff +palette = 5=#bc00ca +palette = 6=#008b8b +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff0000 +palette = 10=#00ee00 +palette = 11=#ffff00 +palette = 12=#0000ff +palette = 13=#ff00ff +palette = 14=#00cdcd +palette = 15=#ffffff +background = #000000 +foreground = #00a595 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #00a48c +selection-foreground = #3de1c9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Earthsong b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Earthsong new file mode 100644 index 0000000..e9a36e3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Earthsong @@ -0,0 +1,22 @@ +palette = 0=#121418 +palette = 1=#c94234 +palette = 2=#85c54c +palette = 3=#f5ae2e +palette = 4=#1398b9 +palette = 5=#d0633d +palette = 6=#509552 +palette = 7=#e5c6aa +palette = 8=#675f54 +palette = 9=#ff645a +palette = 10=#98e036 +palette = 11=#e0d561 +palette = 12=#5fdaff +palette = 13=#ff9269 +palette = 14=#84f088 +palette = 15=#f6f7ec +background = #292520 +foreground = #e5c7a9 +cursor-color = #f6f7ec +cursor-text = #292520 +selection-background = #121418 +selection-foreground = #e5c7a9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Electron Highlighter b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Electron Highlighter new file mode 100644 index 0000000..72d1a01 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Electron Highlighter @@ -0,0 +1,22 @@ +palette = 0=#15161f +palette = 1=#ff6c8d +palette = 2=#00ffc3 +palette = 3=#ffd7a9 +palette = 4=#77abff +palette = 5=#daa4f4 +palette = 6=#00fdff +palette = 7=#778faf +palette = 8=#4a6789 +palette = 9=#ff6c8d +palette = 10=#00ffc3 +palette = 11=#ffd7a9 +palette = 12=#77abff +palette = 13=#daa4f4 +palette = 14=#00fdff +palette = 15=#c3cee2 +background = #23283d +foreground = #a5b6d4 +cursor-color = #a5b6d4 +cursor-text = #1a1b27 +selection-background = #25345a +selection-foreground = #a5b6d4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elegant b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elegant new file mode 100644 index 0000000..0fc9c0e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elegant @@ -0,0 +1,22 @@ +palette = 0=#0a1222 +palette = 1=#ff0257 +palette = 2=#85cc95 +palette = 3=#ffcb8b +palette = 4=#8dabe1 +palette = 5=#c792eb +palette = 6=#78ccf0 +palette = 7=#ffffff +palette = 8=#575656 +palette = 9=#ff0057 +palette = 10=#85cc95 +palette = 11=#ffcb8b +palette = 12=#8dabe1 +palette = 13=#c792eb +palette = 14=#3facef +palette = 15=#ffffff +background = #292b31 +foreground = #ced2d6 +cursor-color = #00beff +cursor-text = #ffffff +selection-background = #d5d5d5 +selection-foreground = #144385 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elemental b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elemental new file mode 100644 index 0000000..c3c529f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elemental @@ -0,0 +1,22 @@ +palette = 0=#3c3c30 +palette = 1=#98290f +palette = 2=#479a43 +palette = 3=#7f7111 +palette = 4=#497f7d +palette = 5=#7f4e2f +palette = 6=#387f58 +palette = 7=#807974 +palette = 8=#555445 +palette = 9=#e0502a +palette = 10=#61e070 +palette = 11=#d69927 +palette = 12=#79d9d9 +palette = 13=#cd7c54 +palette = 14=#59d599 +palette = 15=#fff1e9 +background = #22211d +foreground = #807a74 +cursor-color = #facb80 +cursor-text = #161611 +selection-background = #413829 +selection-foreground = #facd77 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elementary b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elementary new file mode 100644 index 0000000..940a337 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Elementary @@ -0,0 +1,22 @@ +palette = 0=#242424 +palette = 1=#d71c15 +palette = 2=#5aa513 +palette = 3=#fdb40c +palette = 4=#134899 +palette = 5=#e40038 +palette = 6=#2595e1 +palette = 7=#efefef +palette = 8=#4b4b4b +palette = 9=#fc1c18 +palette = 10=#6bc219 +palette = 11=#fec80e +palette = 12=#0955ff +palette = 13=#fb0050 +palette = 14=#3ea8fc +palette = 15=#8c00ec +background = #181818 +foreground = #efefef +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embark new file mode 100644 index 0000000..9546c3e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embark @@ -0,0 +1,22 @@ +palette = 0=#1e1c31 +palette = 1=#f0719b +palette = 2=#a1efd3 +palette = 3=#ffe9aa +palette = 4=#57c7ff +palette = 5=#c792ea +palette = 6=#87dfeb +palette = 7=#f8f8f2 +palette = 8=#585273 +palette = 9=#f02e6e +palette = 10=#2ce592 +palette = 11=#ffb378 +palette = 12=#1da0e2 +palette = 13=#a742ea +palette = 14=#63f2f1 +palette = 15=#a6b3cc +background = #1e1c31 +foreground = #eeffff +cursor-color = #a1efd3 +cursor-text = #1e1c31 +selection-background = #fbfcfc +selection-foreground = #1e1c31 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embers Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embers Dark new file mode 100644 index 0000000..b4ed48b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Embers Dark @@ -0,0 +1,22 @@ +palette = 0=#16130f +palette = 1=#826d57 +palette = 2=#57826d +palette = 3=#6d8257 +palette = 4=#6d5782 +palette = 5=#82576d +palette = 6=#576d82 +palette = 7=#a39a90 +palette = 8=#5a5047 +palette = 9=#828257 +palette = 10=#464039 +palette = 11=#50483f +palette = 12=#8a8075 +palette = 13=#beb6ae +palette = 14=#825757 +palette = 15=#dbd6d1 +background = #16130f +foreground = #a39a90 +cursor-color = #a39a90 +cursor-text = #16130f +selection-background = #433b32 +selection-foreground = #a39a90 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso new file mode 100644 index 0000000..c55ee6a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso @@ -0,0 +1,22 @@ +palette = 0=#353535 +palette = 1=#d25252 +palette = 2=#a5c261 +palette = 3=#ffc66d +palette = 4=#6c99bb +palette = 5=#d197d9 +palette = 6=#bed6ff +palette = 7=#eeeeec +palette = 8=#606060 +palette = 9=#f00c0c +palette = 10=#c2e075 +palette = 11=#e1e48b +palette = 12=#8ab7d9 +palette = 13=#efb5f7 +palette = 14=#dcf4ff +palette = 15=#ffffff +background = #323232 +foreground = #ffffff +cursor-color = #d6d6d6 +cursor-text = #999999 +selection-background = #5b5b5b +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso Libre b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso Libre new file mode 100644 index 0000000..e65507b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Espresso Libre @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0000 +palette = 2=#1a921c +palette = 3=#f0e53a +palette = 4=#0066ff +palette = 5=#c5656b +palette = 6=#06989a +palette = 7=#d3d7cf +palette = 8=#555753 +palette = 9=#ef2929 +palette = 10=#9aff87 +palette = 11=#fffb5c +palette = 12=#43a8ed +palette = 13=#ff818a +palette = 14=#34e2e2 +palette = 15=#eeeeec +background = #2a211c +foreground = #b8a898 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #c3dcff +selection-foreground = #ab9b8b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everblush b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everblush new file mode 100644 index 0000000..dcf1132 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everblush @@ -0,0 +1,22 @@ +palette = 0=#232a2d +palette = 1=#e57474 +palette = 2=#8ccf7e +palette = 3=#e5c76b +palette = 4=#67b0e8 +palette = 5=#c47fd5 +palette = 6=#6cbfbf +palette = 7=#b3b9b8 +palette = 8=#464e50 +palette = 9=#ef7e7e +palette = 10=#96d988 +palette = 11=#f4d67a +palette = 12=#71baf2 +palette = 13=#ce89df +palette = 14=#67cbe7 +palette = 15=#bdc3c2 +background = #141b1e +foreground = #dadada +cursor-color = #dadada +cursor-text = #141b1e +selection-background = #141b1e +selection-foreground = #dadada diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Dark Hard b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Dark Hard new file mode 100644 index 0000000..92a92e9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Dark Hard @@ -0,0 +1,22 @@ +palette = 0=#7a8478 +palette = 1=#e67e80 +palette = 2=#a7c080 +palette = 3=#dbbc7f +palette = 4=#7fbbb3 +palette = 5=#d699b6 +palette = 6=#83c092 +palette = 7=#f2efdf +palette = 8=#a6b0a0 +palette = 9=#f85552 +palette = 10=#8da101 +palette = 11=#dfa000 +palette = 12=#3a94c5 +palette = 13=#df69ba +palette = 14=#35a77c +palette = 15=#fffbef +background = #1e2326 +foreground = #d3c6aa +cursor-color = #e69875 +cursor-text = #4c3743 +selection-background = #4c3743 +selection-foreground = #d3c6aa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Light Med b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Light Med new file mode 100644 index 0000000..fb43401 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Everforest Light Med @@ -0,0 +1,22 @@ +palette = 0=#7a8478 +palette = 1=#e67e80 +palette = 2=#9ab373 +palette = 3=#c1a266 +palette = 4=#7fbbb3 +palette = 5=#d699b6 +palette = 6=#83c092 +palette = 7=#b2af9f +palette = 8=#a6b0a0 +palette = 9=#f85552 +palette = 10=#8da101 +palette = 11=#dfa000 +palette = 12=#3a94c5 +palette = 13=#df69ba +palette = 14=#35a77c +palette = 15=#fffbef +background = #efebd4 +foreground = #5c6a72 +cursor-color = #f57d26 +cursor-text = #eaedc8 +selection-background = #eaedc8 +selection-foreground = #5c6a72 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fahrenheit b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fahrenheit new file mode 100644 index 0000000..bfbe816 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fahrenheit @@ -0,0 +1,22 @@ +palette = 0=#1d1d1d +palette = 1=#cda074 +palette = 2=#9e744d +palette = 3=#fecf75 +palette = 4=#7f0e0f +palette = 5=#734c4d +palette = 6=#979797 +palette = 7=#ffffce +palette = 8=#404040 +palette = 9=#fecea0 +palette = 10=#cc734d +palette = 11=#fd9f4d +palette = 12=#cb4a05 +palette = 13=#4e739f +palette = 14=#fed04d +palette = 15=#ffffff +background = #000000 +foreground = #ffffce +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #4e739f +selection-foreground = #ffffce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fairyfloss b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fairyfloss new file mode 100644 index 0000000..62879b0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fairyfloss @@ -0,0 +1,22 @@ +palette = 0=#040303 +palette = 1=#f92672 +palette = 2=#c2ffdf +palette = 3=#e6c000 +palette = 4=#c2ffdf +palette = 5=#ffb8d1 +palette = 6=#c5a3ff +palette = 7=#f8f8f0 +palette = 8=#6090cb +palette = 9=#ff857f +palette = 10=#c2ffdf +palette = 11=#ffea00 +palette = 12=#c2ffdf +palette = 13=#ffb8d1 +palette = 14=#c5a3ff +palette = 15=#f8f8f0 +background = #5a5475 +foreground = #f8f8f2 +cursor-color = #f8f8f0 +cursor-text = #060709 +selection-background = #8077a8 +selection-foreground = #f6e1ce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Dark new file mode 100644 index 0000000..add7cbb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Dark @@ -0,0 +1,22 @@ +palette = 0=#1d2027 +palette = 1=#ba0004 +palette = 2=#549d00 +palette = 3=#c87300 +palette = 4=#0049e6 +palette = 5=#9f1b61 +palette = 6=#1fb65c +palette = 7=#e8e4e1 +palette = 8=#464d54 +palette = 9=#eb0009 +palette = 10=#7ac100 +palette = 11=#ea9a00 +palette = 12=#006efe +palette = 13=#bf3b7f +palette = 14=#19e062 +palette = 15=#f4eef0 +background = #1d2027 +foreground = #e8e4e1 +cursor-color = #006efe +cursor-text = #e8e4e1 +selection-background = #4d5658 +selection-foreground = #b3b1aa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Light new file mode 100644 index 0000000..e716bdb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Farmhouse Light @@ -0,0 +1,22 @@ +palette = 0=#1d2027 +palette = 1=#8d0003 +palette = 2=#3a7d00 +palette = 3=#a95600 +palette = 4=#092ccd +palette = 5=#820046 +palette = 6=#229256 +palette = 7=#a8a4a1 +palette = 8=#394047 +palette = 9=#eb0009 +palette = 10=#7ac100 +palette = 11=#ea9a00 +palette = 12=#006efe +palette = 13=#bf3b7f +palette = 14=#00c649 +palette = 15=#f4eef0 +background = #e8e4e1 +foreground = #1d2027 +cursor-color = #006efe +cursor-text = #1d2027 +selection-background = #b3b1aa +selection-foreground = #4d5658 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fideloper b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fideloper new file mode 100644 index 0000000..de5c4e3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fideloper @@ -0,0 +1,22 @@ +palette = 0=#292f33 +palette = 1=#cb1e2d +palette = 2=#edb8ac +palette = 3=#b7ab9b +palette = 4=#2e78c2 +palette = 5=#c0236f +palette = 6=#309186 +palette = 7=#eae3ce +palette = 8=#496068 +palette = 9=#d4605a +palette = 10=#d4605a +palette = 11=#a86671 +palette = 12=#7c85c4 +palette = 13=#5c5db2 +palette = 14=#819090 +palette = 15=#fcf4df +background = #292f33 +foreground = #dbdae0 +cursor-color = #d4605a +cursor-text = #fefff2 +selection-background = #efb8ac +selection-foreground = #8c8c8c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefly Traditional b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefly Traditional new file mode 100644 index 0000000..7ce1964 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefly Traditional @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c23720 +palette = 2=#33bc26 +palette = 3=#afad24 +palette = 4=#5a63ff +palette = 5=#d53ad2 +palette = 6=#33bbc7 +palette = 7=#cccccc +palette = 8=#828282 +palette = 9=#ff3b1e +palette = 10=#2ee720 +palette = 11=#ecec16 +palette = 12=#838dff +palette = 13=#ff5cfe +palette = 14=#29f0f0 +palette = 15=#ebebeb +background = #000000 +foreground = #f5f5f5 +cursor-color = #00f900 +cursor-text = #999999 +selection-background = #cfeac6 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefox Dev b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefox Dev new file mode 100644 index 0000000..2bd5aa3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firefox Dev @@ -0,0 +1,22 @@ +palette = 0=#002831 +palette = 1=#e63853 +palette = 2=#5eb83c +palette = 3=#a57706 +palette = 4=#359ddf +palette = 5=#d75cff +palette = 6=#4b73a2 +palette = 7=#dcdcdc +palette = 8=#26444d +palette = 9=#e1003f +palette = 10=#1d9000 +palette = 11=#cd9409 +palette = 12=#006fc0 +palette = 13=#a200da +palette = 14=#005794 +palette = 15=#e2e2e2 +background = #0e1011 +foreground = #7c8fa4 +cursor-color = #708284 +cursor-text = #002831 +selection-background = #163c61 +selection-foreground = #f2f5f9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firewatch b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firewatch new file mode 100644 index 0000000..6e2859f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Firewatch @@ -0,0 +1,22 @@ +palette = 0=#585f6d +palette = 1=#d95360 +palette = 2=#5ab977 +palette = 3=#dfb563 +palette = 4=#4d89c4 +palette = 5=#d55119 +palette = 6=#44a8b6 +palette = 7=#e6e5ff +palette = 8=#585f6d +palette = 9=#d95360 +palette = 10=#5ab977 +palette = 11=#dfb563 +palette = 12=#4c89c5 +palette = 13=#d55119 +palette = 14=#44a8b6 +palette = 15=#e6e5ff +background = #1e2027 +foreground = #9ba2b2 +cursor-color = #f6f7ec +cursor-text = #b7b8a8 +selection-background = #2f363e +selection-foreground = #7d8fa4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fish Tank b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fish Tank new file mode 100644 index 0000000..e44641b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fish Tank @@ -0,0 +1,22 @@ +palette = 0=#03073c +palette = 1=#c6004a +palette = 2=#acf157 +palette = 3=#fecd5e +palette = 4=#525fb8 +palette = 5=#986f82 +palette = 6=#968763 +palette = 7=#ecf0fc +palette = 8=#6c5b30 +palette = 9=#da4b8a +palette = 10=#dbffa9 +palette = 11=#fee6a9 +palette = 12=#b2befa +palette = 13=#fda5cd +palette = 14=#a5bd86 +palette = 15=#f6ffec +background = #232537 +foreground = #ecf0fe +cursor-color = #fecd5e +cursor-text = #232537 +selection-background = #fcf7e9 +selection-foreground = #232537 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flat b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flat new file mode 100644 index 0000000..eaf0b9e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flat @@ -0,0 +1,22 @@ +palette = 0=#222d3f +palette = 1=#a82320 +palette = 2=#32a548 +palette = 3=#e58d11 +palette = 4=#3167ac +palette = 5=#781aa0 +palette = 6=#2c9370 +palette = 7=#b0b6ba +palette = 8=#475262 +palette = 9=#d4312e +palette = 10=#2d9440 +palette = 11=#e5be0c +palette = 12=#3c7dd2 +palette = 13=#8230a7 +palette = 14=#35b387 +palette = 15=#e7eced +background = #002240 +foreground = #2cc55d +cursor-color = #e5be0c +cursor-text = #ffffff +selection-background = #792b9c +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flatland b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flatland new file mode 100644 index 0000000..7006ee2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flatland @@ -0,0 +1,22 @@ +palette = 0=#1d1d19 +palette = 1=#f18339 +palette = 2=#9fd364 +palette = 3=#f4ef6d +palette = 4=#5096be +palette = 5=#695abc +palette = 6=#d63865 +palette = 7=#ffffff +palette = 8=#50504c +palette = 9=#d22a24 +palette = 10=#a7d42c +palette = 11=#ff8949 +palette = 12=#61b9d0 +palette = 13=#695abc +palette = 14=#d63865 +palette = 15=#ffffff +background = #1d1f21 +foreground = #b8dbef +cursor-color = #708284 +cursor-text = #002831 +selection-background = #2b2a24 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Dark new file mode 100644 index 0000000..7e9715f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Dark @@ -0,0 +1,22 @@ +palette = 0=#100f0f +palette = 1=#d14d41 +palette = 2=#879a39 +palette = 3=#d0a215 +palette = 4=#4385be +palette = 5=#ce5d97 +palette = 6=#3aa99f +palette = 7=#878580 +palette = 8=#575653 +palette = 9=#af3029 +palette = 10=#66800b +palette = 11=#ad8301 +palette = 12=#205ea6 +palette = 13=#a02f6f +palette = 14=#24837b +palette = 15=#cecdc3 +background = #100f0f +foreground = #cecdc3 +cursor-color = #cecdc3 +cursor-text = #100f0f +selection-background = #403e3c +selection-foreground = #cecdc3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Light new file mode 100644 index 0000000..d5ebc09 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Flexoki Light @@ -0,0 +1,22 @@ +palette = 0=#100f0f +palette = 1=#af3029 +palette = 2=#66800b +palette = 3=#ad8301 +palette = 4=#205ea6 +palette = 5=#a02f6f +palette = 6=#24837b +palette = 7=#6f6e69 +palette = 8=#b7b5ac +palette = 9=#d14d41 +palette = 10=#879a39 +palette = 11=#d0a215 +palette = 12=#4385be +palette = 13=#ce5d97 +palette = 14=#3aa99f +palette = 15=#cecdc3 +background = #fffcf0 +foreground = #100f0f +cursor-color = #100f0f +cursor-text = #fffcf0 +selection-background = #cecdc3 +selection-foreground = #100f0f diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Floraverse b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Floraverse new file mode 100644 index 0000000..1ced801 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Floraverse @@ -0,0 +1,22 @@ +palette = 0=#08002e +palette = 1=#7e1a46 +palette = 2=#5d731a +palette = 3=#cd751c +palette = 4=#1d6da1 +palette = 5=#b7077e +palette = 6=#42a38c +palette = 7=#f3e0b8 +palette = 8=#4c3866 +palette = 9=#d02063 +palette = 10=#b4ce59 +palette = 11=#fac357 +palette = 12=#40a4cf +palette = 13=#f12aae +palette = 14=#62caa8 +palette = 15=#fff5db +background = #0e0d15 +foreground = #dbd1b9 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #f3e0b8 +selection-foreground = #08002e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Forest Blue b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Forest Blue new file mode 100644 index 0000000..d3bc92e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Forest Blue @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#f8818e +palette = 2=#92d3a2 +palette = 3=#1a8e63 +palette = 4=#8ed0ce +palette = 5=#5e468c +palette = 6=#31658c +palette = 7=#e2d8cd +palette = 8=#4a4a4a +palette = 9=#fb3d66 +palette = 10=#6bb48d +palette = 11=#30c85a +palette = 12=#39a7a2 +palette = 13=#7e62b3 +palette = 14=#6096bf +palette = 15=#e2d8cd +background = #051519 +foreground = #e2d8cd +cursor-color = #9e9ecb +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Framer b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Framer new file mode 100644 index 0000000..c41e4d5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Framer @@ -0,0 +1,22 @@ +palette = 0=#141414 +palette = 1=#ff5555 +palette = 2=#98ec65 +palette = 3=#ffcc33 +palette = 4=#00aaff +palette = 5=#aa88ff +palette = 6=#88ddff +palette = 7=#cccccc +palette = 8=#414141 +palette = 9=#ff8888 +palette = 10=#b6f292 +palette = 11=#ffd966 +palette = 12=#33bbff +palette = 13=#cebbff +palette = 14=#bbecff +palette = 15=#ffffff +background = #111111 +foreground = #777777 +cursor-color = #fcdc08 +cursor-text = #161616 +selection-background = #666666 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Front End Delight b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Front End Delight new file mode 100644 index 0000000..45b99ba --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Front End Delight @@ -0,0 +1,22 @@ +palette = 0=#242526 +palette = 1=#f8511b +palette = 2=#565747 +palette = 3=#fa771d +palette = 4=#2c70b7 +palette = 5=#f02e4f +palette = 6=#3ca1a6 +palette = 7=#adadad +palette = 8=#5fac6d +palette = 9=#f74319 +palette = 10=#74ec4c +palette = 11=#fdc325 +palette = 12=#3393ca +palette = 13=#e75e4f +palette = 14=#4fbce6 +palette = 15=#8c735b +background = #1b1c1d +foreground = #adadad +cursor-color = #cdcdcd +cursor-text = #1b1c1d +selection-background = #ea6154 +selection-foreground = #1b1c1d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fun Forrest b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fun Forrest new file mode 100644 index 0000000..f14ab7a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Fun Forrest @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d6262b +palette = 2=#919c00 +palette = 3=#be8a13 +palette = 4=#4699a3 +palette = 5=#8d4331 +palette = 6=#da8213 +palette = 7=#ddc265 +palette = 8=#7f6a55 +palette = 9=#e55a1c +palette = 10=#bfc65a +palette = 11=#ffcb1b +palette = 12=#7cc9cf +palette = 13=#d26349 +palette = 14=#e6a96b +palette = 15=#ffeaa3 +background = #251200 +foreground = #dec165 +cursor-color = #e5591c +cursor-text = #000000 +selection-background = #e5591c +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galaxy b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galaxy new file mode 100644 index 0000000..fd650f3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galaxy @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f9555f +palette = 2=#21b089 +palette = 3=#fef02a +palette = 4=#589df6 +palette = 5=#944d95 +palette = 6=#1f9ee7 +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#fa8c8f +palette = 10=#35bb9a +palette = 11=#ffff55 +palette = 12=#589df6 +palette = 13=#e75699 +palette = 14=#3979bc +palette = 15=#ffffff +background = #1d2837 +foreground = #ffffff +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galizur b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galizur new file mode 100644 index 0000000..a369375 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Galizur @@ -0,0 +1,22 @@ +palette = 0=#223344 +palette = 1=#aa1122 +palette = 2=#33aa11 +palette = 3=#ccaa22 +palette = 4=#2255cc +palette = 5=#7755aa +palette = 6=#22bbdd +palette = 7=#8899aa +palette = 8=#556677 +palette = 9=#ff1133 +palette = 10=#33ff11 +palette = 11=#ffdd33 +palette = 12=#3377ff +palette = 13=#aa77ff +palette = 14=#33ddff +palette = 15=#bbccdd +background = #071317 +foreground = #ddeeff +cursor-color = #ddeeff +cursor-text = #071317 +selection-background = #071317 +selection-foreground = #ddeeff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ghostty Default Style Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ghostty Default Style Dark new file mode 100644 index 0000000..9b85400 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ghostty Default Style Dark @@ -0,0 +1,22 @@ +palette = 0=#1d1f21 +palette = 1=#cc6566 +palette = 2=#b6bd68 +palette = 3=#f0c674 +palette = 4=#82a2be +palette = 5=#b294bb +palette = 6=#8abeb7 +palette = 7=#c4c8c6 +palette = 8=#666666 +palette = 9=#d54e53 +palette = 10=#b9ca4b +palette = 11=#e7c547 +palette = 12=#7aa6da +palette = 13=#c397d8 +palette = 14=#70c0b1 +palette = 15=#eaeaea +background = #282c34 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #353a44 +selection-background = #ffffff +selection-foreground = #282c34 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub new file mode 100644 index 0000000..364dd54 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub @@ -0,0 +1,22 @@ +palette = 0=#3e3e3e +palette = 1=#970b16 +palette = 2=#07962a +palette = 3=#c5bb94 +palette = 4=#003e8a +palette = 5=#e94691 +palette = 6=#7cc4df +palette = 7=#b2b2b2 +palette = 8=#666666 +palette = 9=#de0000 +palette = 10=#7ac895 +palette = 11=#d7b600 +palette = 12=#2e6cba +palette = 13=#f29592 +palette = 14=#00c7cb +palette = 15=#ffffff +background = #f4f4f4 +foreground = #3e3e3e +cursor-color = #3f3f3f +cursor-text = #f4f4f4 +selection-background = #a9c1e2 +selection-foreground = #535353 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark new file mode 100644 index 0000000..7f9cf85 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f78166 +palette = 2=#56d364 +palette = 3=#e3b341 +palette = 4=#6ca4f8 +palette = 5=#db61a2 +palette = 6=#2b7489 +palette = 7=#ffffff +palette = 8=#4d4d4d +palette = 9=#f78166 +palette = 10=#56d364 +palette = 11=#e3b341 +palette = 12=#6ca4f8 +palette = 13=#db61a2 +palette = 14=#2b7489 +palette = 15=#ffffff +background = #101216 +foreground = #8b949e +cursor-color = #c9d1d9 +cursor-text = #101216 +selection-background = #3b5070 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Colorblind b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Colorblind new file mode 100644 index 0000000..7b959b8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Colorblind @@ -0,0 +1,22 @@ +palette = 0=#484f58 +palette = 1=#ec8e2c +palette = 2=#58a6ff +palette = 3=#d29922 +palette = 4=#58a6ff +palette = 5=#bc8cff +palette = 6=#39c5cf +palette = 7=#b1bac4 +palette = 8=#6e7681 +palette = 9=#fdac54 +palette = 10=#79c0ff +palette = 11=#e3b341 +palette = 12=#79c0ff +palette = 13=#d2a8ff +palette = 14=#56d4dd +palette = 15=#ffffff +background = #0d1117 +foreground = #c9d1d9 +cursor-color = #58a6ff +cursor-text = #98e6ff +selection-background = #c9d1d9 +selection-foreground = #0d1117 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Default b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Default new file mode 100644 index 0000000..310cb68 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Default @@ -0,0 +1,22 @@ +palette = 0=#484f58 +palette = 1=#ff7b72 +palette = 2=#3fb950 +palette = 3=#d29922 +palette = 4=#58a6ff +palette = 5=#bc8cff +palette = 6=#39c5cf +palette = 7=#b1bac4 +palette = 8=#6e7681 +palette = 9=#ffa198 +palette = 10=#56d364 +palette = 11=#e3b341 +palette = 12=#79c0ff +palette = 13=#d2a8ff +palette = 14=#56d4dd +palette = 15=#ffffff +background = #0d1117 +foreground = #e6edf3 +cursor-color = #2f81f7 +cursor-text = #6fc1ff +selection-background = #e6edf3 +selection-foreground = #0d1117 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Dimmed b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Dimmed new file mode 100644 index 0000000..99db541 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark Dimmed @@ -0,0 +1,22 @@ +palette = 0=#545d68 +palette = 1=#f47067 +palette = 2=#57ab5a +palette = 3=#c69026 +palette = 4=#539bf5 +palette = 5=#b083f0 +palette = 6=#39c5cf +palette = 7=#909dab +palette = 8=#636e7b +palette = 9=#ff938a +palette = 10=#6bc46d +palette = 11=#daaa3f +palette = 12=#6cb6ff +palette = 13=#dcbdfb +palette = 14=#56d4dd +palette = 15=#cdd9e5 +background = #22272e +foreground = #adbac7 +cursor-color = #539bf5 +cursor-text = #93dbff +selection-background = #adbac7 +selection-foreground = #22272e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark High Contrast b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark High Contrast new file mode 100644 index 0000000..01624c3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Dark High Contrast @@ -0,0 +1,22 @@ +palette = 0=#7a828e +palette = 1=#ff9492 +palette = 2=#26cd4d +palette = 3=#f0b72f +palette = 4=#71b7ff +palette = 5=#cb9eff +palette = 6=#39c5cf +palette = 7=#d9dee3 +palette = 8=#9ea7b3 +palette = 9=#ffb1af +palette = 10=#4ae168 +palette = 11=#f7c843 +palette = 12=#91cbff +palette = 13=#dbb7ff +palette = 14=#56d4dd +palette = 15=#ffffff +background = #0a0c10 +foreground = #f0f3f6 +cursor-color = #71b7ff +cursor-text = #b1f7ff +selection-background = #f0f3f6 +selection-foreground = #0a0c10 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Colorblind b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Colorblind new file mode 100644 index 0000000..51ff97d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Colorblind @@ -0,0 +1,22 @@ +palette = 0=#24292f +palette = 1=#b35900 +palette = 2=#0550ae +palette = 3=#4d2d00 +palette = 4=#0969da +palette = 5=#8250df +palette = 6=#1b7c83 +palette = 7=#6e7781 +palette = 8=#57606a +palette = 9=#8a4600 +palette = 10=#0969da +palette = 11=#633c01 +palette = 12=#218bff +palette = 13=#a475f9 +palette = 14=#3192aa +palette = 15=#8c959f +background = #ffffff +foreground = #24292f +cursor-color = #0969da +cursor-text = #3c9cff +selection-background = #24292f +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Default b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Default new file mode 100644 index 0000000..6962d38 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light Default @@ -0,0 +1,22 @@ +palette = 0=#24292f +palette = 1=#cf222e +palette = 2=#116329 +palette = 3=#4d2d00 +palette = 4=#0969da +palette = 5=#8250df +palette = 6=#1b7c83 +palette = 7=#6e7781 +palette = 8=#57606a +palette = 9=#a40e26 +palette = 10=#1a7f37 +palette = 11=#633c01 +palette = 12=#218bff +palette = 13=#a475f9 +palette = 14=#3192aa +palette = 15=#8c959f +background = #ffffff +foreground = #1f2328 +cursor-color = #0969da +cursor-text = #3c9cff +selection-background = #1f2328 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light High Contrast b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light High Contrast new file mode 100644 index 0000000..ff7b2ef --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitHub Light High Contrast @@ -0,0 +1,22 @@ +palette = 0=#0e1116 +palette = 1=#a0111f +palette = 2=#024c1a +palette = 3=#3f2200 +palette = 4=#0349b4 +palette = 5=#622cbc +palette = 6=#1b7c83 +palette = 7=#66707b +palette = 8=#4b535d +palette = 9=#86061d +palette = 10=#055d20 +palette = 11=#4e2c00 +palette = 12=#1168e3 +palette = 13=#844ae7 +palette = 14=#3192aa +palette = 15=#88929d +background = #ffffff +foreground = #0e1116 +cursor-color = #0349b4 +cursor-text = #367ce7 +selection-background = #0e1116 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark new file mode 100644 index 0000000..84dabe9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f57f6c +palette = 2=#52b87a +palette = 3=#d99530 +palette = 4=#7fb6ed +palette = 5=#f88aaf +palette = 6=#32c5d2 +palette = 7=#ffffff +palette = 8=#666666 +palette = 9=#fcb5aa +palette = 10=#91d4a8 +palette = 11=#e9be74 +palette = 12=#498dd1 +palette = 13=#fcacc5 +palette = 14=#5edee3 +palette = 15=#ffffff +background = #28262b +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #bfbfbf +selection-background = #ad95e9 +selection-foreground = #28262b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark Grey b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark Grey new file mode 100644 index 0000000..b1512c3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Dark Grey @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f57f6c +palette = 2=#52b87a +palette = 3=#d99530 +palette = 4=#7fb6ed +palette = 5=#f88aaf +palette = 6=#32c5d2 +palette = 7=#ffffff +palette = 8=#666666 +palette = 9=#fcb5aa +palette = 10=#91d4a8 +palette = 11=#e9be74 +palette = 12=#498dd1 +palette = 13=#fcacc5 +palette = 14=#5edee3 +palette = 15=#ffffff +background = #222222 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #bfbfbf +selection-background = #ad95e9 +selection-foreground = #222222 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Light new file mode 100644 index 0000000..c2774d6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/GitLab Light @@ -0,0 +1,22 @@ +palette = 0=#303030 +palette = 1=#a31700 +palette = 2=#0a7f3d +palette = 3=#af551d +palette = 4=#006cd8 +palette = 5=#583cac +palette = 6=#00798a +palette = 7=#303030 +palette = 8=#303030 +palette = 9=#a31700 +palette = 10=#0a7f3d +palette = 11=#af551d +palette = 12=#006cd8 +palette = 13=#583cac +palette = 14=#00798a +palette = 15=#303030 +background = #fafaff +foreground = #303030 +cursor-color = #303030 +cursor-text = #565656 +selection-background = #ad95e9 +selection-foreground = #fafaff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Glacier b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Glacier new file mode 100644 index 0000000..5edd45a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Glacier @@ -0,0 +1,22 @@ +palette = 0=#2e343c +palette = 1=#bd0f2f +palette = 2=#35a770 +palette = 3=#fb9435 +palette = 4=#1f5872 +palette = 5=#bd2523 +palette = 6=#778397 +palette = 7=#ffffff +palette = 8=#404a55 +palette = 9=#bd0f2f +palette = 10=#49e998 +palette = 11=#fddf6e +palette = 12=#2a8bc1 +palette = 13=#ea4727 +palette = 14=#a0b6d3 +palette = 15=#ffffff +background = #0c1115 +foreground = #ffffff +cursor-color = #6c6c6c +cursor-text = #9f9f9f +selection-background = #bd2523 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grape b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grape new file mode 100644 index 0000000..714a6b6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grape @@ -0,0 +1,22 @@ +palette = 0=#2d283f +palette = 1=#ed2261 +palette = 2=#1fa91b +palette = 3=#8ddc20 +palette = 4=#487df4 +palette = 5=#8d35c9 +palette = 6=#3bdeed +palette = 7=#9e9ea0 +palette = 8=#59516a +palette = 9=#f0729a +palette = 10=#53aa5e +palette = 11=#b2dc87 +palette = 12=#a9bcec +palette = 13=#ad81c2 +palette = 14=#9de3eb +palette = 15=#a288f7 +background = #171423 +foreground = #9f9fa1 +cursor-color = #a288f7 +cursor-text = #171422 +selection-background = #493d70 +selection-foreground = #171422 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grass b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grass new file mode 100644 index 0000000..0eba03c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grass @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5959 +palette = 2=#00bb00 +palette = 3=#e7b000 +palette = 4=#0000a3 +palette = 5=#ee59bb +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#959595 +palette = 9=#ff5959 +palette = 10=#00bb00 +palette = 11=#e7b000 +palette = 12=#0000bb +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #13773d +foreground = #fff0a5 +cursor-color = #d9744c +cursor-text = #ffffff +selection-background = #b64926 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grey Green b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grey Green new file mode 100644 index 0000000..44a4ba3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Grey Green @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fe1414 +palette = 2=#74ff00 +palette = 3=#f1ff01 +palette = 4=#00deff +palette = 5=#ff00f0 +palette = 6=#00ffbc +palette = 7=#ffffff +palette = 8=#666666 +palette = 9=#ff3939 +palette = 10=#00ff44 +palette = 11=#ffd100 +palette = 12=#00afff +palette = 13=#ff008a +palette = 14=#00ffd3 +palette = 15=#f5ecec +background = #002a1a +foreground = #ffffff +cursor-color = #fff400 +cursor-text = #aeb1b0 +selection-background = #517e50 +selection-foreground = #e2e2e2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruber Darker b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruber Darker new file mode 100644 index 0000000..6c90489 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruber Darker @@ -0,0 +1,22 @@ +palette = 0=#181818 +palette = 1=#ff0a36 +palette = 2=#42dc00 +palette = 3=#ffdb00 +palette = 4=#92a7cb +palette = 5=#a095cb +palette = 6=#90aa9e +palette = 7=#e4e4e4 +palette = 8=#54494e +palette = 9=#ff3851 +palette = 10=#42dc00 +palette = 11=#ffdb00 +palette = 12=#92a7cb +palette = 13=#afafda +palette = 14=#90aa9e +palette = 15=#f5f5f5 +background = #181818 +foreground = #e4e4e4 +cursor-color = #ffdb00 +cursor-text = #a6a6a6 +selection-background = #ffffff +selection-foreground = #54494e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark new file mode 100644 index 0000000..e5c63f1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark @@ -0,0 +1,22 @@ +palette = 0=#282828 +palette = 1=#cc241d +palette = 2=#98971a +palette = 3=#d79921 +palette = 4=#458588 +palette = 5=#b16286 +palette = 6=#689d6a +palette = 7=#a89984 +palette = 8=#928374 +palette = 9=#fb4934 +palette = 10=#b8bb26 +palette = 11=#fabd2f +palette = 12=#83a598 +palette = 13=#d3869b +palette = 14=#8ec07c +palette = 15=#ebdbb2 +background = #282828 +foreground = #ebdbb2 +cursor-color = #ebdbb2 +cursor-text = #282828 +selection-background = #665c54 +selection-foreground = #ebdbb2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark Hard b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark Hard new file mode 100644 index 0000000..d90c211 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Dark Hard @@ -0,0 +1,22 @@ +palette = 0=#1d2021 +palette = 1=#cc241d +palette = 2=#98971a +palette = 3=#d79921 +palette = 4=#458588 +palette = 5=#b16286 +palette = 6=#689d6a +palette = 7=#a89984 +palette = 8=#928374 +palette = 9=#fb4934 +palette = 10=#b8bb26 +palette = 11=#fabd2f +palette = 12=#83a598 +palette = 13=#d3869b +palette = 14=#8ec07c +palette = 15=#ebdbb2 +background = #1d2021 +foreground = #ebdbb2 +cursor-color = #ebdbb2 +cursor-text = #1d2021 +selection-background = #665c54 +selection-foreground = #ebdbb2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light new file mode 100644 index 0000000..48556e5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light @@ -0,0 +1,22 @@ +palette = 0=#fbf1c7 +palette = 1=#cc241d +palette = 2=#98971a +palette = 3=#d79921 +palette = 4=#458588 +palette = 5=#b16286 +palette = 6=#689d6a +palette = 7=#7c6f64 +palette = 8=#928374 +palette = 9=#9d0006 +palette = 10=#79740e +palette = 11=#b57614 +palette = 12=#076678 +palette = 13=#8f3f71 +palette = 14=#427b58 +palette = 15=#3c3836 +background = #fbf1c7 +foreground = #3c3836 +cursor-color = #3c3836 +cursor-text = #fbf1c7 +selection-background = #3c3836 +selection-foreground = #fbf1c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light Hard b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light Hard new file mode 100644 index 0000000..faafeff --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Light Hard @@ -0,0 +1,22 @@ +palette = 0=#f9f5d7 +palette = 1=#cc241d +palette = 2=#98971a +palette = 3=#d79921 +palette = 4=#458588 +palette = 5=#b16286 +palette = 6=#689d6a +palette = 7=#7c6f64 +palette = 8=#928374 +palette = 9=#9d0006 +palette = 10=#79740e +palette = 11=#b57614 +palette = 12=#076678 +palette = 13=#8f3f71 +palette = 14=#427b58 +palette = 15=#3c3836 +background = #f9f5d7 +foreground = #3c3836 +cursor-color = #3c3836 +cursor-text = #f9f5d7 +selection-background = #3c3836 +selection-foreground = #f9f5d7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material new file mode 100644 index 0000000..f8a0ed7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material @@ -0,0 +1,22 @@ +palette = 0=#141617 +palette = 1=#ea6926 +palette = 2=#c1d041 +palette = 3=#eecf75 +palette = 4=#6da3ec +palette = 5=#fd9bc1 +palette = 6=#fe9d6e +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#d3573b +palette = 10=#c1d041 +palette = 11=#eecf75 +palette = 12=#2c86ff +palette = 13=#fd9bc1 +palette = 14=#92a5df +palette = 15=#ffffff +background = #1d2021 +foreground = #d4be98 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #2b2c3f +selection-foreground = #7cfb70 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Dark new file mode 100644 index 0000000..1b3df55 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Dark @@ -0,0 +1,22 @@ +palette = 0=#282828 +palette = 1=#ea6962 +palette = 2=#a9b665 +palette = 3=#d8a657 +palette = 4=#7daea3 +palette = 5=#d3869b +palette = 6=#89b482 +palette = 7=#d4be98 +palette = 8=#7c6f64 +palette = 9=#ea6962 +palette = 10=#a9b665 +palette = 11=#d8a657 +palette = 12=#7daea3 +palette = 13=#d3869b +palette = 14=#89b482 +palette = 15=#ddc7a1 +background = #282828 +foreground = #d4be98 +cursor-color = #d4be98 +cursor-text = #282828 +selection-background = #d4be98 +selection-foreground = #282828 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Light new file mode 100644 index 0000000..cd3ded8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Gruvbox Material Light @@ -0,0 +1,22 @@ +palette = 0=#fbf1c7 +palette = 1=#c14a4a +palette = 2=#6c782e +palette = 3=#b47109 +palette = 4=#45707a +palette = 5=#945e80 +palette = 6=#4c7a5d +palette = 7=#654735 +palette = 8=#a89984 +palette = 9=#c14a4a +palette = 10=#6c782e +palette = 11=#b47109 +palette = 12=#45707a +palette = 13=#945e80 +palette = 14=#4c7a5d +palette = 15=#4f3829 +background = #fbf1c7 +foreground = #654735 +cursor-color = #654735 +cursor-text = #fbf1c7 +selection-background = #654735 +selection-foreground = #fbf1c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Guezwhoz b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Guezwhoz new file mode 100644 index 0000000..328d521 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Guezwhoz @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#e85181 +palette = 2=#7ad694 +palette = 3=#b7d074 +palette = 4=#5aa0d6 +palette = 5=#9a90e0 +palette = 6=#58d6ce +palette = 7=#d9d9d9 +palette = 8=#808080 +palette = 9=#e85181 +palette = 10=#afd7af +palette = 11=#d1ed85 +palette = 12=#64b2ed +palette = 13=#a398ed +palette = 14=#61ede4 +palette = 15=#ededed +background = #1d1d1d +foreground = #d9d9d9 +cursor-color = #99d4b1 +cursor-text = #1d1d1d +selection-background = #245354 +selection-foreground = #58d6ce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Blue b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Blue new file mode 100644 index 0000000..14ad944 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Blue @@ -0,0 +1,22 @@ +palette = 0=#010921 +palette = 1=#10b6ff +palette = 2=#10b6ff +palette = 3=#10b6ff +palette = 4=#10b6ff +palette = 5=#10b6ff +palette = 6=#10b6ff +palette = 7=#fafafa +palette = 8=#484157 +palette = 9=#00b3f7 +palette = 10=#00b3f7 +palette = 11=#00b3f7 +palette = 12=#00b3f7 +palette = 13=#00b3f7 +palette = 14=#00b3f7 +palette = 15=#fefefe +background = #010515 +foreground = #11b7ff +cursor-color = #10b6ff +cursor-text = #ffffff +selection-background = #c1e4ff +selection-foreground = #a9a9a9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Gr33N b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Gr33N new file mode 100644 index 0000000..341e5ba --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R Gr33N @@ -0,0 +1,22 @@ +palette = 0=#001f0b +palette = 1=#15d00d +palette = 2=#15d00d +palette = 3=#15d00d +palette = 4=#15d00d +palette = 5=#15d00d +palette = 6=#15d00d +palette = 7=#fafafa +palette = 8=#334843 +palette = 9=#19e20e +palette = 10=#19e20e +palette = 11=#19e20e +palette = 12=#19e20e +palette = 13=#19e20e +palette = 14=#19e20e +palette = 15=#fefefe +background = #020f01 +foreground = #16b10e +cursor-color = #15d00d +cursor-text = #ffffff +selection-background = #d4ffc1 +selection-foreground = #b0b0b0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R R3D b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R R3D new file mode 100644 index 0000000..ba80015 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/HaX0R R3D @@ -0,0 +1,22 @@ +palette = 0=#1f0000 +palette = 1=#b00d0d +palette = 2=#b00d0d +palette = 3=#b00d0d +palette = 4=#b00d0d +palette = 5=#b00d0d +palette = 6=#b00d0d +palette = 7=#fafafa +palette = 8=#554040 +palette = 9=#ff1111 +palette = 10=#ff1010 +palette = 11=#ff1010 +palette = 12=#ff1010 +palette = 13=#ff1010 +palette = 14=#ff1010 +palette = 15=#fefefe +background = #200101 +foreground = #b10e0e +cursor-color = #b00d0d +cursor-text = #ffffff +selection-background = #ebc1ff +selection-foreground = #979797 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hacktober b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hacktober new file mode 100644 index 0000000..1bc45c3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hacktober @@ -0,0 +1,22 @@ +palette = 0=#191918 +palette = 1=#b34538 +palette = 2=#587744 +palette = 3=#d08949 +palette = 4=#206ec5 +palette = 5=#864651 +palette = 6=#ac9166 +palette = 7=#f1eee7 +palette = 8=#464444 +palette = 9=#b33323 +palette = 10=#42824a +palette = 11=#c75a22 +palette = 12=#5389c5 +palette = 13=#e795a5 +palette = 14=#ebc587 +palette = 15=#ffffff +background = #141414 +foreground = #c9c9c9 +cursor-color = #c9c9c9 +cursor-text = #141414 +selection-background = #141414 +selection-foreground = #c9c9c9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hardcore b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hardcore new file mode 100644 index 0000000..0bbe6a6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hardcore @@ -0,0 +1,22 @@ +palette = 0=#1b1d1e +palette = 1=#f92672 +palette = 2=#a6e22e +palette = 3=#fd971f +palette = 4=#66d9ef +palette = 5=#9e6ffe +palette = 6=#5e7175 +palette = 7=#ccccc6 +palette = 8=#505354 +palette = 9=#ff669d +palette = 10=#beed5f +palette = 11=#e6db74 +palette = 12=#66d9ef +palette = 13=#9e6ffe +palette = 14=#a3babf +palette = 15=#f8f8f2 +background = #121212 +foreground = #a0a0a0 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #453b39 +selection-foreground = #b6bbc0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Harper b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Harper new file mode 100644 index 0000000..cb749f3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Harper @@ -0,0 +1,22 @@ +palette = 0=#010101 +palette = 1=#f8b63f +palette = 2=#7fb5e1 +palette = 3=#d6da25 +palette = 4=#489e48 +palette = 5=#b296c6 +palette = 6=#f5bfd7 +palette = 7=#a8a49d +palette = 8=#726e6a +palette = 9=#f8b63f +palette = 10=#7fb5e1 +palette = 11=#d6da25 +palette = 12=#489e48 +palette = 13=#b296c6 +palette = 14=#f5bfd7 +palette = 15=#fefbea +background = #010101 +foreground = #a8a49d +cursor-color = #a8a49d +cursor-text = #010101 +selection-background = #5a5753 +selection-foreground = #a8a49d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Daggry b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Daggry new file mode 100644 index 0000000..c36a156 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Daggry @@ -0,0 +1,22 @@ +palette = 0=#1f2842 +palette = 1=#985248 +palette = 2=#577159 +palette = 3=#be6b00 +palette = 4=#3a577d +palette = 5=#7c5c97 +palette = 6=#925780 +palette = 7=#b0b5c5 +palette = 8=#1f2842 +palette = 9=#cc4a35 +palette = 10=#719679 +palette = 11=#f1a527 +palette = 12=#6089c0 +palette = 13=#7d7396 +palette = 14=#aa869d +palette = 15=#d6dbeb +background = #f8f9fb +foreground = #3b4a7a +cursor-color = #226c4f +cursor-text = #d6dbeb +selection-background = #cfe9dd +selection-foreground = #313c64 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Skumring b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Skumring new file mode 100644 index 0000000..c4deb66 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Havn Skumring @@ -0,0 +1,22 @@ +palette = 0=#252c47 +palette = 1=#ea563e +palette = 2=#6ead7b +palette = 3=#f8b330 +palette = 4=#596cf7 +palette = 5=#7c719e +palette = 6=#d588c1 +palette = 7=#dce0ee +palette = 8=#38425c +palette = 9=#d17264 +palette = 10=#8c9e8f +palette = 11=#eac58c +palette = 12=#5186cb +palette = 13=#9b7cee +palette = 14=#d17ab6 +palette = 15=#fff6e1 +background = #111522 +foreground = #d6dbeb +cursor-color = #277a6f +cursor-text = #e0e4f3 +selection-background = #2b514b +selection-foreground = #dce0ef diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Heeler b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Heeler new file mode 100644 index 0000000..11e33ec --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Heeler @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e44c2e +palette = 2=#bdd100 +palette = 3=#f4ce65 +palette = 4=#5ba5f2 +palette = 5=#ff95c2 +palette = 6=#ff9763 +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#e44c2e +palette = 10=#bdd100 +palette = 11=#f4ce65 +palette = 12=#0088ff +palette = 13=#ff95c2 +palette = 14=#8da6e4 +palette = 15=#ffffff +background = #211f46 +foreground = #fdfdfd +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #2b2c41 +selection-foreground = #2eff58 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Highway b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Highway new file mode 100644 index 0000000..9ddbbf9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Highway @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d00e18 +palette = 2=#138034 +palette = 3=#ffcb3e +palette = 4=#006bb3 +palette = 5=#783482 +palette = 6=#455271 +palette = 7=#ededed +palette = 8=#5d504a +palette = 9=#f07e18 +palette = 10=#b1d130 +palette = 11=#fff120 +palette = 12=#4fc2fd +palette = 13=#de0071 +palette = 14=#5d504a +palette = 15=#ffffff +background = #222225 +foreground = #ededed +cursor-color = #e0d9b9 +cursor-text = #1f192a +selection-background = #384564 +selection-foreground = #ededed diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hipster Green b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hipster Green new file mode 100644 index 0000000..5489f68 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hipster Green @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b6214a +palette = 2=#00a600 +palette = 3=#bfbf00 +palette = 4=#246eb2 +palette = 5=#b200b2 +palette = 6=#00a6b2 +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#86a93e +palette = 11=#e5e500 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00e5e5 +palette = 15=#e5e5e5 +background = #100b05 +foreground = #84c138 +cursor-color = #23ff18 +cursor-text = #ff0018 +selection-background = #083905 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hivacruz b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hivacruz new file mode 100644 index 0000000..37c0c79 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hivacruz @@ -0,0 +1,22 @@ +palette = 0=#202746 +palette = 1=#c94922 +palette = 2=#ac9739 +palette = 3=#c08b30 +palette = 4=#3d8fd1 +palette = 5=#6679cc +palette = 6=#22a2c9 +palette = 7=#979db4 +palette = 8=#6b7394 +palette = 9=#c76b29 +palette = 10=#73ad43 +palette = 11=#5e6687 +palette = 12=#898ea4 +palette = 13=#dfe2f1 +palette = 14=#9c637a +palette = 15=#f5f7ff +background = #132638 +foreground = #ede4e4 +cursor-color = #979db4 +cursor-text = #202746 +selection-background = #5e6687 +selection-foreground = #979db4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Homebrew b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Homebrew new file mode 100644 index 0000000..7a0593d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Homebrew @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#990000 +palette = 2=#00a600 +palette = 3=#999900 +palette = 4=#0d0dbf +palette = 5=#b200b2 +palette = 6=#00a6b2 +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#00d900 +palette = 11=#e5e500 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00e5e5 +palette = 15=#e5e5e5 +background = #000000 +foreground = #00ff00 +cursor-color = #23ff18 +cursor-text = #ff0018 +selection-background = #083905 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch new file mode 100644 index 0000000..df9339c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch @@ -0,0 +1,22 @@ +palette = 0=#322931 +palette = 1=#dd464c +palette = 2=#8fc13e +palette = 3=#fdcc59 +palette = 4=#1290bf +palette = 5=#c85e7c +palette = 6=#149b93 +palette = 7=#b9b5b8 +palette = 8=#797379 +palette = 9=#fd8b19 +palette = 10=#5c545c +palette = 11=#5c545b +palette = 12=#989498 +palette = 13=#d5d3d5 +palette = 14=#b33508 +palette = 15=#ffffff +background = #322931 +foreground = #b9b5b8 +cursor-color = #b9b5b8 +cursor-text = #322931 +selection-background = #5c545b +selection-foreground = #b9b5b8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch.256 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch.256 new file mode 100644 index 0000000..4e096b9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hopscotch.256 @@ -0,0 +1,22 @@ +palette = 0=#322931 +palette = 1=#dd464c +palette = 2=#8fc13e +palette = 3=#fdcc59 +palette = 4=#1290bf +palette = 5=#c85e7c +palette = 6=#149b93 +palette = 7=#b9b5b8 +palette = 8=#797379 +palette = 9=#dd464c +palette = 10=#8fc13e +palette = 11=#fdcc59 +palette = 12=#1290bf +palette = 13=#c85e7c +palette = 14=#149b93 +palette = 15=#ffffff +background = #322931 +foreground = #b9b5b8 +cursor-color = #b9b5b8 +cursor-text = #322931 +selection-background = #5c545b +selection-foreground = #b9b5b8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon new file mode 100644 index 0000000..0a4bf6d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e95678 +palette = 2=#29d398 +palette = 3=#fab795 +palette = 4=#26bbd9 +palette = 5=#ee64ac +palette = 6=#59e1e3 +palette = 7=#e5e5e5 +palette = 8=#666666 +palette = 9=#ec6a88 +palette = 10=#3fdaa4 +palette = 11=#fbc3a7 +palette = 12=#3fc4de +palette = 13=#f075b5 +palette = 14=#6be4e6 +palette = 15=#e5e5e5 +background = #1c1e26 +foreground = #d5d8da +cursor-color = #6c6f93 +cursor-text = #9fa2c6 +selection-background = #6c6f93 +selection-foreground = #1c1e26 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon Bright b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon Bright new file mode 100644 index 0000000..b0a9ca4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Horizon Bright @@ -0,0 +1,22 @@ +palette = 0=#16161d +palette = 1=#fc4777 +palette = 2=#00ca86 +palette = 3=#f2a682 +palette = 4=#00bedd +palette = 5=#ff58b1 +palette = 6=#00cdcb +palette = 7=#bfafac +palette = 8=#1a1c24 +palette = 9=#fe5f87 +palette = 10=#00d193 +palette = 11=#e5a688 +palette = 12=#00c9e2 +palette = 13=#ff6cba +palette = 14=#00c3c2 +palette = 15=#fff2ef +background = #fdf0ed +foreground = #16161d +cursor-color = #d3a89d +cursor-text = #ffe8dc +selection-background = #f9cec3 +selection-foreground = #16161d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand new file mode 100644 index 0000000..647721e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ffff54 +palette = 2=#ffff54 +palette = 3=#ffff54 +palette = 4=#000000 +palette = 5=#ffff54 +palette = 6=#ffffff +palette = 7=#c6c6c6 +palette = 8=#000000 +palette = 9=#ffff54 +palette = 10=#ffff54 +palette = 11=#ffff54 +palette = 12=#000000 +palette = 13=#ffff54 +palette = 14=#ffffff +palette = 15=#c6c6c6 +background = #ea3323 +foreground = #ffffff +cursor-color = #ffff54 +cursor-text = #ea3323 +selection-background = #ffff54 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand (Mustard) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand (Mustard) new file mode 100644 index 0000000..21fdb99 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hot Dog Stand (Mustard) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ea3323 +palette = 2=#ea3323 +palette = 3=#ea3323 +palette = 4=#000000 +palette = 5=#ea3323 +palette = 6=#000000 +palette = 7=#b9b9b9 +palette = 8=#000000 +palette = 9=#ea3323 +palette = 10=#ea3323 +palette = 11=#ea3323 +palette = 12=#000000 +palette = 13=#ea3323 +palette = 14=#000000 +palette = 15=#c6c6c6 +background = #ffff54 +foreground = #000000 +cursor-color = #ea3323 +cursor-text = #ffff54 +selection-background = #ea3323 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hurtado b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hurtado new file mode 100644 index 0000000..cd81f61 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hurtado @@ -0,0 +1,22 @@ +palette = 0=#575757 +palette = 1=#ff1b00 +palette = 2=#a5e055 +palette = 3=#fbe74a +palette = 4=#496487 +palette = 5=#fd5ff1 +palette = 6=#86e9fe +palette = 7=#cbcccb +palette = 8=#404040 +palette = 9=#d51d00 +palette = 10=#a5df55 +palette = 11=#fbe84a +palette = 12=#89beff +palette = 13=#c001c1 +palette = 14=#86eafe +palette = 15=#dbdbdb +background = #000000 +foreground = #dbdbdb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hybrid b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hybrid new file mode 100644 index 0000000..b10c1fb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Hybrid @@ -0,0 +1,22 @@ +palette = 0=#2a2e33 +palette = 1=#b84d51 +palette = 2=#b3bf5a +palette = 3=#e4b55e +palette = 4=#6e90b0 +palette = 5=#a17eac +palette = 6=#7fbfb4 +palette = 7=#b5b9b6 +palette = 8=#434548 +palette = 9=#8d2e32 +palette = 10=#798431 +palette = 11=#e58a50 +palette = 12=#4b6b88 +palette = 13=#6e5079 +palette = 14=#4d7b74 +palette = 15=#5a626a +background = #161719 +foreground = #b7bcba +cursor-color = #b7bcba +cursor-text = #1e1f22 +selection-background = #1e1f22 +selection-foreground = #b7bcba diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA new file mode 100644 index 0000000..ad50cb4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA @@ -0,0 +1,22 @@ +palette = 0=#141414 +palette = 1=#d03333 +palette = 2=#1bd01b +palette = 3=#d08c1b +palette = 4=#1b1bd0 +palette = 5=#d01bd0 +palette = 6=#1bd0d0 +palette = 7=#cecece +palette = 8=#4e4e4e +palette = 9=#dc4e4e +palette = 10=#4edc4e +palette = 11=#f3f34e +palette = 12=#4e4edc +palette = 13=#f34ef3 +palette = 14=#4ef3f3 +palette = 15=#ffffff +background = #141414 +foreground = #cecece +cursor-color = #cecece +cursor-text = #141414 +selection-background = #cecece +selection-foreground = #141414 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA (Black) b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA (Black) new file mode 100644 index 0000000..56d1dc1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IBM 5153 CGA (Black) @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c40000 +palette = 2=#00c400 +palette = 3=#c47e00 +palette = 4=#0000c4 +palette = 5=#c400c4 +palette = 6=#00c4c4 +palette = 7=#c4c4c4 +palette = 8=#4e4e4e +palette = 9=#dc4e4e +palette = 10=#4edc4e +palette = 11=#f3f34e +palette = 12=#4e4edc +palette = 13=#f34ef3 +palette = 14=#4ef3f3 +palette = 15=#ffffff +background = #000000 +foreground = #c4c4c4 +cursor-color = #c4c4c4 +cursor-text = #000000 +selection-background = #c4c4c4 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Green PPL b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Green PPL new file mode 100644 index 0000000..f3156d4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Green PPL @@ -0,0 +1,22 @@ +palette = 0=#014401 +palette = 1=#ff2736 +palette = 2=#41a638 +palette = 3=#76a831 +palette = 4=#2ec3b9 +palette = 5=#50a096 +palette = 6=#3ca078 +palette = 7=#e6fef2 +palette = 8=#106910 +palette = 9=#b4fa5c +palette = 10=#aefb86 +palette = 11=#dafa87 +palette = 12=#2efaeb +palette = 13=#50fafa +palette = 14=#3cfac8 +palette = 15=#e0f1dc +background = #2c2c2c +foreground = #e0f1dc +cursor-color = #47fa6b +cursor-text = #292929 +selection-background = #116b41 +selection-foreground = #e0f1dc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Orange PPL b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Orange PPL new file mode 100644 index 0000000..c332591 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IC Orange PPL @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c13900 +palette = 2=#a4a900 +palette = 3=#caaf00 +palette = 4=#bd6d00 +palette = 5=#fc5e00 +palette = 6=#f79500 +palette = 7=#ffc88a +palette = 8=#6a4f2a +palette = 9=#ff8c68 +palette = 10=#f6ff40 +palette = 11=#ffe36e +palette = 12=#ffbe55 +palette = 13=#fc874f +palette = 14=#c69752 +palette = 15=#fafaff +background = #262626 +foreground = #ffcb83 +cursor-color = #fc531d +cursor-text = #ffc88a +selection-background = #c14020 +selection-foreground = #ffc88a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IR Black b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IR Black new file mode 100644 index 0000000..85eaa40 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IR Black @@ -0,0 +1,22 @@ +palette = 0=#4f4f4f +palette = 1=#fa6c60 +palette = 2=#a8ff60 +palette = 3=#fffeb7 +palette = 4=#96cafe +palette = 5=#fa73fd +palette = 6=#c6c5fe +palette = 7=#efedef +palette = 8=#7b7b7b +palette = 9=#fcb6b0 +palette = 10=#cfffab +palette = 11=#ffffcc +palette = 12=#b5dcff +palette = 13=#fb9cfe +palette = 14=#e0e0fe +palette = 15=#ffffff +background = #000000 +foreground = #f1f1f1 +cursor-color = #808080 +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Console b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Console new file mode 100644 index 0000000..cbbaee0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Console @@ -0,0 +1,22 @@ +palette = 0=#1a1919 +palette = 1=#d42426 +palette = 2=#37a327 +palette = 3=#c29d28 +palette = 4=#0739e2 +palette = 5=#911f9c +palette = 6=#4497df +palette = 7=#cccccc +palette = 8=#767676 +palette = 9=#f34f59 +palette = 10=#45c731 +palette = 11=#f9f2a7 +palette = 12=#4079ff +palette = 13=#c31ba2 +palette = 14=#6ed7d7 +palette = 15=#f2f2f2 +background = #0c0c0c +foreground = #f2f2f2 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #c2deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Terminal b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Terminal new file mode 100644 index 0000000..c2f5688 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/IRIX Terminal @@ -0,0 +1,22 @@ +palette = 0=#1a1919 +palette = 1=#ff2b1e +palette = 2=#57ff3d +palette = 3=#ffff44 +palette = 4=#0004ff +palette = 5=#ff2cff +palette = 6=#56ffff +palette = 7=#ffffff +palette = 8=#ffff44 +palette = 9=#ffff44 +palette = 10=#ffff44 +palette = 11=#fffc72 +palette = 12=#ffff44 +palette = 13=#ffff44 +palette = 14=#ffff44 +palette = 15=#ffff44 +background = #000043 +foreground = #f2f2f2 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #c2deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Dark new file mode 100644 index 0000000..77d8c23 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Dark @@ -0,0 +1,22 @@ +palette = 0=#1e2132 +palette = 1=#e27878 +palette = 2=#b4be82 +palette = 3=#e2a478 +palette = 4=#84a0c6 +palette = 5=#a093c7 +palette = 6=#89b8c2 +palette = 7=#c6c8d1 +palette = 8=#6b7089 +palette = 9=#e98989 +palette = 10=#c0ca8e +palette = 11=#e9b189 +palette = 12=#91acd1 +palette = 13=#ada0d3 +palette = 14=#95c4ce +palette = 15=#d2d4de +background = #161821 +foreground = #c6c8d1 +cursor-color = #c6c8d1 +cursor-text = #161821 +selection-background = #c6c8d1 +selection-foreground = #161821 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Light new file mode 100644 index 0000000..86c304e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Iceberg Light @@ -0,0 +1,22 @@ +palette = 0=#dcdfe7 +palette = 1=#cc517a +palette = 2=#668e3d +palette = 3=#c57339 +palette = 4=#2d539e +palette = 5=#7759b4 +palette = 6=#3f83a6 +palette = 7=#33374c +palette = 8=#8389a3 +palette = 9=#cc3768 +palette = 10=#598030 +palette = 11=#b6662d +palette = 12=#22478e +palette = 13=#6845ad +palette = 14=#327698 +palette = 15=#262a3f +background = #e8e9ec +foreground = #33374c +cursor-color = #33374c +cursor-text = #e8e9ec +selection-background = #33374c +selection-foreground = #e8e9ec diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idea b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idea new file mode 100644 index 0000000..164b7a2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idea @@ -0,0 +1,22 @@ +palette = 0=#adadad +palette = 1=#fc5256 +palette = 2=#98b61c +palette = 3=#ccb444 +palette = 4=#437ee7 +palette = 5=#9d74b0 +palette = 6=#248887 +palette = 7=#4b4b4b +palette = 8=#ffffff +palette = 9=#fc7072 +palette = 10=#98b61c +palette = 11=#ffff0b +palette = 12=#6c9ced +palette = 13=#fc7eff +palette = 14=#248887 +palette = 15=#181818 +background = #202020 +foreground = #adadad +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #44475a +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idle Toes b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idle Toes new file mode 100644 index 0000000..8c10f8a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Idle Toes @@ -0,0 +1,22 @@ +palette = 0=#323232 +palette = 1=#d25252 +palette = 2=#7fe173 +palette = 3=#ffc66d +palette = 4=#4099ff +palette = 5=#f680ff +palette = 6=#bed6ff +palette = 7=#eeeeec +palette = 8=#606060 +palette = 9=#f07070 +palette = 10=#9dff91 +palette = 11=#ffe48b +palette = 12=#5eb7f7 +palette = 13=#ff9dff +palette = 14=#dcf4ff +palette = 15=#ffffff +background = #323232 +foreground = #ffffff +cursor-color = #d6d6d6 +cursor-text = #000000 +selection-background = #5b5b5b +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jackie Brown b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jackie Brown new file mode 100644 index 0000000..6a9317c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jackie Brown @@ -0,0 +1,22 @@ +palette = 0=#2c1d16 +palette = 1=#ef5734 +palette = 2=#2baf2b +palette = 3=#bebf00 +palette = 4=#246eb2 +palette = 5=#d05ec1 +palette = 6=#00acee +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#86a93e +palette = 11=#e5e500 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00e5e5 +palette = 15=#e5e5e5 +background = #2c1d16 +foreground = #ffcc2f +cursor-color = #23ff18 +cursor-text = #ff0018 +selection-background = #af8d21 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Japanesque b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Japanesque new file mode 100644 index 0000000..79b44a6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Japanesque @@ -0,0 +1,22 @@ +palette = 0=#343935 +palette = 1=#cf3f61 +palette = 2=#7bb75b +palette = 3=#e9b32a +palette = 4=#4c9ad4 +palette = 5=#a57fc4 +palette = 6=#389aad +palette = 7=#fafaf6 +palette = 8=#595b59 +palette = 9=#d18fa6 +palette = 10=#767f2c +palette = 11=#78592f +palette = 12=#135979 +palette = 13=#604291 +palette = 14=#76bbca +palette = 15=#b2b5ae +background = #1e1e1e +foreground = #f7f6ec +cursor-color = #edcf4f +cursor-text = #343935 +selection-background = #175877 +selection-foreground = #f7f6ec diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jellybeans b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jellybeans new file mode 100644 index 0000000..bf4690b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jellybeans @@ -0,0 +1,22 @@ +palette = 0=#929292 +palette = 1=#e27373 +palette = 2=#94b979 +palette = 3=#ffba7b +palette = 4=#97bedc +palette = 5=#e1c0fa +palette = 6=#00988e +palette = 7=#dedede +palette = 8=#bdbdbd +palette = 9=#ffa1a1 +palette = 10=#bddeab +palette = 11=#ffdca0 +palette = 12=#b1d8f6 +palette = 13=#fbdaff +palette = 14=#1ab2a8 +palette = 15=#ffffff +background = #121212 +foreground = #dedede +cursor-color = #ffa560 +cursor-text = #ffffff +selection-background = #474e91 +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/JetBrains Darcula b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/JetBrains Darcula new file mode 100644 index 0000000..c175442 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/JetBrains Darcula @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fa5355 +palette = 2=#126e00 +palette = 3=#c2c300 +palette = 4=#4581eb +palette = 5=#fa54ff +palette = 6=#33c2c1 +palette = 7=#adadad +palette = 8=#555555 +palette = 9=#fb7172 +palette = 10=#67ff4f +palette = 11=#ffff00 +palette = 12=#6d9df1 +palette = 13=#fb82ff +palette = 14=#60d3d1 +palette = 15=#eeeeee +background = #202020 +foreground = #adadad +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #1a3272 +selection-foreground = #adadad diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jubi b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jubi new file mode 100644 index 0000000..922a9d2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Jubi @@ -0,0 +1,22 @@ +palette = 0=#3b3750 +palette = 1=#cf7b98 +palette = 2=#90a94b +palette = 3=#6ebfc0 +palette = 4=#576ea6 +palette = 5=#bc4f68 +palette = 6=#75a7d2 +palette = 7=#c3d3de +palette = 8=#a874ce +palette = 9=#de90ab +palette = 10=#bcdd61 +palette = 11=#87e9ea +palette = 12=#8c9fcd +palette = 13=#e16c87 +palette = 14=#b7c9ef +palette = 15=#d5e5f1 +background = #262b33 +foreground = #c3d3de +cursor-color = #c3d3de +cursor-text = #1e1b2e +selection-background = #5b5184 +selection-foreground = #1e1b2e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Dragon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Dragon new file mode 100644 index 0000000..28afe7e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Dragon @@ -0,0 +1,22 @@ +palette = 0=#0d0c0c +palette = 1=#c4746e +palette = 2=#8a9a7b +palette = 3=#c4b28a +palette = 4=#8ba4b0 +palette = 5=#a292a3 +palette = 6=#8ea4a2 +palette = 7=#c8c093 +palette = 8=#a6a69c +palette = 9=#e46876 +palette = 10=#87a987 +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#c5c9c5 +background = #181616 +foreground = #c5c9c5 +cursor-color = #c8c093 +cursor-text = #181616 +selection-background = #c5c9c5 +selection-foreground = #181616 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Lotus b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Lotus new file mode 100644 index 0000000..0dd9c6f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Lotus @@ -0,0 +1,22 @@ +palette = 0=#1f1f28 +palette = 1=#c84053 +palette = 2=#6f894e +palette = 3=#77713f +palette = 4=#4d699b +palette = 5=#b35b79 +palette = 6=#597b75 +palette = 7=#545464 +palette = 8=#8a8980 +palette = 9=#d7474b +palette = 10=#6e915f +palette = 11=#836f4a +palette = 12=#6693bf +palette = 13=#624c83 +palette = 14=#5e857a +palette = 15=#43436c +background = #f2ecbc +foreground = #545464 +cursor-color = #43436c +cursor-text = #f2ecbc +selection-background = #545464 +selection-foreground = #f2ecbc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Wave b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Wave new file mode 100644 index 0000000..268b9b8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawa Wave @@ -0,0 +1,22 @@ +palette = 0=#090618 +palette = 1=#c34043 +palette = 2=#76946a +palette = 3=#c0a36e +palette = 4=#7e9cd8 +palette = 5=#957fb8 +palette = 6=#6a9589 +palette = 7=#c8c093 +palette = 8=#727169 +palette = 9=#e82424 +palette = 10=#98bb6c +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#dcd7ba +background = #1f1f28 +foreground = #dcd7ba +cursor-color = #dcd7ba +cursor-text = #1f1f28 +selection-background = #dcd7ba +selection-foreground = #1f1f28 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawabones b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawabones new file mode 100644 index 0000000..59c8122 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanagawabones @@ -0,0 +1,22 @@ +palette = 0=#1f1f28 +palette = 1=#e46a78 +palette = 2=#98bc6d +palette = 3=#e5c283 +palette = 4=#7eb3c9 +palette = 5=#957fb8 +palette = 6=#7eb3c9 +palette = 7=#ddd8bb +palette = 8=#49495e +palette = 9=#ec818c +palette = 10=#9ec967 +palette = 11=#f1c982 +palette = 12=#7bc2df +palette = 13=#a98fd2 +palette = 14=#7bc2df +palette = 15=#a8a48d +background = #1f1f28 +foreground = #ddd8bb +cursor-color = #e6e0c2 +cursor-text = #1f1f28 +selection-background = #49473e +selection-foreground = #ddd8bb diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Ink b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Ink new file mode 100644 index 0000000..cb65986 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Ink @@ -0,0 +1,22 @@ +palette = 0=#14171d +palette = 1=#c4746e +palette = 2=#8a9a7b +palette = 3=#c4b28a +palette = 4=#8ba4b0 +palette = 5=#a292a3 +palette = 6=#8ea4a2 +palette = 7=#c8c093 +palette = 8=#a4a7a4 +palette = 9=#e46876 +palette = 10=#87a987 +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#c5c9c7 +background = #14171d +foreground = #c5c9c7 +cursor-color = #c5c9c7 +cursor-text = #14171d +selection-background = #22262d +selection-foreground = #c5c9c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Mist b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Mist new file mode 100644 index 0000000..feb99d7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Mist @@ -0,0 +1,22 @@ +palette = 0=#22262d +palette = 1=#c4746e +palette = 2=#8a9a7b +palette = 3=#c4b28a +palette = 4=#8ba4b0 +palette = 5=#a292a3 +palette = 6=#8ea4a2 +palette = 7=#a4a7a4 +palette = 8=#5c6066 +palette = 9=#e46876 +palette = 10=#87a987 +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#c5c9c7 +background = #22262d +foreground = #c5c9c7 +cursor-color = #c5c9c7 +cursor-text = #22262d +selection-background = #43464e +selection-foreground = #c5c9c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Pearl b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Pearl new file mode 100644 index 0000000..3573362 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Pearl @@ -0,0 +1,22 @@ +palette = 0=#22262d +palette = 1=#c84053 +palette = 2=#6f894e +palette = 3=#77713f +palette = 4=#4d699b +palette = 5=#b35b79 +palette = 6=#597b75 +palette = 7=#545464 +palette = 8=#6d6f6e +palette = 9=#d7474b +palette = 10=#6e915f +palette = 11=#836f4a +palette = 12=#6693bf +palette = 13=#624c83 +palette = 14=#5e857a +palette = 15=#43436c +background = #f2f1ef +foreground = #22262d +cursor-color = #22262d +cursor-text = #f2f1ef +selection-background = #e2e1df +selection-foreground = #22262d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Zen b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Zen new file mode 100644 index 0000000..6a28242 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kanso Zen @@ -0,0 +1,22 @@ +palette = 0=#0d0c0c +palette = 1=#c4746e +palette = 2=#8a9a7b +palette = 3=#c4b28a +palette = 4=#8ba4b0 +palette = 5=#a292a3 +palette = 6=#8ea4a2 +palette = 7=#c8c093 +palette = 8=#a4a7a4 +palette = 9=#e46876 +palette = 10=#87a987 +palette = 11=#e6c384 +palette = 12=#7fb4ca +palette = 13=#938aa9 +palette = 14=#7aa89f +palette = 15=#c5c9c7 +background = #090e13 +foreground = #c5c9c7 +cursor-color = #c5c9c7 +cursor-text = #090e13 +selection-background = #393b44 +selection-foreground = #c5c9c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kibble b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kibble new file mode 100644 index 0000000..b499d79 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kibble @@ -0,0 +1,22 @@ +palette = 0=#4d4d4d +palette = 1=#c70031 +palette = 2=#29cf13 +palette = 3=#d8e30e +palette = 4=#3449d1 +palette = 5=#8400ff +palette = 6=#0798ab +palette = 7=#e2d1e3 +palette = 8=#5a5a5a +palette = 9=#f01578 +palette = 10=#6ce05c +palette = 11=#f3f79e +palette = 12=#97a4f7 +palette = 13=#c495f0 +palette = 14=#68f2e0 +palette = 15=#ffffff +background = #0e100a +foreground = #f7f7f7 +cursor-color = #9fda9c +cursor-text = #000000 +selection-background = #9ba787 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Default b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Default new file mode 100644 index 0000000..1be8658 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Default @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0403 +palette = 2=#19cb00 +palette = 3=#cecb00 +palette = 4=#0d73cc +palette = 5=#cb1ed1 +palette = 6=#0dcdcd +palette = 7=#dddddd +palette = 8=#767676 +palette = 9=#f2201f +palette = 10=#23fd00 +palette = 11=#fffd00 +palette = 12=#1a8fff +palette = 13=#fd28ff +palette = 14=#14ffff +palette = 15=#ffffff +background = #000000 +foreground = #dddddd +cursor-color = #cccccc +cursor-text = #111111 +selection-background = #fffacd +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Low Contrast b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Low Contrast new file mode 100644 index 0000000..42db836 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kitty Low Contrast @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0403 +palette = 2=#19cb00 +palette = 3=#cecb00 +palette = 4=#0d73cc +palette = 5=#cb1ed1 +palette = 6=#0dcdcd +palette = 7=#dddddd +palette = 8=#767676 +palette = 9=#f2201f +palette = 10=#23fd00 +palette = 11=#fffd00 +palette = 12=#1a8fff +palette = 13=#fd28ff +palette = 14=#14ffff +palette = 15=#ffffff +background = #333333 +foreground = #ffffff +cursor-color = #cccccc +cursor-text = #111111 +selection-background = #fffacd +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kolorit b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kolorit new file mode 100644 index 0000000..1c5de93 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kolorit @@ -0,0 +1,22 @@ +palette = 0=#1d1a1e +palette = 1=#ff5b82 +palette = 2=#47d7a1 +palette = 3=#e8e562 +palette = 4=#5db4ee +palette = 5=#da6cda +palette = 6=#57e9eb +palette = 7=#ededed +palette = 8=#504d51 +palette = 9=#ff5b82 +palette = 10=#47d7a1 +palette = 11=#e8e562 +palette = 12=#5db4ee +palette = 13=#da6cda +palette = 14=#57e9eb +palette = 15=#ededed +background = #1d1a1e +foreground = #efecec +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #e1925c +selection-foreground = #1d1a1e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Konsolas b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Konsolas new file mode 100644 index 0000000..0c58f2f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Konsolas @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#aa1717 +palette = 2=#18b218 +palette = 3=#ebae1f +palette = 4=#2323a5 +palette = 5=#ad1edc +palette = 6=#42b0c8 +palette = 7=#c8c1c1 +palette = 8=#7b716e +palette = 9=#ff4141 +palette = 10=#5fff5f +palette = 11=#ffff55 +palette = 12=#4b4bff +palette = 13=#ff54ff +palette = 14=#69ffff +palette = 15=#ffffff +background = #060606 +foreground = #c8c1c1 +cursor-color = #c8c1c1 +cursor-text = #060606 +selection-background = #060606 +selection-foreground = #c8c1c1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kurokula b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kurokula new file mode 100644 index 0000000..f1238fc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Kurokula @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#c35a52 +palette = 2=#78b3a9 +palette = 3=#e1b917 +palette = 4=#5c91dd +palette = 5=#8b79a6 +palette = 6=#867268 +palette = 7=#e0cfc2 +palette = 8=#515151 +palette = 9=#ffc34c +palette = 10=#afffa5 +palette = 11=#fff700 +palette = 12=#90dbff +palette = 13=#ad93ff +palette = 14=#ffcdb6 +palette = 15=#ffffff +background = #141515 +foreground = #e0cfc2 +cursor-color = #7a1c1c +cursor-text = #fffbf2 +selection-background = #515151 +selection-foreground = #ffc34c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lab Fox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lab Fox new file mode 100644 index 0000000..701818c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lab Fox @@ -0,0 +1,22 @@ +palette = 0=#2e2e2e +palette = 1=#fc6d26 +palette = 2=#3eb383 +palette = 3=#fca121 +palette = 4=#db3b21 +palette = 5=#6b40a8 +palette = 6=#6e49cb +palette = 7=#ffffff +palette = 8=#535353 +palette = 9=#ff6517 +palette = 10=#53eaa8 +palette = 11=#fca013 +palette = 12=#db501f +palette = 13=#6a36b6 +palette = 14=#7d53e7 +palette = 15=#ffffff +background = #2e2e2e +foreground = #ffffff +cursor-color = #7f7f7f +cursor-text = #b2b2b2 +selection-background = #cb392e +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Laser b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Laser new file mode 100644 index 0000000..1e07e86 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Laser @@ -0,0 +1,22 @@ +palette = 0=#626262 +palette = 1=#ff8373 +palette = 2=#b4fb73 +palette = 3=#09b4bd +palette = 4=#fed300 +palette = 5=#ff90fe +palette = 6=#d1d1fe +palette = 7=#f1f1f1 +palette = 8=#8f8f8f +palette = 9=#ffc4be +palette = 10=#d6fcba +palette = 11=#fffed5 +palette = 12=#f92883 +palette = 13=#ffb2fe +palette = 14=#e6e7fe +palette = 15=#ffffff +background = #030d18 +foreground = #f106e3 +cursor-color = #00ff9c +cursor-text = #a6a6a6 +selection-background = #2e206a +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Later This Evening b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Later This Evening new file mode 100644 index 0000000..9ac406c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Later This Evening @@ -0,0 +1,22 @@ +palette = 0=#2b2b2b +palette = 1=#d45a60 +palette = 2=#afba67 +palette = 3=#e5d289 +palette = 4=#a0bad6 +palette = 5=#c092d6 +palette = 6=#91bfb7 +palette = 7=#494a4a +palette = 8=#525454 +palette = 9=#d3232f +palette = 10=#aabb39 +palette = 11=#e5be39 +palette = 12=#6699d6 +palette = 13=#ab53d6 +palette = 14=#5fc0ae +palette = 15=#c1c2c2 +background = #222222 +foreground = #959595 +cursor-color = #4f4f4f +cursor-text = #959595 +selection-background = #424242 +selection-foreground = #959595 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lavandula b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lavandula new file mode 100644 index 0000000..fcb74a0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lavandula @@ -0,0 +1,22 @@ +palette = 0=#230046 +palette = 1=#7d1625 +palette = 2=#337e6f +palette = 3=#7f6f49 +palette = 4=#4f4a7f +palette = 5=#5a3f7f +palette = 6=#58777f +palette = 7=#736e7d +palette = 8=#443a53 +palette = 9=#e05167 +palette = 10=#52e0c4 +palette = 11=#e0c386 +palette = 12=#8e87e0 +palette = 13=#a776e0 +palette = 14=#9ad4e0 +palette = 15=#8c91fa +background = #050014 +foreground = #736e7d +cursor-color = #8c91fa +cursor-text = #050014 +selection-background = #37323c +selection-foreground = #8c91fa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Light Owl b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Light Owl new file mode 100644 index 0000000..3684eed --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Light Owl @@ -0,0 +1,22 @@ +palette = 0=#403f53 +palette = 1=#de3d3b +palette = 2=#08916a +palette = 3=#e0af02 +palette = 4=#288ed7 +palette = 5=#d6438a +palette = 6=#2aa298 +palette = 7=#bdbdbd +palette = 8=#989fb1 +palette = 9=#de3d3b +palette = 10=#08916a +palette = 11=#daaa01 +palette = 12=#288ed7 +palette = 13=#d6438a +palette = 14=#2aa298 +palette = 15=#f0f0f0 +background = #fbfbfb +foreground = #403f53 +cursor-color = #403f53 +cursor-text = #f6f6f6 +selection-background = #e0e0e0 +selection-foreground = #403f53 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon new file mode 100644 index 0000000..f6a689a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff3030 +palette = 2=#559a70 +palette = 3=#ccac00 +palette = 4=#0099cc +palette = 5=#cc69c8 +palette = 6=#7ac4cc +palette = 7=#bccccc +palette = 8=#595959 +palette = 9=#ff3030 +palette = 10=#559a70 +palette = 11=#ccac00 +palette = 12=#0099cc +palette = 13=#cc69c8 +palette = 14=#7ac4cc +palette = 15=#bccccc +background = #303030 +foreground = #afc2c2 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #7dbeff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon Transparent b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon Transparent new file mode 100644 index 0000000..13c592c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Liquid Carbon Transparent @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff3030 +palette = 2=#559a70 +palette = 3=#ccac00 +palette = 4=#0099cc +palette = 5=#cc69c8 +palette = 6=#7ac4cc +palette = 7=#bccccc +palette = 8=#404040 +palette = 9=#ff3030 +palette = 10=#559a70 +palette = 11=#ccac00 +palette = 12=#0099cc +palette = 13=#cc69c8 +palette = 14=#7ac4cc +palette = 15=#bccccc +background = #000000 +foreground = #afc2c2 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #7dbeff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lovelace b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lovelace new file mode 100644 index 0000000..1e2462e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Lovelace @@ -0,0 +1,22 @@ +palette = 0=#282a36 +palette = 1=#f37f97 +palette = 2=#5adecd +palette = 3=#f2a272 +palette = 4=#8897f4 +palette = 5=#c574dd +palette = 6=#79e6f3 +palette = 7=#fdfdfd +palette = 8=#4e5165 +palette = 9=#ff4971 +palette = 10=#18e3c8 +palette = 11=#ff8037 +palette = 12=#556fff +palette = 13=#b043d1 +palette = 14=#3fdcee +palette = 15=#bebec1 +background = #1d1f28 +foreground = #fdfdfd +cursor-color = #c574dd +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Man Page b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Man Page new file mode 100644 index 0000000..9e90260 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Man Page @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0000 +palette = 2=#00a600 +palette = 3=#999900 +palette = 4=#0000b2 +palette = 5=#b200b2 +palette = 6=#00a6b2 +palette = 7=#b2b2b2 +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#00cc00 +palette = 11=#bfbf00 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00cbcb +palette = 15=#e5e5e5 +background = #fef49c +foreground = #000000 +cursor-color = #7f7f7f +cursor-text = #000000 +selection-background = #a4c9cd +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mariana b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mariana new file mode 100644 index 0000000..70cb622 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mariana @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ec5f66 +palette = 2=#99c794 +palette = 3=#f9ae58 +palette = 4=#6699cc +palette = 5=#c695c6 +palette = 6=#5fb4b4 +palette = 7=#f7f7f7 +palette = 8=#666666 +palette = 9=#f97b58 +palette = 10=#acd1a8 +palette = 11=#fac761 +palette = 12=#85add6 +palette = 13=#d8b6d8 +palette = 14=#82c4c4 +palette = 15=#ffffff +background = #343d46 +foreground = #d8dee9 +cursor-color = #fcbb6a +cursor-text = #8c8c8c +selection-background = #4e5a65 +selection-foreground = #d8dee9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material new file mode 100644 index 0000000..5f33e93 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material @@ -0,0 +1,22 @@ +palette = 0=#212121 +palette = 1=#b7141f +palette = 2=#457b24 +palette = 3=#f6981e +palette = 4=#134eb2 +palette = 5=#560088 +palette = 6=#0e717c +palette = 7=#afafaf +palette = 8=#424242 +palette = 9=#e83b3f +palette = 10=#7aba3a +palette = 11=#bfaa00 +palette = 12=#54a4f3 +palette = 13=#aa4dbc +palette = 14=#26bbd1 +palette = 15=#d9d9d9 +background = #eaeaea +foreground = #232322 +cursor-color = #16afca +cursor-text = #2e2e2d +selection-background = #c2c2c2 +selection-foreground = #4e4e4e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Dark new file mode 100644 index 0000000..0d065e2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Dark @@ -0,0 +1,22 @@ +palette = 0=#212121 +palette = 1=#b7141f +palette = 2=#457b24 +palette = 3=#f6981e +palette = 4=#134eb2 +palette = 5=#701aa2 +palette = 6=#0e717c +palette = 7=#efefef +palette = 8=#4f4f4f +palette = 9=#e83b3f +palette = 10=#7aba3a +palette = 11=#ffea2e +palette = 12=#54a4f3 +palette = 13=#aa4dbc +palette = 14=#26bbd1 +palette = 15=#d9d9d9 +background = #232322 +foreground = #e5e5e5 +cursor-color = #16afca +cursor-text = #dfdfdf +selection-background = #dfdfdf +selection-foreground = #3d3d3d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Darker b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Darker new file mode 100644 index 0000000..69a8fe7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Darker @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5370 +palette = 2=#c3e88d +palette = 3=#ffcb6b +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#89ddff +palette = 7=#ffffff +palette = 8=#545454 +palette = 9=#ff5370 +palette = 10=#c3e88d +palette = 11=#ffcb6b +palette = 12=#82aaff +palette = 13=#c792ea +palette = 14=#89ddff +palette = 15=#ffffff +background = #212121 +foreground = #eeffff +cursor-color = #ffffff +cursor-text = #bfbfbf +selection-background = #eeffff +selection-foreground = #545454 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Design Colors b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Design Colors new file mode 100644 index 0000000..03c9609 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Design Colors @@ -0,0 +1,22 @@ +palette = 0=#435b67 +palette = 1=#fc3841 +palette = 2=#5cf19e +palette = 3=#fed032 +palette = 4=#37b6ff +palette = 5=#fc226e +palette = 6=#59ffd1 +palette = 7=#ffffff +palette = 8=#a1b0b8 +palette = 9=#fc746d +palette = 10=#adf7be +palette = 11=#fee16c +palette = 12=#70cfff +palette = 13=#fc669b +palette = 14=#9affe6 +palette = 15=#ffffff +background = #1d262a +foreground = #e7ebed +cursor-color = #eaeaea +cursor-text = #000000 +selection-background = #4e6a78 +selection-foreground = #e7ebed diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Ocean b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Ocean new file mode 100644 index 0000000..e322579 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Material Ocean @@ -0,0 +1,22 @@ +palette = 0=#546e7a +palette = 1=#ff5370 +palette = 2=#c3e88d +palette = 3=#ffcb6b +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#89ddff +palette = 7=#ffffff +palette = 8=#546e7a +palette = 9=#ff5370 +palette = 10=#c3e88d +palette = 11=#ffcb6b +palette = 12=#82aaff +palette = 13=#c792ea +palette = 14=#89ddff +palette = 15=#ffffff +background = #0f111a +foreground = #8f93a2 +cursor-color = #ffcc00 +cursor-text = #0f111a +selection-background = #1f2233 +selection-foreground = #8f93a2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mathias b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mathias new file mode 100644 index 0000000..74c8836 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mathias @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e52222 +palette = 2=#a6e32d +palette = 3=#fc951e +palette = 4=#c48dff +palette = 5=#fa2573 +palette = 6=#67d9f0 +palette = 7=#f2f2f2 +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #bbbbbb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #555555 +selection-foreground = #f2f2f2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matrix b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matrix new file mode 100644 index 0000000..983423f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matrix @@ -0,0 +1,22 @@ +palette = 0=#0f191c +palette = 1=#23755a +palette = 2=#82d967 +palette = 3=#ffd700 +palette = 4=#3f5242 +palette = 5=#409931 +palette = 6=#50b45a +palette = 7=#507350 +palette = 8=#688060 +palette = 9=#2fc079 +palette = 10=#90d762 +palette = 11=#faff00 +palette = 12=#4f7e7e +palette = 13=#11ff25 +palette = 14=#c1ff8a +palette = 15=#678c61 +background = #0f191c +foreground = #426644 +cursor-color = #384545 +cursor-text = #00ff00 +selection-background = #18282e +selection-foreground = #00ff87 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matte Black b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matte Black new file mode 100644 index 0000000..4031afe --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Matte Black @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#d35f5f +palette = 2=#ffc107 +palette = 3=#b91c1c +palette = 4=#e68e0d +palette = 5=#d35f5f +palette = 6=#bebebe +palette = 7=#bebebe +palette = 8=#8a8a8d +palette = 9=#891c1c +palette = 10=#ffc107 +palette = 11=#b90a0a +palette = 12=#f59e0b +palette = 13=#b91c1c +palette = 14=#eaeaea +palette = 15=#ffffff +background = #121212 +foreground = #bebebe +cursor-color = #eaeaea +cursor-text = #121212 +selection-background = #333333 +selection-foreground = #eaeaea diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Medallion b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Medallion new file mode 100644 index 0000000..3fa51f2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Medallion @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b64c00 +palette = 2=#7c8b16 +palette = 3=#d3bd26 +palette = 4=#616bb0 +palette = 5=#8c5a90 +palette = 6=#916c25 +palette = 7=#cac29a +palette = 8=#5e5219 +palette = 9=#ff9149 +palette = 10=#b2ca3b +palette = 11=#ffe54a +palette = 12=#acb8ff +palette = 13=#ffa0ff +palette = 14=#ffbc51 +palette = 15=#fed698 +background = #1d1908 +foreground = #cac296 +cursor-color = #d3ba30 +cursor-text = #fffc7d +selection-background = #626dac +selection-foreground = #cac29a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Dark new file mode 100644 index 0000000..d1a73e8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Dark @@ -0,0 +1,22 @@ +palette = 0=#34302c +palette = 1=#bd8183 +palette = 2=#78997a +palette = 3=#e49b5d +palette = 4=#7f91b2 +palette = 5=#b380b0 +palette = 6=#7b9695 +palette = 7=#c1a78e +palette = 8=#867462 +palette = 9=#d47766 +palette = 10=#85b695 +palette = 11=#ebc06d +palette = 12=#a3a9ce +palette = 13=#cf9bc2 +palette = 14=#89b3b6 +palette = 15=#ece1d7 +background = #292522 +foreground = #ece1d7 +cursor-color = #ece1d7 +cursor-text = #292522 +selection-background = #ece1d7 +selection-foreground = #403a36 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Light new file mode 100644 index 0000000..f83d41c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Melange Light @@ -0,0 +1,22 @@ +palette = 0=#e9e1db +palette = 1=#c77b8b +palette = 2=#6e9b72 +palette = 3=#bc5c00 +palette = 4=#7892bd +palette = 5=#be79bb +palette = 6=#739797 +palette = 7=#7d6658 +palette = 8=#a98a78 +palette = 9=#bf0021 +palette = 10=#3a684a +palette = 11=#a06d00 +palette = 12=#465aa4 +palette = 13=#904180 +palette = 14=#3d6568 +palette = 15=#54433a +background = #f1f1f1 +foreground = #54433a +cursor-color = #54433a +cursor-text = #f1f1f1 +selection-background = #54433a +selection-foreground = #d9d3ce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellifluous b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellifluous new file mode 100644 index 0000000..81d5260 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellifluous @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#d29393 +palette = 2=#b3b393 +palette = 3=#cbaa89 +palette = 4=#a8a1be +palette = 5=#b39fb0 +palette = 6=#c0af8c +palette = 7=#dadada +palette = 8=#5b5b5b +palette = 9=#c95954 +palette = 10=#828040 +palette = 11=#a6794c +palette = 12=#5a6599 +palette = 13=#9c6995 +palette = 14=#74a39e +palette = 15=#ffffff +background = #1a1a1a +foreground = #dadada +cursor-color = #bfad9e +cursor-text = #1a1a1a +selection-background = #2d2d2d +selection-foreground = #c0af8c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellow b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellow new file mode 100644 index 0000000..49d8c2e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mellow @@ -0,0 +1,22 @@ +palette = 0=#27272a +palette = 1=#f5a191 +palette = 2=#90b99f +palette = 3=#e6b99d +palette = 4=#aca1cf +palette = 5=#e29eca +palette = 6=#ea83a5 +palette = 7=#c1c0d4 +palette = 8=#424246 +palette = 9=#ffae9f +palette = 10=#9dc6ac +palette = 11=#f0c5a9 +palette = 12=#b9aeda +palette = 13=#ecaad6 +palette = 14=#f591b2 +palette = 15=#cac9dd +background = #161617 +foreground = #c9c7cd +cursor-color = #cac9dd +cursor-text = #161617 +selection-background = #2a2a2d +selection-foreground = #c1c0d4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Miasma b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Miasma new file mode 100644 index 0000000..7aa4cca --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Miasma @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#685742 +palette = 2=#5f875f +palette = 3=#b36d43 +palette = 4=#78824b +palette = 5=#bb7744 +palette = 6=#c9a554 +palette = 7=#d7c483 +palette = 8=#666666 +palette = 9=#685742 +palette = 10=#5f875f +palette = 11=#b36d43 +palette = 12=#78824b +palette = 13=#bb7744 +palette = 14=#c9a554 +palette = 15=#d7c483 +background = #222222 +foreground = #c2c2b0 +cursor-color = #c7c7c7 +cursor-text = #959595 +selection-background = #e5c47b +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Midnight In Mojave b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Midnight In Mojave new file mode 100644 index 0000000..72f3a13 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Midnight In Mojave @@ -0,0 +1,22 @@ +palette = 0=#1e1e1e +palette = 1=#ff453a +palette = 2=#32d74b +palette = 3=#ffd60a +palette = 4=#0a84ff +palette = 5=#bf5af2 +palette = 6=#5ac8fa +palette = 7=#ffffff +palette = 8=#515151 +palette = 9=#ff453a +palette = 10=#32d74b +palette = 11=#ffd60a +palette = 12=#0a84ff +palette = 13=#bf5af2 +palette = 14=#5ac8fa +palette = 15=#ffffff +background = #1e1e1e +foreground = #ffffff +cursor-color = #32d74b +cursor-text = #1c1c1c +selection-background = #4a504d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mirage b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mirage new file mode 100644 index 0000000..a9fc77b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mirage @@ -0,0 +1,22 @@ +palette = 0=#011627 +palette = 1=#ff9999 +palette = 2=#85cc95 +palette = 3=#ffd700 +palette = 4=#7fb5ff +palette = 5=#ddb3ff +palette = 6=#21c7a8 +palette = 7=#ffffff +palette = 8=#575656 +palette = 9=#ff9999 +palette = 10=#85cc95 +palette = 11=#ffd700 +palette = 12=#7fb5ff +palette = 13=#ddb3ff +palette = 14=#85cc95 +palette = 15=#ffffff +background = #1b2738 +foreground = #a6b2c0 +cursor-color = #ddb3ff +cursor-text = #ffffff +selection-background = #273951 +selection-foreground = #d3dbe5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Misterioso b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Misterioso new file mode 100644 index 0000000..60d0604 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Misterioso @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff4242 +palette = 2=#74af68 +palette = 3=#ffad29 +palette = 4=#338f86 +palette = 5=#9414e6 +palette = 6=#23d7d7 +palette = 7=#e1e1e0 +palette = 8=#626262 +palette = 9=#ff3242 +palette = 10=#74cd68 +palette = 11=#ffb929 +palette = 12=#23d7d7 +palette = 13=#ff37ff +palette = 14=#00ede1 +palette = 15=#ffffff +background = #2d3743 +foreground = #e1e1e0 +cursor-color = #666666 +cursor-text = #ffffff +selection-background = #2d37ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi new file mode 100644 index 0000000..b2dc5c7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#a60000 +palette = 2=#006800 +palette = 3=#6f5500 +palette = 4=#0031a9 +palette = 5=#721045 +palette = 6=#005e8b +palette = 7=#a6a6a6 +palette = 8=#595959 +palette = 9=#972500 +palette = 10=#00663f +palette = 11=#884900 +palette = 12=#3548cf +palette = 13=#531ab6 +palette = 14=#005f5f +palette = 15=#595959 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #bdbdbd +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi Tinted b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi Tinted new file mode 100644 index 0000000..cd8e1f0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Operandi Tinted @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#a60000 +palette = 2=#006800 +palette = 3=#6f5500 +palette = 4=#0031a9 +palette = 5=#721045 +palette = 6=#005e8b +palette = 7=#a6a6a6 +palette = 8=#595959 +palette = 9=#972500 +palette = 10=#00663f +palette = 11=#884900 +palette = 12=#3548cf +palette = 13=#531ab6 +palette = 14=#005f5f +palette = 15=#595959 +background = #fbf7f0 +foreground = #000000 +cursor-color = #d00000 +cursor-text = #fbf7f0 +selection-background = #c2bcb5 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi new file mode 100644 index 0000000..384aa48 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5f59 +palette = 2=#44bc44 +palette = 3=#d0bc00 +palette = 4=#2fafff +palette = 5=#feacd0 +palette = 6=#00d3d0 +palette = 7=#a6a6a6 +palette = 8=#595959 +palette = 9=#ff7f9f +palette = 10=#00c06f +palette = 11=#fec43f +palette = 12=#79a8ff +palette = 13=#b6a0ff +palette = 14=#6ae4b9 +palette = 15=#ffffff +background = #000000 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #5a5a5a +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi Tinted b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi Tinted new file mode 100644 index 0000000..bf1125d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Modus Vivendi Tinted @@ -0,0 +1,22 @@ +palette = 0=#0d0e1c +palette = 1=#ff5f59 +palette = 2=#44bc44 +palette = 3=#d0bc00 +palette = 4=#2fafff +palette = 5=#feacd0 +palette = 6=#00d3d0 +palette = 7=#a6a6a6 +palette = 8=#595959 +palette = 9=#ff6b55 +palette = 10=#00c06f +palette = 11=#fec43f +palette = 12=#79a8ff +palette = 13=#b6a0ff +palette = 14=#6ae4b9 +palette = 15=#ffffff +background = #0d0e1c +foreground = #ffffff +cursor-color = #ff66ff +cursor-text = #0d0e1c +selection-background = #555a66 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Molokai b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Molokai new file mode 100644 index 0000000..6c065d2 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Molokai @@ -0,0 +1,22 @@ +palette = 0=#121212 +palette = 1=#fa2573 +palette = 2=#98e123 +palette = 3=#dfd460 +palette = 4=#1080d0 +palette = 5=#8700ff +palette = 6=#43a8d0 +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#f6669d +palette = 10=#b1e05f +palette = 11=#fff26d +palette = 12=#00afff +palette = 13=#af87ff +palette = 14=#51ceff +palette = 15=#ffffff +background = #121212 +foreground = #bbbbbb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mona Lisa b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mona Lisa new file mode 100644 index 0000000..48adc1f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Mona Lisa @@ -0,0 +1,22 @@ +palette = 0=#351b0e +palette = 1=#9b291c +palette = 2=#636232 +palette = 3=#c36e28 +palette = 4=#515c5d +palette = 5=#9b1d29 +palette = 6=#588056 +palette = 7=#f7d75c +palette = 8=#874228 +palette = 9=#ff4331 +palette = 10=#b4b264 +palette = 11=#ff9566 +palette = 12=#9eb2b4 +palette = 13=#ff5b6a +palette = 14=#8acd8f +palette = 15=#ffe598 +background = #120b0d +foreground = #f7d66a +cursor-color = #c46c32 +cursor-text = #120b0d +selection-background = #f7d66a +selection-foreground = #120b0d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Classic b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Classic new file mode 100644 index 0000000..a01b935 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Classic @@ -0,0 +1,22 @@ +palette = 0=#272822 +palette = 1=#f92672 +palette = 2=#a6e22e +palette = 3=#e6db74 +palette = 4=#fd971f +palette = 5=#ae81ff +palette = 6=#66d9ef +palette = 7=#fdfff1 +palette = 8=#6e7066 +palette = 9=#f92672 +palette = 10=#a6e22e +palette = 11=#e6db74 +palette = 12=#fd971f +palette = 13=#ae81ff +palette = 14=#66d9ef +palette = 15=#fdfff1 +background = #272822 +foreground = #fdfff1 +cursor-color = #c0c1b5 +cursor-text = #8d8e82 +selection-background = #57584f +selection-foreground = #fdfff1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro new file mode 100644 index 0000000..08a8e64 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro @@ -0,0 +1,22 @@ +palette = 0=#2d2a2e +palette = 1=#ff6188 +palette = 2=#a9dc76 +palette = 3=#ffd866 +palette = 4=#fc9867 +palette = 5=#ab9df2 +palette = 6=#78dce8 +palette = 7=#fcfcfa +palette = 8=#727072 +palette = 9=#ff6188 +palette = 10=#a9dc76 +palette = 11=#ffd866 +palette = 12=#fc9867 +palette = 13=#ab9df2 +palette = 14=#78dce8 +palette = 15=#fcfcfa +background = #2d2a2e +foreground = #fcfcfa +cursor-color = #c1c0c0 +cursor-text = #8e8d8d +selection-background = #5b595c +selection-foreground = #fcfcfa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light new file mode 100644 index 0000000..dc7b9bb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light @@ -0,0 +1,22 @@ +palette = 0=#faf4f2 +palette = 1=#e14775 +palette = 2=#269d69 +palette = 3=#cc7a0a +palette = 4=#e16032 +palette = 5=#7058be +palette = 6=#1c8ca8 +palette = 7=#29242a +palette = 8=#a59fa0 +palette = 9=#e14775 +palette = 10=#269d69 +palette = 11=#cc7a0a +palette = 12=#e16032 +palette = 13=#7058be +palette = 14=#1c8ca8 +palette = 15=#29242a +background = #faf4f2 +foreground = #29242a +cursor-color = #706b6e +cursor-text = #a39ea1 +selection-background = #bfb9ba +selection-foreground = #29242a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light Sun b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light Sun new file mode 100644 index 0000000..dbbc9db --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Light Sun @@ -0,0 +1,22 @@ +palette = 0=#f8efe7 +palette = 1=#ce4770 +palette = 2=#218871 +palette = 3=#b16803 +palette = 4=#d4572b +palette = 5=#6851a2 +palette = 6=#2473b6 +palette = 7=#2c232e +palette = 8=#a59c9c +palette = 9=#ce4770 +palette = 10=#218871 +palette = 11=#b16803 +palette = 12=#d4572b +palette = 13=#6851a2 +palette = 14=#2473b6 +palette = 15=#2c232e +background = #f8efe7 +foreground = #2c232e +cursor-color = #72696d +cursor-text = #a59ca0 +selection-background = #beb5b3 +selection-foreground = #2c232e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Machine b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Machine new file mode 100644 index 0000000..ed2ba60 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Machine @@ -0,0 +1,22 @@ +palette = 0=#273136 +palette = 1=#ff6d7e +palette = 2=#a2e57b +palette = 3=#ffed72 +palette = 4=#ffb270 +palette = 5=#baa0f8 +palette = 6=#7cd5f1 +palette = 7=#f2fffc +palette = 8=#6b7678 +palette = 9=#ff6d7e +palette = 10=#a2e57b +palette = 11=#ffed72 +palette = 12=#ffb270 +palette = 13=#baa0f8 +palette = 14=#7cd5f1 +palette = 15=#f2fffc +background = #273136 +foreground = #f2fffc +cursor-color = #b8c4c3 +cursor-text = #859190 +selection-background = #545f62 +selection-foreground = #f2fffc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Octagon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Octagon new file mode 100644 index 0000000..82a7f64 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Octagon @@ -0,0 +1,22 @@ +palette = 0=#282a3a +palette = 1=#ff657a +palette = 2=#bad761 +palette = 3=#ffd76d +palette = 4=#ff9b5e +palette = 5=#c39ac9 +palette = 6=#9cd1bb +palette = 7=#eaf2f1 +palette = 8=#696d77 +palette = 9=#ff657a +palette = 10=#bad761 +palette = 11=#ffd76d +palette = 12=#ff9b5e +palette = 13=#c39ac9 +palette = 14=#9cd1bb +palette = 15=#eaf2f1 +background = #282a3a +foreground = #eaf2f1 +cursor-color = #b2b9bd +cursor-text = #f2f9fd +selection-background = #535763 +selection-foreground = #eaf2f1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Ristretto b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Ristretto new file mode 100644 index 0000000..5ef1966 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Ristretto @@ -0,0 +1,22 @@ +palette = 0=#2c2525 +palette = 1=#fd6883 +palette = 2=#adda78 +palette = 3=#f9cc6c +palette = 4=#f38d70 +palette = 5=#a8a9eb +palette = 6=#85dacc +palette = 7=#fff1f3 +palette = 8=#72696a +palette = 9=#fd6883 +palette = 10=#adda78 +palette = 11=#f9cc6c +palette = 12=#f38d70 +palette = 13=#a8a9eb +palette = 14=#85dacc +palette = 15=#fff1f3 +background = #2c2525 +foreground = #fff1f3 +cursor-color = #c3b7b8 +cursor-text = #fff7f8 +selection-background = #5b5353 +selection-foreground = #fff1f3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Spectrum b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Spectrum new file mode 100644 index 0000000..0c6ffc8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Pro Spectrum @@ -0,0 +1,22 @@ +palette = 0=#222222 +palette = 1=#fc618d +palette = 2=#7bd88f +palette = 3=#fce566 +palette = 4=#fd9353 +palette = 5=#948ae3 +palette = 6=#5ad4e6 +palette = 7=#f7f1ff +palette = 8=#69676c +palette = 9=#fc618d +palette = 10=#7bd88f +palette = 11=#fce566 +palette = 12=#fd9353 +palette = 13=#948ae3 +palette = 14=#5ad4e6 +palette = 15=#f7f1ff +background = #222222 +foreground = #f7f1ff +cursor-color = #bab6c0 +cursor-text = #faf6ff +selection-background = #525053 +selection-foreground = #f7f1ff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Remastered b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Remastered new file mode 100644 index 0000000..b7fb269 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Remastered @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#f4005f +palette = 2=#98e024 +palette = 3=#fd971f +palette = 4=#9d65ff +palette = 5=#f4005f +palette = 6=#58d1eb +palette = 7=#c4c5b5 +palette = 8=#625e4c +palette = 9=#f4005f +palette = 10=#98e024 +palette = 11=#e0d561 +palette = 12=#9d65ff +palette = 13=#f4005f +palette = 14=#58d1eb +palette = 15=#f6f6ef +background = #0c0c0c +foreground = #d9d9d9 +cursor-color = #fc971f +cursor-text = #000000 +selection-background = #343434 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Soda b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Soda new file mode 100644 index 0000000..620148c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Soda @@ -0,0 +1,22 @@ +palette = 0=#1a1a1a +palette = 1=#f4005f +palette = 2=#98e024 +palette = 3=#fa8419 +palette = 4=#9d65ff +palette = 5=#f4005f +palette = 6=#58d1eb +palette = 7=#c4c5b5 +palette = 8=#625e4c +palette = 9=#f4005f +palette = 10=#98e024 +palette = 11=#e0d561 +palette = 12=#9d65ff +palette = 13=#f4005f +palette = 14=#58d1eb +palette = 15=#f6f6ef +background = #1a1a1a +foreground = #c4c5b5 +cursor-color = #f6f7ec +cursor-text = #b7b8a8 +selection-background = #343434 +selection-foreground = #c4c5b5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Vivid b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Vivid new file mode 100644 index 0000000..971de5a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Monokai Vivid @@ -0,0 +1,22 @@ +palette = 0=#121212 +palette = 1=#fa2934 +palette = 2=#98e123 +palette = 3=#fff30a +palette = 4=#0443ff +palette = 5=#f800f8 +palette = 6=#01b6ed +palette = 7=#ffffff +palette = 8=#838383 +palette = 9=#f6669d +palette = 10=#b1e05f +palette = 11=#fff26d +palette = 12=#0443ff +palette = 13=#f200f6 +palette = 14=#51ceff +palette = 15=#ffffff +background = #121212 +foreground = #f9f9f9 +cursor-color = #fb0007 +cursor-text = #ff8c95 +selection-background = #ffffff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Moonfly b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Moonfly new file mode 100644 index 0000000..f1bfadb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Moonfly @@ -0,0 +1,22 @@ +palette = 0=#323437 +palette = 1=#ff5454 +palette = 2=#8cc85f +palette = 3=#e3c78a +palette = 4=#80a0ff +palette = 5=#cf87e8 +palette = 6=#79dac8 +palette = 7=#c6c6c6 +palette = 8=#949494 +palette = 9=#ff5189 +palette = 10=#36c692 +palette = 11=#c6c684 +palette = 12=#74b2ff +palette = 13=#ae81ff +palette = 14=#85dc85 +palette = 15=#e4e4e4 +background = #080808 +foreground = #bdbdbd +cursor-color = #9e9e9e +cursor-text = #080808 +selection-background = #b2ceee +selection-foreground = #080808 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/N0Tch2K b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/N0Tch2K new file mode 100644 index 0000000..1cde0c7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/N0Tch2K @@ -0,0 +1,22 @@ +palette = 0=#383838 +palette = 1=#a95551 +palette = 2=#666666 +palette = 3=#a98051 +palette = 4=#657d3e +palette = 5=#767676 +palette = 6=#c9c9c9 +palette = 7=#d0b8a3 +palette = 8=#545454 +palette = 9=#a97775 +palette = 10=#8c8c8c +palette = 11=#a99175 +palette = 12=#98bd5e +palette = 13=#a3a3a3 +palette = 14=#dcdcdc +palette = 15=#d8c8bb +background = #222222 +foreground = #a0a0a0 +cursor-color = #aa9175 +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Dark new file mode 100644 index 0000000..d18bc5a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Dark @@ -0,0 +1,22 @@ +palette = 0=#0f191f +palette = 1=#de6e7c +palette = 2=#90ff6b +palette = 3=#b77e64 +palette = 4=#8190d4 +palette = 5=#b279a7 +palette = 6=#66a5ad +palette = 7=#c6d5cf +palette = 8=#334652 +palette = 9=#e8838f +palette = 10=#a0ff85 +palette = 11=#d68c67 +palette = 12=#92a0e2 +palette = 13=#cf86c1 +palette = 14=#65b8c1 +palette = 15=#98a39e +background = #0f191f +foreground = #c6d5cf +cursor-color = #ceddd7 +cursor-text = #0f191f +selection-background = #3a3e3d +selection-foreground = #c6d5cf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Light new file mode 100644 index 0000000..13f5545 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neobones Light @@ -0,0 +1,22 @@ +palette = 0=#e5ede6 +palette = 1=#a8334c +palette = 2=#567a30 +palette = 3=#944927 +palette = 4=#286486 +palette = 5=#88507d +palette = 6=#3b8992 +palette = 7=#202e18 +palette = 8=#99ac9c +palette = 9=#94253e +palette = 10=#3f5a22 +palette = 11=#803d1c +palette = 12=#1d5573 +palette = 13=#7b3b70 +palette = 14=#2b747c +palette = 15=#415934 +background = #e5ede6 +foreground = #202e18 +cursor-color = #202e18 +cursor-text = #e5ede6 +selection-background = #ade48c +selection-foreground = #202e18 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neon new file mode 100644 index 0000000..4bbace1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neon @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff3045 +palette = 2=#5ffa74 +palette = 3=#fffc7e +palette = 4=#0f15d8 +palette = 5=#f924e7 +palette = 6=#00fffc +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff5a5a +palette = 10=#75ff88 +palette = 11=#fffd96 +palette = 12=#3c40cb +palette = 13=#f15be5 +palette = 14=#88fffe +palette = 15=#ffffff +background = #14161a +foreground = #00fffc +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #0013ff +selection-foreground = #08d2cf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neopolitan b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neopolitan new file mode 100644 index 0000000..dc6a783 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neopolitan @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#9a1a1a +palette = 2=#61ce3c +palette = 3=#fbde2d +palette = 4=#324883 +palette = 5=#ff0080 +palette = 6=#8da6ce +palette = 7=#f8f8f8 +palette = 8=#4c4c4c +palette = 9=#9a1a1a +palette = 10=#61ce3c +palette = 11=#fbde2d +palette = 12=#324883 +palette = 13=#ff0080 +palette = 14=#8da6ce +palette = 15=#f8f8f8 +background = #271f19 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #bfbfbf +selection-background = #253b76 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neutron b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neutron new file mode 100644 index 0000000..76d12d3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Neutron @@ -0,0 +1,22 @@ +palette = 0=#23252b +palette = 1=#b54036 +palette = 2=#5ab977 +palette = 3=#deb566 +palette = 4=#6a7c93 +palette = 5=#a4799d +palette = 6=#3f94a8 +palette = 7=#e6e8ef +palette = 8=#494b51 +palette = 9=#b54036 +palette = 10=#5ab977 +palette = 11=#deb566 +palette = 12=#6a7c93 +palette = 13=#a4799d +palette = 14=#3f94a8 +palette = 15=#ebedf2 +background = #1c1e22 +foreground = #e6e8ef +cursor-color = #f6f7ec +cursor-text = #b7b8a8 +selection-background = #2f363e +selection-foreground = #7d8fa4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V1 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V1 new file mode 100644 index 0000000..7eee9a7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V1 @@ -0,0 +1,22 @@ +palette = 0=#4c4c4c +palette = 1=#bb0000 +palette = 2=#5fde8f +palette = 3=#f3f167 +palette = 4=#276bd8 +palette = 5=#bb00bb +palette = 6=#00dadf +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #bbbbbb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V2 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V2 new file mode 100644 index 0000000..b787d6c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Lion V2 @@ -0,0 +1,22 @@ +palette = 0=#4c4c4c +palette = 1=#bb0000 +palette = 2=#04f623 +palette = 3=#f3f167 +palette = 4=#64d0f0 +palette = 5=#ce6fdb +palette = 6=#00dadf +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#7df71d +palette = 11=#ffff55 +palette = 12=#62cbe8 +palette = 13=#ff9bf5 +palette = 14=#00ccd8 +palette = 15=#ffffff +background = #171717 +foreground = #bbbbbb +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owl b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owl new file mode 100644 index 0000000..5209fb5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owl @@ -0,0 +1,22 @@ +palette = 0=#011627 +palette = 1=#ef5350 +palette = 2=#22da6e +palette = 3=#addb67 +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#21c7a8 +palette = 7=#ffffff +palette = 8=#575656 +palette = 9=#ef5350 +palette = 10=#22da6e +palette = 11=#ffeb95 +palette = 12=#82aaff +palette = 13=#c792ea +palette = 14=#7fdbca +palette = 15=#ffffff +background = #011627 +foreground = #d6deeb +cursor-color = #7e57c2 +cursor-text = #ffffff +selection-background = #5f7e97 +selection-foreground = #dfe5ee diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owlish Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owlish Light new file mode 100644 index 0000000..17aae63 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Night Owlish Light @@ -0,0 +1,22 @@ +palette = 0=#011627 +palette = 1=#d3423e +palette = 2=#2aa298 +palette = 3=#daaa01 +palette = 4=#4876d6 +palette = 5=#403f53 +palette = 6=#08916a +palette = 7=#7a8181 +palette = 8=#7a8181 +palette = 9=#f76e6e +palette = 10=#49d0c5 +palette = 11=#dac26b +palette = 12=#5ca7e4 +palette = 13=#697098 +palette = 14=#00c990 +palette = 15=#989fb1 +background = #ffffff +foreground = #403f53 +cursor-color = #403f53 +cursor-text = #fbfbfb +selection-background = #f2f2f2 +selection-foreground = #403f53 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nightfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nightfox new file mode 100644 index 0000000..32e4f79 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nightfox @@ -0,0 +1,22 @@ +palette = 0=#393b44 +palette = 1=#c94f6d +palette = 2=#81b29a +palette = 3=#dbc074 +palette = 4=#719cd6 +palette = 5=#9d79d6 +palette = 6=#63cdcf +palette = 7=#dfdfe0 +palette = 8=#575860 +palette = 9=#d16983 +palette = 10=#8ebaa4 +palette = 11=#e0c989 +palette = 12=#86abdc +palette = 13=#baa1e2 +palette = 14=#7ad5d6 +palette = 15=#e4e4e5 +background = #192330 +foreground = #cdcecf +cursor-color = #cdcecf +cursor-text = #192330 +selection-background = #2b3b51 +selection-foreground = #cdcecf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Niji b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Niji new file mode 100644 index 0000000..72d80ea --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Niji @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#d23e08 +palette = 2=#54ca74 +palette = 3=#fff700 +palette = 4=#2ab9ff +palette = 5=#ff50da +palette = 6=#1ef9f5 +palette = 7=#ddd0c4 +palette = 8=#515151 +palette = 9=#ffb7b7 +palette = 10=#c1ffae +palette = 11=#fcffb8 +palette = 12=#8efff3 +palette = 13=#ffa2ed +palette = 14=#bcffc7 +palette = 15=#ffffff +background = #141515 +foreground = #ffffff +cursor-color = #ffc663 +cursor-text = #141515 +selection-background = #515151 +selection-foreground = #ffc663 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta new file mode 100644 index 0000000..62dad92 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta @@ -0,0 +1,22 @@ +palette = 0=#151515 +palette = 1=#b46958 +palette = 2=#90a959 +palette = 3=#f4bf75 +palette = 4=#bad7ff +palette = 5=#aa759f +palette = 6=#88afa2 +palette = 7=#e1e1e1 +palette = 8=#727272 +palette = 9=#7e97ab +palette = 10=#90a959 +palette = 11=#f4bf75 +palette = 12=#bad7ff +palette = 13=#aa759f +palette = 14=#88afa2 +palette = 15=#afafaf +background = #101010 +foreground = #e0e1e4 +cursor-color = #e0e1e4 +cursor-text = #18191b +selection-background = #696d79 +selection-foreground = #e0e1e4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta Light new file mode 100644 index 0000000..c1d5048 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/No Clown Fiesta Light @@ -0,0 +1,22 @@ +palette = 0=#d6d6d6 +palette = 1=#874e42 +palette = 2=#677940 +palette = 3=#b89058 +palette = 4=#8ba1bf +palette = 5=#aa759f +palette = 6=#3e5f66 +palette = 7=#151515 +palette = 8=#2b2b2b +palette = 9=#637786 +palette = 10=#677940 +palette = 11=#b89058 +palette = 12=#93a2ab +palette = 13=#aa759f +palette = 14=#99ab93 +palette = 15=#373737 +background = #e1e1e1 +foreground = #151515 +cursor-color = #151515 +cursor-text = #d0d0d0 +selection-background = #c6d5de +selection-foreground = #151515 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nocturnal Winter b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nocturnal Winter new file mode 100644 index 0000000..4f27881 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nocturnal Winter @@ -0,0 +1,22 @@ +palette = 0=#4d4d4d +palette = 1=#f12d52 +palette = 2=#09cd7e +palette = 3=#f5f17a +palette = 4=#3182e0 +palette = 5=#ff2b6d +palette = 6=#09c87a +palette = 7=#fcfcfc +palette = 8=#808080 +palette = 9=#f16d86 +palette = 10=#0ae78d +palette = 11=#fffc67 +palette = 12=#6096ff +palette = 13=#ff78a2 +palette = 14=#0ae78d +palette = 15=#ffffff +background = #0d0d17 +foreground = #e6e5e5 +cursor-color = #e6e5e5 +cursor-text = #a6a6a6 +selection-background = #adbdd0 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord new file mode 100644 index 0000000..d83a55d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord @@ -0,0 +1,22 @@ +palette = 0=#3b4252 +palette = 1=#bf616a +palette = 2=#a3be8c +palette = 3=#ebcb8b +palette = 4=#81a1c1 +palette = 5=#b48ead +palette = 6=#88c0d0 +palette = 7=#e5e9f0 +palette = 8=#596377 +palette = 9=#bf616a +palette = 10=#a3be8c +palette = 11=#ebcb8b +palette = 12=#81a1c1 +palette = 13=#b48ead +palette = 14=#8fbcbb +palette = 15=#eceff4 +background = #2e3440 +foreground = #d8dee9 +cursor-color = #eceff4 +cursor-text = #282828 +selection-background = #eceff4 +selection-foreground = #4c566a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Light new file mode 100644 index 0000000..ff30e06 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Light @@ -0,0 +1,22 @@ +palette = 0=#3b4252 +palette = 1=#bf616a +palette = 2=#96b17f +palette = 3=#c5a565 +palette = 4=#81a1c1 +palette = 5=#b48ead +palette = 6=#7bb3c3 +palette = 7=#a5abb6 +palette = 8=#4c566a +palette = 9=#bf616a +palette = 10=#96b17f +palette = 11=#c5a565 +palette = 12=#81a1c1 +palette = 13=#b48ead +palette = 14=#82afae +palette = 15=#eceff4 +background = #e5e9f0 +foreground = #414858 +cursor-color = #7bb3c3 +cursor-text = #3b4252 +selection-background = #d8dee9 +selection-foreground = #4c556a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Wave b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Wave new file mode 100644 index 0000000..a3567bc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nord Wave @@ -0,0 +1,22 @@ +palette = 0=#3b4252 +palette = 1=#bf616a +palette = 2=#a3be8c +palette = 3=#ebcb8b +palette = 4=#81a1c1 +palette = 5=#b48ead +palette = 6=#88c0d0 +palette = 7=#e5e9f0 +palette = 8=#4c566a +palette = 9=#bf616a +palette = 10=#a3be8c +palette = 11=#ebcb8b +palette = 12=#81a1c1 +palette = 13=#b48ead +palette = 14=#8fbcbb +palette = 15=#eceff4 +background = #212121 +foreground = #d8dee9 +cursor-color = #ebcb8b +cursor-text = #b89858 +selection-background = #d8dee9 +selection-foreground = #212121 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nordfox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nordfox new file mode 100644 index 0000000..741ffdd --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nordfox @@ -0,0 +1,22 @@ +palette = 0=#3b4252 +palette = 1=#bf616a +palette = 2=#a3be8c +palette = 3=#ebcb8b +palette = 4=#81a1c1 +palette = 5=#b48ead +palette = 6=#88c0d0 +palette = 7=#e5e9f0 +palette = 8=#53648d +palette = 9=#d06f79 +palette = 10=#b1d196 +palette = 11=#f0d399 +palette = 12=#8cafd2 +palette = 13=#c895bf +palette = 14=#93ccdc +palette = 15=#e7ecf4 +background = #2e3440 +foreground = #cdcecf +cursor-color = #cdcecf +cursor-text = #2e3440 +selection-background = #3e4a5b +selection-foreground = #cdcecf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Novel b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Novel new file mode 100644 index 0000000..b0899b9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Novel @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc0000 +palette = 2=#009600 +palette = 3=#d06b00 +palette = 4=#0000cc +palette = 5=#cc00cc +palette = 6=#0087cc +palette = 7=#a6a6a6 +palette = 8=#808080 +palette = 9=#cc0000 +palette = 10=#009600 +palette = 11=#d06b00 +palette = 12=#0000cc +palette = 13=#cc00cc +palette = 14=#0087cc +palette = 15=#ffffff +background = #dfdbc3 +foreground = #3b2322 +cursor-color = #73635a +cursor-text = #000000 +selection-background = #a4a390 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Dark new file mode 100644 index 0000000..206c6db --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Dark @@ -0,0 +1,22 @@ +palette = 0=#07080d +palette = 1=#ffc0b9 +palette = 2=#b3f6c0 +palette = 3=#fce094 +palette = 4=#a6dbff +palette = 5=#ffcaff +palette = 6=#8cf8f7 +palette = 7=#eef1f8 +palette = 8=#4f5258 +palette = 9=#ffc0b9 +palette = 10=#b3f6c0 +palette = 11=#fce094 +palette = 12=#a6dbff +palette = 13=#ffcaff +palette = 14=#8cf8f7 +palette = 15=#eef1f8 +background = #14161b +foreground = #e0e2ea +cursor-color = #9b9ea4 +cursor-text = #e0e2ea +selection-background = #4f5258 +selection-foreground = #e0e2ea diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Light new file mode 100644 index 0000000..05fc378 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Nvim Light @@ -0,0 +1,22 @@ +palette = 0=#07080d +palette = 1=#590008 +palette = 2=#005523 +palette = 3=#6b5300 +palette = 4=#004c73 +palette = 5=#470045 +palette = 6=#007373 +palette = 7=#a1a4ab +palette = 8=#4f5258 +palette = 9=#590008 +palette = 10=#005523 +palette = 11=#6b5300 +palette = 12=#004c73 +palette = 13=#470045 +palette = 14=#007373 +palette = 15=#eef1f8 +background = #e0e2ea +foreground = #14161b +cursor-color = #9b9ea4 +cursor-text = #14161b +selection-background = #9b9ea4 +selection-foreground = #14161b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Obsidian b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Obsidian new file mode 100644 index 0000000..bfebc04 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Obsidian @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b30d0e +palette = 2=#00bb00 +palette = 3=#fecd22 +palette = 4=#3a9bdb +palette = 5=#bb00bb +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#555555 +palette = 9=#ff0003 +palette = 10=#93c863 +palette = 11=#fef874 +palette = 12=#a1d7ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #283033 +foreground = #cdcdcd +cursor-color = #c0cad0 +cursor-text = #8d8d8d +selection-background = #3e4c4f +selection-foreground = #dfe1e2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ocean b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ocean new file mode 100644 index 0000000..e35a1f5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ocean @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e64c4c +palette = 2=#00a600 +palette = 3=#999900 +palette = 4=#0000b2 +palette = 5=#d826d8 +palette = 6=#00a6b2 +palette = 7=#bfbfbf +palette = 8=#808080 +palette = 9=#ff1a1a +palette = 10=#00d900 +palette = 11=#e5e500 +palette = 12=#7373ff +palette = 13=#e500e5 +palette = 14=#00e5e5 +palette = 15=#e5e5e5 +background = #224fbc +foreground = #ffffff +cursor-color = #7f7f7f +cursor-text = #ffffff +selection-background = #216dff +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Material b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Material new file mode 100644 index 0000000..7f34b1f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Material @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ee2b2a +palette = 2=#40a33f +palette = 3=#ffea2e +palette = 4=#1e80f0 +palette = 5=#8800a0 +palette = 6=#16afca +palette = 7=#a4a4a4 +palette = 8=#777777 +palette = 9=#dc5c60 +palette = 10=#70be71 +palette = 11=#fff163 +palette = 12=#54a4f3 +palette = 13=#aa4dbc +palette = 14=#42c7da +palette = 15=#ffffff +background = #1c262b +foreground = #c2c8d7 +cursor-color = #b3b8c3 +cursor-text = #ffffff +selection-background = #6dc2b8 +selection-foreground = #e8eefd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Next b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Next new file mode 100644 index 0000000..eceb266 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oceanic Next @@ -0,0 +1,22 @@ +palette = 0=#162c35 +palette = 1=#ec5f67 +palette = 2=#99c794 +palette = 3=#fac863 +palette = 4=#6699cc +palette = 5=#c594c5 +palette = 6=#5fb3b3 +palette = 7=#ffffff +palette = 8=#65737e +palette = 9=#ec5f67 +palette = 10=#99c794 +palette = 11=#fac863 +palette = 12=#6699cc +palette = 13=#c594c5 +palette = 14=#5fb3b3 +palette = 15=#ffffff +background = #162c35 +foreground = #c0c5ce +cursor-color = #c0c5ce +cursor-text = #1b2b34 +selection-background = #4f5b66 +selection-foreground = #c0c5ce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ollie b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ollie new file mode 100644 index 0000000..3694e7a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ollie @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ac2e31 +palette = 2=#31ac61 +palette = 3=#ac4300 +palette = 4=#2d57ac +palette = 5=#b08528 +palette = 6=#1fa6ac +palette = 7=#8a8eac +palette = 8=#684432 +palette = 9=#ff3d48 +palette = 10=#3bff99 +palette = 11=#ff5e1e +palette = 12=#4488ff +palette = 13=#ffc21d +palette = 14=#1ffaff +palette = 15=#5b6ea7 +background = #222125 +foreground = #8a8dae +cursor-color = #5b6ea7 +cursor-text = #2a292d +selection-background = #1e3a66 +selection-foreground = #8a8eac diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Dark Two b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Dark Two new file mode 100644 index 0000000..505792d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Dark Two @@ -0,0 +1,22 @@ +palette = 0=#1d1f23 +palette = 1=#e27881 +palette = 2=#98c379 +palette = 3=#eac786 +palette = 4=#71b9f4 +palette = 5=#c88bda +palette = 6=#62bac6 +palette = 7=#c9ccd3 +palette = 8=#4a505a +palette = 9=#e68991 +palette = 10=#a8cc8e +palette = 11=#edcf97 +palette = 12=#8dc7f6 +palette = 13=#d3a2e2 +palette = 14=#78c4ce +palette = 15=#e6e6e6 +background = #21252b +foreground = #e6e6e6 +cursor-color = #e6e6e6 +cursor-text = #1d1f23 +selection-background = #393e47 +selection-foreground = #e6e6e6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Dark new file mode 100644 index 0000000..3a82b41 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Dark @@ -0,0 +1,22 @@ +palette = 0=#3d4452 +palette = 1=#f16372 +palette = 2=#8cc570 +palette = 3=#ecbe70 +palette = 4=#3fb1f5 +palette = 5=#d373e3 +palette = 6=#17b9c4 +palette = 7=#dbdfe5 +palette = 8=#525d6f +palette = 9=#ff777b +palette = 10=#82d882 +palette = 11=#f5c065 +palette = 12=#6dcaff +palette = 13=#ff7bf4 +palette = 14=#00e5fb +palette = 15=#f7f9fc +background = #282c34 +foreground = #dbdfe5 +cursor-color = #f5e0dc +cursor-text = #9aa3c1 +selection-background = #585b70 +selection-foreground = #cdd6f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Light new file mode 100644 index 0000000..2b0ca88 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Double Light @@ -0,0 +1,22 @@ +palette = 0=#454b58 +palette = 1=#f74840 +palette = 2=#25a343 +palette = 3=#cc8100 +palette = 4=#0087c1 +palette = 5=#b50da9 +palette = 6=#009ab7 +palette = 7=#c5b2b3 +palette = 8=#0e131f +palette = 9=#ff3711 +palette = 10=#00b90e +palette = 11=#ec9900 +palette = 12=#1065de +palette = 13=#e500d8 +palette = 14=#00b4dd +palette = 15=#ffffff +background = #fafafa +foreground = #383a43 +cursor-color = #1a1919 +cursor-text = #dbdfe5 +selection-background = #454e5e +selection-foreground = #1a1919 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Dark new file mode 100644 index 0000000..83d374b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Dark @@ -0,0 +1,22 @@ +palette = 0=#282c34 +palette = 1=#e06c75 +palette = 2=#98c379 +palette = 3=#e5c07b +palette = 4=#61afef +palette = 5=#c678dd +palette = 6=#56b6c2 +palette = 7=#dcdfe4 +palette = 8=#5d677a +palette = 9=#e06c75 +palette = 10=#98c379 +palette = 11=#e5c07b +palette = 12=#61afef +palette = 13=#c678dd +palette = 14=#56b6c2 +palette = 15=#dcdfe4 +background = #282c34 +foreground = #dcdfe4 +cursor-color = #a3b3cc +cursor-text = #e9ecf1 +selection-background = #474e5d +selection-foreground = #dcdfe4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Light new file mode 100644 index 0000000..bfac6da --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/One Half Light @@ -0,0 +1,22 @@ +palette = 0=#383a42 +palette = 1=#e45649 +palette = 2=#50a14f +palette = 3=#c18401 +palette = 4=#0184bc +palette = 5=#a626a4 +palette = 6=#0997b3 +palette = 7=#bababa +palette = 8=#4f525e +palette = 9=#e06c75 +palette = 10=#98c379 +palette = 11=#d8b36e +palette = 12=#61afef +palette = 13=#c678dd +palette = 14=#56b6c2 +palette = 15=#ffffff +background = #fafafa +foreground = #383a42 +cursor-color = #a5b4e5 +cursor-text = #383a42 +selection-background = #bfceff +selection-foreground = #383a42 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord new file mode 100644 index 0000000..5652b8b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord @@ -0,0 +1,22 @@ +palette = 0=#3b4252 +palette = 1=#e06c75 +palette = 2=#9ec183 +palette = 3=#ebcb8b +palette = 4=#81a1c1 +palette = 5=#b988b0 +palette = 6=#88c0d0 +palette = 7=#e5e9f0 +palette = 8=#596377 +palette = 9=#e06c75 +palette = 10=#9ec183 +palette = 11=#ebcb8b +palette = 12=#81a1c1 +palette = 13=#b988b0 +palette = 14=#8fbcbb +palette = 15=#eceff4 +background = #2e3440 +foreground = #e5e9f0 +cursor-color = #81a1c1 +cursor-text = #3b4252 +selection-background = #434c5e +selection-foreground = #d8dee9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord Light new file mode 100644 index 0000000..5415fa9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Onenord Light @@ -0,0 +1,22 @@ +palette = 0=#2e3440 +palette = 1=#cb4f53 +palette = 2=#48a53d +palette = 3=#ee5e25 +palette = 4=#3879c5 +palette = 5=#9f4aca +palette = 6=#3ea1ad +palette = 7=#b2b6bd +palette = 8=#646a76 +palette = 9=#d16366 +palette = 10=#5f9e9d +palette = 11=#ba793e +palette = 12=#1b40a6 +palette = 13=#9665af +palette = 14=#8fbcbb +palette = 15=#eceff4 +background = #f7f8fa +foreground = #2e3440 +cursor-color = #3879c5 +cursor-text = #f7f8fa +selection-background = #eaebed +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Operator Mono Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Operator Mono Dark new file mode 100644 index 0000000..a99b3c6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Operator Mono Dark @@ -0,0 +1,22 @@ +palette = 0=#5a5a5a +palette = 1=#ca372d +palette = 2=#4d7b3a +palette = 3=#d4d697 +palette = 4=#4387cf +palette = 5=#b86cb4 +palette = 6=#72d5c6 +palette = 7=#ced4cd +palette = 8=#9a9b99 +palette = 9=#c37d62 +palette = 10=#83d0a2 +palette = 11=#fdfdc5 +palette = 12=#89d3f6 +palette = 13=#ff2c7a +palette = 14=#82eada +palette = 15=#fdfdf6 +background = #191919 +foreground = #c3cac2 +cursor-color = #fcdc08 +cursor-text = #161616 +selection-background = #19273b +selection-foreground = #dde5dc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Overnight Slumber b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Overnight Slumber new file mode 100644 index 0000000..8b37068 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Overnight Slumber @@ -0,0 +1,22 @@ +palette = 0=#0a1222 +palette = 1=#ffa7c4 +palette = 2=#85cc95 +palette = 3=#ffcb8b +palette = 4=#8dabe1 +palette = 5=#c792eb +palette = 6=#78ccf0 +palette = 7=#ffffff +palette = 8=#575656 +palette = 9=#ffa7c4 +palette = 10=#85cc95 +palette = 11=#ffcb8b +palette = 12=#8dabe1 +palette = 13=#c792eb +palette = 14=#ffa7c4 +palette = 15=#ffffff +background = #0e1729 +foreground = #ced2d6 +cursor-color = #ffa7c4 +cursor-text = #ffffff +selection-background = #1f2b41 +selection-foreground = #ced2d6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oxocarbon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oxocarbon new file mode 100644 index 0000000..c2091a8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Oxocarbon @@ -0,0 +1,22 @@ +palette = 0=#161616 +palette = 1=#00dfdb +palette = 2=#00b4ff +palette = 3=#ff4297 +palette = 4=#00c15a +palette = 5=#c693ff +palette = 6=#ff74b8 +palette = 7=#f2f4f8 +palette = 8=#585858 +palette = 9=#00dfdb +palette = 10=#00b4ff +palette = 11=#ff4297 +palette = 12=#00c15a +palette = 13=#c693ff +palette = 14=#ff74b8 +palette = 15=#f2f4f8 +background = #161616 +foreground = #f2f4f8 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #393939 +selection-foreground = #626262 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pale Night Hc b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pale Night Hc new file mode 100644 index 0000000..251e831 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pale Night Hc @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f07178 +palette = 2=#c3e88d +palette = 3=#ffcb6b +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#89ddff +palette = 7=#ffffff +palette = 8=#737373 +palette = 9=#f6a9ae +palette = 10=#dbf1ba +palette = 11=#ffdfa6 +palette = 12=#b4ccff +palette = 13=#ddbdf2 +palette = 14=#b8eaff +palette = 15=#999999 +background = #3e4251 +foreground = #cccccc +cursor-color = #ffcb6b +cursor-text = #323232 +selection-background = #717cb4 +selection-foreground = #80cbc4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pandora b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pandora new file mode 100644 index 0000000..410cf2f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pandora @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff4242 +palette = 2=#74af68 +palette = 3=#ffad29 +palette = 4=#338f86 +palette = 5=#9414e6 +palette = 6=#23d7d7 +palette = 7=#e2e2e2 +palette = 8=#3f5648 +palette = 9=#ff3242 +palette = 10=#74cd68 +palette = 11=#ffb929 +palette = 12=#23d7d7 +palette = 13=#ff37ff +palette = 14=#00ede1 +palette = 15=#ffffff +background = #141e43 +foreground = #e1e1e1 +cursor-color = #43d58e +cursor-text = #ffffff +selection-background = #2d37ff +selection-foreground = #82e0ff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paraiso Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paraiso Dark new file mode 100644 index 0000000..ade8731 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paraiso Dark @@ -0,0 +1,22 @@ +palette = 0=#2f1e2e +palette = 1=#ef6155 +palette = 2=#48b685 +palette = 3=#fec418 +palette = 4=#06b6ef +palette = 5=#815ba4 +palette = 6=#5bc4bf +palette = 7=#a39e9b +palette = 8=#776e71 +palette = 9=#ef6155 +palette = 10=#48b685 +palette = 11=#fec418 +palette = 12=#06b6ef +palette = 13=#815ba4 +palette = 14=#5bc4bf +palette = 15=#e7e9db +background = #2f1e2e +foreground = #a39e9b +cursor-color = #a39e9b +cursor-text = #2f1e2e +selection-background = #4f424c +selection-foreground = #a39e9b diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paul Millr b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paul Millr new file mode 100644 index 0000000..f8bbaca --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Paul Millr @@ -0,0 +1,22 @@ +palette = 0=#2a2a2a +palette = 1=#ff0000 +palette = 2=#79ff0f +palette = 3=#e7bf00 +palette = 4=#396bd7 +palette = 5=#b449be +palette = 6=#66ccff +palette = 7=#bbbbbb +palette = 8=#666666 +palette = 9=#ff0080 +palette = 10=#66ff66 +palette = 11=#f3d64e +palette = 12=#709aed +palette = 13=#db67e6 +palette = 14=#7adff2 +palette = 15=#ffffff +background = #000000 +foreground = #f2f2f2 +cursor-color = #4d4d4d +cursor-text = #ffffff +selection-background = #414141 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Dark new file mode 100644 index 0000000..4147d36 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Dark @@ -0,0 +1,22 @@ +palette = 0=#212121 +palette = 1=#c30771 +palette = 2=#10a778 +palette = 3=#a89c14 +palette = 4=#008ec4 +palette = 5=#5f4986 +palette = 6=#20a5ba +palette = 7=#d9d9d9 +palette = 8=#4f4f4f +palette = 9=#fb007a +palette = 10=#5fd7af +palette = 11=#f3e430 +palette = 12=#20bbfc +palette = 13=#6855de +palette = 14=#4fb8cc +palette = 15=#f1f1f1 +background = #212121 +foreground = #f1f1f1 +cursor-color = #20bbfc +cursor-text = #f1f1f1 +selection-background = #b6d6fd +selection-foreground = #989898 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Light new file mode 100644 index 0000000..6bf5ebf --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pencil Light @@ -0,0 +1,22 @@ +palette = 0=#212121 +palette = 1=#c30771 +palette = 2=#10a778 +palette = 3=#a89c14 +palette = 4=#008ec4 +palette = 5=#523c79 +palette = 6=#20a5ba +palette = 7=#b3b3b3 +palette = 8=#424242 +palette = 9=#fb007a +palette = 10=#52caa2 +palette = 11=#c0b100 +palette = 12=#20bbfc +palette = 13=#6855de +palette = 14=#4fb8cc +palette = 15=#f1f1f1 +background = #f1f1f1 +foreground = #424242 +cursor-color = #20bbfc +cursor-text = #424242 +selection-background = #b6d6fd +selection-foreground = #424242 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Peppermint b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Peppermint new file mode 100644 index 0000000..8c05557 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Peppermint @@ -0,0 +1,22 @@ +palette = 0=#353535 +palette = 1=#e74669 +palette = 2=#89d287 +palette = 3=#dab853 +palette = 4=#449fd0 +palette = 5=#da62dc +palette = 6=#65aaaf +palette = 7=#b4b4b4 +palette = 8=#535353 +palette = 9=#e4859b +palette = 10=#a3cca2 +palette = 11=#e1e487 +palette = 12=#6fbce2 +palette = 13=#e586e7 +palette = 14=#96dcdb +palette = 15=#dfdfdf +background = #000000 +foreground = #c8c8c8 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #e6e6e6 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Phala Green Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Phala Green Dark new file mode 100644 index 0000000..b3a5ede --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Phala Green Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ab1500 +palette = 2=#00b100 +palette = 3=#a9a700 +palette = 4=#0223c0 +palette = 5=#c22ec0 +palette = 6=#00b4c0 +palette = 7=#cbcbcb +palette = 8=#797979 +palette = 9=#ed2200 +palette = 10=#00db00 +palette = 11=#eae700 +palette = 12=#0433ff +palette = 13=#ed3aea +palette = 14=#00e8ea +palette = 15=#eaeaea +background = #000000 +foreground = #c1fc03 +cursor-color = #c1fc03 +cursor-text = #ff271d +selection-background = #014804 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Piatto Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Piatto Light new file mode 100644 index 0000000..8d0c2f1 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Piatto Light @@ -0,0 +1,22 @@ +palette = 0=#414141 +palette = 1=#b23771 +palette = 2=#66781e +palette = 3=#cd6f34 +palette = 4=#3c5ea8 +palette = 5=#a454b2 +palette = 6=#66781e +palette = 7=#bfbfbf +palette = 8=#3f3f3f +palette = 9=#db3365 +palette = 10=#829429 +palette = 11=#cd6f34 +palette = 12=#3c5ea8 +palette = 13=#a454b2 +palette = 14=#829429 +palette = 15=#f2f2f2 +background = #ffffff +foreground = #414141 +cursor-color = #5e77c8 +cursor-text = #abbee5 +selection-background = #706b4e +selection-foreground = #acbcdc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pnevma b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pnevma new file mode 100644 index 0000000..3a59a79 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pnevma @@ -0,0 +1,22 @@ +palette = 0=#2f2e2d +palette = 1=#a36666 +palette = 2=#90a57d +palette = 3=#d7af87 +palette = 4=#7fa5bd +palette = 5=#c79ec4 +palette = 6=#8adbb4 +palette = 7=#d0d0d0 +palette = 8=#4a4845 +palette = 9=#d78787 +palette = 10=#afbea2 +palette = 11=#e4c9af +palette = 12=#a1bdce +palette = 13=#d7beda +palette = 14=#b1e7dd +palette = 15=#efefef +background = #1c1c1c +foreground = #d0d0d0 +cursor-color = #e4c9af +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres new file mode 100644 index 0000000..47262bf --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres @@ -0,0 +1,22 @@ +palette = 0=#1a1e28 +palette = 1=#d0679d +palette = 2=#5de4c7 +palette = 3=#fffac2 +palette = 4=#89ddff +palette = 5=#fcc5e9 +palette = 6=#add7ff +palette = 7=#ffffff +palette = 8=#a6accd +palette = 9=#d0679d +palette = 10=#5de4c7 +palette = 11=#fffac2 +palette = 12=#add7ff +palette = 13=#fae4fc +palette = 14=#89ddff +palette = 15=#ffffff +background = #1a1e28 +foreground = #a6accd +cursor-color = #ffffff +cursor-text = #1a1e29 +selection-background = #a6accd +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Darker b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Darker new file mode 100644 index 0000000..90cb982 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Darker @@ -0,0 +1,22 @@ +palette = 0=#16161e +palette = 1=#d0679d +palette = 2=#5de4c7 +palette = 3=#fffac2 +palette = 4=#89ddff +palette = 5=#fcc5e9 +palette = 6=#add7ff +palette = 7=#ffffff +palette = 8=#a6accd +palette = 9=#d0679d +palette = 10=#5de4c7 +palette = 11=#fffac2 +palette = 12=#add7ff +palette = 13=#fae4fc +palette = 14=#89ddff +palette = 15=#ffffff +background = #16161e +foreground = #a6accd +cursor-color = #ffffff +cursor-text = #16161e +selection-background = #a6accd +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Storm b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Storm new file mode 100644 index 0000000..0bced41 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres Storm @@ -0,0 +1,22 @@ +palette = 0=#252b37 +palette = 1=#d0679d +palette = 2=#5de4c7 +palette = 3=#fffac2 +palette = 4=#89ddff +palette = 5=#f087bd +palette = 6=#89ddff +palette = 7=#ffffff +palette = 8=#a6accd +palette = 9=#d0679d +palette = 10=#5de4c7 +palette = 11=#fffac2 +palette = 12=#add7ff +palette = 13=#f087bd +palette = 14=#add7ff +palette = 15=#ffffff +background = #252b37 +foreground = #a6accd +cursor-color = #ffffff +cursor-text = #252b37 +selection-background = #a6accd +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres White b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres White new file mode 100644 index 0000000..b5ac384 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Poimandres White @@ -0,0 +1,22 @@ +palette = 0=#fefeff +palette = 1=#ff2090 +palette = 2=#01dab2 +palette = 3=#e5ba4e +palette = 4=#8abacd +palette = 5=#eb8394 +palette = 6=#8abacd +palette = 7=#000000 +palette = 8=#969cbd +palette = 9=#ff2090 +palette = 10=#01dab2 +palette = 11=#e5ba4e +palette = 12=#0ebfff +palette = 13=#eb8394 +palette = 14=#0ebfff +palette = 15=#000000 +background = #fefeff +foreground = #969cbd +cursor-color = #969cbd +cursor-text = #fefeff +selection-background = #969cbd +selection-foreground = #3b3e48 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Popping And Locking b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Popping And Locking new file mode 100644 index 0000000..130621c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Popping And Locking @@ -0,0 +1,22 @@ +palette = 0=#1d2021 +palette = 1=#cc241d +palette = 2=#98971a +palette = 3=#d79921 +palette = 4=#458588 +palette = 5=#b16286 +palette = 6=#689d6a +palette = 7=#a89984 +palette = 8=#928374 +palette = 9=#f42c3e +palette = 10=#b8bb26 +palette = 11=#fabd2f +palette = 12=#99c6ca +palette = 13=#d3869b +palette = 14=#7ec16e +palette = 15=#ebdbb2 +background = #181921 +foreground = #ebdbb2 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #ebdbb2 +selection-foreground = #928374 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Powershell b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Powershell new file mode 100644 index 0000000..cf9bb4c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Powershell @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#981a22 +palette = 2=#098003 +palette = 3=#c4a000 +palette = 4=#4140c3 +palette = 5=#d33682 +palette = 6=#0e807f +palette = 7=#7f7c7f +palette = 8=#808080 +palette = 9=#ef2929 +palette = 10=#1cfe3c +palette = 11=#fefe45 +palette = 12=#268ad2 +palette = 13=#fe13fa +palette = 14=#29fffe +palette = 15=#c2c1c3 +background = #052454 +foreground = #f6f6f7 +cursor-color = #f6f6f7 +cursor-text = #052454 +selection-background = #f6f6f7 +selection-foreground = #052454 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Primary b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Primary new file mode 100644 index 0000000..12e783d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Primary @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#db4437 +palette = 2=#0f9d58 +palette = 3=#f4b400 +palette = 4=#4285f4 +palette = 5=#db4437 +palette = 6=#4285f4 +palette = 7=#bfbfbf +palette = 8=#000000 +palette = 9=#db4437 +palette = 10=#0f9d58 +palette = 11=#f4b400 +palette = 12=#4285f4 +palette = 13=#4285f4 +palette = 14=#0f9d58 +palette = 15=#ffffff +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #656565 +selection-foreground = #eeeeee diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro new file mode 100644 index 0000000..014d786 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#990000 +palette = 2=#00a600 +palette = 3=#999900 +palette = 4=#2009db +palette = 5=#b200b2 +palette = 6=#00a6b2 +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#00d900 +palette = 11=#e5e500 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00e5e5 +palette = 15=#e5e5e5 +background = #000000 +foreground = #f2f2f2 +cursor-color = #4d4d4d +cursor-text = #ffffff +selection-background = #414141 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro Light new file mode 100644 index 0000000..05ef155 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Pro Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e5492b +palette = 2=#50d148 +palette = 3=#c6c440 +palette = 4=#3b75ff +palette = 5=#ed66e8 +palette = 6=#4ed2de +palette = 7=#c2c2c2 +palette = 8=#9f9f9f +palette = 9=#ff6640 +palette = 10=#48d53e +palette = 11=#bfbe23 +palette = 12=#0082ff +palette = 13=#ff7eff +palette = 14=#3bd1d2 +palette = 15=#f2f2f2 +background = #ffffff +foreground = #191919 +cursor-color = #4d4d4d +cursor-text = #f2f2f2 +selection-background = #c1ddff +selection-foreground = #191919 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purple Rain b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purple Rain new file mode 100644 index 0000000..5dd3722 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purple Rain @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff260e +palette = 2=#9be205 +palette = 3=#ffc400 +palette = 4=#00a2fa +palette = 5=#815bb5 +palette = 6=#00deef +palette = 7=#ffffff +palette = 8=#565656 +palette = 9=#ff4250 +palette = 10=#b8e36e +palette = 11=#ffd852 +palette = 12=#00a6ff +palette = 13=#ac7bf0 +palette = 14=#74fdf3 +palette = 15=#ffffff +background = #21084a +foreground = #fffbf6 +cursor-color = #ff271d +cursor-text = #ff9a90 +selection-background = #287691 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purplepeter b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purplepeter new file mode 100644 index 0000000..9afa93e --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Purplepeter @@ -0,0 +1,22 @@ +palette = 0=#0a0520 +palette = 1=#ff796d +palette = 2=#99b481 +palette = 3=#efdfac +palette = 4=#66d9ef +palette = 5=#e78fcd +palette = 6=#ba8cff +palette = 7=#ffba81 +palette = 8=#504b63 +palette = 9=#f99f92 +palette = 10=#b4be8f +palette = 11=#f2e9bf +palette = 12=#79daed +palette = 13=#ba91d4 +palette = 14=#a0a0d6 +palette = 15=#b9aed3 +background = #2a1a4a +foreground = #ece7fa +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #8689c2 +selection-foreground = #271c50 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rapture b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rapture new file mode 100644 index 0000000..958bc46 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rapture @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fc644d +palette = 2=#7afde1 +palette = 3=#fff09b +palette = 4=#6c9bf5 +palette = 5=#ff4fa1 +palette = 6=#64e0ff +palette = 7=#c0c9e5 +palette = 8=#304b66 +palette = 9=#fc644d +palette = 10=#7afde1 +palette = 11=#fff09b +palette = 12=#6c9bf5 +palette = 13=#ff4fa1 +palette = 14=#64e0ff +palette = 15=#ffffff +background = #111e2a +foreground = #c0c9e5 +cursor-color = #ffffff +cursor-text = #111e2a +selection-background = #304b66 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Dark new file mode 100644 index 0000000..83a4d7d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5360 +palette = 2=#59d499 +palette = 3=#ffc531 +palette = 4=#56c2ff +palette = 5=#cf2f98 +palette = 6=#52eee5 +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#ff6363 +palette = 10=#59d499 +palette = 11=#ffc531 +palette = 12=#56c2ff +palette = 13=#cf2f98 +palette = 14=#52eee5 +palette = 15=#ffffff +background = #1a1a1a +foreground = #ffffff +cursor-color = #cccccc +cursor-text = #999999 +selection-background = #333333 +selection-foreground = #595959 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Light new file mode 100644 index 0000000..b7c0890 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Raycast Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b12424 +palette = 2=#006b4f +palette = 3=#f8a300 +palette = 4=#138af2 +palette = 5=#9a1b6e +palette = 6=#3eb8bf +palette = 7=#bfbfbf +palette = 8=#000000 +palette = 9=#b12424 +palette = 10=#006b4f +palette = 11=#f8a300 +palette = 12=#138af2 +palette = 13=#9a1b6e +palette = 14=#3eb8bf +palette = 15=#ffffff +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #404040 +selection-background = #e5e5e5 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rebecca b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rebecca new file mode 100644 index 0000000..ec87690 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rebecca @@ -0,0 +1,22 @@ +palette = 0=#12131e +palette = 1=#dd7755 +palette = 2=#04dbb5 +palette = 3=#f2e7b7 +palette = 4=#7aa5ff +palette = 5=#bf9cf9 +palette = 6=#56d3c2 +palette = 7=#e4e3e9 +palette = 8=#666699 +palette = 9=#ff92cd +palette = 10=#01eac0 +palette = 11=#fffca8 +palette = 12=#69c0fa +palette = 13=#c17ff8 +palette = 14=#8bfde1 +palette = 15=#f4f2f9 +background = #292a44 +foreground = #e8e6ed +cursor-color = #b89bf9 +cursor-text = #292a44 +selection-background = #663399 +selection-foreground = #f4f2f9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Alert b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Alert new file mode 100644 index 0000000..52cce09 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Alert @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d62e4e +palette = 2=#71be6b +palette = 3=#beb86b +palette = 4=#489bee +palette = 5=#e979d7 +palette = 6=#6bbeb8 +palette = 7=#d6d6d6 +palette = 8=#666666 +palette = 9=#e02553 +palette = 10=#aff08c +palette = 11=#dfddb7 +palette = 12=#65aaf1 +palette = 13=#ddb7df +palette = 14=#b7dfdd +palette = 15=#ffffff +background = #762423 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #762423 +selection-background = #073642 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Planet b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Planet new file mode 100644 index 0000000..d024aaa --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Planet @@ -0,0 +1,22 @@ +palette = 0=#202020 +palette = 1=#8c3432 +palette = 2=#728271 +palette = 3=#e8bf6a +palette = 4=#69819e +palette = 5=#896492 +palette = 6=#5b8390 +palette = 7=#b9aa99 +palette = 8=#676767 +palette = 9=#b55242 +palette = 10=#869985 +palette = 11=#ebeb91 +palette = 12=#60827e +palette = 13=#de4974 +palette = 14=#38add8 +palette = 15=#d6bfb8 +background = #222222 +foreground = #c2b790 +cursor-color = #c2b790 +cursor-text = #202020 +selection-background = #1b324a +selection-foreground = #bcb291 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Sands b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Sands new file mode 100644 index 0000000..7093ee3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Red Sands @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff3f00 +palette = 2=#00bb00 +palette = 3=#e7b000 +palette = 4=#0072ff +palette = 5=#bb00bb +palette = 6=#00bbbb +palette = 7=#bbbbbb +palette = 8=#6e6e6e +palette = 9=#d41a1a +palette = 10=#00bb00 +palette = 11=#e7b000 +palette = 12=#0072ae +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #7a251e +foreground = #d7c9a7 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #a4a390 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Relaxed b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Relaxed new file mode 100644 index 0000000..1f80ff8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Relaxed @@ -0,0 +1,22 @@ +palette = 0=#151515 +palette = 1=#bc5653 +palette = 2=#909d63 +palette = 3=#ebc17a +palette = 4=#6a8799 +palette = 5=#b06698 +palette = 6=#c9dfff +palette = 7=#d9d9d9 +palette = 8=#636363 +palette = 9=#bc5653 +palette = 10=#a0ac77 +palette = 11=#ebc17a +palette = 12=#7eaac7 +palette = 13=#b06698 +palette = 14=#acbbd0 +palette = 15=#f7f7f7 +background = #353a44 +foreground = #d9d9d9 +cursor-color = #d9d9d9 +cursor-text = #1b1b1b +selection-background = #6a7985 +selection-foreground = #d9d9d9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro new file mode 100644 index 0000000..ab6e13c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro @@ -0,0 +1,22 @@ +palette = 0=#13a10e +palette = 1=#13a10e +palette = 2=#13a10e +palette = 3=#13a10e +palette = 4=#13a10e +palette = 5=#13a10e +palette = 6=#13a10e +palette = 7=#13a10e +palette = 8=#16ba10 +palette = 9=#16ba10 +palette = 10=#16ba10 +palette = 11=#16ba10 +palette = 12=#16ba10 +palette = 13=#16ba10 +palette = 14=#16ba10 +palette = 15=#16ba10 +background = #000000 +foreground = #13a10e +cursor-color = #13a10e +cursor-text = #000000 +selection-background = #ffffff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro Legends b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro Legends new file mode 100644 index 0000000..ac8a77c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Retro Legends @@ -0,0 +1,22 @@ +palette = 0=#262626 +palette = 1=#de5454 +palette = 2=#45eb45 +palette = 3=#f7bf2b +palette = 4=#4066f2 +palette = 5=#bf4cf2 +palette = 6=#40d9e6 +palette = 7=#bfe6bf +palette = 8=#4c594c +palette = 9=#ff6666 +palette = 10=#59ff59 +palette = 11=#ffd933 +palette = 12=#4c80ff +palette = 13=#e666ff +palette = 14=#59e6ff +palette = 15=#f2fff2 +background = #0d0d0d +foreground = #45eb45 +cursor-color = #45eb45 +cursor-text = #0d0d0d +selection-background = #336633 +selection-foreground = #f2fff2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rippedcasts b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rippedcasts new file mode 100644 index 0000000..c6e92a7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rippedcasts @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cdaf95 +palette = 2=#a8ff60 +palette = 3=#bfbb1f +palette = 4=#75a5b0 +palette = 5=#ff73fd +palette = 6=#5a647e +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#eecbad +palette = 10=#bcee68 +palette = 11=#e5e500 +palette = 12=#86bdc9 +palette = 13=#e500e5 +palette = 14=#8c9bc4 +palette = 15=#e5e5e5 +background = #2b2b2b +foreground = #ffffff +cursor-color = #7f7f7f +cursor-text = #ffffff +selection-background = #5a647e +selection-foreground = #f2f2f2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine new file mode 100644 index 0000000..64216a7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine @@ -0,0 +1,22 @@ +palette = 0=#26233a +palette = 1=#eb6f92 +palette = 2=#31748f +palette = 3=#f6c177 +palette = 4=#9ccfd8 +palette = 5=#c4a7e7 +palette = 6=#ebbcba +palette = 7=#e0def4 +palette = 8=#6e6a86 +palette = 9=#eb6f92 +palette = 10=#31748f +palette = 11=#f6c177 +palette = 12=#9ccfd8 +palette = 13=#c4a7e7 +palette = 14=#ebbcba +palette = 15=#e0def4 +background = #191724 +foreground = #e0def4 +cursor-color = #e0def4 +cursor-text = #191724 +selection-background = #403d52 +selection-foreground = #e0def4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Dawn b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Dawn new file mode 100644 index 0000000..844b694 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Dawn @@ -0,0 +1,22 @@ +palette = 0=#f2e9e1 +palette = 1=#b4637a +palette = 2=#286983 +palette = 3=#ea9d34 +palette = 4=#56949f +palette = 5=#907aa9 +palette = 6=#d7827e +palette = 7=#575279 +palette = 8=#9893a5 +palette = 9=#b4637a +palette = 10=#286983 +palette = 11=#ea9d34 +palette = 12=#56949f +palette = 13=#907aa9 +palette = 14=#d7827e +palette = 15=#575279 +background = #faf4ed +foreground = #575279 +cursor-color = #575279 +cursor-text = #faf4ed +selection-background = #dfdad9 +selection-foreground = #575279 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Moon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Moon new file mode 100644 index 0000000..b27429b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rose Pine Moon @@ -0,0 +1,22 @@ +palette = 0=#393552 +palette = 1=#eb6f92 +palette = 2=#3e8fb0 +palette = 3=#f6c177 +palette = 4=#9ccfd8 +palette = 5=#c4a7e7 +palette = 6=#ea9a97 +palette = 7=#e0def4 +palette = 8=#6e6a86 +palette = 9=#eb6f92 +palette = 10=#3e8fb0 +palette = 11=#f6c177 +palette = 12=#9ccfd8 +palette = 13=#c4a7e7 +palette = 14=#ea9a97 +palette = 15=#e0def4 +background = #232136 +foreground = #e0def4 +cursor-color = #e0def4 +cursor-text = #232136 +selection-background = #44415a +selection-foreground = #e0def4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rouge 2 b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rouge 2 new file mode 100644 index 0000000..5df14f8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Rouge 2 @@ -0,0 +1,22 @@ +palette = 0=#5d5d6b +palette = 1=#c6797e +palette = 2=#969e92 +palette = 3=#dbcdab +palette = 4=#6e94b9 +palette = 5=#4c4e78 +palette = 6=#8ab6c1 +palette = 7=#e8e8ea +palette = 8=#616274 +palette = 9=#c6797e +palette = 10=#e6dcc4 +palette = 11=#e6dcc4 +palette = 12=#98b3cd +palette = 13=#8283a1 +palette = 14=#abcbd3 +palette = 15=#e8e8ea +background = #17182b +foreground = #a2a3aa +cursor-color = #969e92 +cursor-text = #ffffff +selection-background = #5d5d6b +selection-foreground = #dfe5ee diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Royal b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Royal new file mode 100644 index 0000000..afb93b3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Royal @@ -0,0 +1,22 @@ +palette = 0=#241f2b +palette = 1=#91284c +palette = 2=#23801c +palette = 3=#b49d27 +palette = 4=#6580b0 +palette = 5=#674d96 +palette = 6=#8aaabe +palette = 7=#524966 +palette = 8=#3e3a4a +palette = 9=#d5356c +palette = 10=#2cd946 +palette = 11=#fde83b +palette = 12=#90baf9 +palette = 13=#a479e3 +palette = 14=#acd4eb +palette = 15=#9e8cbd +background = #100815 +foreground = #514968 +cursor-color = #524966 +cursor-text = #100613 +selection-background = #1f1d2b +selection-foreground = #a593cd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ryuuko b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ryuuko new file mode 100644 index 0000000..f9e9dd4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ryuuko @@ -0,0 +1,22 @@ +palette = 0=#2c3941 +palette = 1=#865f5b +palette = 2=#66907d +palette = 3=#b1a990 +palette = 4=#6a8e95 +palette = 5=#b18a73 +palette = 6=#88b2ac +palette = 7=#ececec +palette = 8=#5d7079 +palette = 9=#865f5b +palette = 10=#66907d +palette = 11=#b1a990 +palette = 12=#6a8e95 +palette = 13=#b18a73 +palette = 14=#88b2ac +palette = 15=#ececec +background = #2c3941 +foreground = #ececec +cursor-color = #ececec +cursor-text = #002831 +selection-background = #002831 +selection-foreground = #819090 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sakura b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sakura new file mode 100644 index 0000000..c48d641 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sakura @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d52370 +palette = 2=#41af1a +palette = 3=#bc7053 +palette = 4=#6964ab +palette = 5=#c71fbf +palette = 6=#939393 +palette = 7=#998eac +palette = 8=#786d69 +palette = 9=#f41d99 +palette = 10=#22e529 +palette = 11=#f59574 +palette = 12=#9892f1 +palette = 13=#e90cdd +palette = 14=#eeeeee +palette = 15=#cbb6ff +background = #18131e +foreground = #dd7bdc +cursor-color = #ff65fd +cursor-text = #24242e +selection-background = #c05cbf +selection-foreground = #24242e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Scarlet Protocol b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Scarlet Protocol new file mode 100644 index 0000000..e4f9b81 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Scarlet Protocol @@ -0,0 +1,22 @@ +palette = 0=#101116 +palette = 1=#ff0051 +palette = 2=#00dc84 +palette = 3=#faf945 +palette = 4=#0271b6 +palette = 5=#ca30c7 +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#5ffa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#bd35ec +palette = 14=#60fdff +palette = 15=#ffffff +background = #1c153d +foreground = #e41951 +cursor-color = #76ff9f +cursor-text = #a6a6a6 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sea Shells b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sea Shells new file mode 100644 index 0000000..0c18bdb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sea Shells @@ -0,0 +1,22 @@ +palette = 0=#17384c +palette = 1=#d15123 +palette = 2=#027c9b +palette = 3=#fca02f +palette = 4=#1e4950 +palette = 5=#68d4f1 +palette = 6=#50a3b5 +palette = 7=#deb88d +palette = 8=#434b53 +palette = 9=#d48678 +palette = 10=#628d98 +palette = 11=#fdd39f +palette = 12=#1bbcdd +palette = 13=#bbe3ee +palette = 14=#87acb4 +palette = 15=#fee4ce +background = #09141b +foreground = #deb88d +cursor-color = #fca02f +cursor-text = #08131a +selection-background = #1e4962 +selection-foreground = #fee4ce diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seafoam Pastel b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seafoam Pastel new file mode 100644 index 0000000..6a271bc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seafoam Pastel @@ -0,0 +1,22 @@ +palette = 0=#757575 +palette = 1=#825d4d +palette = 2=#728c62 +palette = 3=#ada16d +palette = 4=#4d7b82 +palette = 5=#8a7267 +palette = 6=#729494 +palette = 7=#e0e0e0 +palette = 8=#8a8a8a +palette = 9=#cf937a +palette = 10=#98d9aa +palette = 11=#fae79d +palette = 12=#7ac3cf +palette = 13=#d6b2a1 +palette = 14=#ade0e0 +palette = 15=#e0e0e0 +background = #243435 +foreground = #d4e7d4 +cursor-color = #57647a +cursor-text = #323232 +selection-background = #ffffff +selection-foreground = #9e8b13 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Black b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Black new file mode 100644 index 0000000..de39bf6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Black @@ -0,0 +1,22 @@ +palette = 0=#252525 +palette = 1=#ed4a46 +palette = 2=#70b433 +palette = 3=#dbb32d +palette = 4=#368aeb +palette = 5=#eb6eb7 +palette = 6=#3fc5b7 +palette = 7=#b9b9b9 +palette = 8=#777777 +palette = 9=#ff5e56 +palette = 10=#83c746 +palette = 11=#efc541 +palette = 12=#4f9cfe +palette = 13=#ff81ca +palette = 14=#56d8c9 +palette = 15=#dedede +background = #181818 +foreground = #b9b9b9 +cursor-color = #777777 +cursor-text = #181818 +selection-background = #3b3b3b +selection-foreground = #646464 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Dark new file mode 100644 index 0000000..14e61b3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Dark @@ -0,0 +1,22 @@ +palette = 0=#184956 +palette = 1=#fa5750 +palette = 2=#75b938 +palette = 3=#dbb32d +palette = 4=#4695f7 +palette = 5=#f275be +palette = 6=#41c7b9 +palette = 7=#adbcbc +palette = 8=#72898f +palette = 9=#ff665c +palette = 10=#84c747 +palette = 11=#ebc13d +palette = 12=#58a3ff +palette = 13=#ff84cd +palette = 14=#53d6c7 +palette = 15=#cad8d9 +background = #103c48 +foreground = #adbcbc +cursor-color = #adbcbc +cursor-text = #103c48 +selection-background = #184956 +selection-foreground = #53d6c7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Light new file mode 100644 index 0000000..4a11d13 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Selenized Light @@ -0,0 +1,22 @@ +palette = 0=#ece3cc +palette = 1=#d2212d +palette = 2=#489100 +palette = 3=#ad8900 +palette = 4=#0072d4 +palette = 5=#ca4898 +palette = 6=#009c8f +palette = 7=#53676d +palette = 8=#909995 +palette = 9=#cc1729 +palette = 10=#428b00 +palette = 11=#a78300 +palette = 12=#006dce +palette = 13=#c44392 +palette = 14=#00978a +palette = 15=#3a4d53 +background = #fbf3db +foreground = #53676d +cursor-color = #53676d +cursor-text = #fbf3db +selection-background = #ece3cc +selection-foreground = #00978a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Dark new file mode 100644 index 0000000..2995d39 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Dark @@ -0,0 +1,22 @@ +palette = 0=#4b4b4b +palette = 1=#e388a3 +palette = 2=#98bd99 +palette = 3=#ffdf9b +palette = 4=#97bdde +palette = 5=#a5a6c5 +palette = 6=#6fbdbe +palette = 7=#dddddd +palette = 8=#797172 +palette = 9=#eb99b1 +palette = 10=#8fcd92 +palette = 11=#ffe5b3 +palette = 12=#a2c8e9 +palette = 13=#b2b3da +palette = 14=#6bcacb +palette = 15=#a8a8a8 +background = #4b4b4b +foreground = #dddddd +cursor-color = #e2e2e2 +cursor-text = #4b4b4b +selection-background = #777777 +selection-foreground = #dddddd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Light new file mode 100644 index 0000000..87e362a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seoulbones Light @@ -0,0 +1,22 @@ +palette = 0=#e2e2e2 +palette = 1=#dc5284 +palette = 2=#628562 +palette = 3=#c48562 +palette = 4=#0084a3 +palette = 5=#896788 +palette = 6=#008586 +palette = 7=#555555 +palette = 8=#a5a0a1 +palette = 9=#be3c6d +palette = 10=#487249 +palette = 11=#a76b48 +palette = 12=#006f89 +palette = 13=#7f4c7e +palette = 14=#006f70 +palette = 15=#777777 +background = #e2e2e2 +foreground = #555555 +cursor-color = #555555 +cursor-text = #e2e2e2 +selection-background = #cccccc +selection-foreground = #555555 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seti b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seti new file mode 100644 index 0000000..7140e37 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Seti @@ -0,0 +1,22 @@ +palette = 0=#323232 +palette = 1=#c22832 +palette = 2=#8ec43d +palette = 3=#e0c64f +palette = 4=#43a5d5 +palette = 5=#8b57b5 +palette = 6=#8ec43d +palette = 7=#eeeeee +palette = 8=#3f3f3f +palette = 9=#c22832 +palette = 10=#8ec43d +palette = 11=#e0c64f +palette = 12=#43a5d5 +palette = 13=#8b57b5 +palette = 14=#8ec43d +palette = 15=#ffffff +background = #111213 +foreground = #cacecd +cursor-color = #e3bf21 +cursor-text = #ad8b00 +selection-background = #303233 +selection-foreground = #cacecd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shades Of Purple b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shades Of Purple new file mode 100644 index 0000000..e28ae33 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shades Of Purple @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d90429 +palette = 2=#3ad900 +palette = 3=#ffe700 +palette = 4=#6943ff +palette = 5=#ff2c70 +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#f92a1c +palette = 10=#43d426 +palette = 11=#f1d000 +palette = 12=#6871ff +palette = 13=#ff77ff +palette = 14=#79e8fb +palette = 15=#ffffff +background = #1e1d40 +foreground = #ffffff +cursor-color = #fad000 +cursor-text = #98998e +selection-background = #b362ff +selection-foreground = #c2c2c2 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shaman b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shaman new file mode 100644 index 0000000..869ae85 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Shaman @@ -0,0 +1,22 @@ +palette = 0=#012026 +palette = 1=#b2302d +palette = 2=#00a941 +palette = 3=#5e8baa +palette = 4=#449a86 +palette = 5=#00599d +palette = 6=#5d7e19 +palette = 7=#405555 +palette = 8=#384451 +palette = 9=#ff4242 +palette = 10=#2aea5e +palette = 11=#8ed4fd +palette = 12=#61d5ba +palette = 13=#1298ff +palette = 14=#98d028 +palette = 15=#58fbd6 +background = #001015 +foreground = #405555 +cursor-color = #4afcd6 +cursor-text = #031413 +selection-background = #415555 +selection-foreground = #5afad6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Slate b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Slate new file mode 100644 index 0000000..c05aa07 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Slate @@ -0,0 +1,22 @@ +palette = 0=#222222 +palette = 1=#e2a8bf +palette = 2=#81d778 +palette = 3=#c4c9c0 +palette = 4=#335856 +palette = 5=#a481d3 +palette = 6=#15ab9c +palette = 7=#02c5e0 +palette = 8=#ffffff +palette = 9=#ffcdd9 +palette = 10=#beffa8 +palette = 11=#d0ccca +palette = 12=#7ab0d2 +palette = 13=#c5a7d9 +palette = 14=#8cdfe0 +palette = 15=#e0e0e0 +background = #222222 +foreground = #35b1d2 +cursor-color = #87d3c4 +cursor-text = #323232 +selection-background = #0f3754 +selection-foreground = #2dffc0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sleepy Hollow b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sleepy Hollow new file mode 100644 index 0000000..753d44a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sleepy Hollow @@ -0,0 +1,22 @@ +palette = 0=#572100 +palette = 1=#ba3934 +palette = 2=#91773f +palette = 3=#b55600 +palette = 4=#5f63b4 +palette = 5=#a17c7b +palette = 6=#8faea9 +palette = 7=#af9a91 +palette = 8=#4e4b61 +palette = 9=#d9443f +palette = 10=#d6b04e +palette = 11=#f66813 +palette = 12=#8086ef +palette = 13=#e2c2bb +palette = 14=#a4dce7 +palette = 15=#d2c7a9 +background = #121214 +foreground = #af9a91 +cursor-color = #af9a91 +cursor-text = #391a02 +selection-background = #575256 +selection-foreground = #d2c7a9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Smyck b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Smyck new file mode 100644 index 0000000..52cb2b3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Smyck @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b84131 +palette = 2=#7da900 +palette = 3=#c4a500 +palette = 4=#62a3c4 +palette = 5=#ba8acc +palette = 6=#207383 +palette = 7=#a1a1a1 +palette = 8=#7a7a7a +palette = 9=#d6837c +palette = 10=#c4f137 +palette = 11=#fee14d +palette = 12=#8dcff0 +palette = 13=#f79aff +palette = 14=#6ad9cf +palette = 15=#f7f7f7 +background = #1b1b1b +foreground = #f7f7f7 +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #207483 +selection-foreground = #f7f7f7 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy new file mode 100644 index 0000000..bd2821f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fc4346 +palette = 2=#50fb7c +palette = 3=#f0fb8c +palette = 4=#49baff +palette = 5=#fc4cb4 +palette = 6=#8be9fe +palette = 7=#ededec +palette = 8=#555555 +palette = 9=#fc4346 +palette = 10=#50fb7c +palette = 11=#f0fb8c +palette = 12=#49baff +palette = 13=#fc4cb4 +palette = 14=#8be9fe +palette = 15=#ededec +background = #1e1f29 +foreground = #ebece6 +cursor-color = #e4e4e4 +cursor-text = #a9a9a9 +selection-background = #81aec6 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy Soft b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy Soft new file mode 100644 index 0000000..61ae201 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Snazzy Soft @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff5c57 +palette = 2=#5af78e +palette = 3=#f3f99d +palette = 4=#57c7ff +palette = 5=#ff6ac1 +palette = 6=#9aedfe +palette = 7=#f1f1f0 +palette = 8=#686868 +palette = 9=#ff5c57 +palette = 10=#5af78e +palette = 11=#f3f99d +palette = 12=#57c7ff +palette = 13=#ff6ac1 +palette = 14=#9aedfe +palette = 15=#f1f1f0 +background = #282a36 +foreground = #eff0eb +cursor-color = #eaeaea +cursor-text = #282a36 +selection-background = #92bcd0 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Soft Server b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Soft Server new file mode 100644 index 0000000..b26328b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Soft Server @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#a2686a +palette = 2=#9aa56a +palette = 3=#a3906a +palette = 4=#6b8fa3 +palette = 5=#6a71a3 +palette = 6=#6ba58f +palette = 7=#99a3a2 +palette = 8=#666c6c +palette = 9=#dd5c60 +palette = 10=#bfdf55 +palette = 11=#deb360 +palette = 12=#62b1df +palette = 13=#606edf +palette = 14=#64e39c +palette = 15=#d2e0de +background = #242626 +foreground = #99a3a2 +cursor-color = #d2e0de +cursor-text = #000000 +selection-background = #7f8786 +selection-foreground = #effffe diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Darcula b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Darcula new file mode 100644 index 0000000..2be1746 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Darcula @@ -0,0 +1,22 @@ +palette = 0=#25292a +palette = 1=#f24840 +palette = 2=#629655 +palette = 3=#b68800 +palette = 4=#2075c7 +palette = 5=#797fd4 +palette = 6=#15968d +palette = 7=#d2d8d9 +palette = 8=#65696a +palette = 9=#f24840 +palette = 10=#629655 +palette = 11=#b68800 +palette = 12=#2075c7 +palette = 13=#797fd4 +palette = 14=#15968d +palette = 15=#d2d8d9 +background = #3d3f41 +foreground = #d2d8d9 +cursor-color = #708284 +cursor-text = #002831 +selection-background = #214283 +selection-foreground = #d2d8d9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Higher Contrast b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Higher Contrast new file mode 100644 index 0000000..6695e16 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Higher Contrast @@ -0,0 +1,22 @@ +palette = 0=#002831 +palette = 1=#d11c24 +palette = 2=#6cbe6c +palette = 3=#a57706 +palette = 4=#2176c7 +palette = 5=#c61c6f +palette = 6=#259286 +palette = 7=#eae3cb +palette = 8=#006488 +palette = 9=#f5163b +palette = 10=#51ef84 +palette = 11=#b27e28 +palette = 12=#178ec8 +palette = 13=#e24d8e +palette = 14=#00b39e +palette = 15=#fcf4dc +background = #001e27 +foreground = #9cc2c3 +cursor-color = #f34b00 +cursor-text = #002831 +selection-background = #003748 +selection-foreground = #7a8f8e diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Patched b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Patched new file mode 100644 index 0000000..3e73d2d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Dark Patched @@ -0,0 +1,22 @@ +palette = 0=#002831 +palette = 1=#d11c24 +palette = 2=#738a05 +palette = 3=#a57706 +palette = 4=#2176c7 +palette = 5=#c61c6f +palette = 6=#259286 +palette = 7=#eae3cb +palette = 8=#475b62 +palette = 9=#bd3613 +palette = 10=#475b62 +palette = 11=#536870 +palette = 12=#708284 +palette = 13=#5956ba +palette = 14=#819090 +palette = 15=#fcf4dc +background = #001e27 +foreground = #708284 +cursor-color = #708284 +cursor-text = #002831 +selection-background = #002831 +selection-foreground = #819090 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Osaka Night b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Osaka Night new file mode 100644 index 0000000..bda8d6a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Solarized Osaka Night @@ -0,0 +1,22 @@ +palette = 0=#15161e +palette = 1=#f7768e +palette = 2=#9ece6a +palette = 3=#e0af68 +palette = 4=#7aa2f7 +palette = 5=#bb9af7 +palette = 6=#7dcfff +palette = 7=#a9b1d6 +palette = 8=#414868 +palette = 9=#f7768e +palette = 10=#9ece6a +palette = 11=#e0af68 +palette = 12=#7aa2f7 +palette = 13=#bb9af7 +palette = 14=#7dcfff +palette = 15=#c0caf5 +background = #1a1b26 +foreground = #c0caf5 +cursor-color = #c0caf5 +cursor-text = #1a1b26 +selection-background = #283457 +selection-foreground = #c0caf5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sonokai b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sonokai new file mode 100644 index 0000000..628f0aa --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sonokai @@ -0,0 +1,22 @@ +palette = 0=#181819 +palette = 1=#fc5d7c +palette = 2=#9ed072 +palette = 3=#e7c664 +palette = 4=#76cce0 +palette = 5=#b39df3 +palette = 6=#f39660 +palette = 7=#e2e2e3 +palette = 8=#7f8490 +palette = 9=#fc5d7c +palette = 10=#9ed072 +palette = 11=#e7c664 +palette = 12=#76cce0 +palette = 13=#b39df3 +palette = 14=#f39660 +palette = 15=#e2e2e3 +background = #2c2e34 +foreground = #e2e2e3 +cursor-color = #e2e2e3 +cursor-text = #2c2e34 +selection-background = #414550 +selection-foreground = #e2e2e3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacedust b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacedust new file mode 100644 index 0000000..de3a40a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacedust @@ -0,0 +1,22 @@ +palette = 0=#6e5346 +palette = 1=#e35b00 +palette = 2=#5cab96 +palette = 3=#e3cd7b +palette = 4=#0f548b +palette = 5=#e35b00 +palette = 6=#06afc7 +palette = 7=#f0f1ce +palette = 8=#684c31 +palette = 9=#ff8a3a +palette = 10=#aecab8 +palette = 11=#ffc878 +palette = 12=#67a0ce +palette = 13=#ff8a3a +palette = 14=#83a7b4 +palette = 15=#fefff1 +background = #0a1e24 +foreground = #ecf0c1 +cursor-color = #708284 +cursor-text = #002831 +selection-background = #0a385c +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray new file mode 100644 index 0000000..5ae9c93 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b04b57 +palette = 2=#87b379 +palette = 3=#e5c179 +palette = 4=#7d8fa4 +palette = 5=#a47996 +palette = 6=#85a7a5 +palette = 7=#b3b8c3 +palette = 8=#4c4c4c +palette = 9=#b04b57 +palette = 10=#87b379 +palette = 11=#e5c179 +palette = 12=#7d8fa4 +palette = 13=#a47996 +palette = 14=#85a7a5 +palette = 15=#ffffff +background = #20242d +foreground = #b3b8c3 +cursor-color = #b3b8c3 +cursor-text = #1d1f21 +selection-background = #16181e +selection-foreground = #b3b8c3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Bright b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Bright new file mode 100644 index 0000000..866995c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Bright @@ -0,0 +1,22 @@ +palette = 0=#080808 +palette = 1=#bc5553 +palette = 2=#a0b56c +palette = 3=#f6c987 +palette = 4=#7baec1 +palette = 5=#b98aae +palette = 6=#85c9b8 +palette = 7=#d8d8d8 +palette = 8=#626262 +palette = 9=#bc5553 +palette = 10=#a0b56c +palette = 11=#f6c987 +palette = 12=#7baec1 +palette = 13=#b98aae +palette = 14=#85c9b8 +palette = 15=#f7f7f7 +background = #2a2e3a +foreground = #f3f3f3 +cursor-color = #c6c6c6 +cursor-text = #8c8c8c +selection-background = #cacaca +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties new file mode 100644 index 0000000..9f3c50b --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties @@ -0,0 +1,22 @@ +palette = 0=#15171c +palette = 1=#ec5f67 +palette = 2=#81a764 +palette = 3=#fec254 +palette = 4=#5486c0 +palette = 5=#bf83c1 +palette = 6=#57c2c1 +palette = 7=#efece7 +palette = 8=#555555 +palette = 9=#ff6973 +palette = 10=#93d493 +palette = 11=#ffd256 +palette = 12=#4d84d1 +palette = 13=#ff55ff +palette = 14=#83e9e4 +palette = 15=#ffffff +background = #222222 +foreground = #bdbaae +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #272e35 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties Dull b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties Dull new file mode 100644 index 0000000..a04b55a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spacegray Eighties Dull @@ -0,0 +1,22 @@ +palette = 0=#15171c +palette = 1=#b24a56 +palette = 2=#92b477 +palette = 3=#c6735a +palette = 4=#7c8fa5 +palette = 5=#a5789e +palette = 6=#80cdcb +palette = 7=#b3b8c3 +palette = 8=#555555 +palette = 9=#ec5f67 +palette = 10=#89e986 +palette = 11=#fec254 +palette = 12=#5486c0 +palette = 13=#bf83c1 +palette = 14=#58c2c1 +palette = 15=#ffffff +background = #222222 +foreground = #c9c6bc +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #272e36 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spiderman b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spiderman new file mode 100644 index 0000000..fa2f78f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spiderman @@ -0,0 +1,22 @@ +palette = 0=#1b1d1e +palette = 1=#e60813 +palette = 2=#e22928 +palette = 3=#e24756 +palette = 4=#2c3fff +palette = 5=#2435db +palette = 6=#3256ff +palette = 7=#fffef6 +palette = 8=#505354 +palette = 9=#ff0325 +palette = 10=#ff3338 +palette = 11=#fe3a35 +palette = 12=#1d50ff +palette = 13=#747cff +palette = 14=#6184ff +palette = 15=#fffff9 +background = #1b1d1e +foreground = #e3e3e3 +cursor-color = #2c3fff +cursor-text = #000000 +selection-background = #070e50 +selection-foreground = #f0272d diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spring b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spring new file mode 100644 index 0000000..43fae7d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Spring @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff4d83 +palette = 2=#1f8c3b +palette = 3=#1fc95b +palette = 4=#1dd3ee +palette = 5=#8959a8 +palette = 6=#3e999f +palette = 7=#bfbfbf +palette = 8=#000000 +palette = 9=#ff0021 +palette = 10=#1fc231 +palette = 11=#d5b807 +palette = 12=#15a9fd +palette = 13=#8959a8 +palette = 14=#3e999f +palette = 15=#ffffff +background = #ffffff +foreground = #4d4d4c +cursor-color = #4d4d4c +cursor-text = #ffffff +selection-background = #d6d6d6 +selection-foreground = #4d4d4c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Square b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Square new file mode 100644 index 0000000..3c098a4 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Square @@ -0,0 +1,22 @@ +palette = 0=#050505 +palette = 1=#e9897c +palette = 2=#b6377d +palette = 3=#ecebbe +palette = 4=#a9cdeb +palette = 5=#75507b +palette = 6=#c9caec +palette = 7=#f2f2f2 +palette = 8=#474747 +palette = 9=#f99286 +palette = 10=#c3f786 +palette = 11=#fcfbcc +palette = 12=#b6defb +palette = 13=#ad7fa8 +palette = 14=#d7d9fc +palette = 15=#e2e2e2 +background = #1a1a1a +foreground = #acacab +cursor-color = #fcfbcc +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Squirrelsong Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Squirrelsong Dark new file mode 100644 index 0000000..4302804 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Squirrelsong Dark @@ -0,0 +1,22 @@ +palette = 0=#372920 +palette = 1=#ba4138 +palette = 2=#468336 +palette = 3=#d4b139 +palette = 4=#4395c6 +palette = 5=#855fb8 +palette = 6=#2f9794 +palette = 7=#d3b9a2 +palette = 8=#704f39 +palette = 9=#df4d43 +palette = 10=#659a4c +palette = 11=#e8c23f +palette = 12=#4ca4db +palette = 13=#9d70da +palette = 14=#60aca9 +palette = 15=#f2d4bb +background = #372920 +foreground = #b19b89 +cursor-color = #b19b89 +cursor-text = #372920 +selection-background = #5b402e +selection-foreground = #b19b89 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Srcery b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Srcery new file mode 100644 index 0000000..25a61ef --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Srcery @@ -0,0 +1,22 @@ +palette = 0=#1c1b19 +palette = 1=#ef2f27 +palette = 2=#519f50 +palette = 3=#fbb829 +palette = 4=#2c78bf +palette = 5=#e02c6d +palette = 6=#0aaeb3 +palette = 7=#baa67f +palette = 8=#918175 +palette = 9=#f75341 +palette = 10=#98bc37 +palette = 11=#fed06e +palette = 12=#68a8e4 +palette = 13=#ff5c8f +palette = 14=#2be4d0 +palette = 15=#fce8c3 +background = #1c1b19 +foreground = #fce8c3 +cursor-color = #fbb829 +cursor-text = #1c1b19 +selection-background = #fce8c3 +selection-foreground = #1c1b19 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Starlight b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Starlight new file mode 100644 index 0000000..6d380e0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Starlight @@ -0,0 +1,22 @@ +palette = 0=#242424 +palette = 1=#f62b5a +palette = 2=#47b413 +palette = 3=#e3c401 +palette = 4=#24acd4 +palette = 5=#f2affd +palette = 6=#13c299 +palette = 7=#e6e6e6 +palette = 8=#616161 +palette = 9=#ff4d51 +palette = 10=#35d450 +palette = 11=#e9e836 +palette = 12=#5dc5f8 +palette = 13=#feabf2 +palette = 14=#24dfc4 +palette = 15=#ffffff +background = #242424 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #242424 +selection-background = #ffffff +selection-foreground = #242424 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sublette b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sublette new file mode 100644 index 0000000..6b97b26 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sublette @@ -0,0 +1,22 @@ +palette = 0=#253045 +palette = 1=#ee5577 +palette = 2=#55ee77 +palette = 3=#ffdd88 +palette = 4=#5588ff +palette = 5=#ff77cc +palette = 6=#44eeee +palette = 7=#f5f5da +palette = 8=#405570 +palette = 9=#ee6655 +palette = 10=#99ee77 +palette = 11=#ffff77 +palette = 12=#77bbff +palette = 13=#aa88ff +palette = 14=#55ffbb +palette = 15=#ffffee +background = #202535 +foreground = #ccced0 +cursor-color = #ccced0 +cursor-text = #202535 +selection-background = #ccced0 +selection-foreground = #202535 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Subliminal b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Subliminal new file mode 100644 index 0000000..dba6327 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Subliminal @@ -0,0 +1,22 @@ +palette = 0=#7f7f7f +palette = 1=#e15a60 +palette = 2=#a9cfa4 +palette = 3=#ffe2a9 +palette = 4=#6699cc +palette = 5=#f1a5ab +palette = 6=#5fb3b3 +palette = 7=#d4d4d4 +palette = 8=#7f7f7f +palette = 9=#e15a60 +palette = 10=#a9cfa4 +palette = 11=#ffe2a9 +palette = 12=#6699cc +palette = 13=#f1a5ab +palette = 14=#5fb3b3 +palette = 15=#d4d4d4 +background = #282c35 +foreground = #d4d4d4 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #484e5b +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sugarplum b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sugarplum new file mode 100644 index 0000000..a04df79 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sugarplum @@ -0,0 +1,22 @@ +palette = 0=#111147 +palette = 1=#5ca8dc +palette = 2=#53b397 +palette = 3=#249a84 +palette = 4=#db7ddd +palette = 5=#d0beee +palette = 6=#f9f3f9 +palette = 7=#a175d4 +palette = 8=#44447a +palette = 9=#5cb5dc +palette = 10=#52deb5 +palette = 11=#01f5c7 +palette = 12=#fa5dfd +palette = 13=#c6a5fd +palette = 14=#ffffff +palette = 15=#b577fd +background = #111147 +foreground = #db7ddd +cursor-color = #53b397 +cursor-text = #93f3d7 +selection-background = #5ca8dc +selection-foreground = #ead8ff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sundried b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sundried new file mode 100644 index 0000000..9e75140 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sundried @@ -0,0 +1,22 @@ +palette = 0=#302b2a +palette = 1=#a7463d +palette = 2=#587744 +palette = 3=#9d602a +palette = 4=#485b98 +palette = 5=#864651 +palette = 6=#9c814f +palette = 7=#c9c9c9 +palette = 8=#4d4e48 +palette = 9=#aa000c +palette = 10=#128c21 +palette = 11=#fc6a21 +palette = 12=#7999f7 +palette = 13=#fd8aa1 +palette = 14=#fad484 +palette = 15=#ffffff +background = #1a1818 +foreground = #c9c9c9 +cursor-color = #ffffff +cursor-text = #191717 +selection-background = #302b2a +selection-foreground = #c9c9c9 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sunset Drive b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sunset Drive new file mode 100644 index 0000000..0e136f8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Sunset Drive @@ -0,0 +1,22 @@ +palette = 0=#0a0a13 +palette = 1=#ff0063 +palette = 2=#00f992 +palette = 3=#ffe900 +palette = 4=#00a4ff +palette = 5=#ff57fd +palette = 6=#00ffed +palette = 7=#ededff +palette = 8=#3e3e4b +palette = 9=#ff948b +palette = 10=#00fcb9 +palette = 11=#ffff68 +palette = 12=#3ea0ff +palette = 13=#ff93ff +palette = 14=#38ffff +palette = 15=#f8f8ff +background = #0f0f1a +foreground = #ededfe +cursor-color = #ededfe +cursor-text = #0f0f1a +selection-background = #202036 +selection-foreground = #ededff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Symfonic b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Symfonic new file mode 100644 index 0000000..f9adb6f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Symfonic @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#dc322f +palette = 2=#56db3a +palette = 3=#ff8400 +palette = 4=#0084d4 +palette = 5=#b729d9 +palette = 6=#ccccff +palette = 7=#ffffff +palette = 8=#414347 +palette = 9=#dc322f +palette = 10=#56db3a +palette = 11=#ff8400 +palette = 12=#0084d4 +palette = 13=#b729d9 +palette = 14=#ccccff +palette = 15=#ffffff +background = #000000 +foreground = #ffffff +cursor-color = #dc322f +cursor-text = #ffffff +selection-background = #073642 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave new file mode 100644 index 0000000..c92058c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f6188f +palette = 2=#1ebb2b +palette = 3=#fdf834 +palette = 4=#2186ec +palette = 5=#f85a21 +palette = 6=#12c3e2 +palette = 7=#ffffff +palette = 8=#7f7094 +palette = 9=#f841a0 +palette = 10=#25c141 +palette = 11=#fdf454 +palette = 12=#2f9ded +palette = 13=#f97137 +palette = 14=#19cde6 +palette = 15=#ffffff +background = #000000 +foreground = #dad9c7 +cursor-color = #19cde6 +cursor-text = #ffffed +selection-background = #19cde6 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Alpha b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Alpha new file mode 100644 index 0000000..ecd53e7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Alpha @@ -0,0 +1,22 @@ +palette = 0=#241b30 +palette = 1=#e60a70 +palette = 2=#00986c +palette = 3=#adad3e +palette = 4=#6e29ad +palette = 5=#b300ad +palette = 6=#00b0b1 +palette = 7=#b9b1bc +palette = 8=#7f7094 +palette = 9=#e60a70 +palette = 10=#0ae4a4 +palette = 11=#f9f972 +palette = 12=#aa54f9 +palette = 13=#ff00f6 +palette = 14=#00fbfd +palette = 15=#f2f2e3 +background = #241b30 +foreground = #f2f2e3 +cursor-color = #f2f2e3 +cursor-text = #241b30 +selection-background = #6e29ad +selection-foreground = #f2f2e3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Everything b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Everything new file mode 100644 index 0000000..0f6bda7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Synthwave Everything @@ -0,0 +1,22 @@ +palette = 0=#fefefe +palette = 1=#f97e72 +palette = 2=#72f1b8 +palette = 3=#fede5d +palette = 4=#6d77b3 +palette = 5=#c792ea +palette = 6=#f772e0 +palette = 7=#fefefe +palette = 8=#fefefe +palette = 9=#f88414 +palette = 10=#72f1b8 +palette = 11=#fff951 +palette = 12=#36f9f6 +palette = 13=#e1acff +palette = 14=#f92aad +palette = 15=#fefefe +background = #2a2139 +foreground = #f0eff1 +cursor-color = #72f1b8 +cursor-text = #1a1a1a +selection-background = #181521 +selection-foreground = #f0eff1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Adapted b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Adapted new file mode 100644 index 0000000..b8a014c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Adapted @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff0000 +palette = 2=#59d600 +palette = 3=#e3be00 +palette = 4=#00a2ff +palette = 5=#c17ecc +palette = 6=#00d0d6 +palette = 7=#c0c5bb +palette = 8=#8f928b +palette = 9=#ff0013 +palette = 10=#6dd900 +palette = 11=#ccbe00 +palette = 12=#88c9ff +palette = 13=#e9a7e1 +palette = 14=#00d8d9 +palette = 15=#f6f6f4 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Half Adapted b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Half Adapted new file mode 100644 index 0000000..42d6879 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tango Half Adapted @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff0000 +palette = 2=#4cc300 +palette = 3=#e2c000 +palette = 4=#008ef6 +palette = 5=#a96cb3 +palette = 6=#00bdc3 +palette = 7=#babfb5 +palette = 8=#797d76 +palette = 9=#ff0013 +palette = 10=#70dc00 +palette = 11=#d9c600 +palette = 12=#76bfff +palette = 13=#d898d1 +palette = 14=#00d0d4 +palette = 15=#f4f4f2 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tearout b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tearout new file mode 100644 index 0000000..e296b92 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tearout @@ -0,0 +1,22 @@ +palette = 0=#685742 +palette = 1=#cc967b +palette = 2=#97976d +palette = 3=#6c9861 +palette = 4=#b5955e +palette = 5=#c9a554 +palette = 6=#d7c483 +palette = 7=#b5955e +palette = 8=#75644f +palette = 9=#cc967b +palette = 10=#97976d +palette = 11=#6c9861 +palette = 12=#b5955e +palette = 13=#c9a554 +palette = 14=#d7c483 +palette = 15=#b5955e +background = #34392d +foreground = #f4d2ae +cursor-color = #d7c483 +cursor-text = #141415 +selection-background = #e4c47a +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Teerb b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Teerb new file mode 100644 index 0000000..2827242 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Teerb @@ -0,0 +1,22 @@ +palette = 0=#1c1c1c +palette = 1=#d68686 +palette = 2=#aed686 +palette = 3=#d7af87 +palette = 4=#86aed6 +palette = 5=#d6aed6 +palette = 6=#8adbb4 +palette = 7=#d0d0d0 +palette = 8=#4f4f4f +palette = 9=#d68686 +palette = 10=#aed686 +palette = 11=#e4c9af +palette = 12=#86aed6 +palette = 13=#d6aed6 +palette = 14=#b1e7dd +palette = 15=#efefef +background = #262626 +foreground = #d0d0d0 +cursor-color = #e4c9af +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terafox b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terafox new file mode 100644 index 0000000..4f0b2de --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terafox @@ -0,0 +1,22 @@ +palette = 0=#2f3239 +palette = 1=#e85c51 +palette = 2=#7aa4a1 +palette = 3=#fda47f +palette = 4=#5a93aa +palette = 5=#ad5c7c +palette = 6=#a1cdd8 +palette = 7=#ebebeb +palette = 8=#4e5157 +palette = 9=#eb746b +palette = 10=#8eb2af +palette = 11=#fdb292 +palette = 12=#73a3b7 +palette = 13=#b97490 +palette = 14=#afd4de +palette = 15=#eeeeee +background = #152528 +foreground = #e6eaea +cursor-color = #e6eaea +cursor-text = #152528 +selection-background = #293e40 +selection-foreground = #e6eaea diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic new file mode 100644 index 0000000..d006fba --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#990000 +palette = 2=#00a600 +palette = 3=#999900 +palette = 4=#0000b2 +palette = 5=#b200b2 +palette = 6=#00a6b2 +palette = 7=#bfbfbf +palette = 8=#666666 +palette = 9=#e50000 +palette = 10=#00d900 +palette = 11=#bfbf00 +palette = 12=#0000ff +palette = 13=#e500e5 +palette = 14=#00d8d8 +palette = 15=#e5e5e5 +background = #ffffff +foreground = #000000 +cursor-color = #7f7f7f +cursor-text = #000000 +selection-background = #a4c9ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic Dark new file mode 100644 index 0000000..59251ca --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Terminal Basic Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c65339 +palette = 2=#6ac44b +palette = 3=#b8b74a +palette = 4=#6444ed +palette = 5=#d357db +palette = 6=#69c1cf +palette = 7=#d1d1d1 +palette = 8=#909090 +palette = 9=#eb5a3a +palette = 10=#77ea51 +palette = 11=#efef53 +palette = 12=#d09af9 +palette = 13=#eb5af7 +palette = 14=#78f1f2 +palette = 15=#ededed +background = #1d1e1d +foreground = #ffffff +cursor-color = #9d9d9d +cursor-text = #1d1e1d +selection-background = #3f638a +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Thayer Bright b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Thayer Bright new file mode 100644 index 0000000..dbf1a31 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Thayer Bright @@ -0,0 +1,22 @@ +palette = 0=#1b1d1e +palette = 1=#f92672 +palette = 2=#4df840 +palette = 3=#f4fd22 +palette = 4=#2757d6 +palette = 5=#8c54fe +palette = 6=#38c8b5 +palette = 7=#ccccc6 +palette = 8=#505354 +palette = 9=#ff5995 +palette = 10=#b6e354 +palette = 11=#feed6c +palette = 12=#3f78ff +palette = 13=#9e6ffe +palette = 14=#23cfd5 +palette = 15=#f8f8f2 +background = #1b1d1e +foreground = #f8f8f8 +cursor-color = #fc971f +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/The Hulk b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/The Hulk new file mode 100644 index 0000000..deb4546 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/The Hulk @@ -0,0 +1,22 @@ +palette = 0=#1b1d1e +palette = 1=#269d1b +palette = 2=#13ce30 +palette = 3=#63e457 +palette = 4=#2525f5 +palette = 5=#712c81 +palette = 6=#378ca9 +palette = 7=#d9d8d1 +palette = 8=#505354 +palette = 9=#8dff2a +palette = 10=#48ff77 +palette = 11=#3afe16 +palette = 12=#506b95 +palette = 13=#72589d +palette = 14=#4085a6 +palette = 15=#e5e6e1 +background = #1b1d1e +foreground = #b5b5b5 +cursor-color = #16b61b +cursor-text = #000000 +selection-background = #4d504c +selection-foreground = #31892f diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Dark new file mode 100644 index 0000000..f1cf495 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Dark @@ -0,0 +1,22 @@ +palette = 0=#1d1d26 +palette = 1=#ff3399 +palette = 2=#00d364 +palette = 3=#ffcc66 +palette = 4=#00cbff +palette = 5=#cc66ff +palette = 6=#00ceca +palette = 7=#cbcbf0 +palette = 8=#636667 +palette = 9=#ff2f92 +palette = 10=#00d364 +palette = 11=#ffd479 +palette = 12=#00cbff +palette = 13=#d783ff +palette = 14=#00d5d4 +palette = 15=#d5d6f3 +background = #1d1d26 +foreground = #cbcbf0 +cursor-color = #cbcbf0 +cursor-text = #999999 +selection-background = #ff3399 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Light new file mode 100644 index 0000000..b828bcc --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tinacious Design Light @@ -0,0 +1,22 @@ +palette = 0=#1d1d26 +palette = 1=#ff3399 +palette = 2=#00d364 +palette = 3=#e5b24d +palette = 4=#00cbff +palette = 5=#cc66ff +palette = 6=#00ceca +palette = 7=#b1b1d6 +palette = 8=#636667 +palette = 9=#ff2f92 +palette = 10=#00d364 +palette = 11=#d9ae53 +palette = 12=#00cbff +palette = 13=#d783ff +palette = 14=#00c8c7 +palette = 15=#d5d6f3 +background = #f8f8ff +foreground = #1d1d26 +cursor-color = #b1b1d6 +cursor-text = #ffffff +selection-background = #ff3399 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight new file mode 100644 index 0000000..9406133 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight @@ -0,0 +1,22 @@ +palette = 0=#15161e +palette = 1=#f7768e +palette = 2=#9ece6a +palette = 3=#e0af68 +palette = 4=#7aa2f7 +palette = 5=#bb9af7 +palette = 6=#7dcfff +palette = 7=#a9b1d6 +palette = 8=#414868 +palette = 9=#f7768e +palette = 10=#9ece6a +palette = 11=#e0af68 +palette = 12=#7aa2f7 +palette = 13=#bb9af7 +palette = 14=#7dcfff +palette = 15=#c0caf5 +background = #1a1b26 +foreground = #c0caf5 +cursor-color = #c0caf5 +cursor-text = #15161e +selection-background = #33467c +selection-foreground = #c0caf5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Day b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Day new file mode 100644 index 0000000..1e74033 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Day @@ -0,0 +1,22 @@ +palette = 0=#e9e9ed +palette = 1=#f52a65 +palette = 2=#587539 +palette = 3=#8c6c3e +palette = 4=#2e7de9 +palette = 5=#9854f1 +palette = 6=#007197 +palette = 7=#6172b0 +palette = 8=#a1a6c5 +palette = 9=#f52a65 +palette = 10=#587539 +palette = 11=#8c6c3e +palette = 12=#2e7de9 +palette = 13=#9854f1 +palette = 14=#007197 +palette = 15=#3760bf +background = #e1e2e7 +foreground = #3760bf +cursor-color = #3760bf +cursor-text = #e1e2e7 +selection-background = #99a7df +selection-foreground = #3760bf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Moon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Moon new file mode 100644 index 0000000..78a83a8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Moon @@ -0,0 +1,22 @@ +palette = 0=#1b1d2b +palette = 1=#ff757f +palette = 2=#c3e88d +palette = 3=#ffc777 +palette = 4=#82aaff +palette = 5=#c099ff +palette = 6=#86e1fc +palette = 7=#828bb8 +palette = 8=#444a73 +palette = 9=#ff757f +palette = 10=#c3e88d +palette = 11=#ffc777 +palette = 12=#82aaff +palette = 13=#c099ff +palette = 14=#86e1fc +palette = 15=#c8d3f5 +background = #222436 +foreground = #c8d3f5 +cursor-color = #c8d3f5 +cursor-text = #222436 +selection-background = #2d3f76 +selection-foreground = #c8d3f5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Night b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Night new file mode 100644 index 0000000..bda8d6a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Night @@ -0,0 +1,22 @@ +palette = 0=#15161e +palette = 1=#f7768e +palette = 2=#9ece6a +palette = 3=#e0af68 +palette = 4=#7aa2f7 +palette = 5=#bb9af7 +palette = 6=#7dcfff +palette = 7=#a9b1d6 +palette = 8=#414868 +palette = 9=#f7768e +palette = 10=#9ece6a +palette = 11=#e0af68 +palette = 12=#7aa2f7 +palette = 13=#bb9af7 +palette = 14=#7dcfff +palette = 15=#c0caf5 +background = #1a1b26 +foreground = #c0caf5 +cursor-color = #c0caf5 +cursor-text = #1a1b26 +selection-background = #283457 +selection-foreground = #c0caf5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Storm b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Storm new file mode 100644 index 0000000..644c2b8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/TokyoNight Storm @@ -0,0 +1,22 @@ +palette = 0=#1d202f +palette = 1=#f7768e +palette = 2=#9ece6a +palette = 3=#e0af68 +palette = 4=#7aa2f7 +palette = 5=#bb9af7 +palette = 6=#7dcfff +palette = 7=#a9b1d6 +palette = 8=#4e5575 +palette = 9=#f7768e +palette = 10=#9ece6a +palette = 11=#e0af68 +palette = 12=#7aa2f7 +palette = 13=#bb9af7 +palette = 14=#7dcfff +palette = 15=#c0caf5 +background = #24283b +foreground = #c0caf5 +cursor-color = #c0caf5 +cursor-text = #1d202f +selection-background = #364a82 +selection-foreground = #c0caf5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow new file mode 100644 index 0000000..dba7706 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c82829 +palette = 2=#718c00 +palette = 3=#eab700 +palette = 4=#4271ae +palette = 5=#8959a8 +palette = 6=#3e999f +palette = 7=#bfbfbf +palette = 8=#000000 +palette = 9=#c82829 +palette = 10=#718c00 +palette = 11=#eab700 +palette = 12=#4271ae +palette = 13=#8959a8 +palette = 14=#3e999f +palette = 15=#ffffff +background = #ffffff +foreground = #4d4d4c +cursor-color = #4d4d4c +cursor-text = #ffffff +selection-background = #d6d6d6 +selection-foreground = #4d4d4c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night new file mode 100644 index 0000000..61d2fc7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc6666 +palette = 2=#b5bd68 +palette = 3=#f0c674 +palette = 4=#81a2be +palette = 5=#b294bb +palette = 6=#8abeb7 +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#cc6666 +palette = 10=#b5bd68 +palette = 11=#f0c674 +palette = 12=#81a2be +palette = 13=#b294bb +palette = 14=#8abeb7 +palette = 15=#ffffff +background = #1d1f21 +foreground = #c5c8c6 +cursor-color = #c5c8c6 +cursor-text = #1d1f21 +selection-background = #373b41 +selection-foreground = #c5c8c6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Blue b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Blue new file mode 100644 index 0000000..5dffba0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Blue @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff9da4 +palette = 2=#d1f1a9 +palette = 3=#ffeead +palette = 4=#bbdaff +palette = 5=#ebbbff +palette = 6=#99ffff +palette = 7=#ffffff +palette = 8=#4c4c4c +palette = 9=#ff9da4 +palette = 10=#d1f1a9 +palette = 11=#ffeead +palette = 12=#bbdaff +palette = 13=#ebbbff +palette = 14=#99ffff +palette = 15=#ffffff +background = #002451 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #003f8e +selection-background = #003f8e +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Bright b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Bright new file mode 100644 index 0000000..3f643d0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Bright @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d54e53 +palette = 2=#b9ca4a +palette = 3=#e7c547 +palette = 4=#7aa6da +palette = 5=#c397d8 +palette = 6=#70c0b1 +palette = 7=#ffffff +palette = 8=#404040 +palette = 9=#d54e53 +palette = 10=#b9ca4a +palette = 11=#e7c547 +palette = 12=#7aa6da +palette = 13=#c397d8 +palette = 14=#70c0b1 +palette = 15=#ffffff +background = #000000 +foreground = #eaeaea +cursor-color = #eaeaea +cursor-text = #000000 +selection-background = #424242 +selection-foreground = #eaeaea diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Burns b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Burns new file mode 100644 index 0000000..15b8249 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Burns @@ -0,0 +1,22 @@ +palette = 0=#252525 +palette = 1=#832e31 +palette = 2=#a63c40 +palette = 3=#d3494e +palette = 4=#fc595f +palette = 5=#df9395 +palette = 6=#ba8586 +palette = 7=#f5f5f5 +palette = 8=#5d6f71 +palette = 9=#832e31 +palette = 10=#a63c40 +palette = 11=#d2494e +palette = 12=#fc595f +palette = 13=#df9395 +palette = 14=#ba8586 +palette = 15=#f5f5f5 +background = #151515 +foreground = #a1b0b8 +cursor-color = #ff443e +cursor-text = #b0c2c4 +selection-background = #b0bec5 +selection-foreground = #2a2d32 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Eighties b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Eighties new file mode 100644 index 0000000..4979490 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Tomorrow Night Eighties @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f2777a +palette = 2=#99cc99 +palette = 3=#ffcc66 +palette = 4=#6699cc +palette = 5=#cc99cc +palette = 6=#66cccc +palette = 7=#ffffff +palette = 8=#595959 +palette = 9=#f2777a +palette = 10=#99cc99 +palette = 11=#ffcc66 +palette = 12=#6699cc +palette = 13=#cc99cc +palette = 14=#66cccc +palette = 15=#ffffff +background = #2d2d2d +foreground = #cccccc +cursor-color = #cccccc +cursor-text = #2d2d2d +selection-background = #515151 +selection-foreground = #cccccc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Toy Chest b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Toy Chest new file mode 100644 index 0000000..6ec3f01 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Toy Chest @@ -0,0 +1,22 @@ +palette = 0=#2c3f58 +palette = 1=#be2d26 +palette = 2=#1a9172 +palette = 3=#db8e27 +palette = 4=#325d96 +palette = 5=#8a5edc +palette = 6=#35a08f +palette = 7=#23d183 +palette = 8=#336889 +palette = 9=#dd5944 +palette = 10=#31d07b +palette = 11=#e7d84b +palette = 12=#34a6da +palette = 13=#ae6bdc +palette = 14=#42c3ae +palette = 15=#d5d5d5 +background = #24364b +foreground = #31d07b +cursor-color = #d5d5d5 +cursor-text = #141c25 +selection-background = #5f217a +selection-foreground = #d5d5d5 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Treehouse b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Treehouse new file mode 100644 index 0000000..b87ccd7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Treehouse @@ -0,0 +1,22 @@ +palette = 0=#321300 +palette = 1=#b2270e +palette = 2=#44a900 +palette = 3=#aa820c +palette = 4=#58859a +palette = 5=#97363d +palette = 6=#b25a1e +palette = 7=#786b53 +palette = 8=#504333 +palette = 9=#ed5d20 +palette = 10=#55f238 +palette = 11=#f2b732 +palette = 12=#85cfed +palette = 13=#e14c5a +palette = 14=#f07d14 +palette = 15=#ffc800 +background = #191919 +foreground = #786b53 +cursor-color = #fac814 +cursor-text = #191919 +selection-background = #786b53 +selection-foreground = #fac800 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Twilight b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Twilight new file mode 100644 index 0000000..c3351da --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Twilight @@ -0,0 +1,22 @@ +palette = 0=#141414 +palette = 1=#c06d44 +palette = 2=#afb97a +palette = 3=#c2a86c +palette = 4=#44474a +palette = 5=#b4be7c +palette = 6=#778385 +palette = 7=#ffffd4 +palette = 8=#404040 +palette = 9=#de7c4c +palette = 10=#ccd88c +palette = 11=#e2c47e +palette = 12=#5a5e62 +palette = 13=#d0dc8e +palette = 14=#8a989b +palette = 15=#ffffd4 +background = #141414 +foreground = #ffffd4 +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #313131 +selection-foreground = #ffffd4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ubuntu b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ubuntu new file mode 100644 index 0000000..6e31533 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ubuntu @@ -0,0 +1,22 @@ +palette = 0=#2e3436 +palette = 1=#cc0000 +palette = 2=#4e9a06 +palette = 3=#c4a000 +palette = 4=#3465a4 +palette = 5=#75507b +palette = 6=#06989a +palette = 7=#d3d7cf +palette = 8=#555753 +palette = 9=#ef2929 +palette = 10=#8ae234 +palette = 11=#fce94f +palette = 12=#729fcf +palette = 13=#ad7fa8 +palette = 14=#34e2e2 +palette = 15=#eeeeec +background = #300a24 +foreground = #eeeeec +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Dark new file mode 100644 index 0000000..ebf4db6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#f07178 +palette = 2=#c3e88d +palette = 3=#ffcb6b +palette = 4=#82aaff +palette = 5=#c792ea +palette = 6=#89ddff +palette = 7=#cccccc +palette = 8=#404040 +palette = 9=#f6a9ae +palette = 10=#dbf1ba +palette = 11=#ffdfa6 +palette = 12=#b4ccff +palette = 13=#ddbdf2 +palette = 14=#b8eaff +palette = 15=#ffffff +background = #000000 +foreground = #ffffff +cursor-color = #fefefe +cursor-text = #000000 +selection-background = #222222 +selection-foreground = #cccccc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Violent b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Violent new file mode 100644 index 0000000..3030ec3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Ultra Violent @@ -0,0 +1,22 @@ +palette = 0=#242728 +palette = 1=#ff0090 +palette = 2=#b6ff00 +palette = 3=#fff727 +palette = 4=#47e0fb +palette = 5=#d731ff +palette = 6=#0effbb +palette = 7=#e1e1e1 +palette = 8=#636667 +palette = 9=#fb58b4 +palette = 10=#deff8c +palette = 11=#ebe087 +palette = 12=#7fecff +palette = 13=#e681ff +palette = 14=#69fcd3 +palette = 15=#f9f9f5 +background = #242728 +foreground = #c1c1c1 +cursor-color = #c1c1c1 +cursor-text = #ffffff +selection-background = #574c49 +selection-foreground = #c3c7cb diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Under The Sea b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Under The Sea new file mode 100644 index 0000000..50df3f3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Under The Sea @@ -0,0 +1,22 @@ +palette = 0=#022026 +palette = 1=#b2302d +palette = 2=#00a941 +palette = 3=#59819c +palette = 4=#459a86 +palette = 5=#00599d +palette = 6=#5d7e19 +palette = 7=#405555 +palette = 8=#384451 +palette = 9=#ff4242 +palette = 10=#2aea5e +palette = 11=#8ed4fd +palette = 12=#61d5ba +palette = 13=#1298ff +palette = 14=#98d028 +palette = 15=#58fbd6 +background = #011116 +foreground = #ffffff +cursor-color = #4afcd6 +cursor-text = #031413 +selection-background = #415555 +selection-foreground = #4dffda diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Unikitty b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Unikitty new file mode 100644 index 0000000..93ca329 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Unikitty @@ -0,0 +1,22 @@ +palette = 0=#0c0c0c +palette = 1=#a80f20 +palette = 2=#c7ff98 +palette = 3=#fff964 +palette = 4=#145fcd +palette = 5=#ffe9ff +palette = 6=#9effef +palette = 7=#fcf1fb +palette = 8=#434343 +palette = 9=#d91329 +palette = 10=#d3ffaf +palette = 11=#ffef50 +palette = 12=#0075ea +palette = 13=#ffefff +palette = 14=#93ffef +palette = 15=#fff3fe +background = #ff8cd9 +foreground = #0b0b0b +cursor-color = #c7ff98 +cursor-text = #202020 +selection-background = #3ea9fe +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Urple b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Urple new file mode 100644 index 0000000..daf7ae7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Urple @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#b0425b +palette = 2=#37a415 +palette = 3=#ad5c42 +palette = 4=#564d9b +palette = 5=#6c3ca1 +palette = 6=#808080 +palette = 7=#87799c +palette = 8=#6a3f32 +palette = 9=#ff6388 +palette = 10=#29e620 +palette = 11=#f08161 +palette = 12=#867aed +palette = 13=#a05eee +palette = 14=#eaeaea +palette = 15=#bfa3ff +background = #1b1b23 +foreground = #877a9b +cursor-color = #a063eb +cursor-text = #1b1b22 +selection-background = #a063eb +selection-foreground = #1b1b22 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vague b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vague new file mode 100644 index 0000000..c3bbd81 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vague @@ -0,0 +1,22 @@ +palette = 0=#252530 +palette = 1=#d8647e +palette = 2=#7fa563 +palette = 3=#f3be7c +palette = 4=#6e94b2 +palette = 5=#bb9dbd +palette = 6=#aeaed1 +palette = 7=#cdcdcd +palette = 8=#606079 +palette = 9=#e08398 +palette = 10=#99b782 +palette = 11=#f5cb96 +palette = 12=#8ba9c1 +palette = 13=#c9b1ca +palette = 14=#bebeda +palette = 15=#d7d7d7 +background = #141415 +foreground = #cdcdcd +cursor-color = #cdcdcd +cursor-text = #141415 +selection-background = #252530 +selection-foreground = #cdcdcd diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vaughn b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vaughn new file mode 100644 index 0000000..5560b95 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vaughn @@ -0,0 +1,22 @@ +palette = 0=#25234f +palette = 1=#705050 +palette = 2=#60b48a +palette = 3=#dfaf8f +palette = 4=#5555ff +palette = 5=#f08cc3 +palette = 6=#8cd0d3 +palette = 7=#709080 +palette = 8=#709080 +palette = 9=#dca3a3 +palette = 10=#60b48a +palette = 11=#f0dfaf +palette = 12=#5555ff +palette = 13=#ec93d3 +palette = 14=#93e0e3 +palette = 15=#ffffff +background = #25234f +foreground = #dcdccc +cursor-color = #ff5555 +cursor-text = #ffffff +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vercel b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vercel new file mode 100644 index 0000000..e312e38 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vercel @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#fc0036 +palette = 2=#29a948 +palette = 3=#ffae00 +palette = 4=#006aff +palette = 5=#f32882 +palette = 6=#00ac96 +palette = 7=#feffff +palette = 8=#a8a8a8 +palette = 9=#ff8080 +palette = 10=#4be15d +palette = 11=#ffae00 +palette = 12=#49aeff +palette = 13=#f97ea8 +palette = 14=#00e4c4 +palette = 15=#fefefe +background = #101010 +foreground = #fafafa +cursor-color = #f32882 +cursor-text = #fafafa +selection-background = #005be7 +selection-foreground = #fafafa diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vesper b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vesper new file mode 100644 index 0000000..cdd25ab --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vesper @@ -0,0 +1,22 @@ +palette = 0=#101010 +palette = 1=#f5a191 +palette = 2=#90b99f +palette = 3=#e6b99d +palette = 4=#aca1cf +palette = 5=#e29eca +palette = 6=#ea83a5 +palette = 7=#a0a0a0 +palette = 8=#7e7e7e +palette = 9=#ff8080 +palette = 10=#99ffe4 +palette = 11=#ffc799 +palette = 12=#b9aeda +palette = 13=#ecaad6 +palette = 14=#f591b2 +palette = 15=#ffffff +background = #101010 +foreground = #ffffff +cursor-color = #acb1ab +cursor-text = #ffffff +selection-background = #988049 +selection-foreground = #b9beb8 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vibrant Ink b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vibrant Ink new file mode 100644 index 0000000..d9876e5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vibrant Ink @@ -0,0 +1,22 @@ +palette = 0=#878787 +palette = 1=#ff6600 +palette = 2=#ccff04 +palette = 3=#ffcc00 +palette = 4=#44b4cc +palette = 5=#9933cc +palette = 6=#44b4cc +palette = 7=#f5f5f5 +palette = 8=#555555 +palette = 9=#ff0000 +palette = 10=#00ff00 +palette = 11=#ffff00 +palette = 12=#0000ff +palette = 13=#ff00ff +palette = 14=#00ffff +palette = 15=#e5e5e5 +background = #000000 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #b5d5ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vimbones b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vimbones new file mode 100644 index 0000000..54de054 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Vimbones @@ -0,0 +1,22 @@ +palette = 0=#f0f0ca +palette = 1=#a8334c +palette = 2=#4f6c31 +palette = 3=#944927 +palette = 4=#286486 +palette = 5=#88507d +palette = 6=#3b8992 +palette = 7=#353535 +palette = 8=#acac89 +palette = 9=#94253e +palette = 10=#3f5a22 +palette = 11=#803d1c +palette = 12=#1d5573 +palette = 13=#7b3b70 +palette = 14=#2b747c +palette = 15=#5c5c5c +background = #f0f0ca +foreground = #353535 +cursor-color = #353535 +cursor-text = #f0f0ca +selection-background = #d7d7d7 +selection-foreground = #353535 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Dark new file mode 100644 index 0000000..156843d --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Dark @@ -0,0 +1,22 @@ +palette = 0=#56595c +palette = 1=#c94c22 +palette = 2=#85981c +palette = 3=#b4881d +palette = 4=#2e8bce +palette = 5=#d13a82 +palette = 6=#32a198 +palette = 7=#c9c6bd +palette = 8=#45484b +palette = 9=#bd3613 +palette = 10=#738a04 +palette = 11=#a57705 +palette = 12=#2176c7 +palette = 13=#c61c6f +palette = 14=#259286 +palette = 15=#c9c6bd +background = #1c1d1f +foreground = #708284 +cursor-color = #708284 +cursor-text = #1c1d1f +selection-background = #595ab7 +selection-foreground = #1c1d1f diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Light new file mode 100644 index 0000000..a36ae56 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violet Light @@ -0,0 +1,22 @@ +palette = 0=#56595c +palette = 1=#c94c22 +palette = 2=#85981c +palette = 3=#b4881d +palette = 4=#2e8bce +palette = 5=#d13a82 +palette = 6=#32a198 +palette = 7=#b9b6af +palette = 8=#45484b +palette = 9=#bd3613 +palette = 10=#738a04 +palette = 11=#a57705 +palette = 12=#2176c7 +palette = 13=#c61c6f +palette = 14=#259286 +palette = 15=#c9c6bd +background = #fcf4dc +foreground = #536870 +cursor-color = #536870 +cursor-text = #fcf4dc +selection-background = #595ab7 +selection-foreground = #fcf4dc diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violite b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violite new file mode 100644 index 0000000..249b09f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Violite @@ -0,0 +1,22 @@ +palette = 0=#241c36 +palette = 1=#ec7979 +palette = 2=#79ecb3 +palette = 3=#ece279 +palette = 4=#a979ec +palette = 5=#ec79ec +palette = 6=#79ecec +palette = 7=#eef4f6 +palette = 8=#56447a +palette = 9=#ef8f8f +palette = 10=#9fefbf +palette = 11=#efe78f +palette = 12=#b78fef +palette = 13=#ef8fcf +palette = 14=#9fefef +palette = 15=#f8fafc +background = #241c36 +foreground = #eef4f6 +cursor-color = #eef4f6 +cursor-text = #241c36 +selection-background = #49376d +selection-foreground = #eef4f6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Warm Neon b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Warm Neon new file mode 100644 index 0000000..8679b18 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Warm Neon @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#e24346 +palette = 2=#39b13a +palette = 3=#dae145 +palette = 4=#4261c5 +palette = 5=#f920fb +palette = 6=#2abbd4 +palette = 7=#d0b8a3 +palette = 8=#fefcfc +palette = 9=#e97071 +palette = 10=#9cc090 +palette = 11=#ddda7a +palette = 12=#7b91d6 +palette = 13=#f674ba +palette = 14=#5ed1e5 +palette = 15=#d8c8bb +background = #404040 +foreground = #afdab6 +cursor-color = #30ff24 +cursor-text = #0bbc04 +selection-background = #b0ad21 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wez b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wez new file mode 100644 index 0000000..83ecdb0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wez @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#cc5555 +palette = 2=#55cc55 +palette = 3=#cdcd55 +palette = 4=#5555cc +palette = 5=#cc55cc +palette = 6=#7acaca +palette = 7=#cccccc +palette = 8=#555555 +palette = 9=#ff5555 +palette = 10=#55ff55 +palette = 11=#ffff55 +palette = 12=#5555ff +palette = 13=#ff55ff +palette = 14=#55ffff +palette = 15=#ffffff +background = #000000 +foreground = #b3b3b3 +cursor-color = #53ae71 +cursor-text = #000000 +selection-background = #4d52f8 +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Whimsy b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Whimsy new file mode 100644 index 0000000..dc90f6f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Whimsy @@ -0,0 +1,22 @@ +palette = 0=#535178 +palette = 1=#ef6487 +palette = 2=#5eca89 +palette = 3=#fdd877 +palette = 4=#65aef7 +palette = 5=#aa7ff0 +palette = 6=#43c1be +palette = 7=#ffffff +palette = 8=#535178 +palette = 9=#ef6487 +palette = 10=#5eca89 +palette = 11=#fdd877 +palette = 12=#65aef7 +palette = 13=#aa7ff0 +palette = 14=#43c1be +palette = 15=#ffffff +background = #29283b +foreground = #b3b0d6 +cursor-color = #b3b0d6 +cursor-text = #535178 +selection-background = #3d3c58 +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wild Cherry b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wild Cherry new file mode 100644 index 0000000..61bb750 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wild Cherry @@ -0,0 +1,22 @@ +palette = 0=#000507 +palette = 1=#d94085 +palette = 2=#2ab250 +palette = 3=#ffd16f +palette = 4=#883cdc +palette = 5=#ececec +palette = 6=#c1b8b7 +palette = 7=#fff8de +palette = 8=#009cc9 +palette = 9=#da6bac +palette = 10=#f4dca5 +palette = 11=#eac066 +palette = 12=#308cba +palette = 13=#ae636b +palette = 14=#ff919d +palette = 15=#e4838d +background = #1f1726 +foreground = #dafaff +cursor-color = #dd00ff +cursor-text = #ff7fff +selection-background = #002831 +selection-foreground = #e4ffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wilmersdorf b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wilmersdorf new file mode 100644 index 0000000..a84e1a8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wilmersdorf @@ -0,0 +1,22 @@ +palette = 0=#34373e +palette = 1=#e06383 +palette = 2=#7ebebd +palette = 3=#cccccc +palette = 4=#a6c1e0 +palette = 5=#e1c1ee +palette = 6=#5b94ab +palette = 7=#ababab +palette = 8=#50545d +palette = 9=#fa7193 +palette = 10=#8fd7d6 +palette = 11=#d1dfff +palette = 12=#b2cff0 +palette = 13=#efccfd +palette = 14=#69abc5 +palette = 15=#d3d3d3 +background = #282b33 +foreground = #c6c6c6 +cursor-color = #7ebebd +cursor-text = #1f2024 +selection-background = #1f2024 +selection-foreground = #c6c6c6 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wombat b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wombat new file mode 100644 index 0000000..76e49d5 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wombat @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#ff615a +palette = 2=#b1e969 +palette = 3=#ebd99c +palette = 4=#5da9f6 +palette = 5=#e86aff +palette = 6=#82fff7 +palette = 7=#dedacf +palette = 8=#4a4a4a +palette = 9=#f58c80 +palette = 10=#ddf88f +palette = 11=#eee5b2 +palette = 12=#a5c7ff +palette = 13=#ddaaff +palette = 14=#b7fff9 +palette = 15=#ffffff +background = #171717 +foreground = #dedacf +cursor-color = #bbbbbb +cursor-text = #ffffff +selection-background = #453b39 +selection-foreground = #b6bbc0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wryan b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wryan new file mode 100644 index 0000000..8bcd31c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Wryan @@ -0,0 +1,22 @@ +palette = 0=#333333 +palette = 1=#8c4665 +palette = 2=#287373 +palette = 3=#7c7c99 +palette = 4=#395573 +palette = 5=#5e468c +palette = 6=#31658c +palette = 7=#899ca1 +palette = 8=#3d3d3d +palette = 9=#bf4d80 +palette = 10=#53a6a6 +palette = 11=#9e9ecb +palette = 12=#477ab3 +palette = 13=#7e62b3 +palette = 14=#6096bf +palette = 15=#c0c0c0 +background = #101010 +foreground = #999993 +cursor-color = #9e9ecb +cursor-text = #000000 +selection-background = #4d4d4d +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark new file mode 100644 index 0000000..3701589 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark @@ -0,0 +1,22 @@ +palette = 0=#414453 +palette = 1=#ff8170 +palette = 2=#78c2b3 +palette = 3=#d9c97c +palette = 4=#4eb0cc +palette = 5=#ff7ab2 +palette = 6=#b281eb +palette = 7=#dfdfe0 +palette = 8=#7f8c98 +palette = 9=#ff8170 +palette = 10=#acf2e4 +palette = 11=#ffa14f +palette = 12=#6bdfff +palette = 13=#ff7ab2 +palette = 14=#dabaff +palette = 15=#dfdfe0 +background = #292a30 +foreground = #dfdfe0 +cursor-color = #dfdfe0 +cursor-text = #292a30 +selection-background = #414453 +selection-foreground = #dfdfe0 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark hc b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark hc new file mode 100644 index 0000000..da674b0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Dark hc @@ -0,0 +1,22 @@ +palette = 0=#43454b +palette = 1=#ff8a7a +palette = 2=#83c9bc +palette = 3=#d9c668 +palette = 4=#4ec4e6 +palette = 5=#ff85b8 +palette = 6=#cda1ff +palette = 7=#ffffff +palette = 8=#838991 +palette = 9=#ff8a7a +palette = 10=#b1faeb +palette = 11=#ffa14f +palette = 12=#6bdfff +palette = 13=#ff85b8 +palette = 14=#e5cfff +palette = 15=#ffffff +background = #1f1f24 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #1f1f24 +selection-background = #43454b +selection-foreground = #ffffff diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light new file mode 100644 index 0000000..e0ae9a3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light @@ -0,0 +1,22 @@ +palette = 0=#b4d8fd +palette = 1=#d12f1b +palette = 2=#3e8087 +palette = 3=#78492a +palette = 4=#0f68a0 +palette = 5=#ad3da4 +palette = 6=#804fb8 +palette = 7=#262626 +palette = 8=#8a99a6 +palette = 9=#d12f1b +palette = 10=#23575c +palette = 11=#78492a +palette = 12=#0b4f79 +palette = 13=#ad3da4 +palette = 14=#4b21b0 +palette = 15=#262626 +background = #ffffff +foreground = #262626 +cursor-color = #262626 +cursor-text = #ffffff +selection-background = #b4d8fd +selection-foreground = #262626 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light hc b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light hc new file mode 100644 index 0000000..148dc36 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode Light hc @@ -0,0 +1,22 @@ +palette = 0=#b4d8fd +palette = 1=#ad1805 +palette = 2=#355d61 +palette = 3=#78492a +palette = 4=#0058a1 +palette = 5=#9c2191 +palette = 6=#703daa +palette = 7=#000000 +palette = 8=#8a99a6 +palette = 9=#ad1805 +palette = 10=#174145 +palette = 11=#78492a +palette = 12=#003f73 +palette = 13=#9c2191 +palette = 14=#441ea1 +palette = 15=#000000 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #b4d8fd +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode WWDC b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode WWDC new file mode 100644 index 0000000..8853ccf --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Xcode WWDC @@ -0,0 +1,22 @@ +palette = 0=#494d5c +palette = 1=#bb383a +palette = 2=#94c66e +palette = 3=#d28e5d +palette = 4=#8884c5 +palette = 5=#b73999 +palette = 6=#00aba4 +palette = 7=#e7e8eb +palette = 8=#7f869e +palette = 9=#bb383a +palette = 10=#94c66e +palette = 11=#d28e5d +palette = 12=#8884c5 +palette = 13=#b73999 +palette = 14=#00aba4 +palette = 15=#e7e8eb +background = #292c36 +foreground = #e7e8eb +cursor-color = #e7e8eb +cursor-text = #292c36 +selection-background = #494d5c +selection-foreground = #e7e8eb diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones new file mode 100644 index 0000000..a6a7e00 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones @@ -0,0 +1,22 @@ +palette = 0=#f0edec +palette = 1=#a8334c +palette = 2=#4f6c31 +palette = 3=#944927 +palette = 4=#286486 +palette = 5=#88507d +palette = 6=#3b8992 +palette = 7=#2c363c +palette = 8=#b5a7a0 +palette = 9=#94253e +palette = 10=#3f5a22 +palette = 11=#803d1c +palette = 12=#1d5573 +palette = 13=#7b3b70 +palette = 14=#2b747c +palette = 15=#4f5e68 +background = #f0edec +foreground = #2c363c +cursor-color = #2c363c +cursor-text = #f0edec +selection-background = #cbd9e3 +selection-foreground = #2c363c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Dark new file mode 100644 index 0000000..4ec3d8f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Dark @@ -0,0 +1,22 @@ +palette = 0=#1c1917 +palette = 1=#de6e7c +palette = 2=#819b69 +palette = 3=#b77e64 +palette = 4=#6099c0 +palette = 5=#b279a7 +palette = 6=#66a5ad +palette = 7=#b4bdc3 +palette = 8=#4d4540 +palette = 9=#e8838f +palette = 10=#8bae68 +palette = 11=#d68c67 +palette = 12=#61abda +palette = 13=#cf86c1 +palette = 14=#65b8c1 +palette = 15=#888f94 +background = #1c1917 +foreground = #b4bdc3 +cursor-color = #c4cacf +cursor-text = #1c1917 +selection-background = #3d4042 +selection-foreground = #b4bdc3 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Light new file mode 100644 index 0000000..a6a7e00 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenbones Light @@ -0,0 +1,22 @@ +palette = 0=#f0edec +palette = 1=#a8334c +palette = 2=#4f6c31 +palette = 3=#944927 +palette = 4=#286486 +palette = 5=#88507d +palette = 6=#3b8992 +palette = 7=#2c363c +palette = 8=#b5a7a0 +palette = 9=#94253e +palette = 10=#3f5a22 +palette = 11=#803d1c +palette = 12=#1d5573 +palette = 13=#7b3b70 +palette = 14=#2b747c +palette = 15=#4f5e68 +background = #f0edec +foreground = #2c363c +cursor-color = #2c363c +cursor-text = #f0edec +selection-background = #cbd9e3 +selection-foreground = #2c363c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburn b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburn new file mode 100644 index 0000000..130d852 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburn @@ -0,0 +1,22 @@ +palette = 0=#4d4d4d +palette = 1=#7d5d5d +palette = 2=#60b48a +palette = 3=#f0dfaf +palette = 4=#5d6d7d +palette = 5=#dc8cc3 +palette = 6=#8cd0d3 +palette = 7=#dcdccc +palette = 8=#709080 +palette = 9=#dca3a3 +palette = 10=#c3bf9f +palette = 11=#e0cf9f +palette = 12=#94bff3 +palette = 13=#ec93d3 +palette = 14=#93e0e3 +palette = 15=#ffffff +background = #3f3f3f +foreground = #dcdccc +cursor-color = #73635a +cursor-text = #000000 +selection-background = #21322f +selection-foreground = #c2d87a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburned b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburned new file mode 100644 index 0000000..a700233 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenburned @@ -0,0 +1,22 @@ +palette = 0=#404040 +palette = 1=#e3716e +palette = 2=#819b69 +palette = 3=#b77e64 +palette = 4=#6099c0 +palette = 5=#b279a7 +palette = 6=#66a5ad +palette = 7=#f0e4cf +palette = 8=#6f6768 +palette = 9=#ec8685 +palette = 10=#8bae68 +palette = 11=#d68c67 +palette = 12=#61abda +palette = 13=#cf86c1 +palette = 14=#65b8c1 +palette = 15=#c0ab86 +background = #404040 +foreground = #f0e4cf +cursor-color = #f3eadb +cursor-text = #404040 +selection-background = #746956 +selection-foreground = #f0e4cf diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Dark new file mode 100644 index 0000000..b06e5ef --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Dark @@ -0,0 +1,22 @@ +palette = 0=#191919 +palette = 1=#de6e7c +palette = 2=#819b69 +palette = 3=#b77e64 +palette = 4=#6099c0 +palette = 5=#b279a7 +palette = 6=#66a5ad +palette = 7=#bbbbbb +palette = 8=#4a4546 +palette = 9=#e8838f +palette = 10=#8bae68 +palette = 11=#d68c67 +palette = 12=#61abda +palette = 13=#cf86c1 +palette = 14=#65b8c1 +palette = 15=#8e8e8e +background = #191919 +foreground = #bbbbbb +cursor-color = #c9c9c9 +cursor-text = #191919 +selection-background = #404040 +selection-foreground = #bbbbbb diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Light new file mode 100644 index 0000000..4d5aef8 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/Zenwritten Light @@ -0,0 +1,22 @@ +palette = 0=#eeeeee +palette = 1=#a8334c +palette = 2=#4f6c31 +palette = 3=#944927 +palette = 4=#286486 +palette = 5=#88507d +palette = 6=#3b8992 +palette = 7=#353535 +palette = 8=#aca9a9 +palette = 9=#94253e +palette = 10=#3f5a22 +palette = 11=#803d1c +palette = 12=#1d5573 +palette = 13=#7b3b70 +palette = 14=#2b747c +palette = 15=#5c5c5c +background = #eeeeee +foreground = #353535 +cursor-color = #353535 +cursor-text = #eeeeee +selection-background = #d7d7d7 +selection-foreground = #353535 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/branch b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/branch new file mode 100644 index 0000000..704bfc9 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/branch @@ -0,0 +1,22 @@ +palette = 0=#35241c +palette = 1=#c2562d +palette = 2=#96a65e +palette = 3=#d29b5a +palette = 4=#3b8e8c +palette = 5=#c47e5b +palette = 6=#639a90 +palette = 7=#cfc1a9 +palette = 8=#564a45 +palette = 9=#c2562d +palette = 10=#96a65e +palette = 11=#d29b5a +palette = 12=#3b8e8c +palette = 13=#c47e5b +palette = 14=#639a90 +palette = 15=#cfc1a9 +background = #32221a +foreground = #cfc1a9 +cursor-color = #cfc1a9 +cursor-text = #32221a +selection-background = #cfc1a9 +selection-foreground = #32221a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Dark Background b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Dark Background new file mode 100644 index 0000000..d7eccd6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Dark Background @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c91b00 +palette = 2=#00c200 +palette = 3=#c7c400 +palette = 4=#0225c7 +palette = 5=#ca30c7 +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#5ffa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#ff77ff +palette = 14=#60fdff +palette = 15=#ffffff +background = #000000 +foreground = #c7c7c7 +cursor-color = #c7c7c7 +cursor-text = #8c8c8c +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Default b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Default new file mode 100644 index 0000000..716203c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Default @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c91b00 +palette = 2=#00c200 +palette = 3=#c7c400 +palette = 4=#2225c4 +palette = 5=#ca30c7 +palette = 6=#00c5c7 +palette = 7=#ffffff +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#5ffa68 +palette = 11=#fffc67 +palette = 12=#6871ff +palette = 13=#ff77ff +palette = 14=#60fdff +palette = 15=#ffffff +background = #000000 +foreground = #ffffff +cursor-color = #e5e5e5 +cursor-text = #000000 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Light Background b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Light Background new file mode 100644 index 0000000..a8f3cd0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Light Background @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#c91b00 +palette = 2=#00c200 +palette = 3=#c7c400 +palette = 4=#0225c7 +palette = 5=#ca30c7 +palette = 6=#00c5c7 +palette = 7=#bababa +palette = 8=#686868 +palette = 9=#ff6e67 +palette = 10=#39d442 +palette = 11=#ccc934 +palette = 12=#6871ff +palette = 13=#ff77ff +palette = 14=#3ad7d9 +palette = 15=#ffffff +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Pastel Dark Background b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Pastel Dark Background new file mode 100644 index 0000000..deec58f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Pastel Dark Background @@ -0,0 +1,22 @@ +palette = 0=#626262 +palette = 1=#ff8373 +palette = 2=#b4fb73 +palette = 3=#fffdc3 +palette = 4=#a5d5fe +palette = 5=#ff90fe +palette = 6=#d1d1fe +palette = 7=#f1f1f1 +palette = 8=#8f8f8f +palette = 9=#ffc4be +palette = 10=#d6fcba +palette = 11=#fffed5 +palette = 12=#c2e3ff +palette = 13=#ffb2fe +palette = 14=#e6e6fe +palette = 15=#ffffff +background = #000000 +foreground = #c7c7c7 +cursor-color = #ffb473 +cursor-text = #8c8c8c +selection-background = #454d96 +selection-foreground = #f4f4f4 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Smoooooth b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Smoooooth new file mode 100644 index 0000000..76f1c54 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Smoooooth @@ -0,0 +1,22 @@ +palette = 0=#14191e +palette = 1=#b43c2a +palette = 2=#00c200 +palette = 3=#c7c400 +palette = 4=#2744c7 +palette = 5=#c040be +palette = 6=#00c5c7 +palette = 7=#c7c7c7 +palette = 8=#686868 +palette = 9=#dd7975 +palette = 10=#58e790 +palette = 11=#ece100 +palette = 12=#a7abf2 +palette = 13=#e17ee1 +palette = 14=#60fdff +palette = 15=#ffffff +background = #15191f +foreground = #dcdcdc +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #b3d7ff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Dark new file mode 100644 index 0000000..aea4b55 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Dark @@ -0,0 +1,22 @@ +palette = 0=#073642 +palette = 1=#dc322f +palette = 2=#859900 +palette = 3=#b58900 +palette = 4=#268bd2 +palette = 5=#d33682 +palette = 6=#2aa198 +palette = 7=#eee8d5 +palette = 8=#335e69 +palette = 9=#cb4b16 +palette = 10=#586e75 +palette = 11=#657b83 +palette = 12=#839496 +palette = 13=#6c71c4 +palette = 14=#93a1a1 +palette = 15=#fdf6e3 +background = #002b36 +foreground = #839496 +cursor-color = #839496 +cursor-text = #073642 +selection-background = #073642 +selection-foreground = #93a1a1 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Light new file mode 100644 index 0000000..f9fa8f7 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Solarized Light @@ -0,0 +1,22 @@ +palette = 0=#073642 +palette = 1=#dc322f +palette = 2=#859900 +palette = 3=#b58900 +palette = 4=#268bd2 +palette = 5=#d33682 +palette = 6=#2aa198 +palette = 7=#bbb5a2 +palette = 8=#002b36 +palette = 9=#cb4b16 +palette = 10=#586e75 +palette = 11=#657b83 +palette = 12=#839496 +palette = 13=#6c71c4 +palette = 14=#93a1a1 +palette = 15=#fdf6e3 +background = #fdf6e3 +foreground = #657b83 +cursor-color = #657b83 +cursor-text = #eee8d5 +selection-background = #eee8d5 +selection-foreground = #586e75 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Dark b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Dark new file mode 100644 index 0000000..4dd8439 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Dark @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d81e00 +palette = 2=#5ea702 +palette = 3=#cfae00 +palette = 4=#427ab3 +palette = 5=#89658e +palette = 6=#00a7aa +palette = 7=#dbded8 +palette = 8=#686a66 +palette = 9=#f54235 +palette = 10=#99e343 +palette = 11=#fdeb61 +palette = 12=#84b0d8 +palette = 13=#bc94b7 +palette = 14=#37e6e8 +palette = 15=#f1f1f0 +background = #000000 +foreground = #ffffff +cursor-color = #ffffff +cursor-text = #000000 +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Light b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Light new file mode 100644 index 0000000..a4f3f5f --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/iTerm2 Tango Light @@ -0,0 +1,22 @@ +palette = 0=#000000 +palette = 1=#d81e00 +palette = 2=#5ea702 +palette = 3=#cfae00 +palette = 4=#427ab3 +palette = 5=#89658e +palette = 6=#00a7aa +palette = 7=#c1c4be +palette = 8=#686a66 +palette = 9=#f54235 +palette = 10=#8cd636 +palette = 11=#d7c53b +palette = 12=#84b0d8 +palette = 13=#bc94b7 +palette = 14=#1eccce +palette = 15=#f1f1f0 +background = #ffffff +foreground = #000000 +cursor-color = #000000 +cursor-text = #ffffff +selection-background = #c1deff +selection-foreground = #000000 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/novmbr b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/novmbr new file mode 100644 index 0000000..982b882 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/novmbr @@ -0,0 +1,22 @@ +palette = 0=#282a2e +palette = 1=#9f6434 +palette = 2=#9dac5f +palette = 3=#cca75f +palette = 4=#2f7d7c +palette = 5=#b5896e +palette = 6=#52877f +palette = 7=#c7b8ac +palette = 8=#5d4e47 +palette = 9=#9f6434 +palette = 10=#9dac5f +palette = 11=#cca75f +palette = 12=#2f7d7c +palette = 13=#b5896e +palette = 14=#52877f +palette = 15=#c7b8ac +background = #241d1a +foreground = #c7b8ac +cursor-color = #c7b8ac +cursor-text = #241d1a +selection-background = #c7b8ac +selection-foreground = #241d1a diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/owl b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/owl new file mode 100644 index 0000000..7019b0c --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/owl @@ -0,0 +1,22 @@ +palette = 0=#302c2c +palette = 1=#5a5a5a +palette = 2=#989898 +palette = 3=#cacaca +palette = 4=#656565 +palette = 5=#b1b1b1 +palette = 6=#7f7f7f +palette = 7=#dedede +palette = 8=#5d595b +palette = 9=#da5b2c +palette = 10=#989898 +palette = 11=#cacaca +palette = 12=#656565 +palette = 13=#b1b1b1 +palette = 14=#7f7f7f +palette = 15=#ffffff +background = #2f2b2c +foreground = #dedede +cursor-color = #dedede +cursor-text = #2f2b2c +selection-background = #dedede +selection-foreground = #2f2b2c diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/traffic b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/traffic new file mode 100644 index 0000000..8c97c64 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/traffic @@ -0,0 +1,22 @@ +palette = 0=#282d31 +palette = 1=#934e46 +palette = 2=#637268 +palette = 3=#c79e84 +palette = 4=#515e67 +palette = 5=#715f5e +palette = 6=#5c6f7d +palette = 7=#cfb9a8 +palette = 8=#4e575e +palette = 9=#934e46 +palette = 10=#637270 +palette = 11=#c79e84 +palette = 12=#515e67 +palette = 13=#715f5e +palette = 14=#5c6f7d +palette = 15=#ddcec2 +background = #272c30 +foreground = #cfb9a8 +cursor-color = #cfb9a8 +cursor-text = #272c30 +selection-background = #cfb9a8 +selection-foreground = #272c30 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/urban b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/urban new file mode 100644 index 0000000..1c8fe02 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/ghostty/themes/urban @@ -0,0 +1,22 @@ +palette = 0=#33303b +palette = 1=#87404f +palette = 2=#74934e +palette = 3=#ae835a +palette = 4=#615772 +palette = 5=#854b64 +palette = 6=#625464 +palette = 7=#c0a79a +palette = 8=#5c5865 +palette = 9=#87404f +palette = 10=#74934e +palette = 11=#ae835a +palette = 12=#615772 +palette = 13=#854b64 +palette = 14=#625464 +palette = 15=#c0a79a +background = #312e39 +foreground = #c0a79a +cursor-color = #c0a79a +cursor-text = #312e39 +selection-background = #c0a79a +selection-foreground = #312e39 diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/bg/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/bg/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..25e4051 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/bg/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/ca/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/ca/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..7976f82 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/ca/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/de/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/de/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..4623c38 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/de/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/es_AR/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_AR/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..7497831 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_AR/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/es_BO/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_BO/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..71b79b7 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_BO/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/es_ES/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_ES/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..e7e7ab1 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/es_ES/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/fr/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/fr/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..fbd7ece Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/fr/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/ga/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/ga/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..f64cd48 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/ga/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/he/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/he/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..edab45f Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/he/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/hr/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/hr/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..41370fb Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/hr/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/hu/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/hu/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..14c3f37 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/hu/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/id/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/id/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..41ea926 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/id/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/it/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/it/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..e3bef38 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/it/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/ja/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/ja/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..dc11477 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/ja/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/kk/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/kk/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..c04bdf6 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/kk/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/ko_KR/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/ko_KR/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..37818a7 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/ko_KR/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/lt/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/lt/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..fc44b99 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/lt/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/lv/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/lv/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..1a90832 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/lv/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/mk/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/mk/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..46715c3 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/mk/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/nb/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/nb/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..3407d07 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/nb/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/nl/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/nl/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..d8e92c0 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/nl/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/pl/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/pl/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..6e6a3ac Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/pl/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/pt_BR/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/pt_BR/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..7c251c6 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/pt_BR/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/ru/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/ru/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..640f139 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/ru/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/tr/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/tr/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..6144cbe Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/tr/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/uk/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/uk/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..dccdd7a Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/uk/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/vi/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/vi/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..c70e02c Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/vi/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_CN/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_CN/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..5c66a0a Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_CN/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_TW/LC_MESSAGES/com.mitchellh.ghostty.mo b/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_TW/LC_MESSAGES/com.mitchellh.ghostty.mo new file mode 100644 index 0000000..e866546 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/locale/zh_TW/LC_MESSAGES/com.mitchellh.ghostty.mo differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/man/man1/ghostty.1 b/ghostty-template/Ghostty.app/Contents/Resources/man/man1/ghostty.1 new file mode 100644 index 0000000..89e8765 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/man/man1/ghostty.1 @@ -0,0 +1,5204 @@ +.\" Automatically generated by Pandoc 3.7.0.2 +.\" +.TH "GHOSTTY" "1" "" "Version 1.3.1" "Ghostty terminal emulator" +.SH NAME +\f[B]ghostty\f[R] \- Ghostty terminal emulator +.SH DESCRIPTION +Ghostty is a cross\-platform, GPU\-accelerated terminal emulator that +aims to push the boundaries of what is possible with a terminal emulator +by exposing modern, opt\-in features that enable CLI tool developers to +build more feature rich, interactive applications. +.PP +There are a number of excellent terminal emulator options that exist +today. +The unique goal of Ghostty is to have a platform for experimenting with +modern, optional, non\-standards\-compliant features to enhance the +capabilities of CLI applications. +We aim to be the best in this category, and competitive in the rest. +.PP +While aiming for this ambitious goal, Ghostty is a fully standards +compliant terminal emulator that aims to remain compatible with all +existing shells and software. +You can use this as a drop\-in replacement for your existing terminal +emulator. +.SH COMMAND LINE ACTIONS +.TP +\f[B]\f[CB]\-\-version\f[B]\f[R] +The \f[CR]version\f[R] command is used to display information about +Ghostty. +Recognized as either \f[CR]+version\f[R] or \f[CR]\-\-version\f[R]. +.TP +\f[B]\f[CB]\-\-help\f[B]\f[R] +The \f[CR]help\f[R] command shows general help about Ghostty. +Recognized as either +\f[CR]\-h,\f[R]\(enhelp\f[CR], or like other actions\f[R]+help\(ga. +.RS +.PP +You can also specify \f[CR]\-\-help\f[R] or \f[CR]\-h\f[R] along with +any action such as \f[CR]+list\-themes\f[R] to see help for a specific +action. +.RE +.TP +\f[B]\f[CB]+list\-fonts\f[B]\f[R] +The \f[CR]list\-fonts\f[R] command is used to list all the available +fonts for Ghostty. +This uses the exact same font discovery mechanism Ghostty uses to find +fonts to use. +.RS +.PP +When executed with no arguments, this will list all available fonts, +sorted by family name, then font name. +If a family name is given with \f[CR]\-\-family\f[R], the sorting will +be disabled and the results instead will be shown in the same priority +order Ghostty would use to pick a font. +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-bold\f[R]: Filter results to specific bold styles. +It is not guaranteed that only those styles are returned. +They are only prioritized. +.IP \(bu 2 +\f[CR]\-\-italic\f[R]: Filter results to specific italic styles. +It is not guaranteed that only those styles are returned. +They are only prioritized. +.IP \(bu 2 +\f[CR]\-\-style\f[R]: Filter results based on the style string +advertised by a font. +It is not guaranteed that only those styles are returned. +They are only prioritized. +.IP \(bu 2 +\f[CR]\-\-family\f[R]: Filter results to a specific font family. +The family handling is identical to the \f[CR]font\-family\f[R] set of +Ghostty configuration values, so this can be used to debug why your +desired font may not be loading. +.RE +.TP +\f[B]\f[CB]+list\-keybinds\f[B]\f[R] +The \f[CR]list\-keybinds\f[R] command is used to list all the available +keybinds for Ghostty. +.RS +.PP +When executed without any arguments this will list the current keybinds +loaded by the config file. +If no config file is found or there aren\(cqt any changes to the +keybinds it will print out the default ones configured for Ghostty +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-default\f[R]: will print out all the default keybinds +.IP \(bu 2 +\f[CR]\-\-docs\f[R]: currently does nothing, intended to print out +documentation about the action associated with the keybinds +.IP \(bu 2 +\f[CR]\-\-plain\f[R]: will disable formatting and make the output more +friendly for Unix tooling. +This is default when not printing to a tty. +.RE +.TP +\f[B]\f[CB]+list\-themes\f[B]\f[R] +The \f[CR]list\-themes\f[R] command is used to preview or list all the +available themes for Ghostty. +.RS +.PP +If this command is run from a TTY, a TUI preview of the themes will be +shown. +While in the preview, \f[CR]F1\f[R] will bring up a help screen and +\f[CR]ESC\f[R] will exit the preview. +Other keys that can be used to navigate the preview are listed in the +help screen. +.PP +If this command is not run from a TTY, or the output is piped to another +command, a plain list of theme names will be printed to the screen. +A plain list can be forced using the \f[CR]\-\-plain\f[R] CLI flag. +.PP +Two different directories will be searched for themes. +.PP +The first directory is the \f[CR]themes\f[R] subdirectory of your +Ghostty configuration directory. +This is \f[CR]$XDG_CONFIG_HOME/ghostty/themes\f[R] or +\f[CR]\(ti/.config/ghostty/themes\f[R]. +.PP +The second directory is the \f[CR]themes\f[R] subdirectory of the +Ghostty resources directory. +Ghostty ships with a multitude of themes that will be installed into +this directory. +On macOS, this directory is the +\f[CR]Ghostty.app/Contents/Resources/ghostty/themes\f[R]. +On Linux, this directory is the \f[CR]share/ghostty/themes\f[R] +(wherever you installed the Ghostty \(lqshare\(rq directory). +If you\(cqre running Ghostty from the source, this is the +\f[CR]zig\-out/share/ghostty/themes\f[R] directory. +.PP +You can also set the \f[CR]GHOSTTY_RESOURCES_DIR\f[R] environment +variable to point to the resources directory. +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-path\f[R]: Show the full path to the theme. +.IP \(bu 2 +\f[CR]\-\-plain\f[R]: Force a plain listing of themes. +.IP \(bu 2 +\f[CR]\-\-color\f[R]: Specify the color scheme of the themes included in +the list. +This can be \f[CR]dark\f[R], \f[CR]light\f[R], or \f[CR]all\f[R]. +The default is \f[CR]all\f[R]. +.RE +.TP +\f[B]\f[CB]+list\-colors\f[B]\f[R] +The \f[CR]list\-colors\f[R] command is used to list all the named RGB +colors in Ghostty. +.RS +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-plain\f[R]: will disable formatting and make the output more +friendly for Unix tooling. +This is default when not printing to a tty. +.RE +.TP +\f[B]\f[CB]+list\-actions\f[B]\f[R] +The \f[CR]list\-actions\f[R] command is used to list all the available +keybind actions for Ghostty. +These are distinct from the CLI Actions which can be listed via +\f[CR]+help\f[R] +.RS +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-docs\f[R]: will print out the documentation for each action. +.RE +.TP +\f[B]\f[CB]+ssh\-cache\f[B]\f[R] +Manage the SSH terminfo cache for automatic remote host setup. +.RS +.PP +When SSH integration is enabled with +\f[CR]shell\-integration\-features = ssh\-terminfo\f[R], Ghostty +automatically installs its terminfo on remote hosts. +This command manages the cache of successful installations to avoid +redundant uploads. +.PP +The cache stores hostnames (or user\(athostname combinations) along with +timestamps. +Entries older than the expiration period are automatically removed +during cache operations. +By default, entries never expire. +.PP +Only one of \f[CR]\-\-clear\f[R], \f[CR]\-\-add\f[R], +\f[CR]\-\-remove\f[R], or \f[CR]\-\-host\f[R] can be specified. +If multiple are specified, one of the actions will be executed but it +isn\(cqt guaranteed which one. +This is entirely unsafe so you should split multiple actions into +separate commands. +.PP +Examples: ghostty +ssh\-cache # List all cached hosts ghostty ++ssh\-cache \(enhost=example.com # Check if host is cached ghostty ++ssh\-cache \(enadd=example.com # Manually add host to cache ghostty ++ssh\-cache \(enadd=user\(atexample.com # Add user\(athost combination +ghostty +ssh\-cache \(enremove=example.com # Remove host from cache +ghostty +ssh\-cache \(enclear # Clear entire cache ghostty +ssh\-cache +\(enexpire\-days=30 # Set custom expiration period +.RE +.TP +\f[B]\f[CB]+edit\-config\f[B]\f[R] +The \f[CR]edit\-config\f[R] command opens the Ghostty configuration file +in the editor specified by the \f[CR]$VISUAL\f[R] or \f[CR]$EDITOR\f[R] +environment variables. +.RS +.PP +IMPORTANT: This command will not reload the configuration after editing. +You will need to manually reload the configuration using the application +menu, configured keybind, or by restarting Ghostty. +We plan to auto\-reload in the future, but Ghostty isn\(cqt capable of +this yet. +.PP +The filepath opened is the default user\-specific configuration file, +which is typically located at +\f[CR]$XDG_CONFIG_HOME/ghostty/config.ghostty\f[R]. +On macOS, this may also be located at +\f[CR]\(ti/Library/Application Support/com.mitchellh.ghostty/config.ghostty\f[R]. +On macOS, whichever path exists and is non\-empty will be prioritized, +prioritizing the Application Support directory if neither are +non\-empty. +.PP +This command prefers the \f[CR]$VISUAL\f[R] environment variable over +\f[CR]$EDITOR\f[R], if both are set. +If neither are set, it will print an error and exit. +.RE +.TP +\f[B]\f[CB]+show\-config\f[B]\f[R] +The \f[CR]show\-config\f[R] command shows the current configuration in a +valid Ghostty configuration file format. +.RS +.PP +When executed without any arguments this will output the current +configuration that is different from the default configuration. +If you\(cqre using the default configuration this will output nothing. +.PP +If you are a new user and want to see all available options with +documentation, run +\f[CR]ghostty +show\-config \-\-default \-\-docs\f[R]. +.PP +The output is not in any specific order, but the order should be +consistent between runs. +The output is not guaranteed to be exactly match the input configuration +files, but it will result in the same behavior. +Comments, whitespace, and other formatting is not preserved from user +configuration files. +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-default\f[R]: Show the default configuration instead of +loading the user configuration. +.IP \(bu 2 +\f[CR]\-\-changes\-only\f[R]: Only show the options that have been +changed from the default. +This has no effect if \f[CR]\-\-default\f[R] is specified. +.IP \(bu 2 +\f[CR]\-\-docs\f[R]: Print the documentation above each option as a +comment, This is very noisy but is very useful to learn about available +options, especially paired with \f[CR]\-\-default\f[R]. +.RE +.TP +\f[B]\f[CB]+validate\-config\f[B]\f[R] +The \f[CR]validate\-config\f[R] command is used to validate a Ghostty +config file. +.RS +.PP +When executed without any arguments, this will load the config from the +default location. +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-config\-file\f[R]: can be passed to validate a specific target +config file in a non\-default location +.RE +.TP +\f[B]\f[CB]+show\-face\f[B]\f[R] +The \f[CR]show\-face\f[R] command shows what font face Ghostty will use +to render a specific codepoint. +Note that this command does not take into consideration grapheme +clustering or any other Unicode features that might modify the +presentation of a codepoint, so this may show a different font face than +Ghostty uses to render a codepoint in a terminal session. +.RS +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-cp\f[R]: Find the face for a single codepoint. +The codepoint may be specified in decimal (\f[CR]\-\-cp=65\f[R]), +hexadecimal (\f[CR]\-\-cp=0x41\f[R]), octal (\f[CR]\-\-cp=0o101\f[R]), +or binary (\f[CR]\-\-cp=0b1000001\f[R]). +.IP \(bu 2 +\f[CR]\-\-string\f[R]: Find the face for all of the codepoints in a +string. +The string must be a valid UTF\-8 sequence. +.IP \(bu 2 +\f[CR]\-\-style\f[R]: Search for a specific style. +Valid options are \f[CR]regular\f[R], \f[CR]bold\f[R], +\f[CR]italic\f[R], and \f[CR]bold_italic\f[R]. +.IP \(bu 2 +\f[CR]\-\-presentation\f[R]: If set, force searching for a specific +presentation style. +Valid options are \f[CR]text\f[R] and \f[CR]emoji\f[R]. +If unset, the presentation style of a codepoint will be inferred from +the Unicode standard. +.RE +.TP +\f[B]\f[CB]+crash\-report\f[B]\f[R] +The \f[CR]crash\-report\f[R] command is used to inspect and send crash +reports. +.RS +.PP +When executed without any arguments, this will list existing crash +reports. +.PP +This command currently only supports listing crash reports. +Viewing and sending crash reports is unimplemented and will be added in +the future. +.RE +.TP +\f[B]\f[CB]+boo\f[B]\f[R] +The \f[CR]boo\f[R] command is used to display the animation from the +Ghostty website in the terminal +.TP +\f[B]\f[CB]+new\-window\f[B]\f[R] +The \f[CR]new\-window\f[R] will use native platform IPC to open up a new +window in a running instance of Ghostty. +.RS +.PP +If the \f[CR]\-\-class\f[R] flag is not set, the \f[CR]new\-window\f[R] +command will try and connect to a running instance of Ghostty based on +what optimizations the Ghostty CLI was compiled with. +Otherwise the \f[CR]new\-window\f[R] command will try and contact a +running Ghostty instance that was configured with the same +\f[CR]class\f[R] as was given on the command line. +.PP +All of the arguments after the \f[CR]+new\-window\f[R] argument (except +for the \f[CR]\-\-class\f[R] flag) will be sent to the remote Ghostty +instance and will be parsed as command line flags. +These flags will override certain settings when creating the first +surface in the new window. +Currently, only \f[CR]\-\-working\-directory\f[R], +\f[CR]\-\-command\f[R], and \f[CR]\-\-title\f[R] are supported. +\f[CR]\-e\f[R] will also work as an alias for \f[CR]\-\-command\f[R], +except that if \f[CR]\-e\f[R] is found on the command line all following +arguments will become part of the command and no more arguments will be +parsed for configuration settings. +.PP +If \f[CR]\-\-working\-directory\f[R] is found on the command line and is +a relative path (i.e.\ doesn\(cqt start with \f[CR]/\f[R]) it will be +resolved to an absolute path relative to the current working directory +that the \f[CR]ghostty +new\-window\f[R] command is run from. +\f[CR]\(ti/\f[R] prefixes will also be expanded to the user\(cqs home +directory. +.PP +If \f[CR]\-\-working\-directory\f[R] is \f[I]not\f[R] found on the +command line, the working directory that \f[CR]ghostty +new\-window\f[R] +is run from will be passed to Ghostty. +.PP +GTK uses an application ID to identify instances of applications. +If Ghostty is compiled with release optimizations, the default +application ID will be \f[CR]com.mitchellh.ghostty\f[R]. +If Ghostty is compiled with debug optimizations, the default application +ID will be \f[CR]com.mitchellh.ghostty\-debug\f[R]. +The \f[CR]class\f[R] configuration entry can be used to set up a custom +application ID. +The class name must follow the requirements defined \c +.UR https://docs.gtk.org/gio/type_func.Application.id_is_valid.html +in the GTK documentation +.UE \c +\ or it will be ignored and Ghostty will use the default as defined +above. +.PP +On GTK, D\-Bus activation must be properly configured. +Ghostty does not need to be running for this to open a new window, +making it suitable for binding to keys in your window manager (if other +methods for configuring global shortcuts are unavailable). +D\-Bus will handle launching a new instance of Ghostty if it is not +already running. +See the Ghostty website for information on properly configuring D\-Bus +activation. +.PP +Only supported on GTK. +.PP +Flags: +.IP \(bu 2 +\f[CR]\-\-class=\f[R]: If set, open up a new window in a custom +instance of Ghostty. +The class must be a valid GTK application ID. +.IP \(bu 2 +\f[CR]\-\-command\f[R]: The command to be executed in the first surface +of the new window. +.IP \(bu 2 +\f[CR]\-\-working\-directory=\f[R]: The working directory to +pass to Ghostty. +.IP \(bu 2 +\f[CR]\-\-title\f[R]: A title that will override the title of the first +surface in the new window. +The title override may be edited or removed later. +.IP \(bu 2 +\f[CR]\-e\f[R]: Any arguments after this will be interpreted as a +command to execute inside the first surface of the new window instead of +the default command. +.PP +Available since: 1.2.0 +.RE +.SH CONFIGURATION OPTIONS +.TP +\f[B]\f[CB]\-\-language\f[B]\f[R] +Set Ghostty\(cqs graphical user interface language to a language other +than the system default language. +For example: +.RS +.IP +.EX +language = de +.EE +.PP +will force the strings in Ghostty\(cqs graphical user interface to be in +German rather than the system default. +.PP +This will not affect the language used by programs run \f[I]within\f[R] +Ghostty. +Those will continue to use the default system language. +There are also many non\-GUI elements in Ghostty that are not translated +\- this setting will have no effect on those. +.PP +Warning: This setting cannot be reloaded at runtime. +To change the language you must fully restart Ghostty. +.PP +GTK only. +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]\-\-font\-family\f[B]\f[R] +The font families to use. +.RS +.PP +You can generate the list of valid values using the CLI: +.IP +.EX +ghostty +list\-fonts +.EE +.PP +This configuration can be repeated multiple times to specify preferred +fallback fonts when the requested codepoint is not available in the +primary font. +This is particularly useful for multiple languages, symbolic fonts, etc. +.PP +Notes on emoji specifically: On macOS, Ghostty by default will always +use Apple Color Emoji and on Linux will always use Noto Emoji. +You can override this behavior by specifying a font family here that +contains emoji glyphs. +.PP +The specific styles (bold, italic, bold italic) do not need to be +explicitly set. +If a style is not set, then the regular style (font\-family) will be +searched for stylistic variants. +If a stylistic variant is not found, Ghostty will use the regular style. +This prevents falling back to a different font family just to get a +style such as bold. +This also applies if you explicitly specify a font family for a style. +For example, if you set \f[CR]font\-family\-bold = FooBar\f[R] and +\(lqFooBar\(rq cannot be found, Ghostty will use whatever font is set +for \f[CR]font\-family\f[R] for the bold style. +.PP +Finally, some styles may be synthesized if they are not supported. +For example, if a font does not have an italic style and no alternative +italic font is specified, Ghostty will synthesize an italic style by +applying a slant to the regular style. +If you want to disable these synthesized styles then you can use the +\f[CR]font\-style\f[R] configurations as documented below. +.PP +You can disable styles completely by using the \f[CR]font\-style\f[R] +set of configurations. +See the documentation for \f[CR]font\-style\f[R] for more information. +.PP +If you want to overwrite a previous set value rather than append a +fallback, specify the value as \f[CR]\(dq\(dq\f[R] (empty string) to +reset the list and then set the new values. +For example: +.IP +.EX +font\-family = \(dq\(dq +font\-family = \(dqMy Favorite Font\(dq +.EE +.PP +Setting any of these as CLI arguments will automatically clear the +values set in configuration files so you don\(cqt need to specify +\f[CR]\-\-font\-family=\(dq\(dq\f[R] before setting a new value. +You only need to specify this within config files if you want to clear +previously set values in configuration files or on the CLI if you want +to clear values set on the CLI. +.RE +.PP +\f[B]\f[CB]\-\-font\-family\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-family\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-family\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-font\-style\f[B]\f[R] +The named font style to use for each of the requested terminal font +styles. +This looks up the style based on the font style string advertised by the +font itself. +For example, \(lqIosevka Heavy\(rq has a style of \(lqHeavy\(rq. +.RS +.PP +You can also use these fields to completely disable a font style. +If you set the value of the configuration below to literal +\f[CR]false\f[R] then that font style will be disabled. +If the running program in the terminal requests a disabled font style, +the regular font style will be used instead. +.PP +These are only valid if its corresponding font\-family is also +specified. +If no font\-family is specified, then the font\-style is ignored unless +you\(cqre disabling the font style. +.RE +.PP +\f[B]\f[CB]\-\-font\-style\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-style\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-style\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-font\-synthetic\-style\f[B]\f[R] +Control whether Ghostty should synthesize a style if the requested style +is not available in the specified font\-family. +.RS +.PP +Ghostty can synthesize bold, italic, and bold italic styles if the font +does not have a specific style. +For bold, this is done by drawing an outline around the glyph of varying +thickness. +For italic, this is done by applying a slant to the glyph. +For bold italic, both of these are applied. +.PP +Synthetic styles are not perfect and will generally not look as good as +a font that has the style natively. +However, they are useful to provide styled text when the font does not +have the style. +.PP +Set this to \(lqfalse\(rq or \(lqtrue\(rq to disable or enable synthetic +styles completely. +You can disable specific styles using \(lqno\-bold\(rq, +\(lqno\-italic\(rq, and \(lqno\-bold\-italic\(rq. +You can disable multiple styles by separating them with a comma. +For example, \(lqno\-bold,no\-italic\(rq. +.PP +Available style keys are: \f[CR]bold\f[R], \f[CR]italic\f[R], +\f[CR]bold\-italic\f[R]. +.PP +If synthetic styles are disabled, then the regular style will be used +instead if the requested style is not available. +If the font has the requested style, then the font will be used as\-is +since the style is not synthetic. +.PP +Warning: An easy mistake is to disable \f[CR]bold\f[R] or +\f[CR]italic\f[R] but not \f[CR]bold\-italic\f[R]. +Disabling only \f[CR]bold\f[R] or \f[CR]italic\f[R] will NOT disable +either in the \f[CR]bold\-italic\f[R] style. +If you want to disable \f[CR]bold\-italic\f[R], you must explicitly +disable it. +You cannot partially disable \f[CR]bold\-italic\f[R]. +.PP +By default, synthetic styles are enabled. +.RE +.TP +\f[B]\f[CB]\-\-font\-feature\f[B]\f[R] +Apply a font feature. +To enable multiple font features you can repeat this multiple times or +use a comma\-separated list of feature settings. +.RS +.PP +The syntax for feature settings is as follows, where \f[CR]feat\f[R] is +a feature: +.IP \(bu 2 +Enable features with e.g.\ \f[CR]feat\f[R], \f[CR]+feat\f[R], +\f[CR]feat on\f[R], \f[CR]feat=1\f[R]. +.IP \(bu 2 +Disabled features with e.g.\ \f[CR]\-feat\f[R], \f[CR]feat off\f[R], +\f[CR]feat=0\f[R]. +.IP \(bu 2 +Set a feature value with e.g.\ \f[CR]feat=2\f[R], \f[CR]feat = 3\f[R], +\f[CR]feat 4\f[R]. +.IP \(bu 2 +Feature names may be wrapped in quotes, meaning this config should be +syntactically compatible with the \f[CR]font\-feature\-settings\f[R] CSS +property. +.PP +The syntax is fairly loose, but invalid settings will be silently +ignored. +.PP +The font feature will apply to all fonts rendered by Ghostty. +A future enhancement will allow targeting specific faces. +.PP +To disable programming ligatures, use \f[CR]\-calt\f[R] since this is +the typical feature name for programming ligatures. +To look into what font features your font has and what they do, use a +font inspection tool such as \c +.UR https://fontdrop.info +fontdrop.info +.UE \c +\&. +.PP +To generally disable most ligatures, use +\f[CR]\-calt, \-liga, \-dlig\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-font\-size\f[B]\f[R] +Font size in points. +This value can be a non\-integer and the nearest integer pixel size will +be selected. +If you have a high dpi display where 1pt = 2px then you can get an odd +numbered pixel size by specifying a half point. +.RS +.PP +For example, 13.5pt \(at 2px/pt = 27px +.PP +Changing this configuration at runtime will only affect existing +terminals that have NOT manually adjusted their font size in some way +(e.g.\ increased or decreased the font size). +Terminals that have manually adjusted their font size will retain their +manually adjusted size. +Otherwise, the font size of existing terminals will be updated on +reload. +.PP +On Linux with GTK, font size is scaled according to both display\-wide +and text\-specific scaling factors, which are often managed by your +desktop environment (e.g.\ the GNOME display scale and large text +settings). +.RE +.TP +\f[B]\f[CB]\-\-font\-variation\f[B]\f[R] +A repeatable configuration to set one or more font variations values for +a variable font. +A variable font is a single font, usually with a filename ending in +\f[CR]\-VF.ttf\f[R] or \f[CR]\-VF.otf\f[R] that contains one or more +configurable axes for things such as weight, slant, etc. +Not all fonts support variations; only fonts that explicitly state they +are variable fonts will work. +.RS +.PP +The format of this is \f[CR]id=value\f[R] where \f[CR]id\f[R] is the +axis identifier. +An axis identifier is always a 4 character string, such as +\f[CR]wght\f[R]. +To get the list of supported axes, look at your font documentation or +use a font inspection tool. +.PP +Invalid ids and values are usually ignored. +For example, if a font only supports weights from 100 to 700, setting +\f[CR]wght=800\f[R] will do nothing (it will not be clamped to 700). +You must consult your font\(cqs documentation to see what values are +supported. +.PP +Common axes are: \f[CR]wght\f[R] (weight), \f[CR]slnt\f[R] (slant), +\f[CR]ital\f[R] (italic), \f[CR]opsz\f[R] (optical size), +\f[CR]wdth\f[R] (width), \f[CR]GRAD\f[R] (gradient), etc. +.RE +.PP +\f[B]\f[CB]\-\-font\-variation\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-variation\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]\-\-font\-variation\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-font\-codepoint\-map\f[B]\f[R] +Force one or a range of Unicode codepoints to map to a specific named +font. +This is useful if you want to support special symbols or if you want to +use specific glyphs that render better for your specific font. +.RS +.PP +The syntax is \f[CR]codepoint=fontname\f[R] where \f[CR]codepoint\f[R] +is either a single codepoint or a range. +Codepoints must be specified as full Unicode hex values, such as +\f[CR]U+ABCD\f[R]. +Codepoints ranges are specified as \f[CR]U+ABCD\-U+DEFG\f[R]. +You can specify multiple ranges for the same font separated by commas, +such as \f[CR]U+ABCD\-U+DEFG,U+1234\-U+5678=fontname\f[R]. +The font name is the same value as you would use for +\f[CR]font\-family\f[R]. +.PP +This configuration can be repeated multiple times to specify multiple +codepoint mappings. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e.\ new windows, tabs, etc. +.RE +.TP +\f[B]\f[CB]\-\-clipboard\-codepoint\-map\f[B]\f[R] +Map specific Unicode codepoints to replacement values when copying text +to clipboard. +.RS +.PP +This configuration allows you to replace specific Unicode characters +with other characters or strings when copying terminal content to the +clipboard. +This is useful for converting special terminal symbols to more +compatible characters for pasting into other applications. +.PP +The syntax is similar to \f[CR]font\-codepoint\-map\f[R]: \- Single +codepoint: \f[CR]U+1234=U+ABCD\f[R] or +\f[CR]U+1234=replacement_text\f[R] \- Codepoint range: +\f[CR]U+1234\-U+5678=U+ABCD\f[R] +.PP +Examples: \- \f[CR]clipboard\-codepoint\-map = U+2500=U+002D\f[R] (box +drawing horizontal → hyphen) \- +\f[CR]clipboard\-codepoint\-map = U+2502=U+007C\f[R] (box drawing +vertical → pipe) \- \f[CR]clipboard\-codepoint\-map = U+03A3=SUM\f[R] +(Greek sigma → \(lqSUM\(rq) +.PP +This configuration can be repeated multiple times to specify multiple +mappings. +Later entries take priority over earlier ones for overlapping ranges. +.PP +Note: This only applies to text copying operations, not URL copying. +.RE +.TP +\f[B]\f[CB]\-\-font\-thicken\f[B]\f[R] +Draw fonts with a thicker stroke, if supported. +This is currently only supported on macOS. +.TP +\f[B]\f[CB]\-\-font\-thicken\-strength\f[B]\f[R] +Strength of thickening when \f[CR]font\-thicken\f[R] is enabled. +.RS +.PP +Valid values are integers between \f[CR]0\f[R] and \f[CR]255\f[R]. +\f[CR]0\f[R] does not correspond to \f[I]no\f[R] thickening, rather it +corresponds to the lightest available thickening. +.PP +Has no effect when \f[CR]font\-thicken\f[R] is set to \f[CR]false\f[R]. +.PP +This is currently only supported on macOS. +.RE +.TP +\f[B]\f[CB]\-\-font\-shaping\-break\f[B]\f[R] +Locations to break font shaping into multiple runs. +.RS +.PP +A \(lqrun\(rq is a contiguous segment of text that is shaped together. +\(lqShaping\(rq is the process of converting text (codepoints) into +glyphs (renderable characters). +This is how ligatures are formed, among other things. +For example, if a coding font turns \(lq!=\(rq into a single glyph, then +it must see \(lq!\(rq and \(lq=\(rq next to each other in a single run. +When a run is broken, the text is shaped separately. +To continue our example, if \(lq!\(rq is at the end of one run and +\(lq=\(rq is at the start of the next run, then the ligature will not be +formed. +.PP +Ghostty breaks runs at certain points to improve readability or +usability. +For example, Ghostty by default will break runs under the cursor so that +text editing can see the individual characters rather than a ligature. +This configuration lets you configure this behavior. +.PP +Combine values with a comma to set multiple options. +Prefix an option with \(lqno\-\(rq to disable it. +Enabling and disabling options can be done at the same time. +.PP +Available options: +.IP \(bu 2 +\f[CR]cursor\f[R] \- Break runs under the cursor. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-alpha\-blending\f[B]\f[R] +What color space to use when performing alpha blending. +.RS +.PP +This affects the appearance of text and of any images with transparency. +Additionally, custom shaders will receive colors in the configured +space. +.PP +On macOS the default is \f[CR]native\f[R], on all other platforms the +default is \f[CR]linear\-corrected\f[R]. +.PP +Valid values: +.IP \(bu 2 +\f[CR]native\f[R] \- Perform alpha blending in the native color space +for the OS. +On macOS this corresponds to Display P3, and on Linux it\(cqs sRGB. +.IP \(bu 2 +\f[CR]linear\f[R] \- Perform alpha blending in linear space. +This will eliminate the darkening artifacts around the edges of text +that are very visible when certain color combinations are used +(e.g.\ red / green), but makes dark text look much thinner than normal +and light text much thicker. +This is also sometimes known as \(lqgamma correction\(rq. +.IP \(bu 2 +\f[CR]linear\-corrected\f[R] \- Same as \f[CR]linear\f[R], but with a +correction step applied for text that makes it look nearly or completely +identical to \f[CR]native\f[R], but without any of the darkening +artifacts. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-adjust\-cell\-width\f[B]\f[R] +All of the configurations behavior adjust various metrics determined by +the font. +The values can be integers (1, \-1, etc.) +or a percentage (20%, \-15%, etc.). +In each case, the values represent the amount to change the original +value. +.RS +.PP +For example, a value of \f[CR]1\f[R] increases the value by 1; it does +not set it to literally 1. +A value of \f[CR]20%\f[R] increases the value by 20%. +And so on. +.PP +There is little to no validation on these values so the wrong values +(e.g. +\f[CR]\-100%\f[R]) can cause the terminal to be unusable. +Use with caution and reason. +.PP +Some values are clamped to minimum or maximum values. +This can make it appear that certain values are ignored. +For example, many \f[CR]*\-thickness\f[R] adjustments cannot go below +1px. +.PP +\f[CR]adjust\-cell\-height\f[R] has some additional behaviors to +describe: +.IP \(bu 2 +The font will be centered vertically in the cell. +.IP \(bu 2 +The cursor will remain the same size as the font, but may be adjusted +separately with \f[CR]adjust\-cursor\-height\f[R]. +.IP \(bu 2 +Powerline glyphs will be adjusted along with the cell height so that +things like status lines continue to look aligned. +.RE +.PP +\f[B]\f[CB]\-\-adjust\-cell\-height\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-adjust\-font\-baseline\f[B]\f[R] +Distance in pixels or percentage adjustment from the bottom of the cell +to the text baseline. +Increase to move baseline UP, decrease to move baseline DOWN. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-underline\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the underline. +Increase to move underline DOWN, decrease to move underline UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-underline\-thickness\f[B]\f[R] +Thickness in pixels of the underline. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-strikethrough\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the strikethrough. +Increase to move strikethrough DOWN, decrease to move strikethrough UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-strikethrough\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the strikethrough. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-overline\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the overline. +Increase to move overline DOWN, decrease to move overline UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-overline\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the overline. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-cursor\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the bar cursor and +outlined rect cursor. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-cursor\-height\f[B]\f[R] +Height in pixels or percentage adjustment of the cursor. +Currently applies to all cursor types: bar, rect, and outlined rect. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-box\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of box drawing characters. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]\-\-adjust\-icon\-height\f[B]\f[R] +Height in pixels or percentage adjustment of maximum height for nerd +font icons. +.RS +.PP +A positive (negative) value will increase (decrease) the maximum icon +height. +This may not affect all icons equally: the effect depends on whether the +default size of the icon is height\-constrained, which in turn depends +on the aspect ratio of both the icon and your primary font. +.PP +Certain icons designed for box drawing and terminal graphics, such as +Powerline symbols, are not affected by this option. +.PP +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.PP +Available in: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-grapheme\-width\-method\f[B]\f[R] +The method to use for calculating the cell width of a grapheme cluster. +The default value is \f[CR]unicode\f[R] which uses the Unicode standard +to determine grapheme width. +This results in correct grapheme width but may result in cursor\-desync +issues with some programs (such as shells) that may use a legacy method +such as \f[CR]wcswidth\f[R]. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]legacy\f[R] \- Use a legacy method to determine grapheme width, +such as wcswidth This maximizes compatibility with legacy programs but +may result in incorrect grapheme width for certain graphemes such as +skin\-tone emoji, non\-English characters, etc. +.RS 2 +.PP +This is called \(lqlegacy\(rq and not something more specific because +the behavior is undefined and we want to retain the ability to modify +it. +For example, we may or may not use libc \f[CR]wcswidth\f[R] now or in +the future. +.RE +.IP \(bu 2 +\f[CR]unicode\f[R] \- Use the Unicode standard to determine grapheme +width. +.PP +If a running program explicitly enables terminal mode 2027, then +\f[CR]unicode\f[R] width will be forced regardless of this +configuration. +When mode 2027 is reset, this configuration will be used again. +.PP +This configuration can be changed at runtime but will not affect +existing terminals. +Only new terminals will use the new configuration. +.RE +.TP +\f[B]\f[CB]\-\-freetype\-load\-flags\f[B]\f[R] +FreeType load flags to enable. +The format of this is a list of flags to enable separated by commas. +If you prefix a flag with \f[CR]no\-\f[R] then it is disabled. +If you omit a flag, its default value is used, so you must explicitly +disable flags you don\(cqt want. +You can also use \f[CR]true\f[R] or \f[CR]false\f[R] to turn all flags +on or off. +.RS +.PP +This configuration only applies to Ghostty builds that use FreeType. +This is usually the case only for Linux builds. +macOS uses CoreText and does not have an equivalent configuration. +.PP +Available flags: +.IP \(bu 2 +\f[CR]hinting\f[R] \- Enable or disable hinting. +Enabled by default. +.IP \(bu 2 +\f[CR]force\-autohint\f[R] \- Always use the freetype auto\-hinter +instead of the font\(cqs native hinter. +Disabled by default. +.IP \(bu 2 +\f[CR]monochrome\f[R] \- Instructs renderer to use 1\-bit monochrome +rendering. +This will disable anti\-aliasing, and probably not look very good unless +you\(cqre using a pixel font. +Disabled by default. +.IP \(bu 2 +\f[CR]autohint\f[R] \- Enable the freetype auto\-hinter. +Enabled by default. +.IP \(bu 2 +\f[CR]light\f[R] \- Use a light hinting style, better preserving glyph +shapes. +This is the most common setting in GTK apps and therefore also +Ghostty\(cqs default. +This has no effect if \f[CR]monochrome\f[R] is enabled. +Enabled by default. +.PP +Example: \f[CR]hinting\f[R], \f[CR]no\-hinting\f[R], +\f[CR]force\-autohint\f[R], \f[CR]no\-force\-autohint\f[R] +.RE +.TP +\f[B]\f[CB]\-\-theme\f[B]\f[R] +A theme to use. +This can be a built\-in theme name, a custom theme name, or an absolute +path to a custom theme file. +Ghostty also supports specifying a different theme to use for light and +dark mode. +Each option is documented below. +.RS +.PP +If the theme is an absolute pathname, Ghostty will attempt to load that +file as a theme. +If that file does not exist or is inaccessible, an error will be logged +and no other directories will be searched. +.PP +If the theme is not an absolute pathname, two different directories will +be searched for a file name that matches the theme. +This is case sensitive on systems with case\-sensitive filesystems. +It is an error for a theme name to include path separators unless it is +an absolute pathname. +.PP +The first directory is the \f[CR]themes\f[R] subdirectory of your +Ghostty configuration directory. +This is \f[CR]$XDG_CONFIG_HOME/ghostty/themes\f[R] or +\f[CR]\(ti/.config/ghostty/themes\f[R]. +.PP +The second directory is the \f[CR]themes\f[R] subdirectory of the +Ghostty resources directory. +Ghostty ships with a multitude of themes that will be installed into +this directory. +On macOS, this list is in the +\f[CR]Ghostty.app/Contents/Resources/ghostty/themes\f[R] directory. +On Linux, this list is in the \f[CR]share/ghostty/themes\f[R] directory +(wherever you installed the Ghostty \(lqshare\(rq directory. +.PP +To see a list of available themes, run \f[CR]ghostty +list\-themes\f[R]. +.PP +A theme file is simply another Ghostty configuration file. +They share the same syntax and same configuration options. +A theme can set any valid configuration option so please do not use a +theme file from an untrusted source. +The built\-in themes are audited to only set safe configuration options. +.PP +Some options cannot be set within theme files. +The reason these are not supported should be self\-evident. +A theme file cannot set \f[CR]theme\f[R] or \f[CR]config\-file\f[R]. +At the time of writing this, Ghostty will not show any warnings or +errors if you set these options in a theme file but they will be +silently ignored. +.PP +Any additional colors specified via background, foreground, palette, +etc. +will override the colors specified in the theme. +.PP +To specify a different theme for light and dark mode, use the following +syntax: \f[CR]light:theme\-name,dark:theme\-name\f[R]. +For example: \f[CR]light:Rose Pine Dawn,dark:Rose Pine\f[R]. +Whitespace around all values are trimmed and order of light and dark +does not matter. +Both light and dark must be specified in this form. +In this form, the theme used will be based on the current desktop +environment theme. +.PP +There are some known bugs with light/dark mode theming. +These will be fixed in a future update: +.IP \(bu 2 +macOS: titlebar tabs style is not updated when switching themes. +.RE +.TP +\f[B]\f[CB]\-\-background\f[B]\f[R] +Background color for the window. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.TP +\f[B]\f[CB]\-\-foreground\f[B]\f[R] +Foreground color for the window. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.TP +\f[B]\f[CB]\-\-background\-image\f[B]\f[R] +Background image for the terminal. +.RS +.PP +This should be a path to a PNG or JPEG file, other image formats are not +yet supported. +.PP +The background image is currently per\-terminal, not per\-window. +If you are a heavy split user, the background image will be repeated +across splits. +A future improvement to Ghostty will address this. +.PP +WARNING: Background images are currently duplicated in VRAM +per\-terminal. +For sufficiently large images, this could lead to a large increase in +memory usage (specifically VRAM usage). +A future Ghostty improvement will resolve this by sharing image textures +across terminals. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-background\-image\-opacity\f[B]\f[R] +Background image opacity. +.RS +.PP +This is relative to the value of \f[CR]background\-opacity\f[R]. +.PP +A value of \f[CR]1.0\f[R] (the default) will result in the background +image being placed on top of the general background color, and then the +combined result will be adjusted to the opacity specified by +\f[CR]background\-opacity\f[R]. +.PP +A value less than \f[CR]1.0\f[R] will result in the background image +being mixed with the general background color before the combined result +is adjusted to the configured \f[CR]background\-opacity\f[R]. +.PP +A value greater than \f[CR]1.0\f[R] will result in the background image +having a higher opacity than the general background color. +For instance, if the configured \f[CR]background\-opacity\f[R] is +\f[CR]0.5\f[R] and \f[CR]background\-image\-opacity\f[R] is set to +\f[CR]1.5\f[R], then the final opacity of the background image will be +\f[CR]0.5 * 1.5 = 0.75\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-background\-image\-position\f[B]\f[R] +Background image position. +.RS +.PP +Valid values are: * \f[CR]top\-left\f[R] * \f[CR]top\-center\f[R] * +\f[CR]top\-right\f[R] * \f[CR]center\-left\f[R] * \f[CR]center\f[R] * +\f[CR]center\-right\f[R] * \f[CR]bottom\-left\f[R] * +\f[CR]bottom\-center\f[R] * \f[CR]bottom\-right\f[R] +.PP +The default value is \f[CR]center\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-background\-image\-fit\f[B]\f[R] +Background image fit. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]contain\f[R] +.RS 2 +.PP +Preserving the aspect ratio, scale the background image to the largest +size that can still be contained within the terminal, so that the whole +image is visible. +.RE +.IP \(bu 2 +\f[CR]cover\f[R] +.RS 2 +.PP +Preserving the aspect ratio, scale the background image to the smallest +size that can completely cover the terminal. +This may result in one or more edges of the image being clipped by the +edge of the terminal. +.RE +.IP \(bu 2 +\f[CR]stretch\f[R] +.RS 2 +.PP +Stretch the background image to the full size of the terminal, without +preserving the aspect ratio. +.RE +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +Don\(cqt scale the background image. +.RE +.PP +The default value is \f[CR]contain\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-background\-image\-repeat\f[B]\f[R] +Whether to repeat the background image or not. +.RS +.PP +If this is set to true, the background image will be repeated if there +would otherwise be blank space around it because it doesn\(cqt +completely fill the terminal area. +.PP +The default value is \f[CR]false\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-selection\-foreground\f[B]\f[R] +The foreground and background color for selection. +If this is not set, then the selection color is just the inverted window +background and foreground (note: not to be confused with the cell +bg/fg). +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +Since version 1.2.0, this can also be set to \f[CR]cell\-foreground\f[R] +to match the cell foreground color, or \f[CR]cell\-background\f[R] to +match the cell background color. +.PP +\f[B]\f[CB]\-\-selection\-background\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-selection\-clear\-on\-typing\f[B]\f[R] +Whether to clear selected text when typing. +This defaults to \f[CR]true\f[R]. +This is typical behavior for most terminal emulators as well as text +input fields. +If you set this to \f[CR]false\f[R], then the selected text will not be +cleared when typing. +.RS +.PP +\(lqTyping\(rq is specifically defined as any non\-modifier (shift, +control, alt, etc.) +keypress that produces data to be sent to the application running within +the terminal (e.g.\ the shell). +Additionally, selection is cleared when any preedit or composition state +is started (e.g. +when typing languages such as Japanese). +.PP +If this is \f[CR]false\f[R], then the selection can still be manually +cleared by clicking once or by pressing \f[CR]escape\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-selection\-clear\-on\-copy\f[B]\f[R] +Whether to clear selected text after copying. +This defaults to \f[CR]false\f[R]. +.RS +.PP +When set to \f[CR]true\f[R], the selection will be automatically cleared +after any copy operation that invokes the \f[CR]copy_to_clipboard\f[R] +keyboard binding. +Importantly, this will not clear the selection if the copy operation was +invoked via \f[CR]copy\-on\-select\f[R]. +.PP +When set to \f[CR]false\f[R], the selection remains visible after +copying, allowing to see what was copied and potentially perform +additional operations on the same selection. +.RE +.TP +\f[B]\f[CB]\-\-selection\-word\-chars\f[B]\f[R] +Characters that mark word boundaries during text selection operations +such as double\-clicking. +When selecting a word, the selection will stop at any of these +characters. +.RS +.PP +This is similar to the \f[CR]WORDCHARS\f[R] environment variable in zsh, +except this specifies the boundary characters rather than the word +characters. +The default includes common delimiters and punctuation that typically +separate words in code and prose. +.PP +Each character in this string becomes a word boundary. +Multi\-byte UTF\-8 characters are supported, but only single codepoints +can be specified. +Multi\-codepoint sequences (e.g.\ emoji) are not supported. +.PP +The null character (U+0000) is always treated as a boundary and does not +need to be included in this configuration. +.PP +Default: \f[CR]\(rst\(aq\(dq│\(ga|:;,()[]{}<>$\f[R] +.PP +To add or remove specific characters, you can set this to a custom +value. +For example, to treat semicolons as part of words: +.IP +.EX +selection\-word\-chars = \(dq \(rst\(aq\(rs\(dq│\(ga|:,()[]{}<>$\(dq +.EE +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]\-\-minimum\-contrast\f[B]\f[R] +The minimum contrast ratio between the foreground and background colors. +The contrast ratio is a value between 1 and 21. +A value of 1 allows for no contrast (e.g.\ black on black). +This value is the contrast ratio as defined by the \c +.UR https://www.w3.org/TR/WCAG20/ +WCAG 2.0 specification +.UE \c +\&. +.RS +.PP +If you want to avoid invisible text (same color as background), a value +of 1.1 is a good value. +If you want to avoid text that is difficult to read, a value of 3 or +higher is a good value. +The higher the value, the more likely that text will become black or +white. +.PP +This value does not apply to Emoji or images. +.RE +.TP +\f[B]\f[CB]\-\-palette\f[B]\f[R] +Color palette for the 256 color form that many terminal applications +use. +The syntax of this configuration is \f[CR]N=COLOR\f[R] where +\f[CR]N\f[R] is 0 to 255 (for the 256 colors in the terminal color +table) and \f[CR]COLOR\f[R] is a typical RGB color code such as +\f[CR]#AABBCC\f[R] or \f[CR]AABBCC\f[R], or a named X11 color. +For example, \f[CR]palette = 5=#BB78D9\f[R] will set the `purple' color. +.RS +.PP +The palette index can be in decimal, binary, octal, or hexadecimal. +Decimal is assumed unless a prefix is used: \f[CR]0b\f[R] for binary, +\f[CR]0o\f[R] for octal, and \f[CR]0x\f[R] for hexadecimal. +.PP +For definitions on the color indices and what they canonically map to, +\c +.UR https://www.ditig.com/256-colors-cheat-sheet +see this cheat sheet +.UE \c +\&. +.PP +For most themes, you only need to set the first 16 colors (0\(en15) +since the rest of the palette (16\(en255) will be automatically +generated by default (see \f[CR]palette\-generate\f[R] for more +details). +.RE +.TP +\f[B]\f[CB]\-\-palette\-generate\f[B]\f[R] +Whether to automatically generate the extended 256 color palette +(indices 16\(en255) from the base 16 ANSI colors. +.RS +.PP +This lets theme authors specify only the base 16 colors and have the +rest of the palette be automatically generated in a consistent and +aesthetic way. +.PP +When enabled, the 6×6×6 color cube and 24\-step grayscale ramp are +derived from interpolations of the base palette, giving a more cohesive +look. +Colors that have been explicitly set via \f[CR]palette\f[R] are never +overwritten. +.PP +The default value is false (disabled), because many legacy programs +using the 256\-color palette hardcode assumptions about what these +colors are (mostly assuming the xterm 256 color palette). +However, this is still a very useful tool for theme authors and users +who want to customize their palette without having to specify all 256 +colors. +.PP +For more information on how the generation works, see here: +https://gist.github.com/jake\-stewart/0a8ea46159a7da2c808e5be2177e1783 +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]\-\-palette\-harmonious\f[B]\f[R] +Invert the palette colors generated when \f[CR]palette\-generate\f[R] is +enabled, so that the colors go in reverse order. +This allows palette\-based applications to work well in both light and +dark mode since the palettes are always relatively good colors. +.RS +.PP +This defaults to off because some legacy terminal applications hardcode +the assumption that palette indices 16\(en231 are ordered from darkest +to lightest, so enabling this would make them unreadable. +This is not a generally good assumption and we encourage modern terminal +applications to use the indices in a more semantic way. +.PP +This has no effect if \f[CR]palette\-generate\f[R] is disabled. +.PP +For more information see \f[CR]palette\-generate\f[R]. +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]\-\-cursor\-color\f[B]\f[R] +The color of the cursor. +If this is not set, a default will be chosen. +.RS +.PP +Direct colors can be specified as either hex (\f[CR]#RRGGBB\f[R] or +\f[CR]RRGGBB\f[R]) or a named X11 color. +.PP +Additionally, special values can be used to set the color to match other +colors at runtime: +.IP \(bu 2 +\f[CR]cell\-foreground\f[R] \- Match the cell foreground color. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]cell\-background\f[R] \- Match the cell background color. +(Available since: 1.2.0) +.RE +.TP +\f[B]\f[CB]\-\-cursor\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the cursor. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +Note that a sufficiently small value such as 0.3 may be effectively +invisible and may make it difficult to find the cursor. +.TP +\f[B]\f[CB]\-\-cursor\-style\f[B]\f[R] +The style of the cursor. +This sets the default style. +A running program can still request an explicit cursor style using +escape sequences (such as \f[CR]CSI q\f[R]). +Shell configurations will often request specific cursor styles. +.RS +.PP +Note that shell integration will automatically set the cursor to a bar +at a prompt, regardless of this configuration. +You can disable that behavior by specifying +\f[CR]shell\-integration\-features = no\-cursor\f[R] or disabling shell +integration entirely. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]block\f[R] +.IP \(bu 2 +\f[CR]bar\f[R] +.IP \(bu 2 +\f[CR]underline\f[R] +.IP \(bu 2 +\f[CR]block_hollow\f[R] +.RE +.TP +\f[B]\f[CB]\-\-cursor\-style\-blink\f[B]\f[R] +Sets the default blinking state of the cursor. +This is just the default state; running programs may override the cursor +style using \f[CR]DECSCUSR\f[R] (\f[CR]CSI q\f[R]). +.RS +.PP +If this is not set, the cursor blinks by default. +Note that this is not the same as a \(lqtrue\(rq value, as noted below. +.PP +If this is not set at all (\f[CR]null\f[R]), then Ghostty will respect +DEC Mode 12 (AT&T cursor blink) as an alternate approach to turning +blinking on/off. +If this is set to any value other than null, DEC mode 12 will be ignored +but \f[CR]DECSCUSR\f[R] will still be respected. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]\f[R] (blank) +.IP \(bu 2 +\f[CR]true\f[R] +.IP \(bu 2 +\f[CR]false\f[R] +.RE +.TP +\f[B]\f[CB]\-\-cursor\-text\f[B]\f[R] +The color of the text under the cursor. +If this is not set, a default will be chosen. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +Since version 1.2.0, this can also be set to \f[CR]cell\-foreground\f[R] +to match the cell foreground color, or \f[CR]cell\-background\f[R] to +match the cell background color. +.TP +\f[B]\f[CB]\-\-cursor\-click\-to\-move\f[B]\f[R] +Enables the ability to move the cursor at prompts by clicking on a +location in the prompt text. +.RS +.PP +This feature requires shell integration, specifically prompt marking via +\f[CR]OSC 133\f[R]. +Some shells like Fish (v4) and Nu (0.111+) natively support this while +others may require additional configuration or Ghostty\(cqs shell +integration features to be enabled. +.PP +Depending on the shell, this works either by translating your click +position into a series of synthetic arrow key movements or by sending a +click event directly to the shell. +In either case, some unexpected behavior around edge cases is possible. +.RE +.TP +\f[B]\f[CB]\-\-mouse\-hide\-while\-typing\f[B]\f[R] +Hide the mouse immediately when typing. +The mouse becomes visible again when the mouse is used (button, +movement, etc.). +Platform\-specific behavior may dictate other scenarios where the mouse +is shown. +For example on macOS, the mouse is shown again when a new window, tab, +or split is created. +.TP +\f[B]\f[CB]\-\-scroll\-to\-bottom\f[B]\f[R] +When to scroll the surface to the bottom. +The format of this is a list of options to enable separated by commas. +If you prefix an option with \f[CR]no\-\f[R] then it is disabled. +If you omit an option, its default value is used. +.RS +.PP +Available options: +.IP \(bu 2 +\f[CR]keystroke\f[R] If set, scroll the surface to the bottom when the +user presses a key that results in data being sent to the PTY (basically +anything but modifiers or keybinds that are processed by Ghostty). +.IP \(bu 2 +\f[CR]output\f[R] If set, scroll the surface to the bottom if there is +new data to display (e.g., when new lines are printed to the terminal). +.PP +The default is \f[CR]keystroke, no\-output\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-mouse\-shift\-capture\f[B]\f[R] +Determines whether running programs can detect the shift key pressed +with a mouse click. +Typically, the shift key is used to extend mouse selection. +.RS +.PP +The default value of \f[CR]false\f[R] means that the shift key is not +sent with the mouse protocol and will extend the selection. +This value can be conditionally overridden by the running program with +the \f[CR]XTSHIFTESCAPE\f[R] sequence. +.PP +The value \f[CR]true\f[R] means that the shift key is sent with the +mouse protocol but the running program can override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +.PP +The value \f[CR]never\f[R] is the same as \f[CR]false\f[R] but the +running program cannot override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +The value \f[CR]always\f[R] is the same as \f[CR]true\f[R] but the +running program cannot override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +.PP +If you always want shift to extend mouse selection even if the program +requests otherwise, set this to \f[CR]never\f[R]. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]true\f[R] +.IP \(bu 2 +\f[CR]false\f[R] +.IP \(bu 2 +\f[CR]always\f[R] +.IP \(bu 2 +\f[CR]never\f[R] +.RE +.TP +\f[B]\f[CB]\-\-mouse\-reporting\f[B]\f[R] +Enable or disable mouse reporting. +When set to \f[CR]false\f[R], mouse events will not be reported to +terminal applications even if they request it. +This allows you to always use the mouse for selection and other terminal +UI interactions without applications capturing mouse input. +.RS +.PP +When set to \f[CR]true\f[R] (the default), terminal applications can +request mouse reporting and will receive mouse events according to their +requested mode. +.PP +This can be toggled at runtime using the +\f[CR]toggle_mouse_reporting\f[R] keybind action. +.RE +.TP +\f[B]\f[CB]\-\-mouse\-scroll\-multiplier\f[B]\f[R] +Multiplier for scrolling distance with the mouse wheel. +.RS +.PP +A prefix of \f[CR]precision:\f[R] or \f[CR]discrete:\f[R] can be used to +set the multiplier only for scrolling with the specific type of devices. +These can be comma\-separated to set both types of multipliers at the +same time, e.g. +\f[CR]precision:0.1,discrete:3\f[R]. +If no prefix is used, the multiplier applies to all scrolling devices. +Specifying a prefix was introduced in Ghostty 1.2.1. +.PP +The value will be clamped to [0.01, 10,000]. +Both of these are extreme and you\(cqre likely to have a bad experience +if you set either extreme. +.PP +The default value is \(lq3\(rq for discrete devices and \(lq1\(rq for +precision devices. +.RE +.TP +\f[B]\f[CB]\-\-background\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the background. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +.RS +.PP +On macOS, background opacity is disabled when the terminal enters native +fullscreen. +This is because the background becomes gray and it can cause widgets to +show through which isn\(cqt generally desirable. +.PP +On macOS, changing this configuration requires restarting Ghostty +completely. +.RE +.TP +\f[B]\f[CB]\-\-background\-opacity\-cells\f[B]\f[R] +Applies background opacity to cells with an explicit background color +set. +.RS +.PP +Normally, \f[CR]background\-opacity\f[R] is only applied to the window +background. +If a cell has an explicit background color set, such as red, then that +background color will be fully opaque. +An effect of this is that some terminal applications that repaint the +background color of the terminal such as a Neovim and Tmux may not +respect the \f[CR]background\-opacity\f[R] (by design). +.PP +Setting this to \f[CR]true\f[R] will apply the +\f[CR]background\-opacity\f[R] to all cells regardless of whether they +have an explicit background color set or not. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-background\-blur\f[B]\f[R] +Whether to blur the background when \f[CR]background\-opacity\f[R] is +less than 1. +.RS +.PP +Valid values are: +.IP \(bu 2 +a nonnegative integer specifying the \f[I]blur intensity\f[R] +.IP \(bu 2 +\f[CR]false\f[R], equivalent to a blur intensity of 0 +.IP \(bu 2 +\f[CR]true\f[R], equivalent to the default blur intensity of 20, which +is reasonable for a good looking blur. +Higher blur intensities may cause strange rendering and performance +issues. +.PP +On macOS 26.0 and later, there are additional special values that can be +set to use the native macOS glass effects: +.IP \(bu 2 +\f[CR]macos\-glass\-regular\f[R] \- Standard glass effect with some +opacity +.IP \(bu 2 +\f[CR]macos\-glass\-clear\f[R] \- Highly transparent glass effect +.PP +If the macOS values are set, then this implies +\f[CR]background\-blur = true\f[R] on non\-macOS platforms. +.PP +Supported on macOS and on some Linux desktop environments, including: +.IP \(bu 2 +KDE Plasma (Wayland and X11) +.PP +Warning: the exact blur intensity is \f[I]ignored\f[R] under KDE Plasma, +and setting this setting to either \f[CR]true\f[R] or any positive blur +intensity value would achieve the same effect. +The reason is that KWin, the window compositor powering Plasma, only has +one global blur setting and does not allow applications to specify +individual blur settings. +.PP +To configure KWin\(cqs global blur setting, open System Settings and go +to \(lqApps & Windows\(rq > \(lqWindow Management\(rq > \(lqDesktop +Effects\(rq and select the \(lqBlur\(rq plugin. +If disabled, enable it by ticking the checkbox to the left. +Then click on the \(lqConfigure\(rq button and there will be two sliders +that allow you to set background blur and noise intensities for all +apps, including Ghostty. +.PP +All other Linux desktop environments are as of now unsupported. +Users may need to set environment\-specific settings and/or install +third\-party plugins in order to support background blur, as there +isn\(cqt a unified interface for doing so. +.RE +.TP +\f[B]\f[CB]\-\-unfocused\-split\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of an unfocused split. +Unfocused splits by default are slightly faded out to make it easier to +see which split is focused. +To disable this feature, set this value to 1. +.RS +.PP +A value of 1 is fully opaque and a value of 0 is fully transparent. +Because \(lq0\(rq is not useful (it makes the window look very weird), +the minimum value is 0.15. +This value still looks weird but you can at least see what\(cqs going +on. +A value outside of the range 0.15 to 1 will be clamped to the nearest +valid value. +.RE +.TP +\f[B]\f[CB]\-\-unfocused\-split\-fill\f[B]\f[R] +The color to dim the unfocused split. +Unfocused splits are dimmed by rendering a semi\-transparent rectangle +over the split. +This sets the color of that rectangle and can be used to carefully +control the dimming effect. +.RS +.PP +This will default to the background color. +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]\-\-split\-divider\-color\f[B]\f[R] +The color of the split divider. +If this is not set, a default will be chosen. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-split\-preserve\-zoom\f[B]\f[R] +Control when Ghostty preserves a zoomed split. +Under normal circumstances, any operation that changes focus or layout +of the split tree in a window will unzoom any zoomed split. +This configuration allows you to control this behavior. +.RS +.PP +This can be set to \f[CR]navigation\f[R] to preserve the zoomed split +state when navigating to another split (e.g.\ via +\f[CR]goto_split\f[R]). +This will change the zoomed split to the newly focused split instead of +unzooming. +.PP +Any options can also be prefixed with \f[CR]no\-\f[R] to disable that +option. +.PP +Example: \f[CR]split\-preserve\-zoom = navigation\f[R] +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]\-\-search\-foreground\f[B]\f[R] +The foreground and background color for search matches. +This only applies to non\-focused search matches, also known as +candidate matches. +.RS +.PP +Valid values: +.IP \(bu 2 +Hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) +.IP \(bu 2 +Named X11 color +.IP \(bu 2 +\(lqcell\-foreground\(rq to match the cell foreground color +.IP \(bu 2 +\(lqcell\-background\(rq to match the cell background color +.PP +The default value is black text on a golden yellow background. +.RE +.PP +\f[B]\f[CB]\-\-search\-background\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-search\-selected\-foreground\f[B]\f[R] +The foreground and background color for the currently selected search +match. +This is the focused match that will be jumped to when using +next/previous search navigation. +.RS +.PP +Valid values: +.IP \(bu 2 +Hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) +.IP \(bu 2 +Named X11 color +.IP \(bu 2 +\(lqcell\-foreground\(rq to match the cell foreground color +.IP \(bu 2 +\(lqcell\-background\(rq to match the cell background color +.PP +The default value is black text on a soft peach background. +.RE +.PP +\f[B]\f[CB]\-\-search\-selected\-background\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-command\f[B]\f[R] +The command to run, usually a shell. +If this is not an absolute path, it\(cqll be looked up in the +\f[CR]PATH\f[R]. +If this is not set, a default will be looked up from your system. +The rules for the default lookup are: +.RS +.IP \(bu 2 +\f[CR]SHELL\f[R] environment variable +.IP \(bu 2 +\f[CR]passwd\f[R] entry (user information) +.PP +This can contain additional arguments to run the command with. +If additional arguments are provided, the command will be executed using +\f[CR]/bin/sh \-c\f[R] to offload shell argument expansion. +.PP +To avoid shell expansion altogether, prefix the command with +\f[CR]direct:\f[R], e.g. +\f[CR]direct:nvim foo\f[R]. +This will avoid the roundtrip to \f[CR]/bin/sh\f[R] but will also not +support any shell parsing such as arguments with spaces, filepaths with +\f[CR]\(ti\f[R], globs, etc. +(Available since: 1.2.0) +.PP +You can also explicitly prefix the command with \f[CR]shell:\f[R] to +always wrap the command in a shell. +This can be used to ensure our heuristics to choose the right mode are +not used in case they are wrong. +(Available since: 1.2.0) +.PP +This command will be used for all new terminal surfaces, i.e.\ new +windows, tabs, etc. +If you want to run a command only for the first terminal surface created +when Ghostty starts, use the \f[CR]initial\-command\f[R] configuration. +.PP +Ghostty supports the common \f[CR]\-e\f[R] flag for executing a command +with arguments. +For example, \f[CR]ghostty \-e fish \-\-with \-\-custom \-\-args\f[R]. +This flag sets the \f[CR]initial\-command\f[R] configuration, see that +for more information. +.RE +.TP +\f[B]\f[CB]\-\-initial\-command\f[B]\f[R] +This is the same as \(lqcommand\(rq, but only applies to the first +terminal surface created when Ghostty starts. +Subsequent terminal surfaces will use the \f[CR]command\f[R] +configuration. +.RS +.PP +After the first terminal surface is created (or closed), there is no way +to run this initial command again automatically. +As such, setting this at runtime works but will only affect the next +terminal surface if it is the first one ever created. +.PP +If you\(cqre using the \f[CR]ghostty\f[R] CLI there is also a shortcut +to set this with arguments directly: you can use the \f[CR]\-e\f[R] +flag. +For example: \f[CR]ghostty \-e fish \-\-with \-\-custom \-\-args\f[R]. +The \f[CR]\-e\f[R] flag automatically forces some other behaviors as +well: +.IP \(bu 2 +Disables shell expansion since the input is expected to already be +shell\-expanded by the upstream (e.g.\ the shell used to type in the +\f[CR]ghostty \-e\f[R] command). +.IP \(bu 2 +\f[CR]gtk\-single\-instance=false\f[R] \- This ensures that a new +instance is launched and the CLI args are respected. +.IP \(bu 2 +\f[CR]quit\-after\-last\-window\-closed=true\f[R] \- This ensures that +the Ghostty process will exit when the command exits. +Additionally, the \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] is +unset. +.IP \(bu 2 +\f[CR]shell\-integration=detect\f[R] (if not \f[CR]none\f[R]) \- This +prevents forcibly injecting any configured shell integration into the +command\(cqs environment. +With \f[CR]\-e\f[R] its highly unlikely that you\(cqre executing a shell +and forced shell integration is likely to cause problems (e.g.\ by +wrapping your command in a shell, setting env vars, etc.). +This is a safety measure to prevent unexpected behavior. +If you want shell integration with a \f[CR]\-e\f[R]\-executed command, +you must either name your binary appropriately or source the shell +integration script manually. +.RE +.TP +\f[B]\f[CB]\-\-notify\-on\-command\-finish\f[B]\f[R] +Controls when command finished notifications are sent. +There are three options: +.RS +.IP \(bu 2 +\f[CR]never\f[R] \- Never send notifications (the default). +.IP \(bu 2 +\f[CR]unfocused\f[R] \- Only send notifications if the surface that the +command is running in is not focused. +.IP \(bu 2 +\f[CR]always\f[R] \- Always send notifications. +.PP +Command finished notifications requires that either shell integration is +enabled, or that your shell sends OSC 133 escape sequences to mark the +start and end of commands. +.PP +On GTK, there is a context menu item that will enable command finished +notifications for a single command, overriding the \f[CR]never\f[R] and +\f[CR]unfocused\f[R] options. +.PP +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]\-\-notify\-on\-command\-finish\-action\f[B]\f[R] +If command finished notifications are enabled, this controls how the +user is notified. +.RS +.PP +Available options: +.IP \(bu 2 +\f[CR]bell\f[R] \- enabled by default +.IP \(bu 2 +\f[CR]notify\f[R] \- disabled by default +.PP +Options can be combined by listing them as a comma separated list. +Options can be negated by prefixing them with \f[CR]no\-\f[R]. +For example \f[CR]no\-bell,notify\f[R]. +.PP +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]\-\-notify\-on\-command\-finish\-after\f[B]\f[R] +If command finished notifications are enabled, this controls how long a +command must have been running before a notification will be sent. +The default is five seconds. +.RS +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +Available since 1.3.0 +.RE +.TP +\f[B]\f[CB]\-\-env\f[B]\f[R] +Extra environment variables to pass to commands launched in a terminal +surface. +The format is \f[CR]env=KEY=VALUE\f[R]. +.RS +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = bar=baz\f[R] +.PP +Setting \f[CR]env\f[R] to an empty string will reset the entire map to +default (empty). +.PP +\f[CR]env =\f[R] +.PP +Setting a key to an empty string will remove that particular key and +corresponding value from the map. +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = foo=\f[R] +.PP +will result in \f[CR]foo\f[R] not being passed to the launched commands. +.PP +Setting a key multiple times will overwrite previous entries. +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = foo=baz\f[R] +.PP +will result in \f[CR]foo=baz\f[R] being passed to the launched commands. +.PP +These environment variables will override any existing environment +variables set by Ghostty. +For example, if you set \f[CR]GHOSTTY_RESOURCES_DIR\f[R] then the value +you set here will override the value Ghostty typically automatically +injects. +.PP +These environment variables \f[I]will not\f[R] be passed to commands run +by Ghostty for other purposes, like \f[CR]open\f[R] or +\f[CR]xdg\-open\f[R] used to open URLs in your browser. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-input\f[B]\f[R] +Data to send as input to the command on startup. +.RS +.PP +The configured \f[CR]command\f[R] will be launched using the typical +rules, then the data specified as this input will be written to the pty +before any other input can be provided. +.PP +The bytes are sent as\-is with no additional encoding. +Therefore, be cautious about input that can contain control characters, +because this can be used to execute programs in a shell. +.PP +The format of this value is: +.IP \(bu 2 +\f[CR]raw:\f[R] \- Send raw text as\-is. +This uses Zig string literal syntax so you can specify control +characters and other standard escapes. +.IP \(bu 2 +\f[CR]path:\f[R] \- Read a filepath and send the contents. +The path must be to a file with finite length. +e.g.\ don\(cqt use a device such as \f[CR]/dev/stdin\f[R] or +\f[CR]/dev/urandom\f[R] as these will block terminal startup +indefinitely. +Files are limited to 10MB in size to prevent excessive memory usage. +If you have files larger than this you should write a script to read the +file and send it to the terminal. +.PP +If no valid prefix is found, it is assumed to be a \f[CR]raw:\f[R] +input. +This is an ergonomic choice to allow you to simply write +\f[CR]input = \(dqHello, world!\(dq\f[R] (a common case) without needing +to prefix every value with \f[CR]raw:\f[R]. +.PP +This can be repeated multiple times to send more data. +The data is concatenated directly with no separator characters in +between (e.g.\ no newline). +.PP +If any of the input sources do not exist, then none of the input will be +sent. +Input sources are not verified until the terminal is starting, so +missing paths will not show up in config validation. +.PP +Changing this configuration at runtime will only affect new terminals. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-wait\-after\-command\f[B]\f[R] +If true, keep the terminal open after the command exits. +Normally, the terminal window closes when the running command (such as a +shell) exits. +With this true, the terminal window will stay open until any keypress is +received. +.RS +.PP +This is primarily useful for scripts or debugging. +.RE +.TP +\f[B]\f[CB]\-\-abnormal\-command\-exit\-runtime\f[B]\f[R] +The number of milliseconds of runtime below which we consider a process +exit to be abnormal. +This is used to show an error message when the process exits too +quickly. +.RS +.PP +On Linux, this must be paired with a non\-zero exit code. +On macOS, we allow any exit code because of the way shell processes are +launched via the login command. +.RE +.TP +\f[B]\f[CB]\-\-scrollback\-limit\f[B]\f[R] +The size of the scrollback buffer in bytes. +This also includes the active screen. +No matter what this is set to, enough memory will always be allocated +for the visible screen and anything leftover is the limit for the +scrollback. +.RS +.PP +When this limit is reached, the oldest lines are removed from the +scrollback. +.PP +Scrollback currently exists completely in memory. +This means that the larger this value, the larger potential memory +usage. +Scrollback is allocated lazily up to this limit, so if you set this to a +very large value, it will not immediately consume a lot of memory. +.PP +This size is per terminal surface, not for the entire application. +.PP +It is not currently possible to set an unlimited scrollback buffer. +This is a future planned feature. +.PP +This can be changed at runtime but will only affect new terminal +surfaces. +.RE +.TP +\f[B]\f[CB]\-\-scrollbar\f[B]\f[R] +Control when the scrollbar is shown to scroll the scrollback buffer. +.RS +.PP +The default value is \f[CR]system\f[R]. +.PP +Valid values: +.IP \(bu 2 +\f[CR]system\f[R] \- Respect the system settings for when to show +scrollbars. +For example, on macOS, this will respect the \(lqScrollbar behavior\(rq +system setting which by default usually only shows scrollbars while +actively scrolling or hovering the gutter. +.IP \(bu 2 +\f[CR]never\f[R] \- Never show a scrollbar. +You can still scroll using the mouse, keybind actions, etc. +but you will not have a visual UI widget showing a scrollbar. +.RE +.TP +\f[B]\f[CB]\-\-link\f[B]\f[R] +Match a regular expression against the terminal text and associate +clicking it with an action. +This can be used to match URLs, file paths, etc. +Actions can be opening using the system opener (e.g.\ \f[CR]open\f[R] or +\f[CR]xdg\-open\f[R]) or executing any arbitrary binding action. +.RS +.PP +Links that are configured earlier take precedence over links that are +configured later. +.PP +A default link that matches a URL and opens it in the system opener +always exists. +This can be disabled using \f[CR]link\-url\f[R]. +.PP +TODO: This can\(cqt currently be set! +.RE +.TP +\f[B]\f[CB]\-\-link\-url\f[B]\f[R] +Enable URL matching. +URLs are matched on hover with control (Linux) or command (macOS) +pressed and open using the default system application for the linked +URL. +.RS +.PP +The URL matcher is always lowest priority of any configured links (see +\f[CR]link\f[R]). +If you want to customize URL matching, use \f[CR]link\f[R] and disable +this. +.RE +.TP +\f[B]\f[CB]\-\-link\-previews\f[B]\f[R] +Show link previews for a matched URL. +.RS +.PP +When true, link previews are shown for all matched URLs. +When false, link previews are never shown. +When set to \(lqosc8\(rq, link previews are only shown for hyperlinks +created with the OSC 8 sequence (in this case, the link text can differ +from the link destination). +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-maximize\f[B]\f[R] +Whether to start the window in a maximized state. +This setting applies to new windows and does not apply to tabs, splits, +etc. +However, this setting will apply to all new windows, not just the first +one. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-fullscreen\f[B]\f[R] +Start new windows in fullscreen. +This setting applies to new windows and does not apply to tabs, splits, +etc. +However, this setting will apply to all new windows, not just the first +one. +.RS +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]false\f[R] \- Don\(cqt start in fullscreen (default) +.IP \(bu 2 +\f[CR]true\f[R] \- Start in native fullscreen +.IP \(bu 2 +\f[CR]non\-native\f[R] \- (macOS only) Start in non\-native fullscreen, +hiding the menu bar. +This is faster than native fullscreen since it doesn\(cqt use +animations. +On non\-macOS platforms, this behaves the same as \f[CR]true\f[R]. +.IP \(bu 2 +\f[CR]non\-native\-visible\-menu\f[R] \- (macOS only) Start in +non\-native fullscreen, keeping the menu bar visible. +On non\-macOS platforms, behaves like \f[CR]true\f[R]. +.IP \(bu 2 +\f[CR]non\-native\-padded\-notch\f[R] \- (macOS only) Start in +non\-native fullscreen, hiding the menu bar but padding for the notch on +applicable devices. +On non\-macOS platforms, behaves like \f[CR]true\f[R]. +.PP +Important: tabs DO NOT WORK with non\-native fullscreen modes. +Non\-native fullscreen removes the titlebar and macOS native tabs +require the titlebar. +If you use tabs, use \f[CR]true\f[R] (native) instead. +.PP +On macOS, \f[CR]true\f[R] (native fullscreen) does not work if +\f[CR]window\-decoration\f[R] is set to \f[CR]false\f[R], because native +fullscreen on macOS requires window decorations. +.RE +.TP +\f[B]\f[CB]\-\-title\f[B]\f[R] +The title Ghostty will use for the window. +This will force the title of the window to be this title at all times +and Ghostty will ignore any set title escape sequences programs (such as +Neovim) may send. +.RS +.PP +If you want a blank title, set this to one or more spaces by quoting the +value. +For example, \f[CR]title = \(dq \(dq\f[R]. +This effectively hides the title. +This is necessary because setting a blank value resets the title to the +default value of the running program. +.PP +This configuration can be reloaded at runtime. +If it is set, the title will update for all windows. +If it is unset, the next title change escape sequence will be honored +but previous changes will not retroactively be set. +This latter case may require you to restart programs such as Neovim to +get the new title. +.RE +.TP +\f[B]\f[CB]\-\-class\f[B]\f[R] +The setting that will change the application class value. +.RS +.PP +This controls the class field of the \f[CR]WM_CLASS\f[R] X11 property +(when running under X11), the Wayland application ID (when running under +Wayland), and the bus name that Ghostty uses to connect to DBus. +.PP +Note that changing this value between invocations will create new, +separate instances, of Ghostty when running with +\f[CR]gtk\-single\-instance=true\f[R]. +See that option for more details. +.PP +Changing this value may break launching Ghostty from \f[CR].desktop\f[R] +files, via DBus activation, or systemd user services as the system is +expecting Ghostty to connect to DBus using the default \f[CR]class\f[R] +when it is launched. +.PP +The class name must follow the requirements defined \c +.UR https://docs.gtk.org/gio/type_func.Application.id_is_valid.html +in the GTK documentation +.UE \c +\&. +.PP +The default is \f[CR]com.mitchellh.ghostty\f[R]. +.PP +This only affects GTK builds. +.RE +.TP +\f[B]\f[CB]\-\-x11\-instance\-name\f[B]\f[R] +This controls the instance name field of the \f[CR]WM_CLASS\f[R] X11 +property when running under X11. +It has no effect otherwise. +.RS +.PP +The default is \f[CR]ghostty\f[R]. +.PP +This only affects GTK builds. +.RE +.TP +\f[B]\f[CB]\-\-working\-directory\f[B]\f[R] +The directory to change to after starting the command. +.RS +.PP +This setting is secondary to the +\f[CR]window\-inherit\-working\-directory\f[R] setting. +If a previous Ghostty terminal exists in the same process, +\f[CR]window\-inherit\-working\-directory\f[R] will take precedence. +Otherwise, this setting will be used. +Typically, this setting is used only for the first window. +.PP +The default is \f[CR]inherit\f[R] except in special scenarios listed +next. +On macOS, if Ghostty can detect it is launched from launchd +(double\-clicked) or \f[CR]open\f[R], then it defaults to +\f[CR]home\f[R]. +On Linux with GTK, if Ghostty can detect it was launched from a desktop +launcher, then it defaults to \f[CR]home\f[R]. +.PP +The value of this must be an absolute path, a path prefixed with +\f[CR]\(ti/\f[R] (the tilde will be expanded to the user\(cqs home +directory), or one of the special values below: +.IP \(bu 2 +\f[CR]home\f[R] \- The home directory of the executing user. +.IP \(bu 2 +\f[CR]inherit\f[R] \- The working directory of the launching process. +.RE +.TP +\f[B]\f[CB]\-\-keybind\f[B]\f[R] +Key bindings. +The format is \f[CR]trigger=action\f[R]. +Duplicate triggers will overwrite previously set values. +The list of actions is available in the documentation or using the +\f[CR]ghostty +list\-actions\f[R] command. +.RS +.PP +Trigger: \f[CR]+\f[R]\-separated list of keys and modifiers. +Example: \f[CR]ctrl+a\f[R], \f[CR]ctrl+shift+b\f[R], \f[CR]up\f[R]. +.PP +If the key is a single Unicode codepoint, the trigger will match any +presses that produce that codepoint. +These are impacted by keyboard layouts. +For example, \f[CR]a\f[R] will match the \f[CR]a\f[R] key on a QWERTY +keyboard, but will match the \f[CR]q\f[R] key on a AZERTY keyboard +(assuming US physical layout). +.PP +For Unicode codepoints, matching is done by comparing the set of +modifiers with the unmodified codepoint. +The unmodified codepoint is sometimes called an \(lqunshifted +character\(rq in other software, but all modifiers are considered, not +only shift. +For example, \f[CR]ctrl+a\f[R] will match \f[CR]a\f[R] but not +\f[CR]ctrl+shift+a\f[R] (which is \f[CR]A\f[R] on a US keyboard). +.PP +Further, codepoint matching is case\-insensitive and the unmodified +codepoint is always case folded for comparison. +As a result, \f[CR]ctrl+A\f[R] configured will match when +\f[CR]ctrl+a\f[R] is pressed. +Note that this means some key combinations are impossible depending on +keyboard layout. +For example, \f[CR]ctrl+_\f[R] is impossible on a US keyboard because +\f[CR]_\f[R] is \f[CR]shift+\-\f[R] and \f[CR]ctrl+shift+\-\f[R] is not +equal to \f[CR]ctrl+_\f[R] (because the modifiers don\(cqt match!). +More details on impossible key combinations can be found at this +excellent source written by Qt developers: +https://doc.qt.io/qt\-6/qkeysequence.html#keyboard\-layout\-issues +.PP +Physical key codes can be specified by using any of the key codes as +specified by the \c +.UR https://www.w3.org/TR/uievents-code/ +W3C specification +.UE \c +\&. +For example, \f[CR]KeyA\f[R] will match the physical \f[CR]a\f[R] key on +a US standard keyboard regardless of the keyboard layout. +These are case\-sensitive. +.PP +For aesthetic reasons, the w3c codes also support snake case. +For example, \f[CR]key_a\f[R] is equivalent to \f[CR]KeyA\f[R]. +The only exceptions are function keys, e.g.\ \f[CR]F1\f[R] is +\f[CR]f1\f[R] (no underscore). +This is a consequence of our internal code using snake case but is +purposely supported and tested so it is safe to use. +It allows an all\-lowercase binding which I find more aesthetically +pleasing. +.PP +Function keys such as \f[CR]insert\f[R], \f[CR]up\f[R], \f[CR]f5\f[R], +etc. +are also specified using the keys as specified by the previously linked +W3C specification. +.PP +Physical keys always match with a higher priority than Unicode +codepoints, so if you specify both \f[CR]a\f[R] and \f[CR]KeyA\f[R], the +physical key will always be used regardless of what order they are +configured. +.PP +The special key \f[CR]catch_all\f[R] can be used to match any key that +is not otherwise bound. +This can be combined with modifiers, for example +\f[CR]ctrl+catch_all\f[R] will match any key pressed with +\f[CR]ctrl\f[R] that is not otherwise bound. +When looking up a binding, Ghostty first tries to match +\f[CR]catch_all\f[R] with modifiers. +If no match is found and the event has modifiers, it falls back to +\f[CR]catch_all\f[R] without modifiers. +.PP +Valid modifiers are \f[CR]shift\f[R], \f[CR]ctrl\f[R] (alias: +\f[CR]control\f[R]), \f[CR]alt\f[R] (alias: \f[CR]opt\f[R], +\f[CR]option\f[R]), and \f[CR]super\f[R] (alias: \f[CR]cmd\f[R], +\f[CR]command\f[R]). +You may use the modifier or the alias. +When debugging keybinds, the non\-aliased modifier will always be used +in output. +.PP +Note: The fn or \(lqglobe\(rq key on keyboards are not supported as a +modifier. +This is a limitation of the operating systems and GUI toolkits that +Ghostty uses. +.PP +Some additional notes for triggers: +.IP \(bu 2 +modifiers cannot repeat, \f[CR]ctrl+ctrl+a\f[R] is invalid. +.IP \(bu 2 +modifiers and keys can be in any order, \f[CR]shift+a+ctrl\f[R] is +\f[I]weird\f[R], but valid. +.IP \(bu 2 +only a single key input is allowed, \f[CR]ctrl+a+b\f[R] is invalid. +.PP +You may also specify multiple triggers separated by \f[CR]>\f[R] to +require a sequence of triggers to activate the action. +For example, \f[CR]ctrl+a>n=new_window\f[R] will only trigger the +\f[CR]new_window\f[R] action if the user presses \f[CR]ctrl+a\f[R] +followed separately by \f[CR]n\f[R]. +In other software, this is sometimes called a leader key, a key chord, a +key table, etc. +There is no hardcoded limit on the number of parts in a sequence. +.PP +Warning: If you define a sequence as a CLI argument to +\f[CR]ghostty\f[R], you probably have to quote the keybind since +\f[CR]>\f[R] is a special character in most shells. +Example: ghostty \(enkeybind=`ctrl+a>n=new_window' +.PP +A trigger sequence has some special handling: +.IP \(bu 2 +Ghostty will wait an indefinite amount of time for the next key in the +sequence. +There is no way to specify a timeout. +The only way to force the output of a prefix key is to assign another +keybind to specifically output that key +(e.g.\ \f[CR]ctrl+a>ctrl+a=text:foo\f[R]) or press an unbound key which +will send both keys to the program. +.IP \(bu 2 +If an unbound key is pressed during a sequence and a +\f[CR]catch_all\f[R] binding exists that would \f[CR]ignore\f[R] the +input, the entire sequence is dropped and nothing happens. +Otherwise, the entire sequence is encoded and sent to the running +program as if no keybind existed. +.IP \(bu 2 +If a prefix in a sequence is previously bound, the sequence will +override the previous binding. +For example, if \f[CR]ctrl+a\f[R] is bound to \f[CR]new_window\f[R] and +\f[CR]ctrl+a>n\f[R] is bound to \f[CR]new_tab\f[R], pressing +\f[CR]ctrl+a\f[R] will do nothing. +.IP \(bu 2 +Adding to the above, if a previously bound sequence prefix is used in a +new, non\-sequence binding, the entire previously bound sequence will be +unbound. +For example, if you bind \f[CR]ctrl+a>n\f[R] and \f[CR]ctrl+a>t\f[R], +and then bind \f[CR]ctrl+a\f[R] directly, both \f[CR]ctrl+a>n\f[R] and +\f[CR]ctrl+a>t\f[R] will become unbound. +.IP \(bu 2 +Trigger sequences are not allowed for \f[CR]global:\f[R] or +\f[CR]all:\f[R]\-prefixed triggers. +This is a limitation we could remove in the future. +.PP +Action is the action to take when the trigger is satisfied. +It takes the format \f[CR]action\f[R] or \f[CR]action:param\f[R]. +The latter form is only valid if the action requires a parameter. +.IP \(bu 2 +\f[CR]ignore\f[R] \- Do nothing, ignore the key input. +This can be used to black hole certain inputs to have no effect. +.IP \(bu 2 +\f[CR]unbind\f[R] \- Remove the binding. +This makes it so the previous action is removed, and the key will be +sent through to the child command if it is printable. +Unbind will remove any matching trigger, including +\f[CR]physical:\f[R]\-prefixed triggers without specifying the prefix. +.IP \(bu 2 +\f[CR]csi:text\f[R] \- Send a CSI sequence. +e.g.\ \f[CR]csi:A\f[R] sends \(lqcursor up\(rq. +.IP \(bu 2 +\f[CR]esc:text\f[R] \- Send an escape sequence. +e.g.\ \f[CR]esc:d\f[R] deletes to the end of the word to the right. +.IP \(bu 2 +\f[CR]text:text\f[R] \- Send a string. +Uses Zig string literal syntax. +e.g.\ \f[CR]text:\(rsx15\f[R] sends Ctrl\-U. +.IP \(bu 2 +All other actions can be found in the documentation or by using the +\f[CR]ghostty +list\-actions\f[R] command. +.PP +Some notes for the action: +.IP \(bu 2 +The parameter is taken as\-is after the \f[CR]:\f[R]. +Double quotes or other mechanisms are included and NOT parsed. +If you want to send a string value that includes spaces, wrap the entire +trigger/action in double quotes. +Example: \f[CR]\-\-keybind=\(dqup=csi:A B\(dq\f[R] +.PP +There are some additional special values that can be specified for +keybind: +.IP \(bu 2 +\f[CR]keybind=clear\f[R] will clear all set keybindings. +Warning: this removes ALL keybindings up to this point, including the +default keybindings. +.PP +The keybind trigger can be prefixed with some special values to change +the behavior of the keybind. +These are: +.IP \(bu 2 +\f[CR]all:\f[R] +.RS 2 +.PP +Make the keybind apply to all terminal surfaces. +By default, keybinds only apply to the focused terminal surface. +If this is true, then the keybind will be sent to all terminal surfaces. +This only applies to actions that are surface\-specific. +For actions that are already global (e.g.\ \f[CR]quit\f[R]), this prefix +has no effect. +.PP +Available since: 1.0.0 +.RE +.IP \(bu 2 +\f[CR]global:\f[R] +.RS 2 +.PP +Make the keybind global. +By default, keybinds only work within Ghostty and under the right +conditions (application focused, sometimes terminal focused, etc.). +If you want a keybind to work globally across your system (e.g.\ even +when Ghostty is not focused), specify this prefix. +This prefix implies \f[CR]all:\f[R]. +.PP +Note: this does not work in all environments; see the additional notes +below for more information. +.PP +Available since: 1.0.0 on macOS, 1.2.0 on GTK +.RE +.IP \(bu 2 +\f[CR]unconsumed:\f[R] +.RS 2 +.PP +Do not consume the input. +By default, a keybind will consume the input, meaning that the +associated encoding (if any) will not be sent to the running program in +the terminal. +If you wish to send the encoded value to the program, specify the +\f[CR]unconsumed:\f[R] prefix before the entire keybind. +For example: \f[CR]unconsumed:ctrl+a=reload_config\f[R]. +\f[CR]global:\f[R] and \f[CR]all:\f[R]\-prefixed keybinds will always +consume the input regardless of this setting. +Since they are not associated with a specific terminal surface, +they\(cqre never encoded. +.PP +Available since: 1.0.0 +.RE +.IP \(bu 2 +\f[CR]performable:\f[R] +.RS 2 +.PP +Only consume the input if the action is able to be performed. +For example, the \f[CR]copy_to_clipboard\f[R] action will only consume +the input if there is a selection to copy. +If there is no selection, Ghostty behaves as if the keybind was not set. +This has no effect with \f[CR]global:\f[R] or \f[CR]all:\f[R]\-prefixed +keybinds. +For key sequences, this will reset the sequence if the action is not +performable (acting identically to not having a keybind set at all). +.PP +Performable keybinds will not appear as menu shortcuts in the +application menu. +This is because the menu shortcuts force the action to be performed +regardless of the state of the terminal. +Performable keybinds will still work, they just won\(cqt appear as a +shortcut label in the menu. +.PP +Available since: 1.1.0 +.RE +.PP +Keybind triggers are not unique per prefix combination. +For example, \f[CR]ctrl+a\f[R] and \f[CR]global:ctrl+a\f[R] are not two +separate keybinds. +The keybind set later will overwrite the keybind set earlier. +In this case, the \f[CR]global:\f[R] keybind will be used. +.PP +Multiple prefixes can be specified. +For example, \f[CR]global:unconsumed:ctrl+a=reload_config\f[R] will make +the keybind global and not consume the input to reload the config. +.PP +Note: \f[CR]global:\f[R] is only supported on macOS and certain Linux +platforms. +.PP +On macOS, this feature requires accessibility permissions to be granted +to Ghostty. +When a \f[CR]global:\f[R] keybind is specified and Ghostty is launched +or reloaded, Ghostty will attempt to request these permissions. +If the permissions are not granted, the keybind will not work. +On macOS, you can find these permissions in System Preferences \-> +Privacy & Security \-> Accessibility. +.PP +On Linux, you need a desktop environment that implements the \c +.UR https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html +Global Shortcuts +.UE \c +\ protocol as a part of its XDG desktop protocol implementation. +Desktop environments that are known to support (or not support) global +shortcuts include: +.IP \(bu 2 +Users using KDE Plasma (since \c +.UR https://kde.org/announcements/plasma/5/5.27.0/#wayland +5.27 +.UE \c +) and GNOME (since \c +.UR https://release.gnome.org/48/#and-thats-not-all +48 +.UE \c +) should be able to use global shortcuts with little to no +configuration. +.IP \(bu 2 +Some manual configuration is required on Hyprland. +Consult the steps outlined on the \c +.UR https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts +Hyprland Wiki +.UE \c +\ to set up global shortcuts correctly. +(Important: \c +.UR https://wiki.hyprland.org/Hypr-Ecosystem/xdg-desktop-portal-hyprland/ +\f[CR]xdg\-desktop\-portal\-hyprland\f[R] +.UE \c +\ must also be installed!) +.IP \(bu 2 +Notably, global shortcuts have not been implemented on wlroots\-based +compositors like Sway (see \c +.UR https://github.com/emersion/xdg-desktop-portal-wlr/issues/240 +upstream issue +.UE \c +). +.SS Chained Actions +.PP +A keybind can have multiple actions by using the \f[CR]chain\f[R] +keyword for subsequent actions. +When a keybind is activated, all chained actions are executed in order. +The syntax is: +.IP +.EX +keybind = ctrl+a=new_window +keybind = chain=goto_split:left +.EE +.PP +This binds \f[CR]ctrl+a\f[R] to first open a new window, then move focus +to the left split. +Each \f[CR]chain\f[R] entry appends an action to the most recently +defined keybind. +You can chain as many actions as you want: +.IP +.EX +keybind = ctrl+a=new_window +keybind = chain=goto_split:left +keybind = chain=toggle_fullscreen +.EE +.PP +Chained actions cannot have prefixes like \f[CR]global:\f[R] or +\f[CR]unconsumed:\f[R]. +The flags from the original keybind apply to the entire chain. +.PP +Chained actions work with key sequences as well. +For example: +.IP +.EX +keybind = ctrl+a>n=new_window +keybind = chain=goto_split:left +.EE +.PP +Chains with key sequences apply to the most recent binding in the +sequence. +.PP +Chained keybinds are available since Ghostty 1.3.0. +.SS Key Tables +.PP +You may also create a named set of keybindings known as a \(lqkey +table.\(rq A key table must be explicitly activated for the bindings to +become available. +This can be used to implement features such as a \(lqcopy mode\(rq, +\(lqvim mode\(rq, etc. +Generically, this can implement modal keyboard input. +.PP +Key tables are defined using the syntax \f[CR]
/\f[R]. +The \f[CR]\f[R] value is everything documented above for +keybinds. +The \f[CR]
\f[R] value is the name of the key table. +Table names can contain anything except \f[CR]/\f[R], \f[CR]=\f[R], +\f[CR]+\f[R], and \f[CR]>\f[R]. +The characters \f[CR]+\f[R] and \f[CR]>\f[R] are reserved for keybind +syntax (modifier combinations and key sequences). +For example \f[CR]foo/ctrl+a=new_window\f[R] defines a binding within a +table named \f[CR]foo\f[R]. +.PP +Tables are activated and deactivated using the binding actions +\f[CR]activate_key_table:\f[R] and +\f[CR]deactivate_key_table\f[R]. +Other table related binding actions also exist; see the documentation +for a full list. +These are the primary way to interact with key tables. +.PP +Binding lookup proceeds from the innermost table outward, so keybinds in +the default table remain available unless explicitly unbound in an inner +table. +.PP +A key table has some special syntax and handling: +.IP \(bu 2 +\f[CR]/\f[R] (with no binding) defines and clears a table, +resetting all of its keybinds and settings. +.IP \(bu 2 +You cannot activate a table that is already the innermost table; such +attempts are ignored. +However, the same table can appear multiple times in the stack as long +as it is not innermost (e.g., \f[CR]A \-> B \-> A \-> B\f[R] is valid, +but \f[CR]A \-> B \-> B\f[R] is not). +.IP \(bu 2 +A table can be activated in one\-shot mode using +\f[CR]activate_key_table_once:\f[R]. +A one\-shot table is automatically deactivated when any non\-catch\-all +binding is invoked. +.IP \(bu 2 +Key sequences work within tables: +\f[CR]foo/ctrl+a>ctrl+b=new_window\f[R]. +If an invalid key is pressed, the sequence ends but the table remains +active. +.IP \(bu 2 +Chain actions work within tables, the \f[CR]chain\f[R] keyword applies +to the most recently defined binding in the table. +e.g.\ if you set \f[CR]table/ctrl+a=new_window\f[R] you can chain by +using \f[CR]chain=text:hello\f[R]. +Important: chain itself doesn\(cqt get prefixed with the table name, +since it applies to the most recent binding in any table. +.IP \(bu 2 +Prefixes like \f[CR]global:\f[R] work within tables: +\f[CR]foo/global:ctrl+a=new_window\f[R]. +.PP +Key tables are available since Ghostty 1.3.0. +.RE +.TP +\f[B]\f[CB]\-\-key\-remap\f[B]\f[R] +Remap modifier keys within Ghostty. +This allows you to swap or reassign modifier keys at the application +level without affecting system\-wide settings. +.RS +.PP +The format is \f[CR]from=to\f[R] where both \f[CR]from\f[R] and +\f[CR]to\f[R] are modifier key names. +You can use generic names like \f[CR]ctrl\f[R], \f[CR]alt\f[R], +\f[CR]shift\f[R], \f[CR]super\f[R] (macOS: +\f[CR]cmd\f[R]/\f[CR]command\f[R]) or sided names like +\f[CR]left_ctrl\f[R], \f[CR]right_alt\f[R], etc. +.PP +This will NOT change keyboard layout or key encodings outside of +Ghostty. +For example, on macOS, \f[CR]option+a\f[R] may still produce +\f[CR]å\f[R] even if \f[CR]option\f[R] is remapped to \f[CR]ctrl\f[R]. +Desktop environments usually handle key layout long before Ghostty +receives the key events. +.PP +Example: +.IP +.EX +key\-remap = ctrl=super +key\-remap = left_control=right_alt +.EE +.PP +Important notes: +.IP \(bu 2 +This is a one\-way remap. +If you remap \f[CR]ctrl=super\f[R], then the physical Ctrl key acts as +Super, but the Super key remains Super. +.IP \(bu 2 +Remaps are not transitive. +If you remap \f[CR]ctrl=super\f[R] and \f[CR]alt=ctrl\f[R], pressing Alt +will produce Ctrl, NOT Super. +.IP \(bu 2 +This affects both keybind matching and terminal input encoding. +This does NOT impact keyboard layout or how keys are interpreted prior +to Ghostty receiving them. +For example, \f[CR]option+a\f[R] on macOS may still produce \f[CR]å\f[R] +even if \f[CR]option\f[R] is remapped to \f[CR]ctrl\f[R]. +.IP \(bu 2 +Generic modifiers (e.g.\ \f[CR]ctrl\f[R]) match both left and right +physical keys. +Use sided names (e.g.\ \f[CR]left_ctrl\f[R]) to remap only one side. +.PP +There are other edge case scenarios that may not behave as expected but +are working as intended the way this feature is designed: +.IP \(bu 2 +On macOS, bindings in the main menu will trigger before any remapping is +done. +This is because macOS itself handles menu activation and this happens +before Ghostty receives the key event. +To workaround this, you should unbind the menu items and rebind them +using your desired modifier. +.PP +This configuration can be repeated to specify multiple remaps. +.RE +.TP +\f[B]\f[CB]\-\-window\-padding\-x\f[B]\f[R] +Horizontal window padding. +This applies padding between the terminal cells and the left and right +window borders. +The value is in points, meaning that it will be scaled appropriately for +screen DPI. +.RS +.PP +If this value is set too large, the screen will render nothing, because +the grid will be completely squished by the padding. +It is up to you as the user to pick a reasonable value. +If you pick an unreasonable value, a warning will appear in the logs. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e. +new windows, tabs, etc. +.PP +To set a different left and right padding, specify two numerical values +separated by a comma. +For example, \f[CR]window\-padding\-x = 2,4\f[R] will set the left +padding to 2 and the right padding to 4. +If you want to set both paddings to the same value, you can use a single +value. +For example, \f[CR]window\-padding\-x = 2\f[R] will set both paddings to +2. +.RE +.TP +\f[B]\f[CB]\-\-window\-padding\-y\f[B]\f[R] +Vertical window padding. +This applies padding between the terminal cells and the top and bottom +window borders. +The value is in points, meaning that it will be scaled appropriately for +screen DPI. +.RS +.PP +If this value is set too large, the screen will render nothing, because +the grid will be completely squished by the padding. +It is up to you as the user to pick a reasonable value. +If you pick an unreasonable value, a warning will appear in the logs. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e.\ new windows, tabs, etc. +.PP +To set a different top and bottom padding, specify two numerical values +separated by a comma. +For example, \f[CR]window\-padding\-y = 2,4\f[R] will set the top +padding to 2 and the bottom padding to 4. +If you want to set both paddings to the same value, you can use a single +value. +For example, \f[CR]window\-padding\-y = 2\f[R] will set both paddings to +2. +.RE +.TP +\f[B]\f[CB]\-\-window\-padding\-balance\f[B]\f[R] +The viewport dimensions are usually not perfectly divisible by the cell +size. +In this case, some extra padding on the end of a column and the bottom +of the final row may exist. +If this is \f[CR]true\f[R], then this extra padding is automatically +balanced between all four edges to minimize imbalance on one side. +If this is \f[CR]false\f[R], the top left grid cell will always hug the +edge with zero padding other than what may be specified with the other +\f[CR]window\-padding\f[R] options. +.RS +.PP +If other \f[CR]window\-padding\f[R] fields are set and this is +\f[CR]true\f[R], this will still apply. +The other padding is applied first and may affect how many grid cells +actually exist, and this is applied last in order to balance the padding +given a certain viewport size and grid cell size. +.RE +.TP +\f[B]\f[CB]\-\-window\-padding\-color\f[B]\f[R] +The color of the padding area of the window. +Valid values are: +.RS +.IP \(bu 2 +\f[CR]background\f[R] \- The background color specified in +\f[CR]background\f[R]. +.IP \(bu 2 +\f[CR]extend\f[R] \- Extend the background color of the nearest grid +cell. +.IP \(bu 2 +\f[CR]extend\-always\f[R] \- Same as \(lqextend\(rq but always extends +without applying any of the heuristics that disable extending noted +below. +.PP +The \(lqextend\(rq value will be disabled in certain scenarios. +On primary screen applications (e.g.\ not something like Neovim), the +color will not be extended vertically if any of the following are true: +.IP \(bu 2 +The nearest row has any cells that have the default background color. +The thinking is that in this case, the default background color looks +fine as a padding color. +.IP \(bu 2 +The nearest row is a prompt row (requires shell integration). +The thinking here is that prompts often contain powerline glyphs that do +not look good extended. +.IP \(bu 2 +The nearest row contains a perfect fit powerline character. +These don\(cqt look good extended. +.RE +.TP +\f[B]\f[CB]\-\-window\-vsync\f[B]\f[R] +Synchronize rendering with the screen refresh rate. +If true, this will minimize tearing and align redraws with the screen +but may cause input latency. +If false, this will maximize redraw frequency but may cause tearing, and +under heavy load may use more CPU and power. +.RS +.PP +This defaults to true because out\-of\-sync rendering on macOS can cause +kernel panics (macOS 14.4+) and performance issues for external displays +over some hardware such as DisplayLink. +If you want to minimize input latency, set this to false with the known +aforementioned risks. +.PP +Changing this value at runtime will only affect new terminals. +.PP +This setting is only supported currently on macOS. +.RE +.TP +\f[B]\f[CB]\-\-window\-inherit\-working\-directory\f[B]\f[R] +If true, new windows will inherit the working directory of the +previously focused window. +If no window was previously focused, the default working directory will +be used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]\-\-tab\-inherit\-working\-directory\f[B]\f[R] +If true, new tabs will inherit the working directory of the previously +focused tab. +If no tab was previously focused, the default working directory will be +used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]\-\-split\-inherit\-working\-directory\f[B]\f[R] +If true, new split panes will inherit the working directory of the +previously focused split. +If no split was previously focused, the default working directory will +be used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]\-\-window\-inherit\-font\-size\f[B]\f[R] +If true, new windows and tabs will inherit the font size of the +previously focused window. +If no window was previously focused, the default font size will be used. +If this is false, the default font size specified in the configuration +\f[CR]font\-size\f[R] will be used. +.TP +\f[B]\f[CB]\-\-window\-decoration\f[B]\f[R] +Configure a preference for window decorations. +This setting specifies a \f[I]preference\f[R]; the actual OS, desktop +environment, window manager, etc. +may override this preference. +Ghostty will do its best to respect this preference but it may not +always be possible. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +All window decorations will be disabled. +Titlebar, borders, etc. +will not be shown. +On macOS, this will also disable tabs (enforced by the system). +.RE +.IP \(bu 2 +\f[CR]auto\f[R] +.RS 2 +.PP +Automatically decide to use either client\-side or server\-side +decorations based on the detected preferences of the current OS and +desktop environment. +This option usually makes Ghostty look the most \(lqnative\(rq for your +desktop. +.RE +.IP \(bu 2 +\f[CR]client\f[R] +.RS 2 +.PP +Prefer client\-side decorations. +.PP +Available since: 1.1.0 +.RE +.IP \(bu 2 +\f[CR]server\f[R] +.RS 2 +.PP +Prefer server\-side decorations. +This is only relevant on Linux with GTK, either on X11, or Wayland on a +compositor that supports the \f[CR]org_kde_kwin_server_decoration\f[R] +protocol (e.g.\ KDE Plasma, but almost any non\-GNOME desktop supports +this protocol). +.PP +If \f[CR]server\f[R] is set but the environment doesn\(cqt support +server\-side decorations, client\-side decorations will be used instead. +.PP +Available since: 1.1.0 +.RE +.PP +The default value is \f[CR]auto\f[R]. +.PP +For the sake of backwards compatibility and convenience, this setting +also accepts boolean true and false values. +If set to \f[CR]true\f[R], this is equivalent to \f[CR]auto\f[R]. +If set to \f[CR]false\f[R], this is equivalent to \f[CR]none\f[R]. +This is convenient for users who live primarily on systems that don\(cqt +differentiate between client and server\-side decorations (e.g.\ macOS +and Windows). +.PP +The \(lqtoggle_window_decorations\(rq keybind action can be used to +create a keybinding to toggle this setting at runtime. +.PP +macOS: To hide the titlebar without removing the native window borders +or rounded corners, use \f[CR]macos\-titlebar\-style = hidden\f[R] +instead. +.RE +.TP +\f[B]\f[CB]\-\-window\-title\-font\-family\f[B]\f[R] +The font that will be used for the application\(cqs window and tab +titles. +.RS +.PP +If this setting is left unset, the system default font will be used. +.PP +Note: any font available on the system may be used, this font is not +required to be a fixed\-width font. +.PP +Available since: 1.0.0 on macOS, 1.1.0 on GTK +.RE +.TP +\f[B]\f[CB]\-\-window\-subtitle\f[B]\f[R] +The text that will be displayed in the subtitle of the window. +Valid values: +.RS +.IP \(bu 2 +\f[CR]false\f[R] \- Disable the subtitle. +.IP \(bu 2 +\f[CR]working\-directory\f[R] \- Set the subtitle to the working +directory of the surface. +.PP +This feature is only supported on GTK. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-window\-theme\f[B]\f[R] +The theme to use for the windows. +Valid values: +.RS +.IP \(bu 2 +\f[CR]auto\f[R] \- Determine the theme based on the configured terminal +background color. +This has no effect if the \(lqtheme\(rq configuration has separate light +and dark themes. +In that case, the behavior of \(lqauto\(rq is equivalent to +\(lqsystem\(rq. +.IP \(bu 2 +\f[CR]system\f[R] \- Use the system theme. +.IP \(bu 2 +\f[CR]light\f[R] \- Use the light theme regardless of system theme. +.IP \(bu 2 +\f[CR]dark\f[R] \- Use the dark theme regardless of system theme. +.IP \(bu 2 +\f[CR]ghostty\f[R] \- Use the background and foreground colors specified +in the Ghostty configuration. +This is only supported on Linux builds. +.PP +On macOS, if \f[CR]macos\-titlebar\-style\f[R] is \f[CR]tabs\f[R] or +\f[CR]transparent\f[R], the window theme will be automatically set based +on the luminosity of the terminal background color. +This only applies to terminal windows. +This setting will still apply to non\-terminal windows within Ghostty. +.PP +This is currently only supported on macOS and Linux. +.RE +.TP +\f[B]\f[CB]\-\-window\-colorspace\f[B]\f[R] +The color space to use when interpreting terminal colors. +\(lqTerminal colors\(rq refers to colors specified in your configuration +and colors produced by direct\-color SGR sequences. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]srgb\f[R] \- Interpret colors in the sRGB color space. +This is the default. +.IP \(bu 2 +\f[CR]display\-p3\f[R] \- Interpret colors in the Display P3 color +space. +.PP +This setting is currently only supported on macOS. +.RE +.TP +\f[B]\f[CB]\-\-window\-height\f[B]\f[R] +The initial window size. +This size is in terminal grid cells by default. +Both values must be set to take effect. +If only one value is set, it is ignored. +.RS +.PP +We don\(cqt currently support specifying a size in pixels but a future +change can enable that. +If this isn\(cqt specified, the app runtime will determine some default +size. +.PP +Note that the window manager may put limits on the size or override the +size. +For example, a tiling window manager may force the window to be a +certain size to fit within the grid. +There is nothing Ghostty will do about this, but it will make an effort. +.PP +Sizes larger than the screen size will be clamped to the screen size. +This can be used to create a maximized\-by\-default window size. +.PP +This will not affect new tabs, splits, or other nested terminal +elements. +This only affects the initial window size of any new window. +Changing this value will not affect the size of the window after it has +been created. +This is only used for the initial size. +.PP +BUG: On Linux with GTK, the calculated window size will not properly +take into account window decorations. +As a result, the grid dimensions will not exactly match this +configuration. +If window decorations are disabled (see \f[CR]window\-decoration\f[R]), +then this will work as expected. +.PP +Windows smaller than 10 wide by 4 high are not allowed. +.RE +.PP +\f[B]\f[CB]\-\-window\-width\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-window\-position\-x\f[B]\f[R] +The starting window position. +This position is in pixels and is relative to the top\-left corner of +the primary monitor. +Both values must be set to take effect. +If only one value is set, it is ignored. +.RS +.PP +Note that the window manager may put limits on the position or override +the position. +For example, a tiling window manager may force the window to be a +certain position to fit within the grid. +There is nothing Ghostty will do about this, but it will make an effort. +.PP +Also note that negative values are also up to the operating system and +window manager. +Some window managers may not allow windows to be placed off\-screen. +.PP +Invalid positions are runtime\-specific, but generally the positions are +clamped to the nearest valid position. +.PP +On macOS, the window position is relative to the top\-left corner of the +visible screen area. +This means that if the menu bar is visible, the window will be placed +below the menu bar. +.PP +Note: this is only supported on macOS. +The GTK runtime does not support setting the window position, as windows +are only allowed position themselves in X11 and not Wayland. +.RE +.PP +\f[B]\f[CB]\-\-window\-position\-y\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-window\-save\-state\f[B]\f[R] +Whether to enable saving and restoring window state. +Window state includes their position, size, tabs, splits, etc. +Some window state requires shell integration, such as preserving working +directories. +See \f[CR]shell\-integration\f[R] for more information. +.RS +.PP +There are three valid values for this configuration: +.IP \(bu 2 +\f[CR]default\f[R] will use the default system behavior. +On macOS, this will only save state if the application is forcibly +terminated or if it is configured systemwide via Settings.app. +.IP \(bu 2 +\f[CR]never\f[R] will never save window state. +.IP \(bu 2 +\f[CR]always\f[R] will always save window state whenever Ghostty is +exited. +.PP +If you change this value to \f[CR]never\f[R] while Ghostty is not +running, the next Ghostty launch will NOT restore the window state. +.PP +If you change this value to \f[CR]default\f[R] while Ghostty is not +running and the previous exit saved state, the next Ghostty launch will +still restore the window state. +This is because Ghostty cannot know if the previous exit was due to a +forced save or not (macOS doesn\(cqt provide this information). +.PP +If you change this value so that window state is saved while Ghostty is +not running, the previous window state will not be restored because +Ghostty only saves state on exit if this is enabled. +.PP +The default value is \f[CR]default\f[R]. +.PP +This is currently only supported on macOS. +This has no effect on Linux. +.RE +.TP +\f[B]\f[CB]\-\-window\-step\-resize\f[B]\f[R] +Resize the window in discrete increments of the focused surface\(cqs +cell size. +If this is disabled, surfaces are resized in pixel increments. +Currently only supported on macOS. +.TP +\f[B]\f[CB]\-\-window\-new\-tab\-position\f[B]\f[R] +The position where new tabs are created. +Valid values: +.RS +.IP \(bu 2 +\f[CR]current\f[R] \- Insert the new tab after the currently focused +tab, or at the end if there are no focused tabs. +.IP \(bu 2 +\f[CR]end\f[R] \- Insert the new tab at the end of the tab list. +.RE +.TP +\f[B]\f[CB]\-\-window\-show\-tab\-bar\f[B]\f[R] +Whether to show the tab bar. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]always\f[R] +.RS 2 +.PP +Always display the tab bar, even when there\(cqs only one tab. +.PP +Available since: 1.2.0 +.RE +.IP \(bu 2 +\f[CR]auto\f[R] \f[I](default)\f[R] +.RS 2 +.PP +Automatically show and hide the tab bar. +The tab bar is only shown when there are two or more tabs present. +.RE +.IP \(bu 2 +\f[CR]never\f[R] +.RS 2 +.PP +Never show the tab bar. +Tabs are only accessible via the tab overview or by keybind actions. +.RE +.PP +Currently only supported on Linux (GTK). +.RE +.TP +\f[B]\f[CB]\-\-window\-titlebar\-background\f[B]\f[R] +Background color for the window titlebar. +This only takes effect if window\-theme is set to ghostty. +Currently only supported in the GTK app runtime. +.RS +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]\-\-window\-titlebar\-foreground\f[B]\f[R] +Foreground color for the window titlebar. +This only takes effect if window\-theme is set to ghostty. +Currently only supported in the GTK app runtime. +.RS +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]\-\-resize\-overlay\f[B]\f[R] +This controls when resize overlays are shown. +Resize overlays are a transient popup that shows the size of the +terminal while the surfaces are being resized. +The possible options are: +.RS +.IP \(bu 2 +\f[CR]always\f[R] \- Always show resize overlays. +.IP \(bu 2 +\f[CR]never\f[R] \- Never show resize overlays. +.IP \(bu 2 +\f[CR]after\-first\f[R] \- The resize overlay will not appear when the +surface is first created, but will show up if the surface is +subsequently resized. +.PP +The default is \f[CR]after\-first\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-resize\-overlay\-position\f[B]\f[R] +If resize overlays are enabled, this controls the position of the +overlay. +The possible options are: +.RS +.IP \(bu 2 +\f[CR]center\f[R] +.IP \(bu 2 +\f[CR]top\-left\f[R] +.IP \(bu 2 +\f[CR]top\-center\f[R] +.IP \(bu 2 +\f[CR]top\-right\f[R] +.IP \(bu 2 +\f[CR]bottom\-left\f[R] +.IP \(bu 2 +\f[CR]bottom\-center\f[R] +.IP \(bu 2 +\f[CR]bottom\-right\f[R] +.PP +The default is \f[CR]center\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-resize\-overlay\-duration\f[B]\f[R] +If resize overlays are enabled, this controls how long the overlay is +visible on the screen before it is hidden. +The default is ¾ of a second or 750 ms. +.RS +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +Available since 1.0.0 +.RE +.TP +\f[B]\f[CB]\-\-focus\-follows\-mouse\f[B]\f[R] +If true, when there are multiple split panes, the mouse selects the pane +that is focused. +This only applies to the currently focused window; e.g. +mousing over a split in an unfocused window will not focus that split +and bring the window to front. +.RS +.PP +Default is false. +.RE +.TP +\f[B]\f[CB]\-\-clipboard\-read\f[B]\f[R] +Whether to allow programs running in the terminal to read/write to the +system clipboard (OSC 52, for googling). +The default is to allow clipboard reading after prompting the user and +allow writing unconditionally. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]ask\f[R] +.IP \(bu 2 +\f[CR]allow\f[R] +.IP \(bu 2 +\f[CR]deny\f[R] +.RE +.PP +\f[B]\f[CB]\-\-clipboard\-write\f[B]\f[R] +.TP +\f[B]\f[CB]\-\-clipboard\-trim\-trailing\-spaces\f[B]\f[R] +Trims trailing whitespace on data that is copied to the clipboard. +This does not affect data sent to the clipboard via +\f[CR]clipboard\-write\f[R]. +This only applies to trailing whitespace on lines that have other +characters. +Completely blank lines always have their whitespace trimmed. +.TP +\f[B]\f[CB]\-\-clipboard\-paste\-protection\f[B]\f[R] +Require confirmation before pasting text that appears unsafe. +This helps prevent a \(lqcopy/paste attack\(rq where a user may +accidentally execute unsafe commands by pasting text with newlines. +.TP +\f[B]\f[CB]\-\-clipboard\-paste\-bracketed\-safe\f[B]\f[R] +If true, bracketed pastes will be considered safe. +By default, bracketed pastes are considered safe. +\(lqBracketed\(rq pastes are pastes while the running program has +bracketed paste mode enabled (a setting set by the running program, not +the terminal emulator). +.TP +\f[B]\f[CB]\-\-title\-report\f[B]\f[R] +Enables or disabled title reporting (CSI 21 t). +This escape sequence allows the running program to query the terminal +title. +This is a common security issue and is disabled by default. +.RS +.PP +Warning: This can expose sensitive information at best and enable +arbitrary code execution at worst (with a maliciously crafted title and +a minor amount of user interaction). +.PP +Available since: 1.0.1 +.RE +.TP +\f[B]\f[CB]\-\-image\-storage\-limit\f[B]\f[R] +The total amount of bytes that can be used for image data (e.g.\ the +Kitty image protocol) per terminal screen. +The maximum value is 4,294,967,295 (4GiB). +The default is 320MB. +If this is set to zero, then all image protocols will be disabled. +.RS +.PP +This value is separate for primary and alternate screens so the +effective limit per surface is double. +.RE +.TP +\f[B]\f[CB]\-\-copy\-on\-select\f[B]\f[R] +Whether to automatically copy selected text to the clipboard. +\f[CR]true\f[R] will prefer to copy to the selection clipboard, +otherwise it will copy to the system clipboard. +.RS +.PP +The value \f[CR]clipboard\f[R] will always copy text to the selection +clipboard as well as the system clipboard. +.PP +Middle\-click paste will always use the selection clipboard. +Middle\-click paste is always enabled even if this is \f[CR]false\f[R]. +.PP +The default value is true on Linux and macOS. +.RE +.TP +\f[B]\f[CB]\-\-right\-click\-action\f[B]\f[R] +The action to take when the user right\-clicks on the terminal surface. +.RS +.PP +Valid values: * \f[CR]context\-menu\f[R] \- Show the context menu. +* \f[CR]paste\f[R] \- Paste the contents of the clipboard. +* \f[CR]copy\f[R] \- Copy the selected text to the clipboard. +* \f[CR]copy\-or\-paste\f[R] \- If there is a selection, copy the +selected text to the clipboard; otherwise, paste the contents of the +clipboard. +* \f[CR]ignore\f[R] \- Do nothing, ignore the right\-click. +.PP +The default value is \f[CR]context\-menu\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-click\-repeat\-interval\f[B]\f[R] +The time in milliseconds between clicks to consider a click a repeat +(double, triple, etc.) +or an entirely new single click. +A value of zero will use a platform\-specific default. +The default on macOS is determined by the OS settings. +On every other platform it is 500ms. +.TP +\f[B]\f[CB]\-\-config\-file\f[B]\f[R] +Additional configuration files to read. +This configuration can be repeated to read multiple configuration files. +Configuration files themselves can load more configuration files. +Paths are relative to the file containing the \f[CR]config\-file\f[R] +directive. +For command\-line arguments, paths are relative to the current working +directory. +.RS +.PP +Prepend a ? +character to the file path to suppress errors if the file does not +exist. +If you want to include a file that begins with a literal ? +character, surround the file path in double quotes (\(lq). +.PP +Cycles are not allowed. +If a cycle is detected, an error will be logged and the configuration +file will be ignored. +.PP +Configuration files are loaded after the configuration they\(cqre +defined within in the order they\(cqre defined. +\f[B]THIS IS A VERY SUBTLE BUT IMPORTANT POINT.\f[R] To put it another +way: configuration files do not take effect until after the entire +configuration is loaded. +For example, in the configuration below: +.IP +.EX +config\-file = \(dqfoo\(dq +a = 1 +.EE +.PP +If \(lqfoo\(rq contains \f[CR]a = 2\f[R], the final value of +\f[CR]a\f[R] will be 2, because \f[CR]foo\f[R] is loaded after the +configuration file that configures the nested \f[CR]config\-file\f[R] +value. +.RE +.TP +\f[B]\f[CB]\-\-config\-default\-files\f[B]\f[R] +When this is true, the default configuration file paths will be loaded. +The default configuration file paths are currently only the XDG config +path ($XDG_CONFIG_HOME/ghostty/config.ghostty). +.RS +.PP +If this is false, the default configuration paths will not be loaded. +This is targeted directly at using Ghostty from the CLI in a way that +minimizes external effects. +.PP +This is a CLI\-only configuration. +Setting this in a configuration file will have no effect. +It is not an error, but it will not do anything. +This configuration can only be set via CLI arguments. +.RE +.TP +\f[B]\f[CB]\-\-confirm\-close\-surface\f[B]\f[R] +Confirms that a surface should be closed before closing it. +.RS +.PP +This defaults to \f[CR]true\f[R]. +If set to \f[CR]false\f[R], surfaces will close without any +confirmation. +This can also be set to \f[CR]always\f[R], which will always confirm +closing a surface, even if shell integration says a process isn\(cqt +running. +.RE +.TP +\f[B]\f[CB]\-\-quit\-after\-last\-window\-closed\f[B]\f[R] +Whether or not to quit after the last surface is closed. +.RS +.PP +This defaults to \f[CR]false\f[R] on macOS since that is standard +behavior for a macOS application. +On Linux, this defaults to \f[CR]true\f[R] since that is generally +expected behavior. +.PP +On Linux, if this is \f[CR]true\f[R], Ghostty can delay quitting fully +until a configurable amount of time has passed after the last window is +closed. +See the documentation of +\f[CR]quit\-after\-last\-window\-closed\-delay\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-quit\-after\-last\-window\-closed\-delay\f[B]\f[R] +Controls how long Ghostty will stay running after the last open surface +has been closed. +This only has an effect if \f[CR]quit\-after\-last\-window\-closed\f[R] +is also set to \f[CR]true\f[R]. +.RS +.PP +The minimum value for this configuration is \f[CR]1s\f[R]. +Any values lower than this will be clamped to \f[CR]1s\f[R]. +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +By default \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] is unset +and Ghostty will quit immediately after the last window is closed if +\f[CR]quit\-after\-last\-window\-closed\f[R] is \f[CR]true\f[R]. +.PP +Only implemented on Linux. +.RE +.TP +\f[B]\f[CB]\-\-initial\-window\f[B]\f[R] +This controls whether an initial window is created when Ghostty is run. +Note that if \f[CR]quit\-after\-last\-window\-closed\f[R] is +\f[CR]true\f[R] and \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] +is set, setting \f[CR]initial\-window\f[R] to \f[CR]false\f[R] will mean +that Ghostty will quit after the configured delay if no window is ever +created. +Only implemented on Linux and macOS. +.TP +\f[B]\f[CB]\-\-undo\-timeout\f[B]\f[R] +The duration that undo operations remain available. +After this time, the operation will be removed from the undo stack and +cannot be undone. +.RS +.PP +The default value is 5 seconds. +.PP +This timeout applies per operation, meaning that if you perform multiple +operations, each operation will have its own timeout. +New operations do not reset the timeout of previous operations. +.PP +A timeout of zero will effectively disable undo operations. +It is not possible to set an infinite timeout, but you can set a very +large timeout to effectively disable the timeout (on the order of +years). +This is highly discouraged, as it will cause the undo stack to grow +indefinitely, memory usage to grow unbounded, and terminal sessions to +never actually quit. +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +This configuration is only supported on macOS. +Linux doesn\(cqt support undo operations at all so this configuration +has no effect. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-position\f[B]\f[R] +The position of the \(lqquick\(rq terminal window. +To learn more about the quick terminal, see the documentation for the +\f[CR]toggle_quick_terminal\f[R] binding action. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]top\f[R] \- Terminal appears at the top of the screen. +.IP \(bu 2 +\f[CR]bottom\f[R] \- Terminal appears at the bottom of the screen. +.IP \(bu 2 +\f[CR]left\f[R] \- Terminal appears at the left of the screen. +.IP \(bu 2 +\f[CR]right\f[R] \- Terminal appears at the right of the screen. +.IP \(bu 2 +\f[CR]center\f[R] \- Terminal appears at the center of the screen. +.PP +On macOS, changing this configuration requires restarting Ghostty +completely. +.PP +Note: There is no default keybind for toggling the quick terminal. +To enable this feature, bind the \f[CR]toggle_quick_terminal\f[R] action +to a key. +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-size\f[B]\f[R] +The size of the quick terminal. +.RS +.PP +The size can be specified either as a percentage of the screen +dimensions (height/width), or as an absolute size in pixels. +Percentage values are suffixed with \f[CR]%\f[R] (e.g.\ \f[CR]20%\f[R]) +while pixel values are suffixed with \f[CR]px\f[R] +(e.g.\ \f[CR]300px\f[R]). +A bare value without a suffix is a config error. +.PP +When only one size is specified, the size parameter affects the size of +the quick terminal on its \f[I]primary axis\f[R], which depends on its +position: height for quick terminals placed on the top or bottom, and +width for left or right. +The primary axis of a centered quick terminal depends on the +monitor\(cqs orientation: height when on a landscape monitor, and width +when on a portrait monitor. +.PP +The \f[I]secondary axis\f[R] would be maximized for non\-center +positioned quick terminals unless another size parameter is specified, +separated from the first by a comma (\f[CR],\f[R]). +Percentage and pixel sizes can be mixed together: for instance, a size +of \f[CR]50%,500px\f[R] for a top\-positioned quick terminal would be +half a screen tall, and 500 pixels wide. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-gtk\-quick\-terminal\-layer\f[B]\f[R] +The layer of the quick terminal window. +The higher the layer, the more windows the quick terminal may conceal. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]overlay\f[R] +.RS 2 +.PP +The quick terminal appears in front of all windows. +.RE +.IP \(bu 2 +\f[CR]top\f[R] (default) +.RS 2 +.PP +The quick terminal appears in front of normal windows but behind +fullscreen overlays like lock screens. +.RE +.IP \(bu 2 +\f[CR]bottom\f[R] +.RS 2 +.PP +The quick terminal appears behind normal windows but in front of +wallpapers and other windows in the background layer. +.RE +.IP \(bu 2 +\f[CR]background\f[R] +.RS 2 +.PP +The quick terminal appears behind all windows. +.RE +.PP +GTK Wayland only. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-gtk\-quick\-terminal\-namespace\f[B]\f[R] +The namespace for the quick terminal window. +.RS +.PP +This is an identifier that is used by the Wayland compositor and/or +scripts to determine the type of layer surfaces and to possibly apply +unique effects. +.PP +GTK Wayland only. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-screen\f[B]\f[R] +The screen where the quick terminal should show up. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]main\f[R] \- The screen that the operating system recommends as +the main screen. +On macOS, this is the screen that is currently receiving keyboard input. +This screen is defined by the operating system and not chosen by +Ghostty. +.IP \(bu 2 +\f[CR]mouse\f[R] \- The screen that the mouse is currently hovered over. +.IP \(bu 2 +\f[CR]macos\-menu\-bar\f[R] \- The screen that contains the macOS menu +bar as set in the display settings on macOS. +This is a bit confusing because every screen on macOS has a menu bar, +but this is the screen that contains the primary menu bar. +.PP +The default value is \f[CR]main\f[R] because this is the recommended +screen by the operating system. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-animation\-duration\f[B]\f[R] +Duration (in seconds) of the quick terminal enter and exit animation. +Set it to 0 to disable animation completely. +This can be changed at runtime. +.RS +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-autohide\f[B]\f[R] +Automatically hide the quick terminal when focus shifts to another +window. +Set it to false for the quick terminal to remain open even when it loses +focus. +.RS +.PP +Defaults to true on macOS and on false on Linux/BSD. +This is because global shortcuts on Linux require system configuration +and are considerably less accessible than on macOS, meaning that it is +more preferable to keep the quick terminal open until the user has +completed their task. +This default may change in the future. +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-space\-behavior\f[B]\f[R] +This configuration option determines the behavior of the quick terminal +when switching between macOS spaces. +macOS spaces are virtual desktops that can be manually created or are +automatically created when an application is in full\-screen mode. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]move\f[R] \- When switching to another space, the quick terminal +will also moved to the current space. +.IP \(bu 2 +\f[CR]remain\f[R] \- The quick terminal will stay only in the space +where it was originally opened and will not follow when switching to +another space. +.PP +The default value is \f[CR]move\f[R]. +.PP +Only implemented on macOS. +On Linux the behavior is always equivalent to \f[CR]move\f[R]. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-quick\-terminal\-keyboard\-interactivity\f[B]\f[R] +Determines under which circumstances that the quick terminal should +receive keyboard input. +See the corresponding \c +.UR https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_surface_v1:enum:keyboard_interactivity +Wayland documentation +.UE \c +\ for a more detailed explanation of the behavior of each option. +.RS +.RS +.PP +[!NOTE] The exact behavior of each option may differ significantly +across compositors \(en experiment with them on your system to find one +that suits your liking! +.RE +.PP +Valid values are: +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +The quick terminal will not receive any keyboard input. +.RE +.IP \(bu 2 +\f[CR]on\-demand\f[R] (default) +.RS 2 +.PP +The quick terminal would only receive keyboard input when it is focused. +.RE +.IP \(bu 2 +\f[CR]exclusive\f[R] +.RS 2 +.PP +The quick terminal will always receive keyboard input, even when another +window is currently focused. +.RE +.PP +Only has an effect on Linux Wayland. +On macOS the behavior is always equivalent to \f[CR]on\-demand\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-shell\-integration\f[B]\f[R] +Whether to enable shell integration auto\-injection or not. +Shell integration greatly enhances the terminal experience by enabling a +number of features: +.RS +.IP \(bu 2 +Working directory reporting so new tabs, splits inherit the previous +terminal\(cqs working directory. +.IP \(bu 2 +Prompt marking that enables the \(lqjump_to_prompt\(rq keybinding. +.IP \(bu 2 +If you\(cqre sitting at a prompt, closing a terminal will not ask for +confirmation. +.IP \(bu 2 +Resizing the window with a complex prompt usually paints much better. +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]none\f[R] \- Do not do any automatic injection. +You can still manually configure your shell to enable the integration. +.IP \(bu 2 +\f[CR]detect\f[R] \- Detect the shell based on the filename. +.IP \(bu 2 +\f[CR]bash\f[R], \f[CR]elvish\f[R], \f[CR]fish\f[R], \f[CR]nushell\f[R], +\f[CR]zsh\f[R] \- Use this specific shell injection scheme. +.PP +The default value is \f[CR]detect\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-shell\-integration\-features\f[B]\f[R] +Shell integration features to enable. +These require our shell integration to be loaded, either automatically +via shell\-integration or manually. +.RS +.PP +The format of this is a list of features to enable separated by commas. +If you prefix a feature with \f[CR]no\-\f[R] then it is disabled. +If you omit a feature, its default value is used, so you must explicitly +disable features you don\(cqt want. +You can also use \f[CR]true\f[R] or \f[CR]false\f[R] to turn all +features on or off. +.PP +Example: \f[CR]cursor\f[R], \f[CR]no\-cursor\f[R], \f[CR]sudo\f[R], +\f[CR]no\-sudo\f[R], \f[CR]title\f[R], \f[CR]no\-title\f[R] +.PP +Available features: +.IP \(bu 2 +\f[CR]cursor\f[R] \- Set the cursor to a bar at the prompt. +.IP \(bu 2 +\f[CR]sudo\f[R] \- Set sudo wrapper to preserve terminfo. +.IP \(bu 2 +\f[CR]title\f[R] \- Set the window title via shell integration. +.IP \(bu 2 +\f[CR]ssh\-env\f[R] \- Enable SSH environment variable compatibility. +Automatically converts TERM from \f[CR]xterm\-ghostty\f[R] to +\f[CR]xterm\-256color\f[R] when connecting to remote hosts and +propagates COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. +Whether or not these variables will be accepted by the remote host(s) +will depend on whether or not the variables are allowed in their +sshd_config. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]ssh\-terminfo\f[R] \- Enable automatic terminfo installation on +remote hosts. +Attempts to install Ghostty\(cqs terminfo entry using \f[CR]infocmp\f[R] +and \f[CR]tic\f[R] when connecting to hosts that lack it. +Requires \f[CR]infocmp\f[R] to be available locally and \f[CR]tic\f[R] +to be available on remote hosts. +Once terminfo is installed on a remote host, it will be automatically +\(lqcached\(rq to avoid repeat installations. +If desired, the \f[CR]+ssh\-cache\f[R] CLI action can be used to manage +the installation cache manually using various arguments. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]path\f[R] \- Add Ghostty\(cqs binary directory to PATH. +This ensures the \f[CR]ghostty\f[R] command is available in the shell +even if shell init scripts reset PATH. +This is particularly useful on macOS where PATH is often overridden by +system scripts. +The directory is only added if not already present. +.PP +SSH features work independently and can be combined for optimal +experience: when both \f[CR]ssh\-env\f[R] and \f[CR]ssh\-terminfo\f[R] +are enabled, Ghostty will install its terminfo on remote hosts and use +\f[CR]xterm\-ghostty\f[R] as TERM, falling back to +\f[CR]xterm\-256color\f[R] with environment variables if terminfo +installation fails. +.RE +.TP +\f[B]\f[CB]\-\-command\-palette\-entry\f[B]\f[R] +Custom entries into the command palette. +.RS +.PP +Each entry requires the title, the corresponding action, and an optional +description. +Each field should be prefixed with the field name, a colon +(\f[CR]:\f[R]), and then the specified value. +The syntax for actions is identical to the one for keybind actions. +Whitespace in between fields is ignored. +.PP +If you need to embed commas or any other special characters in the +values, enclose the value in double quotes and it will be interpreted as +a Zig string literal. +This is also useful for including whitespace at the beginning or the end +of a value. +See the \c +.UR https://ziglang.org/documentation/master/#Escape-Sequences +Zig documentation +.UE \c +\ for more information on string literals. +Note that multiline string literals are not supported. +.PP +Double quotes can not be used around the field names. +.IP +.EX +command\-palette\-entry = title:Reset Font Style, action:csi:0m +command\-palette\-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main +command\-palette\-entry = title:Focus Split: Right,description:\(dqFocus the split to the right, if it exists.\(dq,action:goto_split:right +command\-palette\-entry = title:\(dqGhostty\(dq,description:\(dqAdd a little Ghostty to your terminal.\(dq,action:\(dqtext:\(rsxf0\(rsx9f\(rsx91\(rsxbb\(dq +.EE +.PP +By default, the command palette is preloaded with most actions that +might be useful in an interactive setting yet do not have easily +accessible or memorizable shortcuts. +The default entries can be cleared by setting this setting to an empty +value: +.IP +.EX +command\-palette\-entry = +.EE +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-osc\-color\-report\-format\f[B]\f[R] +Sets the reporting format for OSC sequences that request color +information. +Ghostty currently supports OSC 10 (foreground), OSC 11 (background), and +OSC 4 (256 color palette) queries, and by default the reported values +are scaled\-up RGB values, where each component are 16 bits. +This is how most terminals report these values. +However, some legacy applications may require 8\-bit, unscaled, +components. +We also support turning off reporting altogether. +The components are lowercase hex values. +.RS +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]none\f[R] \- OSC 4/10/11 queries receive no reply +.IP \(bu 2 +\f[CR]8\-bit\f[R] \- Color components are return unscaled, +e.g.\ \f[CR]rr/gg/bb\f[R] +.IP \(bu 2 +\f[CR]16\-bit\f[R] \- Color components are returned scaled, +e.g.\ \f[CR]rrrr/gggg/bbbb\f[R] +.PP +The default value is \f[CR]16\-bit\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-vt\-kam\-allowed\f[B]\f[R] +If true, allows the \(lqKAM\(rq mode (ANSI mode 2) to be used within the +terminal. +KAM disables keyboard input at the request of the application. +This is not a common feature and is not recommended to be enabled. +This will not be documented further because if you know you need KAM, +you know. +If you don\(cqt know if you need KAM, you don\(cqt need it. +.TP +\f[B]\f[CB]\-\-custom\-shader\f[B]\f[R] +Custom shaders to run after the default shaders. +This is a file path to a GLSL\-syntax shader for all platforms. +.RS +.PP +Warning: Invalid shaders can cause Ghostty to become unusable such as by +causing the window to be completely black. +If this happens, you can unset this configuration to disable the shader. +.PP +Custom shader support is based on and compatible with the Shadertoy +shaders. +Shaders should specify a \f[CR]mainImage\f[R] function and the available +uniforms largely match Shadertoy, with some caveats and +Ghostty\-specific extensions. +.PP +The uniform values available to shaders are as follows: +.IP \(bu 2 +\f[CR]sampler2D iChannel0\f[R] \- Input texture. +.RS 2 +.PP +A texture containing the current terminal screen. +If multiple custom shaders are specified, the output of previous shaders +is written to this texture, to allow combining multiple effects. +.RE +.IP \(bu 2 +\f[CR]vec3 iResolution\f[R] \- Output texture size, +\f[CR][width, height, 1]\f[R] (in px). +.IP \(bu 2 +\f[CR]float iTime\f[R] \- Time in seconds since first frame was +rendered. +.IP \(bu 2 +\f[CR]float iTimeDelta\f[R] \- Time in seconds since previous frame was +rendered. +.IP \(bu 2 +\f[CR]float iFrameRate\f[R] \- Average framerate. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]int iFrame\f[R] \- Number of frames that have been rendered so +far. +.IP \(bu 2 +\f[CR]float iChannelTime[4]\f[R] \- Current time for video or sound +input. +(N/A) +.IP \(bu 2 +\f[CR]vec3 iChannelResolution[4]\f[R] \- Resolutions of the 4 input +samplers. +.RS 2 +.PP +Currently only \f[CR]iChannel0\f[R] exists, and +\f[CR]iChannelResolution[0]\f[R] is identical to \f[CR]iResolution\f[R]. +.RE +.IP \(bu 2 +\f[CR]vec4 iMouse\f[R] \- Mouse input info. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]vec4 iDate\f[R] \- Date/time info. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]float iSampleRate\f[R] \- Sample rate for audio. +(N/A) +.PP +Ghostty\-specific extensions: +.IP \(bu 2 +\f[CR]vec4 iCurrentCursor\f[R] \- Info about the terminal cursor. +.RS 2 +.IP \(bu 2 +\f[CR]iCurrentCursor.xy\f[R] is the \-X, +Y corner of the current +cursor. +.IP \(bu 2 +\f[CR]iCurrentCursor.zw\f[R] is the width and height of the current +cursor. +.RE +.IP \(bu 2 +\f[CR]vec4 iPreviousCursor\f[R] \- Info about the previous terminal +cursor. +.IP \(bu 2 +\f[CR]vec4 iCurrentCursorColor\f[R] \- Color of the terminal cursor. +.IP \(bu 2 +\f[CR]vec4 iPreviousCursorColor\f[R] \- Color of the previous terminal +cursor. +.IP \(bu 2 +\f[CR]vec4 iCurrentCursorStyle\f[R] \- Style of the terminal cursor +.RS 2 +.PP +Macros simplified use are defined for the various cursor styles: +.IP \(bu 2 +\f[CR]CURSORSTYLE_BLOCK\f[R] or \f[CR]0\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_BLOCK_HOLLOW\f[R] or \f[CR]1\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_BAR\f[R] or \f[CR]2\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_UNDERLINE\f[R] or \f[CR]3\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_LOCK\f[R] or \f[CR]4\f[R] +.RE +.IP \(bu 2 +\f[CR]vec4 iPreviousCursorStyle\f[R] \- Style of the previous terminal +cursor +.IP \(bu 2 +\f[CR]vec4 iCursorVisible\f[R] \- Visibility of the terminal cursor. +.IP \(bu 2 +\f[CR]float iTimeCursorChange\f[R] \- Timestamp of terminal cursor +change. +.RS 2 +.PP +When the terminal cursor changes position or color, this is set to the +same time as the \f[CR]iTime\f[R] uniform, allowing you to compute the +time since the change by subtracting this from \f[CR]iTime\f[R]. +.RE +.IP \(bu 2 +\f[CR]float iTimeFocus\f[R] \- Timestamp when the surface last gained +iFocus. +.RS 2 +.PP +When the surface gains focus, this is set to the current value of +\f[CR]iTime\f[R], similar to how \f[CR]iTimeCursorChange\f[R] works. +This allows you to compute the time since focus was gained or lost by +calculating \f[CR]iTime \- iTimeFocus\f[R]. +Use this to create animations that restart when the terminal regains +focus. +.RE +.IP \(bu 2 +\f[CR]int iFocus\f[R] \- Current focus state of the surface. +.RS 2 +.PP +Set to 1.0 when the surface is focused, 0.0 when unfocused. +This allows shaders to detect unfocused state and avoid animation +artifacts from large time deltas caused by infrequent \(lqdeceptive +frames\(rq (e.g., modifier key presses, link hover events in unfocused +split panes). +Check \f[CR]iFocus > 0\f[R] to determine if the surface is currently +focused. +.RE +.IP \(bu 2 +\f[CR]vec3 iPalette[256]\f[R] \- The 256\-color terminal palette. +.RS 2 +.PP +RGB values for all 256 colors in the terminal palette, normalized to +[0.0, 1.0]. +Index 0\-15 are the ANSI colors, 16\-231 are the 6x6x6 color cube, and +232\-255 are the grayscale colors. +.RE +.IP \(bu 2 +\f[CR]vec3 iBackgroundColor\f[R] \- Terminal background color (RGB). +.IP \(bu 2 +\f[CR]vec3 iForegroundColor\f[R] \- Terminal foreground color (RGB). +.IP \(bu 2 +\f[CR]vec3 iCursorColor\f[R] \- Terminal cursor color (RGB). +.IP \(bu 2 +\f[CR]vec3 iCursorText\f[R] \- Terminal cursor text color (RGB). +.IP \(bu 2 +\f[CR]vec3 iSelectionBackgroundColor\f[R] \- Selection background color +(RGB). +.IP \(bu 2 +\f[CR]vec3 iSelectionForegroundColor\f[R] \- Selection foreground color +(RGB). +.PP +If the shader fails to compile, the shader will be ignored. +Any errors related to shader compilation will not show up as +configuration errors and only show up in the log, since shader +compilation happens after configuration loading on the dedicated render +thread. +For interactive development, use \c +.UR https://shadertoy.com +shadertoy.com +.UE \c +\&. +.PP +This can be repeated multiple times to load multiple shaders. +The shaders will be run in the order they are specified. +.PP +This can be changed at runtime and will affect all open terminals. +.RE +.TP +\f[B]\f[CB]\-\-custom\-shader\-animation\f[B]\f[R] +If \f[CR]true\f[R] (default), the focused terminal surface will run an +animation loop when custom shaders are used. +This uses slightly more CPU (generally less than 10%) but allows the +shader to animate. +This only runs if there are custom shaders and the terminal is focused. +.RS +.PP +If this is set to \f[CR]false\f[R], the terminal and custom shader will +only render when the terminal is updated. +This is more efficient but the shader will not animate. +.PP +This can also be set to \f[CR]always\f[R], which will always run the +animation loop regardless of whether the terminal is focused or not. +The animation loop will still only run when custom shaders are used. +Note that this will use more CPU per terminal surface and can become +quite expensive depending on the shader and your terminal usage. +.PP +This can be changed at runtime and will affect all open terminals. +.RE +.TP +\f[B]\f[CB]\-\-bell\-features\f[B]\f[R] +Bell features to enable if bell support is available in your runtime. +Not all features are available on all runtimes. +The format of this is a list of features to enable separated by commas. +If you prefix a feature with \f[CR]no\-\f[R] then it is disabled. +If you omit a feature, its default value is used. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]system\f[R] +.RS 2 +.PP +Instruct the system to notify the user using built\-in system functions. +This could result in an audiovisual effect, a notification, or something +else entirely. +Changing these effects require altering system settings: for instance +under the \(lqSound > Alert Sound\(rq setting in GNOME, or the +\(lqAccessibility > System Bell\(rq settings in KDE Plasma. +.PP +On macOS, this plays the system alert sound. +.RE +.IP \(bu 2 +\f[CR]audio\f[R] +.RS 2 +.PP +Play a custom sound. +(Available since 1.3.0 on macOS) +.RE +.IP \(bu 2 +\f[CR]attention\f[R] \f[I](enabled by default)\f[R] +.RS 2 +.PP +Request the user\(cqs attention when Ghostty is unfocused, until it has +received focus again. +On macOS, this will bounce the app icon in the dock once. +On Linux, the behavior depends on the desktop environment and/or the +window manager/compositor: +.IP \(bu 2 +On KDE, the background of the desktop icon in the task bar would be +highlighted; +.IP \(bu 2 +On GNOME, you may receive a notification that, when clicked, would bring +the Ghostty window into focus; +.IP \(bu 2 +On Sway, the window may be decorated with a distinctly colored border; +.IP \(bu 2 +On other systems this may have no effect at all. +.RE +.IP \(bu 2 +\f[CR]title\f[R] \f[I](enabled by default)\f[R] +.RS 2 +.PP +Prepend a bell emoji (🔔) to the title of the alerted surface until the +terminal is re\-focused or interacted with (such as on keyboard input). +.RE +.IP \(bu 2 +\f[CR]border\f[R] +.RS 2 +.PP +Display a border around the alerted surface until the terminal is +re\-focused or interacted with (such as on keyboard input). +.PP +Available since: 1.2.0 on GTK, 1.2.1 on macOS +.RE +.PP +Example: \f[CR]audio\f[R], \f[CR]no\-audio\f[R], \f[CR]system\f[R], +\f[CR]no\-system\f[R] +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-bell\-audio\-path\f[B]\f[R] +If \f[CR]audio\f[R] is an enabled bell feature, this is a path to an +audio file. +If the path is not absolute, it is considered relative to the directory +of the configuration file that it is referenced from, or from the +current working directory if this is used as a CLI flag. +The path may be prefixed with \f[CR]\(ti/\f[R] to reference the +user\(cqs home directory. +.RS +.PP +Available since: 1.2.0 on GTK, 1.3.0 on macOS. +.RE +.TP +\f[B]\f[CB]\-\-bell\-audio\-volume\f[B]\f[R] +If \f[CR]audio\f[R] is an enabled bell feature, this is the volume to +play the audio file at (relative to the system volume). +This is a floating point number ranging from 0.0 (silence) to 1.0 (as +loud as possible). +The default is 0.5. +.RS +.PP +Available since: 1.2.0 on GTK, 1.3.0 on macOS. +.RE +.TP +\f[B]\f[CB]\-\-app\-notifications\f[B]\f[R] +Control the in\-app notifications that Ghostty shows. +.RS +.PP +On Linux (GTK), in\-app notifications show up as toasts. +Toasts appear overlaid on top of the terminal window. +They are used to show information that is not critical but may be +important. +.PP +Possible notifications are: +.IP \(bu 2 +\f[CR]clipboard\-copy\f[R] (default: true) \- Show a notification when +text is copied to the clipboard. +.IP \(bu 2 +\f[CR]config\-reload\f[R] (default: true) \- Show a notification when +the configuration is reloaded. +.PP +To specify a notification to enable, specify the name of the +notification. +To specify a notification to disable, prefix the name with +\f[CR]no\-\f[R]. +For example, to disable \f[CR]clipboard\-copy\f[R], set this +configuration to \f[CR]no\-clipboard\-copy\f[R]. +To enable it, set this configuration to \f[CR]clipboard\-copy\f[R]. +.PP +Multiple notifications can be enabled or disabled by separating them +with a comma. +.PP +A value of \(lqfalse\(rq will disable all notifications. +A value of \(lqtrue\(rq will enable all notifications. +.PP +This configuration only applies to GTK. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-macos\-non\-native\-fullscreen\f[B]\f[R] +If anything other than false, fullscreen mode on macOS will not use the +native fullscreen, but make the window fullscreen without animations and +using a new space. +It\(cqs faster than the native fullscreen mode since it doesn\(cqt use +animations. +.RS +.PP +Important: tabs DO NOT WORK in this mode. +Non\-native fullscreen removes the titlebar and macOS native tabs +require the titlebar. +If you use tabs, you should not use this mode. +.PP +If you fullscreen a window with tabs, the currently focused tab will +become fullscreen while the others will remain in a separate window in +the background. +You can switch to that window using normal window\-switching keybindings +such as command+tilde. +When you exit fullscreen, the window will return to the tabbed state it +was in before. +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]true\f[R] \- Use non\-native macOS fullscreen, hide the menu bar +.IP \(bu 2 +\f[CR]false\f[R] \- Use native macOS fullscreen +.IP \(bu 2 +\f[CR]visible\-menu\f[R] \- Use non\-native macOS fullscreen, keep the +menu bar visible +.IP \(bu 2 +\f[CR]padded\-notch\f[R] \- Use non\-native macOS fullscreen, hide the +menu bar, but ensure the window is not obscured by the notch on +applicable devices. +The area around the notch will remain transparent currently, but in the +future we may fill it with the window background color. +.PP +Changing this option at runtime works, but will only apply to the next +time the window is made fullscreen. +If a window is already fullscreen, it will retain the previous setting +until fullscreen is exited. +.RE +.TP +\f[B]\f[CB]\-\-macos\-window\-buttons\f[B]\f[R] +Whether the window buttons in the macOS titlebar are visible. +The window buttons are the colored buttons in the upper left corner of +most macOS apps, also known as the traffic lights, that allow you to +close, miniaturize, and zoom the window. +.RS +.PP +This setting has no effect when \f[CR]window\-decoration = none\f[R] or +\f[CR]macos\-titlebar\-style = hidden\f[R], as the window buttons are +always hidden in these modes. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]visible\f[R] \- Show the window buttons. +.IP \(bu 2 +\f[CR]hidden\f[R] \- Hide the window buttons. +.PP +The default value is \f[CR]visible\f[R]. +.PP +Changing this option at runtime only applies to new windows. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-macos\-titlebar\-style\f[B]\f[R] +The style of the macOS titlebar. +Available values are: \(lqnative\(rq, \(lqtransparent\(rq, \(lqtabs\(rq, +and \(lqhidden\(rq. +.RS +.PP +The \(lqnative\(rq style uses the native macOS titlebar with zero +customization. +The titlebar will match your window theme (see +\f[CR]window\-theme\f[R]). +.PP +The \(lqtransparent\(rq style is the same as \(lqnative\(rq but the +titlebar will be transparent and allow your window background color to +come through. +This makes a more seamless window appearance but looks a little less +typical for a macOS application and may not work well with all themes. +.PP +The \(lqtransparent\(rq style will also update in real\-time to dynamic +changes to the window background color, e.g.\ via OSC 11. +To make this more aesthetically pleasing, this only happens if the +terminal is a window, tab, or split that borders the top of the window. +This avoids a disjointed appearance where the titlebar color changes but +all the topmost terminals don\(cqt match. +.PP +The \(lqtabs\(rq style is a completely custom titlebar that integrates +the tab bar into the titlebar. +This titlebar always matches the background color of the terminal. +There are some limitations to this style: On macOS 13 and below, saved +window state will not restore tabs correctly. +macOS 14 does not have this issue and any other macOS version has not +been tested. +.PP +The \(lqhidden\(rq style hides the titlebar. +Unlike \f[CR]window\-decoration = none\f[R], however, it does not remove +the frame from the window or cause it to have squared corners. +Changing to or from this option at run\-time may affect existing windows +in buggy ways. +.PP +When \(lqhidden\(rq, the top titlebar area can no longer be used for +dragging the window. +To drag the window, you can use option+click on the resizable areas of +the frame to drag the window. +This is a standard macOS behavior and not something Ghostty enables. +.PP +The default value is \(lqtransparent\(rq. +This is an opinionated choice but its one I think is the most +aesthetically pleasing and works in most cases. +.PP +Changing this option at runtime only applies to new windows. +.RE +.TP +\f[B]\f[CB]\-\-macos\-titlebar\-proxy\-icon\f[B]\f[R] +Whether the proxy icon in the macOS titlebar is visible. +The proxy icon is the icon that represents the folder of the current +working directory. +You can see this very clearly in the macOS built\-in Terminal.app +titlebar. +.RS +.PP +The proxy icon is only visible with the native macOS titlebar style. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]visible\f[R] \- Show the proxy icon. +.IP \(bu 2 +\f[CR]hidden\f[R] \- Hide the proxy icon. +.PP +The default value is \f[CR]visible\f[R]. +.PP +This setting can be changed at runtime and will affect all currently +open windows but only after their working directory changes again. +Therefore, to make this work after changing the setting, you must +usually \f[CR]cd\f[R] to a different directory, open a different file in +an editor, etc. +.RE +.TP +\f[B]\f[CB]\-\-macos\-dock\-drop\-behavior\f[B]\f[R] +Controls the windowing behavior when dropping a file or folder onto the +Ghostty icon in the macOS dock. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]new\-tab\f[R] \- Create a new tab in the current window, or open a +new window if none exist. +.IP \(bu 2 +\f[CR]new\-window\f[R] \- Create a new window unconditionally. +.PP +The default value is \f[CR]new\-tab\f[R]. +.PP +This setting is only supported on macOS and has no effect on other +platforms. +.RE +.TP +\f[B]\f[CB]\-\-macos\-option\-as\-alt\f[B]\f[R] +macOS doesn\(cqt have a distinct \(lqalt\(rq key and instead has the +\(lqoption\(rq key which behaves slightly differently. +On macOS by default, the option key plus a character will sometimes +produce a Unicode character. +For example, on US standard layouts option\-b produces \(lq∫\(rq. +This may be undesirable if you want to use \(lqoption\(rq as an +\(lqalt\(rq key for keybindings in terminal programs or shells. +.RS +.PP +This configuration lets you change the behavior so that option is +treated as alt. +.PP +The default behavior (unset) will depend on your active keyboard layout. +If your keyboard layout is one of the keyboard layouts listed below, +then the default value is \(lqtrue\(rq. +Otherwise, the default value is \(lqfalse\(rq. +Keyboard layouts with a default value of \(lqtrue\(rq are: +.IP \(bu 2 +U.S. +Standard +.IP \(bu 2 +U.S. +International +.PP +Note that if an \f[I]Option\f[R]\-sequence doesn\(cqt produce a +printable character, it will be treated as \f[I]Alt\f[R] regardless of +this setting. +(e.g.\ \f[CR]alt+ctrl+a\f[R]). +.PP +Explicit values that can be set: +.PP +If \f[CR]true\f[R], the \f[I]Option\f[R] key will be treated as +\f[I]Alt\f[R]. +This makes terminal sequences expecting \f[I]Alt\f[R] to work properly, +but will break Unicode input sequences on macOS if you use them via the +\f[I]Alt\f[R] key. +.PP +You may set this to \f[CR]false\f[R] to restore the macOS \f[I]Alt\f[R] +key unicode sequences but this will break terminal sequences expecting +\f[I]Alt\f[R] to work. +.PP +The values \f[CR]left\f[R] or \f[CR]right\f[R] enable this for the left +or right \f[I]Option\f[R] key, respectively. +.RE +.TP +\f[B]\f[CB]\-\-macos\-window\-shadow\f[B]\f[R] +Whether to enable the macOS window shadow. +The default value is true. +With some window managers and window transparency settings, you may find +false more visually appealing. +.TP +\f[B]\f[CB]\-\-macos\-hidden\f[B]\f[R] +If true, the macOS icon in the dock and app switcher will be hidden. +This is mainly intended for those primarily using the quick\-terminal +mode. +.RS +.PP +Note that setting this to true means that keyboard layout changes will +no longer be automatic. +.PP +Control whether macOS app is excluded from the dock and app switcher, a +\(lqhidden\(rq state. +This is mainly intended for those primarily using quick\-terminal mode, +but is a general configuration for any use case. +.PP +Available values: +.IP \(bu 2 +\f[CR]never\f[R] \- The macOS app is never hidden. +.IP \(bu 2 +\f[CR]always\f[R] \- The macOS app is always hidden. +.PP +Note: When the macOS application is hidden, keyboard layout changes will +no longer be automatic. +This is a limitation of macOS. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-macos\-auto\-secure\-input\f[B]\f[R] +If true, Ghostty on macOS will automatically enable the \(lqSecure +Input\(rq feature when it detects that a password prompt is being +displayed. +.RS +.PP +\(lqSecure Input\(rq is a macOS security feature that prevents +applications from reading keyboard events. +This can always be enabled manually using the +\f[CR]Ghostty > Secure Keyboard Entry\f[R] menu item. +.PP +Note that automatic password prompt detection is based on heuristics and +may not always work as expected. +Specifically, it does not work over SSH connections, but there may be +other cases where it also doesn\(cqt work. +.PP +A reason to disable this feature is if you find that it is interfering +with legitimate accessibility software (or software that uses the +accessibility APIs), since secure input prevents any application from +reading keyboard events. +.RE +.TP +\f[B]\f[CB]\-\-macos\-secure\-input\-indication\f[B]\f[R] +If true, Ghostty will show a graphical indication when secure input is +enabled. +This indication is generally recommended to know when secure input is +enabled. +.RS +.PP +Normally, secure input is only active when a password prompt is +displayed or it is manually (and typically temporarily) enabled. +However, if you always have secure input enabled, the indication can be +distracting and you may want to disable it. +.RE +.TP +\f[B]\f[CB]\-\-macos\-applescript\f[B]\f[R] +If true, Ghostty exposes and handles the built\-in AppleScript +dictionary on macOS. +.RS +.PP +If false, all AppleScript interactions are disabled. +This includes AppleScript commands and AppleScript object lookup for +windows, tabs, and terminals. +.PP +The default is true. +.RE +.TP +\f[B]\f[CB]\-\-macos\-icon\f[B]\f[R] +Customize the macOS app icon. +.RS +.PP +This only affects the icon that appears in the dock, application +switcher, etc. +This does not affect the icon in Finder because that is controlled by a +hardcoded value in the signed application bundle and can\(cqt be changed +at runtime. +For more details on what exactly is affected, see the +\f[CR]NSApplication.icon\f[R] Apple documentation; that is the API that +is being used to set the icon. +.PP +Valid values: +.IP \(bu 2 +\f[CR]official\f[R] \- Use the official Ghostty icon. +.IP \(bu 2 +\f[CR]blueprint\f[R], \f[CR]chalkboard\f[R], \f[CR]microchip\f[R], +\f[CR]glass\f[R], \f[CR]holographic\f[R], \f[CR]paper\f[R], +\f[CR]retro\f[R], \f[CR]xray\f[R] \- Official variants of the Ghostty +icon hand\-created by artists (no AI). +.IP \(bu 2 +\f[CR]custom\f[R] \- Use a completely custom icon. +The location must be specified using the additional +\f[CR]macos\-custom\-icon\f[R] configuration +.IP \(bu 2 +\f[CR]custom\-style\f[R] \- Use the official Ghostty icon but with +custom styles applied to various layers. +The custom styles must be specified using the additional +\f[CR]macos\-icon\f[R]\-prefixed configurations. +The \f[CR]macos\-icon\-ghost\-color\f[R] and +\f[CR]macos\-icon\-screen\-color\f[R] configurations are required for +this style. +.PP +WARNING: The \f[CR]custom\-style\f[R] option is \f[I]experimental\f[R]. +We may change the format of the custom styles in the future. +We\(cqre still finalizing the exact layers and customization options +that will be available. +.PP +Other caveats: +.IP \(bu 2 +The icon in the update dialog will always be the official icon. +This is because the update dialog is managed through a separate +framework and cannot be customized without significant effort. +.RE +.TP +\f[B]\f[CB]\-\-macos\-custom\-icon\f[B]\f[R] +The absolute path to the custom icon file. +Supported formats include PNG, JPEG, and ICNS. +.RS +.PP +Defaults to \f[CR]\(ti/.config/ghostty/Ghostty.icns\f[R] +.RE +.TP +\f[B]\f[CB]\-\-macos\-icon\-frame\f[B]\f[R] +The material to use for the frame of the macOS app icon. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]aluminum\f[R] \- A brushed aluminum frame. +This is the default. +.IP \(bu 2 +\f[CR]beige\f[R] \- A classic 90\(cqs computer beige frame. +.IP \(bu 2 +\f[CR]plastic\f[R] \- A glossy, dark plastic frame. +.IP \(bu 2 +\f[CR]chrome\f[R] \- A shiny chrome frame. +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-macos\-icon\-ghost\-color\f[B]\f[R] +The color of the ghost in the macOS app icon. +.RS +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]\-\-macos\-icon\-screen\-color\f[B]\f[R] +The color of the screen in the macOS app icon. +.RS +.PP +The screen is a linear gradient so you can specify multiple colors that +make up the gradient. +Up to 64 comma\-separated colors may be specified as either hex +(\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or as named X11 colors. +The first color is the bottom of the gradient and the last color is the +top of the gradient. +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-macos\-shortcuts\f[B]\f[R] +Whether macOS Shortcuts are allowed to control Ghostty. +.RS +.PP +Ghostty exposes a number of actions that allow Shortcuts to control and +interact with Ghostty. +This includes creating new terminals, sending text to terminals, running +commands, invoking any keybind action, etc. +.PP +This is a powerful feature but can be a security risk if a malicious +shortcut is able to be installed and executed. +Therefore, this configuration allows you to disable this feature. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]ask\f[R] \- Ask the user whether for permission. +Ghostty will remember this choice and never ask again. +This is similar to other macOS permissions such as microphone access, +camera access, etc. +.IP \(bu 2 +\f[CR]allow\f[R] \- Allow Shortcuts to control Ghostty without asking. +.IP \(bu 2 +\f[CR]deny\f[R] \- Deny Shortcuts from controlling Ghostty. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-linux\-cgroup\f[B]\f[R] +Put every surface (tab, split, window) into a transient +\f[CR]systemd\f[R] scope. +.RS +.PP +This allows per\-surface resource management. +For example, if a shell program is using too much memory, only that +shell will be killed by the oom monitor instead of the entire Ghostty +process. +Similarly, if a shell program is using too much CPU, only that surface +will be CPU\-throttled. +.PP +This will cause startup times to be slower (a hundred milliseconds or +so), so the default value is \(lqsingle\-instance.\(rq In +single\-instance mode, only one instance of Ghostty is running (see +gtk\-single\-instance) so the startup time is a one\-time cost. +Additionally, single instance Ghostty is much more likely to have many +windows, tabs, etc. +so cgroup isolation is a big benefit. +.PP +This feature requires \f[CR]systemd\f[R]. +If \f[CR]systemd\f[R] is unavailable, cgroup initialization will fail. +By default, this will not prevent Ghostty from working (see +\f[CR]linux\-cgroup\-hard\-fail\f[R]). +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]never\f[R] \- Never use cgroups. +.IP \(bu 2 +\f[CR]always\f[R] \- Always use cgroups. +.IP \(bu 2 +\f[CR]single\-instance\f[R] \- Enable cgroups only for Ghostty instances +launched as single\-instance applications (see gtk\-single\-instance). +.RE +.TP +\f[B]\f[CB]\-\-linux\-cgroup\-memory\-limit\f[B]\f[R] +Memory limit for any individual terminal process (tab, split, window, +etc.) +in bytes. +If this is unset then no memory limit will be set. +.RS +.PP +Note that this sets the \f[CR]MemoryHigh\f[R] setting on the transient +\f[CR]systemd\f[R] scope, which is a soft limit. +You should configure something like \f[CR]systemd\-oom\f[R] to handle +killing processes that have too much memory pressure. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +See the \f[CR]systemd.resource\-control\f[R] manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource\-control.html +.RE +.TP +\f[B]\f[CB]\-\-linux\-cgroup\-processes\-limit\f[B]\f[R] +Number of processes limit for any individual terminal process (tab, +split, window, etc.). +If this is unset then no limit will be set. +.RS +.PP +Note that this sets the \f[CR]TasksMax\f[R] setting on the transient +\f[CR]systemd\f[R] scope, which is a hard limit. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +See the \f[CR]systemd.resource\-control\f[R] manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource\-control.html +.RE +.TP +\f[B]\f[CB]\-\-linux\-cgroup\-hard\-fail\f[B]\f[R] +If this is false, then creating a transient \f[CR]systemd\f[R] scope +(for \f[CR]linux\-cgroup\f[R]) will be allowed to fail and the failure +is ignored. +This is useful if you view cgroup isolation as a \(lqnice to have\(rq +and not a critical resource management feature, because surface creation +will not fail if \f[CR]systemd\f[R] APIs fail. +.RS +.PP +If this is true, then any transient \f[CR]systemd\f[R] scope creation +failure will cause surface creation to fail. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-opengl\-debug\f[B]\f[R] +Enable or disable GTK\(cqs OpenGL debugging logs. +The default is \f[CR]true\f[R] for debug builds, \f[CR]false\f[R] for +all others. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-gtk\-single\-instance\f[B]\f[R] +If \f[CR]true\f[R], the Ghostty GTK application will run in +single\-instance mode: each new \f[CR]ghostty\f[R] process launched will +result in a new window if there is already a running process. +.RS +.PP +If \f[CR]false\f[R], each new ghostty process will launch a separate +application. +.PP +If \f[CR]detect\f[R], Ghostty will assume true (single instance) unless +one of the following scenarios is found: +.IP "1." 3 +TERM_PROGRAM environment variable is a non\-empty value. +In this case, we assume Ghostty is being launched from a graphical +terminal session and you want a dedicated instance. +.IP "2." 3 +Any CLI arguments exist. +In this case, we assume you are passing custom Ghostty configuration. +Single instance mode inherits the configuration from when it was +launched, so we must disable single instance to load the new +configuration. +.PP +If either of these scenarios is producing a false positive, you can set +this configuration explicitly to the behavior you want. +.PP +The pre\-1.2 option \f[CR]desktop\f[R] has been deprecated. +Please replace this with \f[CR]detect\f[R]. +.PP +The default value is \f[CR]detect\f[R]. +.PP +Note that debug builds of Ghostty have a separate single\-instance ID so +you can test single instance without conflicting with release builds. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-titlebar\f[B]\f[R] +When enabled, the full GTK titlebar is displayed instead of your window +manager\(cqs simple titlebar. +The behavior of this option will vary with your window manager. +.RS +.PP +This option does nothing when \f[CR]window\-decoration\f[R] is none or +when running under macOS. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-tabs\-location\f[B]\f[R] +Determines the side of the screen that the GTK tab bar will stick to. +Top, bottom, and hidden are supported. +The default is top. +.RS +.PP +When \f[CR]hidden\f[R] is set, a tab button displaying the number of +tabs will appear in the title bar. +It has the ability to open a tab overview for displaying tabs. +Alternatively, you can use the \f[CR]toggle_tab_overview\f[R] action in +a keybind if your window doesn\(cqt have a title bar, or you can switch +tabs with keybinds. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-titlebar\-hide\-when\-maximized\f[B]\f[R] +If this is \f[CR]true\f[R], the titlebar will be hidden when the window +is maximized, and shown when the titlebar is unmaximized. +GTK only. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-gtk\-toolbar\-style\f[B]\f[R] +Determines the appearance of the top and bottom bars tab bar. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]flat\f[R] \- Top and bottom bars are flat with the terminal +window. +.IP \(bu 2 +\f[CR]raised\f[R] \- Top and bottom bars cast a shadow on the terminal +area. +.IP \(bu 2 +\f[CR]raised\-border\f[R] \- Similar to \f[CR]raised\f[R] but the shadow +is replaced with a more subtle border. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-titlebar\-style\f[B]\f[R] +The style of the GTK titlebar. +Available values are \f[CR]native\f[R] and \f[CR]tabs\f[R]. +.RS +.PP +The \f[CR]native\f[R] titlebar style is a traditional titlebar with a +title, a few buttons and window controls. +A separate tab bar will show up below the titlebar if you have multiple +tabs open in the window. +.PP +The \f[CR]tabs\f[R] titlebar merges the tab bar and the traditional +titlebar. +This frees up vertical space on your screen if you use multiple tabs. +One limitation of the \f[CR]tabs\f[R] titlebar is that you cannot drag +the titlebar by the titles any longer (as they are tab titles now). +Other areas of the \f[CR]tabs\f[R] title bar can be used to drag the +window around. +.PP +The default style is \f[CR]native\f[R]. +.RE +.TP +\f[B]\f[CB]\-\-gtk\-wide\-tabs\f[B]\f[R] +If \f[CR]true\f[R] (default), then the Ghostty GTK tabs will be +\(lqwide.\(rq Wide tabs are the new typical Gnome style where tabs fill +their available space. +If you set this to \f[CR]false\f[R] then tabs will only take up space +they need, which is the old style. +.TP +\f[B]\f[CB]\-\-gtk\-custom\-css\f[B]\f[R] +Custom CSS files to be loaded. +.RS +.PP +GTK CSS documentation can be found at the following links: +.IP \(bu 2 +https://docs.gtk.org/gtk4/css\-overview.html \- An overview of GTK CSS. +.IP \(bu 2 +https://docs.gtk.org/gtk4/css\-properties.html \- A comprehensive list +of supported CSS properties. +.PP +Launch Ghostty with \f[CR]env GTK_DEBUG=interactive ghostty\f[R] to +tweak Ghostty\(cqs CSS in real time using the GTK Inspector. +Errors in your CSS files would also be reported in the terminal you +started Ghostty from. +See https://developer.gnome.org/documentation/tools/inspector.html for +more information about the GTK Inspector. +.PP +This configuration can be repeated multiple times to load multiple +files. +Prepend a ? +character to the file path to suppress errors if the file does not +exist. +If you want to include a file that begins with a literal ? +character, surround the file path in double quotes (\(lq). +The file size limit for a single stylesheet is 5MiB. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]\-\-desktop\-notifications\f[B]\f[R] +If \f[CR]true\f[R] (default), applications running in the terminal can +show desktop notifications using certain escape sequences such as OSC 9 +or OSC 777. +.TP +\f[B]\f[CB]\-\-progress\-style\f[B]\f[R] +If \f[CR]true\f[R] (default), applications running in the terminal can +show graphical progress bars using the ConEmu OSC 9;4 escape sequence. +If \f[CR]false\f[R], progress bar sequences are silently ignored. +.TP +\f[B]\f[CB]\-\-bold\-color\f[B]\f[R] +Modifies the color used for bold text in the terminal. +.RS +.PP +This can be set to a specific color, using the same format as +\f[CR]background\f[R] or \f[CR]foreground\f[R] (e.g.\ \f[CR]#RRGGBB\f[R] +but other formats are also supported; see the aforementioned +documentation). +If a specific color is set, this color will always be used for the +default bold text color. +It will set the rest of the bold colors to \f[CR]bright\f[R]. +.PP +This can also be set to \f[CR]bright\f[R], which uses the bright color +palette for bold text. +For example, if the text is red, then the bold will use the bright red +color. +The terminal palette is set with \f[CR]palette\f[R] but can also be +overridden by the terminal application itself using escape sequences +such as OSC 4. +(Since Ghostty 1.2.0, the previous configuration +\f[CR]bold\-is\-bright\f[R] is deprecated and replaced by this usage). +.PP +Available since Ghostty 1.2.0. +.RE +.TP +\f[B]\f[CB]\-\-faint\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the faint text. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +.RS +.PP +Available since Ghostty 1.2.0. +.RE +.TP +\f[B]\f[CB]\-\-term\f[B]\f[R] +This will be used to set the \f[CR]TERM\f[R] environment variable. +HACK: We set this with an \f[CR]xterm\f[R] prefix because vim uses that +to enable key protocols (specifically this will enable +\f[CR]modifyOtherKeys\f[R]), among other features. +An option exists in vim to modify this: +\f[CR]:set keyprotocol=ghostty:kitty\f[R], however a bug in the +implementation prevents it from working properly. +https://github.com/vim/vim/pull/13211 fixes this. +.TP +\f[B]\f[CB]\-\-enquiry\-response\f[B]\f[R] +String to send when we receive \f[CR]ENQ\f[R] (\f[CR]0x05\f[R]) from the +command that we are running. +Defaults to an empty string if not set. +.TP +\f[B]\f[CB]\-\-async\-backend\f[B]\f[R] +Configures the low\-level API to use for async IO, eventing, etc. +.RS +.PP +Most users should leave this set to \f[CR]auto\f[R]. +This will automatically detect scenarios where APIs may not be available +(for example \f[CR]io_uring\f[R] on certain hardened kernels) and fall +back to a different API. +However, if you want to force a specific backend for any reason, you can +set this here. +.PP +Based on various benchmarks, we haven\(cqt found a statistically +significant difference between the backends with regards to memory, CPU, +or latency. +The choice of backend is more about compatibility and features. +.PP +Available options: +.IP \(bu 2 +\f[CR]auto\f[R] \- Automatically choose the best backend for the +platform based on available options. +.IP \(bu 2 +\f[CR]epoll\f[R] \- Use the \f[CR]epoll\f[R] API +.IP \(bu 2 +\f[CR]io_uring\f[R] \- Use the \f[CR]io_uring\f[R] API +.PP +If the selected backend is not available on the platform, Ghostty will +fall back to an automatically chosen backend that is available. +.PP +Changing this value requires a full application restart to take effect. +.PP +This is only supported on Linux, since this is the only platform where +we have multiple options. +On macOS, we always use \f[CR]kqueue\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]\-\-auto\-update\f[B]\f[R] +Control the auto\-update functionality of Ghostty. +This is only supported on macOS currently, since Linux builds are +distributed via package managers that are not centrally controlled by +Ghostty. +.RS +.PP +Checking or downloading an update does not send any information to the +project beyond standard network information mandated by the underlying +protocols. +To put it another way: Ghostty doesn\(cqt explicitly add any tracking to +the update process. +The update process works by downloading information about the latest +version and comparing it client\-side to the current version. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]off\f[R] \- Disable auto\-updates. +.IP \(bu 2 +\f[CR]check\f[R] \- Check for updates and notify the user if an update +is available, but do not automatically download or install the update. +.IP \(bu 2 +\f[CR]download\f[R] \- Check for updates, automatically download the +update, notify the user, but do not automatically install the update. +.PP +If unset, we defer to Sparkle\(cqs default behavior, which respects the +preference stored in the standard user defaults +(\f[CR]defaults(1)\f[R]). +.PP +Changing this value at runtime works after a small delay. +.RE +.TP +\f[B]\f[CB]\-\-auto\-update\-channel\f[B]\f[R] +The release channel to use for auto\-updates. +.RS +.PP +The default value of this matches the release channel of the currently +running Ghostty version. +If you download a pre\-release version of Ghostty then this will be set +to \f[CR]tip\f[R] and you will receive pre\-release updates. +If you download a stable version of Ghostty then this will be set to +\f[CR]stable\f[R] and you will receive stable updates. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]stable\f[R] \- Stable, tagged releases such as \(lq1.0.0\(rq. +.IP \(bu 2 +\f[CR]tip\f[R] \- Pre\-release versions generated from each commit to +the main branch. +This is the version that was in use during private beta testing by +thousands of people. +It is generally stable but will likely have more bugs than the stable +channel. +.PP +Changing this configuration requires a full restart of Ghostty to take +effect. +.PP +This only works on macOS since only macOS has an auto\-update feature. +.RE +.SH FILES +.TP +\f[I]$XDG_CONFIG_HOME/ghostty/config.ghostty\f[R] +Location of the default configuration file. +.TP +\f[I]$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty\f[R] +\f[B]On macOS\f[R], location of the default configuration file. +This location takes precedence over the XDG environment locations. +.TP +\f[I]$LOCALAPPDATA/ghostty/config.ghostty\f[R] +\f[B]On Windows\f[R], if \f[I]$XDG_CONFIG_HOME\f[R] is not set, +\f[I]$LOCALAPPDATA\f[R] will be searched for configuration files. +.SH ENVIRONMENT +.TP +\f[B]TERM\f[R] +Defaults to \f[CR]xterm\-ghostty\f[R]. +Can be configured with the \f[CR]term\f[R] configuration option. +.TP +\f[B]GHOSTTY_RESOURCES_DIR\f[R] +Where the Ghostty resources can be found. +.TP +\f[B]XDG_CONFIG_HOME\f[R] +Default location for configuration files. +.TP +\f[B]$HOME/Library/Application Support/com.mitchellh.ghostty\f[R] +\f[B]MACOS ONLY\f[R] default location for configuration files. +This location takes precedence over the XDG environment locations. +.TP +\f[B]LOCALAPPDATA\f[R] +\f[B]WINDOWS ONLY:\f[R] alternate location to search for configuration +files. +.TP +\f[B]GHOSTTY_LOG\f[R] +The \f[CR]GHOSTTY_LOG\f[R] environment variable can be used to control +which destinations receive logs. +Ghostty currently defines two destinations: +.IP \(bu 2 +\f[CR]stderr\f[R] \- logging to \f[CR]stderr\f[R]. +.IP \(bu 2 +\f[CR]macos\f[R] \- logging to macOS\(cqs unified log (has no effect on +non\-macOS platforms). +Combine values with a comma to enable multiple destinations. +Prefix a destination with \f[CR]no\-\f[R] to disable it. +Enabling and disabling destinations can be done at the same time. +Setting \f[CR]GHOSTTY_LOG\f[R] to \f[CR]true\f[R] will enable all +destinations. +Setting \f[CR]GHOSTTY_LOG\f[R] to \f[CR]false\f[R] will disable all +destinations. +.SH BUGS +See GitHub issues: \c +.UR https://github.com/ghostty-org/ghostty/issues +.UE \c +.SH AUTHOR +Mitchell Hashimoto \c +.MT m@mitchellh.com +.ME \c +\ Ghostty contributors \c +.UR https://github.com/ghostty-org/ghostty/graphs/contributors +.UE \c +.SH SEE ALSO +\f[B]ghostty(5)\f[R] diff --git a/ghostty-template/Ghostty.app/Contents/Resources/man/man5/ghostty.5 b/ghostty-template/Ghostty.app/Contents/Resources/man/man5/ghostty.5 new file mode 100644 index 0000000..397badb --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/man/man5/ghostty.5 @@ -0,0 +1,5698 @@ +.\" Automatically generated by Pandoc 3.7.0.2 +.\" +.TH "GHOSTTY" "5" "" "Version 1.3.1" "Ghostty terminal emulator configuration file" +.SH NAME +\f[B]ghostty\f[R] \- Ghostty terminal emulator configuration file +.SH DESCRIPTION +To configure Ghostty, you must use a configuration file. +GUI\-based configuration is on the roadmap but not yet supported. +The configuration file must be placed at +\f[CR]$XDG_CONFIG_HOME/ghostty/config.ghostty\f[R], which defaults to +\f[CR]\(ti/.config/ghostty/config.ghostty\f[R] if the \c +.UR https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html +XDG environment is not set +.UE \c +\&. +.PP +\f[B]If you are using macOS, the configuration file can also be placed +at +\f[CB]$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty\f[B].\f[R] +This is the default configuration location for macOS. +It will be searched before any of the XDG environment locations listed +above. +.PP +The file format is documented below as an example: +.IP +.EX +# The syntax is \(dqkey = value\(dq. The whitespace around the equals doesn\(aqt matter. +background = 282c34 +foreground= ffffff + +# Blank lines are ignored! + +keybind = ctrl+z=close_surface +keybind = ctrl+d=new_split:right + +# Colors can be changed by setting the 16 colors of \(gapalette\(ga, which each color +# being defined as regular and bold. +# +# black +palette = 0=#1d2021 +palette = 8=#7c6f64 +# red +palette = 1=#cc241d +palette = 9=#fb4934 +# green +palette = 2=#98971a +palette = 10=#b8bb26 +# yellow +palette = 3=#d79921 +palette = 11=#fabd2f +# blue +palette = 4=#458588 +palette = 12=#83a598 +# purple +palette = 5=#b16286 +palette = 13=#d3869b +# aqua +palette = 6=#689d6a +palette = 14=#8ec07c +# white +palette = 7=#a89984 +palette = 15=#fbf1c7 +.EE +.PP +You can view all available configuration options and their documentation +by executing the command +\f[CR]ghostty +show\-config \-\-default \-\-docs\f[R]. +Note that this will output the full default configuration with docs to +stdout, so you may want to pipe that through a pager, an editor, etc. +.PP +Note: You\(cqll see a lot of weird blank configurations like +\f[CR]font\-family =\f[R]. +This is a valid syntax to specify the default behavior (no value). +The \f[CR]+show\-config\f[R] outputs it so it\(cqs clear that key is +defaulting and also to have something to attach the doc comment to. +.PP +You can also see and read all available configuration options in the +source Config structure. +The available keys are the keys verbatim, and their possible values are +typically documented in the comments. +You also can search for the public config files of many Ghostty users +for examples and inspiration. +.SS Configuration Errors +If your configuration file has any errors, Ghostty does its best to +ignore them and move on. +Configuration errors will be logged. +.SS Debugging Configuration +You can verify that configuration is being properly loaded by looking at +the debug output of Ghostty. +.PP +In the debug output, you should see in the first 20 lines or so messages +about loading (or not loading) a configuration file, as well as any +errors it may have encountered. +Configuration errors are also shown in a dedicated window on both macOS +and Linux (GTK). +Ghostty does not treat configuration errors as fatal and will fall back +to default values for erroneous keys. +.PP +You can also view the full configuration Ghostty is loading using +\f[CR]ghostty +show\-config\f[R] from the command\-line. +Use the \f[CR]\-\-help\f[R] flag to additional options for that command. +.SS Logging +Ghostty can write logs to a number of destinations. +On all platforms, logging to \f[CR]stderr\f[R] is available. +Depending on the platform and how Ghostty was launched, logs sent to +\f[CR]stderr\f[R] may be stored by the system and made available for +later retrieval. +.PP +On Linux if Ghostty is launched by the default \f[CR]systemd\f[R] user +service, you can use \f[CR]journald\f[R] to see Ghostty\(cqs logs: +\f[CR]journalctl \-\-user \-\-unit app\-com.mitchellh.ghostty.service\f[R]. +.PP +On macOS logging to the macOS unified log is available and enabled by +default. +\(enUse the system \f[CR]log\f[R] CLI to view Ghostty\(cqs logs: +\f[CR]sudo log stream \-\-level debug \-\-predicate \(aqsubsystem==\(dqcom.mitchellh.ghostty\(dq\(aq\f[R]. +.PP +Ghostty\(cqs logging can be configured in two ways. +The first is by what optimization level Ghostty is compiled with. +If Ghostty is compiled with \f[CR]Debug\f[R] optimizations debug logs +will be output to \f[CR]stderr\f[R]. +If Ghostty is compiled with any other optimization the debug logs will +not be output to \f[CR]stderr\f[R]. +.PP +Ghostty also checks the \f[CR]GHOSTTY_LOG\f[R] environment variable. +It can be used to control which destinations receive logs. +Ghostty currently defines two destinations: +.IP \(bu 2 +\f[CR]stderr\f[R] \- logging to \f[CR]stderr\f[R]. +.IP \(bu 2 +\f[CR]macos\f[R] \- logging to macOS\(cqs unified log (has no effect on +non\-macOS platforms). +.PP +Combine values with a comma to enable multiple destinations. +Prefix a destination with \f[CR]no\-\f[R] to disable it. +Enabling and disabling destinations can be done at the same time. +Setting \f[CR]GHOSTTY_LOG\f[R] to \f[CR]true\f[R] will enable all +destinations. +Setting \f[CR]GHOSTTY_LOG\f[R] to \f[CR]false\f[R] will disable all +destinations. +.SH CONFIGURATION OPTIONS +.TP +\f[B]\f[CB]language\f[B]\f[R] +Set Ghostty\(cqs graphical user interface language to a language other +than the system default language. +For example: +.RS +.IP +.EX +language = de +.EE +.PP +will force the strings in Ghostty\(cqs graphical user interface to be in +German rather than the system default. +.PP +This will not affect the language used by programs run \f[I]within\f[R] +Ghostty. +Those will continue to use the default system language. +There are also many non\-GUI elements in Ghostty that are not translated +\- this setting will have no effect on those. +.PP +Warning: This setting cannot be reloaded at runtime. +To change the language you must fully restart Ghostty. +.PP +GTK only. +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]font\-family\f[B]\f[R] +The font families to use. +.RS +.PP +You can generate the list of valid values using the CLI: +.IP +.EX +ghostty +list\-fonts +.EE +.PP +This configuration can be repeated multiple times to specify preferred +fallback fonts when the requested codepoint is not available in the +primary font. +This is particularly useful for multiple languages, symbolic fonts, etc. +.PP +Notes on emoji specifically: On macOS, Ghostty by default will always +use Apple Color Emoji and on Linux will always use Noto Emoji. +You can override this behavior by specifying a font family here that +contains emoji glyphs. +.PP +The specific styles (bold, italic, bold italic) do not need to be +explicitly set. +If a style is not set, then the regular style (font\-family) will be +searched for stylistic variants. +If a stylistic variant is not found, Ghostty will use the regular style. +This prevents falling back to a different font family just to get a +style such as bold. +This also applies if you explicitly specify a font family for a style. +For example, if you set \f[CR]font\-family\-bold = FooBar\f[R] and +\(lqFooBar\(rq cannot be found, Ghostty will use whatever font is set +for \f[CR]font\-family\f[R] for the bold style. +.PP +Finally, some styles may be synthesized if they are not supported. +For example, if a font does not have an italic style and no alternative +italic font is specified, Ghostty will synthesize an italic style by +applying a slant to the regular style. +If you want to disable these synthesized styles then you can use the +\f[CR]font\-style\f[R] configurations as documented below. +.PP +You can disable styles completely by using the \f[CR]font\-style\f[R] +set of configurations. +See the documentation for \f[CR]font\-style\f[R] for more information. +.PP +If you want to overwrite a previous set value rather than append a +fallback, specify the value as \f[CR]\(dq\(dq\f[R] (empty string) to +reset the list and then set the new values. +For example: +.IP +.EX +font\-family = \(dq\(dq +font\-family = \(dqMy Favorite Font\(dq +.EE +.PP +Setting any of these as CLI arguments will automatically clear the +values set in configuration files so you don\(cqt need to specify +\f[CR]\-\-font\-family=\(dq\(dq\f[R] before setting a new value. +You only need to specify this within config files if you want to clear +previously set values in configuration files or on the CLI if you want +to clear values set on the CLI. +.RE +.PP +\f[B]\f[CB]font\-family\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]font\-family\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]font\-family\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]font\-style\f[B]\f[R] +The named font style to use for each of the requested terminal font +styles. +This looks up the style based on the font style string advertised by the +font itself. +For example, \(lqIosevka Heavy\(rq has a style of \(lqHeavy\(rq. +.RS +.PP +You can also use these fields to completely disable a font style. +If you set the value of the configuration below to literal +\f[CR]false\f[R] then that font style will be disabled. +If the running program in the terminal requests a disabled font style, +the regular font style will be used instead. +.PP +These are only valid if its corresponding font\-family is also +specified. +If no font\-family is specified, then the font\-style is ignored unless +you\(cqre disabling the font style. +.RE +.PP +\f[B]\f[CB]font\-style\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]font\-style\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]font\-style\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]font\-synthetic\-style\f[B]\f[R] +Control whether Ghostty should synthesize a style if the requested style +is not available in the specified font\-family. +.RS +.PP +Ghostty can synthesize bold, italic, and bold italic styles if the font +does not have a specific style. +For bold, this is done by drawing an outline around the glyph of varying +thickness. +For italic, this is done by applying a slant to the glyph. +For bold italic, both of these are applied. +.PP +Synthetic styles are not perfect and will generally not look as good as +a font that has the style natively. +However, they are useful to provide styled text when the font does not +have the style. +.PP +Set this to \(lqfalse\(rq or \(lqtrue\(rq to disable or enable synthetic +styles completely. +You can disable specific styles using \(lqno\-bold\(rq, +\(lqno\-italic\(rq, and \(lqno\-bold\-italic\(rq. +You can disable multiple styles by separating them with a comma. +For example, \(lqno\-bold,no\-italic\(rq. +.PP +Available style keys are: \f[CR]bold\f[R], \f[CR]italic\f[R], +\f[CR]bold\-italic\f[R]. +.PP +If synthetic styles are disabled, then the regular style will be used +instead if the requested style is not available. +If the font has the requested style, then the font will be used as\-is +since the style is not synthetic. +.PP +Warning: An easy mistake is to disable \f[CR]bold\f[R] or +\f[CR]italic\f[R] but not \f[CR]bold\-italic\f[R]. +Disabling only \f[CR]bold\f[R] or \f[CR]italic\f[R] will NOT disable +either in the \f[CR]bold\-italic\f[R] style. +If you want to disable \f[CR]bold\-italic\f[R], you must explicitly +disable it. +You cannot partially disable \f[CR]bold\-italic\f[R]. +.PP +By default, synthetic styles are enabled. +.RE +.TP +\f[B]\f[CB]font\-feature\f[B]\f[R] +Apply a font feature. +To enable multiple font features you can repeat this multiple times or +use a comma\-separated list of feature settings. +.RS +.PP +The syntax for feature settings is as follows, where \f[CR]feat\f[R] is +a feature: +.IP \(bu 2 +Enable features with e.g.\ \f[CR]feat\f[R], \f[CR]+feat\f[R], +\f[CR]feat on\f[R], \f[CR]feat=1\f[R]. +.IP \(bu 2 +Disabled features with e.g.\ \f[CR]\-feat\f[R], \f[CR]feat off\f[R], +\f[CR]feat=0\f[R]. +.IP \(bu 2 +Set a feature value with e.g.\ \f[CR]feat=2\f[R], \f[CR]feat = 3\f[R], +\f[CR]feat 4\f[R]. +.IP \(bu 2 +Feature names may be wrapped in quotes, meaning this config should be +syntactically compatible with the \f[CR]font\-feature\-settings\f[R] CSS +property. +.PP +The syntax is fairly loose, but invalid settings will be silently +ignored. +.PP +The font feature will apply to all fonts rendered by Ghostty. +A future enhancement will allow targeting specific faces. +.PP +To disable programming ligatures, use \f[CR]\-calt\f[R] since this is +the typical feature name for programming ligatures. +To look into what font features your font has and what they do, use a +font inspection tool such as \c +.UR https://fontdrop.info +fontdrop.info +.UE \c +\&. +.PP +To generally disable most ligatures, use +\f[CR]\-calt, \-liga, \-dlig\f[R]. +.RE +.TP +\f[B]\f[CB]font\-size\f[B]\f[R] +Font size in points. +This value can be a non\-integer and the nearest integer pixel size will +be selected. +If you have a high dpi display where 1pt = 2px then you can get an odd +numbered pixel size by specifying a half point. +.RS +.PP +For example, 13.5pt \(at 2px/pt = 27px +.PP +Changing this configuration at runtime will only affect existing +terminals that have NOT manually adjusted their font size in some way +(e.g.\ increased or decreased the font size). +Terminals that have manually adjusted their font size will retain their +manually adjusted size. +Otherwise, the font size of existing terminals will be updated on +reload. +.PP +On Linux with GTK, font size is scaled according to both display\-wide +and text\-specific scaling factors, which are often managed by your +desktop environment (e.g.\ the GNOME display scale and large text +settings). +.RE +.TP +\f[B]\f[CB]font\-variation\f[B]\f[R] +A repeatable configuration to set one or more font variations values for +a variable font. +A variable font is a single font, usually with a filename ending in +\f[CR]\-VF.ttf\f[R] or \f[CR]\-VF.otf\f[R] that contains one or more +configurable axes for things such as weight, slant, etc. +Not all fonts support variations; only fonts that explicitly state they +are variable fonts will work. +.RS +.PP +The format of this is \f[CR]id=value\f[R] where \f[CR]id\f[R] is the +axis identifier. +An axis identifier is always a 4 character string, such as +\f[CR]wght\f[R]. +To get the list of supported axes, look at your font documentation or +use a font inspection tool. +.PP +Invalid ids and values are usually ignored. +For example, if a font only supports weights from 100 to 700, setting +\f[CR]wght=800\f[R] will do nothing (it will not be clamped to 700). +You must consult your font\(cqs documentation to see what values are +supported. +.PP +Common axes are: \f[CR]wght\f[R] (weight), \f[CR]slnt\f[R] (slant), +\f[CR]ital\f[R] (italic), \f[CR]opsz\f[R] (optical size), +\f[CR]wdth\f[R] (width), \f[CR]GRAD\f[R] (gradient), etc. +.RE +.PP +\f[B]\f[CB]font\-variation\-bold\f[B]\f[R] +.PP +\f[B]\f[CB]font\-variation\-italic\f[B]\f[R] +.PP +\f[B]\f[CB]font\-variation\-bold\-italic\f[B]\f[R] +.TP +\f[B]\f[CB]font\-codepoint\-map\f[B]\f[R] +Force one or a range of Unicode codepoints to map to a specific named +font. +This is useful if you want to support special symbols or if you want to +use specific glyphs that render better for your specific font. +.RS +.PP +The syntax is \f[CR]codepoint=fontname\f[R] where \f[CR]codepoint\f[R] +is either a single codepoint or a range. +Codepoints must be specified as full Unicode hex values, such as +\f[CR]U+ABCD\f[R]. +Codepoints ranges are specified as \f[CR]U+ABCD\-U+DEFG\f[R]. +You can specify multiple ranges for the same font separated by commas, +such as \f[CR]U+ABCD\-U+DEFG,U+1234\-U+5678=fontname\f[R]. +The font name is the same value as you would use for +\f[CR]font\-family\f[R]. +.PP +This configuration can be repeated multiple times to specify multiple +codepoint mappings. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e.\ new windows, tabs, etc. +.RE +.TP +\f[B]\f[CB]clipboard\-codepoint\-map\f[B]\f[R] +Map specific Unicode codepoints to replacement values when copying text +to clipboard. +.RS +.PP +This configuration allows you to replace specific Unicode characters +with other characters or strings when copying terminal content to the +clipboard. +This is useful for converting special terminal symbols to more +compatible characters for pasting into other applications. +.PP +The syntax is similar to \f[CR]font\-codepoint\-map\f[R]: \- Single +codepoint: \f[CR]U+1234=U+ABCD\f[R] or +\f[CR]U+1234=replacement_text\f[R] \- Codepoint range: +\f[CR]U+1234\-U+5678=U+ABCD\f[R] +.PP +Examples: \- \f[CR]clipboard\-codepoint\-map = U+2500=U+002D\f[R] (box +drawing horizontal → hyphen) \- +\f[CR]clipboard\-codepoint\-map = U+2502=U+007C\f[R] (box drawing +vertical → pipe) \- \f[CR]clipboard\-codepoint\-map = U+03A3=SUM\f[R] +(Greek sigma → \(lqSUM\(rq) +.PP +This configuration can be repeated multiple times to specify multiple +mappings. +Later entries take priority over earlier ones for overlapping ranges. +.PP +Note: This only applies to text copying operations, not URL copying. +.RE +.TP +\f[B]\f[CB]font\-thicken\f[B]\f[R] +Draw fonts with a thicker stroke, if supported. +This is currently only supported on macOS. +.TP +\f[B]\f[CB]font\-thicken\-strength\f[B]\f[R] +Strength of thickening when \f[CR]font\-thicken\f[R] is enabled. +.RS +.PP +Valid values are integers between \f[CR]0\f[R] and \f[CR]255\f[R]. +\f[CR]0\f[R] does not correspond to \f[I]no\f[R] thickening, rather it +corresponds to the lightest available thickening. +.PP +Has no effect when \f[CR]font\-thicken\f[R] is set to \f[CR]false\f[R]. +.PP +This is currently only supported on macOS. +.RE +.TP +\f[B]\f[CB]font\-shaping\-break\f[B]\f[R] +Locations to break font shaping into multiple runs. +.RS +.PP +A \(lqrun\(rq is a contiguous segment of text that is shaped together. +\(lqShaping\(rq is the process of converting text (codepoints) into +glyphs (renderable characters). +This is how ligatures are formed, among other things. +For example, if a coding font turns \(lq!=\(rq into a single glyph, then +it must see \(lq!\(rq and \(lq=\(rq next to each other in a single run. +When a run is broken, the text is shaped separately. +To continue our example, if \(lq!\(rq is at the end of one run and +\(lq=\(rq is at the start of the next run, then the ligature will not be +formed. +.PP +Ghostty breaks runs at certain points to improve readability or +usability. +For example, Ghostty by default will break runs under the cursor so that +text editing can see the individual characters rather than a ligature. +This configuration lets you configure this behavior. +.PP +Combine values with a comma to set multiple options. +Prefix an option with \(lqno\-\(rq to disable it. +Enabling and disabling options can be done at the same time. +.PP +Available options: +.IP \(bu 2 +\f[CR]cursor\f[R] \- Break runs under the cursor. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]alpha\-blending\f[B]\f[R] +What color space to use when performing alpha blending. +.RS +.PP +This affects the appearance of text and of any images with transparency. +Additionally, custom shaders will receive colors in the configured +space. +.PP +On macOS the default is \f[CR]native\f[R], on all other platforms the +default is \f[CR]linear\-corrected\f[R]. +.PP +Valid values: +.IP \(bu 2 +\f[CR]native\f[R] \- Perform alpha blending in the native color space +for the OS. +On macOS this corresponds to Display P3, and on Linux it\(cqs sRGB. +.IP \(bu 2 +\f[CR]linear\f[R] \- Perform alpha blending in linear space. +This will eliminate the darkening artifacts around the edges of text +that are very visible when certain color combinations are used +(e.g.\ red / green), but makes dark text look much thinner than normal +and light text much thicker. +This is also sometimes known as \(lqgamma correction\(rq. +.IP \(bu 2 +\f[CR]linear\-corrected\f[R] \- Same as \f[CR]linear\f[R], but with a +correction step applied for text that makes it look nearly or completely +identical to \f[CR]native\f[R], but without any of the darkening +artifacts. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]adjust\-cell\-width\f[B]\f[R] +All of the configurations behavior adjust various metrics determined by +the font. +The values can be integers (1, \-1, etc.) +or a percentage (20%, \-15%, etc.). +In each case, the values represent the amount to change the original +value. +.RS +.PP +For example, a value of \f[CR]1\f[R] increases the value by 1; it does +not set it to literally 1. +A value of \f[CR]20%\f[R] increases the value by 20%. +And so on. +.PP +There is little to no validation on these values so the wrong values +(e.g. +\f[CR]\-100%\f[R]) can cause the terminal to be unusable. +Use with caution and reason. +.PP +Some values are clamped to minimum or maximum values. +This can make it appear that certain values are ignored. +For example, many \f[CR]*\-thickness\f[R] adjustments cannot go below +1px. +.PP +\f[CR]adjust\-cell\-height\f[R] has some additional behaviors to +describe: +.IP \(bu 2 +The font will be centered vertically in the cell. +.IP \(bu 2 +The cursor will remain the same size as the font, but may be adjusted +separately with \f[CR]adjust\-cursor\-height\f[R]. +.IP \(bu 2 +Powerline glyphs will be adjusted along with the cell height so that +things like status lines continue to look aligned. +.RE +.PP +\f[B]\f[CB]adjust\-cell\-height\f[B]\f[R] +.TP +\f[B]\f[CB]adjust\-font\-baseline\f[B]\f[R] +Distance in pixels or percentage adjustment from the bottom of the cell +to the text baseline. +Increase to move baseline UP, decrease to move baseline DOWN. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-underline\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the underline. +Increase to move underline DOWN, decrease to move underline UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-underline\-thickness\f[B]\f[R] +Thickness in pixels of the underline. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-strikethrough\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the strikethrough. +Increase to move strikethrough DOWN, decrease to move strikethrough UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-strikethrough\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the strikethrough. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-overline\-position\f[B]\f[R] +Distance in pixels or percentage adjustment from the top of the cell to +the top of the overline. +Increase to move overline DOWN, decrease to move overline UP. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-overline\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the overline. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-cursor\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of the bar cursor and +outlined rect cursor. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-cursor\-height\f[B]\f[R] +Height in pixels or percentage adjustment of the cursor. +Currently applies to all cursor types: bar, rect, and outlined rect. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-box\-thickness\f[B]\f[R] +Thickness in pixels or percentage adjustment of box drawing characters. +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.TP +\f[B]\f[CB]adjust\-icon\-height\f[B]\f[R] +Height in pixels or percentage adjustment of maximum height for nerd +font icons. +.RS +.PP +A positive (negative) value will increase (decrease) the maximum icon +height. +This may not affect all icons equally: the effect depends on whether the +default size of the icon is height\-constrained, which in turn depends +on the aspect ratio of both the icon and your primary font. +.PP +Certain icons designed for box drawing and terminal graphics, such as +Powerline symbols, are not affected by this option. +.PP +See the notes about adjustments in \f[CR]adjust\-cell\-width\f[R]. +.PP +Available in: 1.2.0 +.RE +.TP +\f[B]\f[CB]grapheme\-width\-method\f[B]\f[R] +The method to use for calculating the cell width of a grapheme cluster. +The default value is \f[CR]unicode\f[R] which uses the Unicode standard +to determine grapheme width. +This results in correct grapheme width but may result in cursor\-desync +issues with some programs (such as shells) that may use a legacy method +such as \f[CR]wcswidth\f[R]. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]legacy\f[R] \- Use a legacy method to determine grapheme width, +such as wcswidth This maximizes compatibility with legacy programs but +may result in incorrect grapheme width for certain graphemes such as +skin\-tone emoji, non\-English characters, etc. +.RS 2 +.PP +This is called \(lqlegacy\(rq and not something more specific because +the behavior is undefined and we want to retain the ability to modify +it. +For example, we may or may not use libc \f[CR]wcswidth\f[R] now or in +the future. +.RE +.IP \(bu 2 +\f[CR]unicode\f[R] \- Use the Unicode standard to determine grapheme +width. +.PP +If a running program explicitly enables terminal mode 2027, then +\f[CR]unicode\f[R] width will be forced regardless of this +configuration. +When mode 2027 is reset, this configuration will be used again. +.PP +This configuration can be changed at runtime but will not affect +existing terminals. +Only new terminals will use the new configuration. +.RE +.TP +\f[B]\f[CB]freetype\-load\-flags\f[B]\f[R] +FreeType load flags to enable. +The format of this is a list of flags to enable separated by commas. +If you prefix a flag with \f[CR]no\-\f[R] then it is disabled. +If you omit a flag, its default value is used, so you must explicitly +disable flags you don\(cqt want. +You can also use \f[CR]true\f[R] or \f[CR]false\f[R] to turn all flags +on or off. +.RS +.PP +This configuration only applies to Ghostty builds that use FreeType. +This is usually the case only for Linux builds. +macOS uses CoreText and does not have an equivalent configuration. +.PP +Available flags: +.IP \(bu 2 +\f[CR]hinting\f[R] \- Enable or disable hinting. +Enabled by default. +.IP \(bu 2 +\f[CR]force\-autohint\f[R] \- Always use the freetype auto\-hinter +instead of the font\(cqs native hinter. +Disabled by default. +.IP \(bu 2 +\f[CR]monochrome\f[R] \- Instructs renderer to use 1\-bit monochrome +rendering. +This will disable anti\-aliasing, and probably not look very good unless +you\(cqre using a pixel font. +Disabled by default. +.IP \(bu 2 +\f[CR]autohint\f[R] \- Enable the freetype auto\-hinter. +Enabled by default. +.IP \(bu 2 +\f[CR]light\f[R] \- Use a light hinting style, better preserving glyph +shapes. +This is the most common setting in GTK apps and therefore also +Ghostty\(cqs default. +This has no effect if \f[CR]monochrome\f[R] is enabled. +Enabled by default. +.PP +Example: \f[CR]hinting\f[R], \f[CR]no\-hinting\f[R], +\f[CR]force\-autohint\f[R], \f[CR]no\-force\-autohint\f[R] +.RE +.TP +\f[B]\f[CB]theme\f[B]\f[R] +A theme to use. +This can be a built\-in theme name, a custom theme name, or an absolute +path to a custom theme file. +Ghostty also supports specifying a different theme to use for light and +dark mode. +Each option is documented below. +.RS +.PP +If the theme is an absolute pathname, Ghostty will attempt to load that +file as a theme. +If that file does not exist or is inaccessible, an error will be logged +and no other directories will be searched. +.PP +If the theme is not an absolute pathname, two different directories will +be searched for a file name that matches the theme. +This is case sensitive on systems with case\-sensitive filesystems. +It is an error for a theme name to include path separators unless it is +an absolute pathname. +.PP +The first directory is the \f[CR]themes\f[R] subdirectory of your +Ghostty configuration directory. +This is \f[CR]$XDG_CONFIG_HOME/ghostty/themes\f[R] or +\f[CR]\(ti/.config/ghostty/themes\f[R]. +.PP +The second directory is the \f[CR]themes\f[R] subdirectory of the +Ghostty resources directory. +Ghostty ships with a multitude of themes that will be installed into +this directory. +On macOS, this list is in the +\f[CR]Ghostty.app/Contents/Resources/ghostty/themes\f[R] directory. +On Linux, this list is in the \f[CR]share/ghostty/themes\f[R] directory +(wherever you installed the Ghostty \(lqshare\(rq directory. +.PP +To see a list of available themes, run \f[CR]ghostty +list\-themes\f[R]. +.PP +A theme file is simply another Ghostty configuration file. +They share the same syntax and same configuration options. +A theme can set any valid configuration option so please do not use a +theme file from an untrusted source. +The built\-in themes are audited to only set safe configuration options. +.PP +Some options cannot be set within theme files. +The reason these are not supported should be self\-evident. +A theme file cannot set \f[CR]theme\f[R] or \f[CR]config\-file\f[R]. +At the time of writing this, Ghostty will not show any warnings or +errors if you set these options in a theme file but they will be +silently ignored. +.PP +Any additional colors specified via background, foreground, palette, +etc. +will override the colors specified in the theme. +.PP +To specify a different theme for light and dark mode, use the following +syntax: \f[CR]light:theme\-name,dark:theme\-name\f[R]. +For example: \f[CR]light:Rose Pine Dawn,dark:Rose Pine\f[R]. +Whitespace around all values are trimmed and order of light and dark +does not matter. +Both light and dark must be specified in this form. +In this form, the theme used will be based on the current desktop +environment theme. +.PP +There are some known bugs with light/dark mode theming. +These will be fixed in a future update: +.IP \(bu 2 +macOS: titlebar tabs style is not updated when switching themes. +.RE +.TP +\f[B]\f[CB]background\f[B]\f[R] +Background color for the window. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.TP +\f[B]\f[CB]foreground\f[B]\f[R] +Foreground color for the window. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.TP +\f[B]\f[CB]background\-image\f[B]\f[R] +Background image for the terminal. +.RS +.PP +This should be a path to a PNG or JPEG file, other image formats are not +yet supported. +.PP +The background image is currently per\-terminal, not per\-window. +If you are a heavy split user, the background image will be repeated +across splits. +A future improvement to Ghostty will address this. +.PP +WARNING: Background images are currently duplicated in VRAM +per\-terminal. +For sufficiently large images, this could lead to a large increase in +memory usage (specifically VRAM usage). +A future Ghostty improvement will resolve this by sharing image textures +across terminals. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]background\-image\-opacity\f[B]\f[R] +Background image opacity. +.RS +.PP +This is relative to the value of \f[CR]background\-opacity\f[R]. +.PP +A value of \f[CR]1.0\f[R] (the default) will result in the background +image being placed on top of the general background color, and then the +combined result will be adjusted to the opacity specified by +\f[CR]background\-opacity\f[R]. +.PP +A value less than \f[CR]1.0\f[R] will result in the background image +being mixed with the general background color before the combined result +is adjusted to the configured \f[CR]background\-opacity\f[R]. +.PP +A value greater than \f[CR]1.0\f[R] will result in the background image +having a higher opacity than the general background color. +For instance, if the configured \f[CR]background\-opacity\f[R] is +\f[CR]0.5\f[R] and \f[CR]background\-image\-opacity\f[R] is set to +\f[CR]1.5\f[R], then the final opacity of the background image will be +\f[CR]0.5 * 1.5 = 0.75\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]background\-image\-position\f[B]\f[R] +Background image position. +.RS +.PP +Valid values are: * \f[CR]top\-left\f[R] * \f[CR]top\-center\f[R] * +\f[CR]top\-right\f[R] * \f[CR]center\-left\f[R] * \f[CR]center\f[R] * +\f[CR]center\-right\f[R] * \f[CR]bottom\-left\f[R] * +\f[CR]bottom\-center\f[R] * \f[CR]bottom\-right\f[R] +.PP +The default value is \f[CR]center\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]background\-image\-fit\f[B]\f[R] +Background image fit. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]contain\f[R] +.RS 2 +.PP +Preserving the aspect ratio, scale the background image to the largest +size that can still be contained within the terminal, so that the whole +image is visible. +.RE +.IP \(bu 2 +\f[CR]cover\f[R] +.RS 2 +.PP +Preserving the aspect ratio, scale the background image to the smallest +size that can completely cover the terminal. +This may result in one or more edges of the image being clipped by the +edge of the terminal. +.RE +.IP \(bu 2 +\f[CR]stretch\f[R] +.RS 2 +.PP +Stretch the background image to the full size of the terminal, without +preserving the aspect ratio. +.RE +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +Don\(cqt scale the background image. +.RE +.PP +The default value is \f[CR]contain\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]background\-image\-repeat\f[B]\f[R] +Whether to repeat the background image or not. +.RS +.PP +If this is set to true, the background image will be repeated if there +would otherwise be blank space around it because it doesn\(cqt +completely fill the terminal area. +.PP +The default value is \f[CR]false\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]selection\-foreground\f[B]\f[R] +The foreground and background color for selection. +If this is not set, then the selection color is just the inverted window +background and foreground (note: not to be confused with the cell +bg/fg). +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +Since version 1.2.0, this can also be set to \f[CR]cell\-foreground\f[R] +to match the cell foreground color, or \f[CR]cell\-background\f[R] to +match the cell background color. +.PP +\f[B]\f[CB]selection\-background\f[B]\f[R] +.TP +\f[B]\f[CB]selection\-clear\-on\-typing\f[B]\f[R] +Whether to clear selected text when typing. +This defaults to \f[CR]true\f[R]. +This is typical behavior for most terminal emulators as well as text +input fields. +If you set this to \f[CR]false\f[R], then the selected text will not be +cleared when typing. +.RS +.PP +\(lqTyping\(rq is specifically defined as any non\-modifier (shift, +control, alt, etc.) +keypress that produces data to be sent to the application running within +the terminal (e.g.\ the shell). +Additionally, selection is cleared when any preedit or composition state +is started (e.g. +when typing languages such as Japanese). +.PP +If this is \f[CR]false\f[R], then the selection can still be manually +cleared by clicking once or by pressing \f[CR]escape\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]selection\-clear\-on\-copy\f[B]\f[R] +Whether to clear selected text after copying. +This defaults to \f[CR]false\f[R]. +.RS +.PP +When set to \f[CR]true\f[R], the selection will be automatically cleared +after any copy operation that invokes the \f[CR]copy_to_clipboard\f[R] +keyboard binding. +Importantly, this will not clear the selection if the copy operation was +invoked via \f[CR]copy\-on\-select\f[R]. +.PP +When set to \f[CR]false\f[R], the selection remains visible after +copying, allowing to see what was copied and potentially perform +additional operations on the same selection. +.RE +.TP +\f[B]\f[CB]selection\-word\-chars\f[B]\f[R] +Characters that mark word boundaries during text selection operations +such as double\-clicking. +When selecting a word, the selection will stop at any of these +characters. +.RS +.PP +This is similar to the \f[CR]WORDCHARS\f[R] environment variable in zsh, +except this specifies the boundary characters rather than the word +characters. +The default includes common delimiters and punctuation that typically +separate words in code and prose. +.PP +Each character in this string becomes a word boundary. +Multi\-byte UTF\-8 characters are supported, but only single codepoints +can be specified. +Multi\-codepoint sequences (e.g.\ emoji) are not supported. +.PP +The null character (U+0000) is always treated as a boundary and does not +need to be included in this configuration. +.PP +Default: \f[CR]\(rst\(aq\(dq│\(ga|:;,()[]{}<>$\f[R] +.PP +To add or remove specific characters, you can set this to a custom +value. +For example, to treat semicolons as part of words: +.IP +.EX +selection\-word\-chars = \(dq \(rst\(aq\(rs\(dq│\(ga|:,()[]{}<>$\(dq +.EE +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]minimum\-contrast\f[B]\f[R] +The minimum contrast ratio between the foreground and background colors. +The contrast ratio is a value between 1 and 21. +A value of 1 allows for no contrast (e.g.\ black on black). +This value is the contrast ratio as defined by the \c +.UR https://www.w3.org/TR/WCAG20/ +WCAG 2.0 specification +.UE \c +\&. +.RS +.PP +If you want to avoid invisible text (same color as background), a value +of 1.1 is a good value. +If you want to avoid text that is difficult to read, a value of 3 or +higher is a good value. +The higher the value, the more likely that text will become black or +white. +.PP +This value does not apply to Emoji or images. +.RE +.TP +\f[B]\f[CB]palette\f[B]\f[R] +Color palette for the 256 color form that many terminal applications +use. +The syntax of this configuration is \f[CR]N=COLOR\f[R] where +\f[CR]N\f[R] is 0 to 255 (for the 256 colors in the terminal color +table) and \f[CR]COLOR\f[R] is a typical RGB color code such as +\f[CR]#AABBCC\f[R] or \f[CR]AABBCC\f[R], or a named X11 color. +For example, \f[CR]palette = 5=#BB78D9\f[R] will set the `purple' color. +.RS +.PP +The palette index can be in decimal, binary, octal, or hexadecimal. +Decimal is assumed unless a prefix is used: \f[CR]0b\f[R] for binary, +\f[CR]0o\f[R] for octal, and \f[CR]0x\f[R] for hexadecimal. +.PP +For definitions on the color indices and what they canonically map to, +\c +.UR https://www.ditig.com/256-colors-cheat-sheet +see this cheat sheet +.UE \c +\&. +.PP +For most themes, you only need to set the first 16 colors (0\(en15) +since the rest of the palette (16\(en255) will be automatically +generated by default (see \f[CR]palette\-generate\f[R] for more +details). +.RE +.TP +\f[B]\f[CB]palette\-generate\f[B]\f[R] +Whether to automatically generate the extended 256 color palette +(indices 16\(en255) from the base 16 ANSI colors. +.RS +.PP +This lets theme authors specify only the base 16 colors and have the +rest of the palette be automatically generated in a consistent and +aesthetic way. +.PP +When enabled, the 6×6×6 color cube and 24\-step grayscale ramp are +derived from interpolations of the base palette, giving a more cohesive +look. +Colors that have been explicitly set via \f[CR]palette\f[R] are never +overwritten. +.PP +The default value is false (disabled), because many legacy programs +using the 256\-color palette hardcode assumptions about what these +colors are (mostly assuming the xterm 256 color palette). +However, this is still a very useful tool for theme authors and users +who want to customize their palette without having to specify all 256 +colors. +.PP +For more information on how the generation works, see here: +https://gist.github.com/jake\-stewart/0a8ea46159a7da2c808e5be2177e1783 +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]palette\-harmonious\f[B]\f[R] +Invert the palette colors generated when \f[CR]palette\-generate\f[R] is +enabled, so that the colors go in reverse order. +This allows palette\-based applications to work well in both light and +dark mode since the palettes are always relatively good colors. +.RS +.PP +This defaults to off because some legacy terminal applications hardcode +the assumption that palette indices 16\(en231 are ordered from darkest +to lightest, so enabling this would make them unreadable. +This is not a generally good assumption and we encourage modern terminal +applications to use the indices in a more semantic way. +.PP +This has no effect if \f[CR]palette\-generate\f[R] is disabled. +.PP +For more information see \f[CR]palette\-generate\f[R]. +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]cursor\-color\f[B]\f[R] +The color of the cursor. +If this is not set, a default will be chosen. +.RS +.PP +Direct colors can be specified as either hex (\f[CR]#RRGGBB\f[R] or +\f[CR]RRGGBB\f[R]) or a named X11 color. +.PP +Additionally, special values can be used to set the color to match other +colors at runtime: +.IP \(bu 2 +\f[CR]cell\-foreground\f[R] \- Match the cell foreground color. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]cell\-background\f[R] \- Match the cell background color. +(Available since: 1.2.0) +.RE +.TP +\f[B]\f[CB]cursor\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the cursor. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +Note that a sufficiently small value such as 0.3 may be effectively +invisible and may make it difficult to find the cursor. +.TP +\f[B]\f[CB]cursor\-style\f[B]\f[R] +The style of the cursor. +This sets the default style. +A running program can still request an explicit cursor style using +escape sequences (such as \f[CR]CSI q\f[R]). +Shell configurations will often request specific cursor styles. +.RS +.PP +Note that shell integration will automatically set the cursor to a bar +at a prompt, regardless of this configuration. +You can disable that behavior by specifying +\f[CR]shell\-integration\-features = no\-cursor\f[R] or disabling shell +integration entirely. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]block\f[R] +.IP \(bu 2 +\f[CR]bar\f[R] +.IP \(bu 2 +\f[CR]underline\f[R] +.IP \(bu 2 +\f[CR]block_hollow\f[R] +.RE +.TP +\f[B]\f[CB]cursor\-style\-blink\f[B]\f[R] +Sets the default blinking state of the cursor. +This is just the default state; running programs may override the cursor +style using \f[CR]DECSCUSR\f[R] (\f[CR]CSI q\f[R]). +.RS +.PP +If this is not set, the cursor blinks by default. +Note that this is not the same as a \(lqtrue\(rq value, as noted below. +.PP +If this is not set at all (\f[CR]null\f[R]), then Ghostty will respect +DEC Mode 12 (AT&T cursor blink) as an alternate approach to turning +blinking on/off. +If this is set to any value other than null, DEC mode 12 will be ignored +but \f[CR]DECSCUSR\f[R] will still be respected. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]\f[R] (blank) +.IP \(bu 2 +\f[CR]true\f[R] +.IP \(bu 2 +\f[CR]false\f[R] +.RE +.TP +\f[B]\f[CB]cursor\-text\f[B]\f[R] +The color of the text under the cursor. +If this is not set, a default will be chosen. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +Since version 1.2.0, this can also be set to \f[CR]cell\-foreground\f[R] +to match the cell foreground color, or \f[CR]cell\-background\f[R] to +match the cell background color. +.TP +\f[B]\f[CB]cursor\-click\-to\-move\f[B]\f[R] +Enables the ability to move the cursor at prompts by clicking on a +location in the prompt text. +.RS +.PP +This feature requires shell integration, specifically prompt marking via +\f[CR]OSC 133\f[R]. +Some shells like Fish (v4) and Nu (0.111+) natively support this while +others may require additional configuration or Ghostty\(cqs shell +integration features to be enabled. +.PP +Depending on the shell, this works either by translating your click +position into a series of synthetic arrow key movements or by sending a +click event directly to the shell. +In either case, some unexpected behavior around edge cases is possible. +.RE +.TP +\f[B]\f[CB]mouse\-hide\-while\-typing\f[B]\f[R] +Hide the mouse immediately when typing. +The mouse becomes visible again when the mouse is used (button, +movement, etc.). +Platform\-specific behavior may dictate other scenarios where the mouse +is shown. +For example on macOS, the mouse is shown again when a new window, tab, +or split is created. +.TP +\f[B]\f[CB]scroll\-to\-bottom\f[B]\f[R] +When to scroll the surface to the bottom. +The format of this is a list of options to enable separated by commas. +If you prefix an option with \f[CR]no\-\f[R] then it is disabled. +If you omit an option, its default value is used. +.RS +.PP +Available options: +.IP \(bu 2 +\f[CR]keystroke\f[R] If set, scroll the surface to the bottom when the +user presses a key that results in data being sent to the PTY (basically +anything but modifiers or keybinds that are processed by Ghostty). +.IP \(bu 2 +\f[CR]output\f[R] If set, scroll the surface to the bottom if there is +new data to display (e.g., when new lines are printed to the terminal). +.PP +The default is \f[CR]keystroke, no\-output\f[R]. +.RE +.TP +\f[B]\f[CB]mouse\-shift\-capture\f[B]\f[R] +Determines whether running programs can detect the shift key pressed +with a mouse click. +Typically, the shift key is used to extend mouse selection. +.RS +.PP +The default value of \f[CR]false\f[R] means that the shift key is not +sent with the mouse protocol and will extend the selection. +This value can be conditionally overridden by the running program with +the \f[CR]XTSHIFTESCAPE\f[R] sequence. +.PP +The value \f[CR]true\f[R] means that the shift key is sent with the +mouse protocol but the running program can override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +.PP +The value \f[CR]never\f[R] is the same as \f[CR]false\f[R] but the +running program cannot override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +The value \f[CR]always\f[R] is the same as \f[CR]true\f[R] but the +running program cannot override this behavior with +\f[CR]XTSHIFTESCAPE\f[R]. +.PP +If you always want shift to extend mouse selection even if the program +requests otherwise, set this to \f[CR]never\f[R]. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]true\f[R] +.IP \(bu 2 +\f[CR]false\f[R] +.IP \(bu 2 +\f[CR]always\f[R] +.IP \(bu 2 +\f[CR]never\f[R] +.RE +.TP +\f[B]\f[CB]mouse\-reporting\f[B]\f[R] +Enable or disable mouse reporting. +When set to \f[CR]false\f[R], mouse events will not be reported to +terminal applications even if they request it. +This allows you to always use the mouse for selection and other terminal +UI interactions without applications capturing mouse input. +.RS +.PP +When set to \f[CR]true\f[R] (the default), terminal applications can +request mouse reporting and will receive mouse events according to their +requested mode. +.PP +This can be toggled at runtime using the +\f[CR]toggle_mouse_reporting\f[R] keybind action. +.RE +.TP +\f[B]\f[CB]mouse\-scroll\-multiplier\f[B]\f[R] +Multiplier for scrolling distance with the mouse wheel. +.RS +.PP +A prefix of \f[CR]precision:\f[R] or \f[CR]discrete:\f[R] can be used to +set the multiplier only for scrolling with the specific type of devices. +These can be comma\-separated to set both types of multipliers at the +same time, e.g. +\f[CR]precision:0.1,discrete:3\f[R]. +If no prefix is used, the multiplier applies to all scrolling devices. +Specifying a prefix was introduced in Ghostty 1.2.1. +.PP +The value will be clamped to [0.01, 10,000]. +Both of these are extreme and you\(cqre likely to have a bad experience +if you set either extreme. +.PP +The default value is \(lq3\(rq for discrete devices and \(lq1\(rq for +precision devices. +.RE +.TP +\f[B]\f[CB]background\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the background. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +.RS +.PP +On macOS, background opacity is disabled when the terminal enters native +fullscreen. +This is because the background becomes gray and it can cause widgets to +show through which isn\(cqt generally desirable. +.PP +On macOS, changing this configuration requires restarting Ghostty +completely. +.RE +.TP +\f[B]\f[CB]background\-opacity\-cells\f[B]\f[R] +Applies background opacity to cells with an explicit background color +set. +.RS +.PP +Normally, \f[CR]background\-opacity\f[R] is only applied to the window +background. +If a cell has an explicit background color set, such as red, then that +background color will be fully opaque. +An effect of this is that some terminal applications that repaint the +background color of the terminal such as a Neovim and Tmux may not +respect the \f[CR]background\-opacity\f[R] (by design). +.PP +Setting this to \f[CR]true\f[R] will apply the +\f[CR]background\-opacity\f[R] to all cells regardless of whether they +have an explicit background color set or not. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]background\-blur\f[B]\f[R] +Whether to blur the background when \f[CR]background\-opacity\f[R] is +less than 1. +.RS +.PP +Valid values are: +.IP \(bu 2 +a nonnegative integer specifying the \f[I]blur intensity\f[R] +.IP \(bu 2 +\f[CR]false\f[R], equivalent to a blur intensity of 0 +.IP \(bu 2 +\f[CR]true\f[R], equivalent to the default blur intensity of 20, which +is reasonable for a good looking blur. +Higher blur intensities may cause strange rendering and performance +issues. +.PP +On macOS 26.0 and later, there are additional special values that can be +set to use the native macOS glass effects: +.IP \(bu 2 +\f[CR]macos\-glass\-regular\f[R] \- Standard glass effect with some +opacity +.IP \(bu 2 +\f[CR]macos\-glass\-clear\f[R] \- Highly transparent glass effect +.PP +If the macOS values are set, then this implies +\f[CR]background\-blur = true\f[R] on non\-macOS platforms. +.PP +Supported on macOS and on some Linux desktop environments, including: +.IP \(bu 2 +KDE Plasma (Wayland and X11) +.PP +Warning: the exact blur intensity is \f[I]ignored\f[R] under KDE Plasma, +and setting this setting to either \f[CR]true\f[R] or any positive blur +intensity value would achieve the same effect. +The reason is that KWin, the window compositor powering Plasma, only has +one global blur setting and does not allow applications to specify +individual blur settings. +.PP +To configure KWin\(cqs global blur setting, open System Settings and go +to \(lqApps & Windows\(rq > \(lqWindow Management\(rq > \(lqDesktop +Effects\(rq and select the \(lqBlur\(rq plugin. +If disabled, enable it by ticking the checkbox to the left. +Then click on the \(lqConfigure\(rq button and there will be two sliders +that allow you to set background blur and noise intensities for all +apps, including Ghostty. +.PP +All other Linux desktop environments are as of now unsupported. +Users may need to set environment\-specific settings and/or install +third\-party plugins in order to support background blur, as there +isn\(cqt a unified interface for doing so. +.RE +.TP +\f[B]\f[CB]unfocused\-split\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of an unfocused split. +Unfocused splits by default are slightly faded out to make it easier to +see which split is focused. +To disable this feature, set this value to 1. +.RS +.PP +A value of 1 is fully opaque and a value of 0 is fully transparent. +Because \(lq0\(rq is not useful (it makes the window look very weird), +the minimum value is 0.15. +This value still looks weird but you can at least see what\(cqs going +on. +A value outside of the range 0.15 to 1 will be clamped to the nearest +valid value. +.RE +.TP +\f[B]\f[CB]unfocused\-split\-fill\f[B]\f[R] +The color to dim the unfocused split. +Unfocused splits are dimmed by rendering a semi\-transparent rectangle +over the split. +This sets the color of that rectangle and can be used to carefully +control the dimming effect. +.RS +.PP +This will default to the background color. +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]split\-divider\-color\f[B]\f[R] +The color of the split divider. +If this is not set, a default will be chosen. +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]split\-preserve\-zoom\f[B]\f[R] +Control when Ghostty preserves a zoomed split. +Under normal circumstances, any operation that changes focus or layout +of the split tree in a window will unzoom any zoomed split. +This configuration allows you to control this behavior. +.RS +.PP +This can be set to \f[CR]navigation\f[R] to preserve the zoomed split +state when navigating to another split (e.g.\ via +\f[CR]goto_split\f[R]). +This will change the zoomed split to the newly focused split instead of +unzooming. +.PP +Any options can also be prefixed with \f[CR]no\-\f[R] to disable that +option. +.PP +Example: \f[CR]split\-preserve\-zoom = navigation\f[R] +.PP +Available since: 1.3.0 +.RE +.TP +\f[B]\f[CB]search\-foreground\f[B]\f[R] +The foreground and background color for search matches. +This only applies to non\-focused search matches, also known as +candidate matches. +.RS +.PP +Valid values: +.IP \(bu 2 +Hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) +.IP \(bu 2 +Named X11 color +.IP \(bu 2 +\(lqcell\-foreground\(rq to match the cell foreground color +.IP \(bu 2 +\(lqcell\-background\(rq to match the cell background color +.PP +The default value is black text on a golden yellow background. +.RE +.PP +\f[B]\f[CB]search\-background\f[B]\f[R] +.TP +\f[B]\f[CB]search\-selected\-foreground\f[B]\f[R] +The foreground and background color for the currently selected search +match. +This is the focused match that will be jumped to when using +next/previous search navigation. +.RS +.PP +Valid values: +.IP \(bu 2 +Hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) +.IP \(bu 2 +Named X11 color +.IP \(bu 2 +\(lqcell\-foreground\(rq to match the cell foreground color +.IP \(bu 2 +\(lqcell\-background\(rq to match the cell background color +.PP +The default value is black text on a soft peach background. +.RE +.PP +\f[B]\f[CB]search\-selected\-background\f[B]\f[R] +.TP +\f[B]\f[CB]command\f[B]\f[R] +The command to run, usually a shell. +If this is not an absolute path, it\(cqll be looked up in the +\f[CR]PATH\f[R]. +If this is not set, a default will be looked up from your system. +The rules for the default lookup are: +.RS +.IP \(bu 2 +\f[CR]SHELL\f[R] environment variable +.IP \(bu 2 +\f[CR]passwd\f[R] entry (user information) +.PP +This can contain additional arguments to run the command with. +If additional arguments are provided, the command will be executed using +\f[CR]/bin/sh \-c\f[R] to offload shell argument expansion. +.PP +To avoid shell expansion altogether, prefix the command with +\f[CR]direct:\f[R], e.g. +\f[CR]direct:nvim foo\f[R]. +This will avoid the roundtrip to \f[CR]/bin/sh\f[R] but will also not +support any shell parsing such as arguments with spaces, filepaths with +\f[CR]\(ti\f[R], globs, etc. +(Available since: 1.2.0) +.PP +You can also explicitly prefix the command with \f[CR]shell:\f[R] to +always wrap the command in a shell. +This can be used to ensure our heuristics to choose the right mode are +not used in case they are wrong. +(Available since: 1.2.0) +.PP +This command will be used for all new terminal surfaces, i.e.\ new +windows, tabs, etc. +If you want to run a command only for the first terminal surface created +when Ghostty starts, use the \f[CR]initial\-command\f[R] configuration. +.PP +Ghostty supports the common \f[CR]\-e\f[R] flag for executing a command +with arguments. +For example, \f[CR]ghostty \-e fish \-\-with \-\-custom \-\-args\f[R]. +This flag sets the \f[CR]initial\-command\f[R] configuration, see that +for more information. +.RE +.TP +\f[B]\f[CB]initial\-command\f[B]\f[R] +This is the same as \(lqcommand\(rq, but only applies to the first +terminal surface created when Ghostty starts. +Subsequent terminal surfaces will use the \f[CR]command\f[R] +configuration. +.RS +.PP +After the first terminal surface is created (or closed), there is no way +to run this initial command again automatically. +As such, setting this at runtime works but will only affect the next +terminal surface if it is the first one ever created. +.PP +If you\(cqre using the \f[CR]ghostty\f[R] CLI there is also a shortcut +to set this with arguments directly: you can use the \f[CR]\-e\f[R] +flag. +For example: \f[CR]ghostty \-e fish \-\-with \-\-custom \-\-args\f[R]. +The \f[CR]\-e\f[R] flag automatically forces some other behaviors as +well: +.IP \(bu 2 +Disables shell expansion since the input is expected to already be +shell\-expanded by the upstream (e.g.\ the shell used to type in the +\f[CR]ghostty \-e\f[R] command). +.IP \(bu 2 +\f[CR]gtk\-single\-instance=false\f[R] \- This ensures that a new +instance is launched and the CLI args are respected. +.IP \(bu 2 +\f[CR]quit\-after\-last\-window\-closed=true\f[R] \- This ensures that +the Ghostty process will exit when the command exits. +Additionally, the \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] is +unset. +.IP \(bu 2 +\f[CR]shell\-integration=detect\f[R] (if not \f[CR]none\f[R]) \- This +prevents forcibly injecting any configured shell integration into the +command\(cqs environment. +With \f[CR]\-e\f[R] its highly unlikely that you\(cqre executing a shell +and forced shell integration is likely to cause problems (e.g.\ by +wrapping your command in a shell, setting env vars, etc.). +This is a safety measure to prevent unexpected behavior. +If you want shell integration with a \f[CR]\-e\f[R]\-executed command, +you must either name your binary appropriately or source the shell +integration script manually. +.RE +.TP +\f[B]\f[CB]notify\-on\-command\-finish\f[B]\f[R] +Controls when command finished notifications are sent. +There are three options: +.RS +.IP \(bu 2 +\f[CR]never\f[R] \- Never send notifications (the default). +.IP \(bu 2 +\f[CR]unfocused\f[R] \- Only send notifications if the surface that the +command is running in is not focused. +.IP \(bu 2 +\f[CR]always\f[R] \- Always send notifications. +.PP +Command finished notifications requires that either shell integration is +enabled, or that your shell sends OSC 133 escape sequences to mark the +start and end of commands. +.PP +On GTK, there is a context menu item that will enable command finished +notifications for a single command, overriding the \f[CR]never\f[R] and +\f[CR]unfocused\f[R] options. +.PP +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]notify\-on\-command\-finish\-action\f[B]\f[R] +If command finished notifications are enabled, this controls how the +user is notified. +.RS +.PP +Available options: +.IP \(bu 2 +\f[CR]bell\f[R] \- enabled by default +.IP \(bu 2 +\f[CR]notify\f[R] \- disabled by default +.PP +Options can be combined by listing them as a comma separated list. +Options can be negated by prefixing them with \f[CR]no\-\f[R]. +For example \f[CR]no\-bell,notify\f[R]. +.PP +Available since 1.3.0. +.RE +.TP +\f[B]\f[CB]notify\-on\-command\-finish\-after\f[B]\f[R] +If command finished notifications are enabled, this controls how long a +command must have been running before a notification will be sent. +The default is five seconds. +.RS +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +Available since 1.3.0 +.RE +.TP +\f[B]\f[CB]env\f[B]\f[R] +Extra environment variables to pass to commands launched in a terminal +surface. +The format is \f[CR]env=KEY=VALUE\f[R]. +.RS +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = bar=baz\f[R] +.PP +Setting \f[CR]env\f[R] to an empty string will reset the entire map to +default (empty). +.PP +\f[CR]env =\f[R] +.PP +Setting a key to an empty string will remove that particular key and +corresponding value from the map. +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = foo=\f[R] +.PP +will result in \f[CR]foo\f[R] not being passed to the launched commands. +.PP +Setting a key multiple times will overwrite previous entries. +.PP +\f[CR]env = foo=bar\f[R] \f[CR]env = foo=baz\f[R] +.PP +will result in \f[CR]foo=baz\f[R] being passed to the launched commands. +.PP +These environment variables will override any existing environment +variables set by Ghostty. +For example, if you set \f[CR]GHOSTTY_RESOURCES_DIR\f[R] then the value +you set here will override the value Ghostty typically automatically +injects. +.PP +These environment variables \f[I]will not\f[R] be passed to commands run +by Ghostty for other purposes, like \f[CR]open\f[R] or +\f[CR]xdg\-open\f[R] used to open URLs in your browser. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]input\f[B]\f[R] +Data to send as input to the command on startup. +.RS +.PP +The configured \f[CR]command\f[R] will be launched using the typical +rules, then the data specified as this input will be written to the pty +before any other input can be provided. +.PP +The bytes are sent as\-is with no additional encoding. +Therefore, be cautious about input that can contain control characters, +because this can be used to execute programs in a shell. +.PP +The format of this value is: +.IP \(bu 2 +\f[CR]raw:\f[R] \- Send raw text as\-is. +This uses Zig string literal syntax so you can specify control +characters and other standard escapes. +.IP \(bu 2 +\f[CR]path:\f[R] \- Read a filepath and send the contents. +The path must be to a file with finite length. +e.g.\ don\(cqt use a device such as \f[CR]/dev/stdin\f[R] or +\f[CR]/dev/urandom\f[R] as these will block terminal startup +indefinitely. +Files are limited to 10MB in size to prevent excessive memory usage. +If you have files larger than this you should write a script to read the +file and send it to the terminal. +.PP +If no valid prefix is found, it is assumed to be a \f[CR]raw:\f[R] +input. +This is an ergonomic choice to allow you to simply write +\f[CR]input = \(dqHello, world!\(dq\f[R] (a common case) without needing +to prefix every value with \f[CR]raw:\f[R]. +.PP +This can be repeated multiple times to send more data. +The data is concatenated directly with no separator characters in +between (e.g.\ no newline). +.PP +If any of the input sources do not exist, then none of the input will be +sent. +Input sources are not verified until the terminal is starting, so +missing paths will not show up in config validation. +.PP +Changing this configuration at runtime will only affect new terminals. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]wait\-after\-command\f[B]\f[R] +If true, keep the terminal open after the command exits. +Normally, the terminal window closes when the running command (such as a +shell) exits. +With this true, the terminal window will stay open until any keypress is +received. +.RS +.PP +This is primarily useful for scripts or debugging. +.RE +.TP +\f[B]\f[CB]abnormal\-command\-exit\-runtime\f[B]\f[R] +The number of milliseconds of runtime below which we consider a process +exit to be abnormal. +This is used to show an error message when the process exits too +quickly. +.RS +.PP +On Linux, this must be paired with a non\-zero exit code. +On macOS, we allow any exit code because of the way shell processes are +launched via the login command. +.RE +.TP +\f[B]\f[CB]scrollback\-limit\f[B]\f[R] +The size of the scrollback buffer in bytes. +This also includes the active screen. +No matter what this is set to, enough memory will always be allocated +for the visible screen and anything leftover is the limit for the +scrollback. +.RS +.PP +When this limit is reached, the oldest lines are removed from the +scrollback. +.PP +Scrollback currently exists completely in memory. +This means that the larger this value, the larger potential memory +usage. +Scrollback is allocated lazily up to this limit, so if you set this to a +very large value, it will not immediately consume a lot of memory. +.PP +This size is per terminal surface, not for the entire application. +.PP +It is not currently possible to set an unlimited scrollback buffer. +This is a future planned feature. +.PP +This can be changed at runtime but will only affect new terminal +surfaces. +.RE +.TP +\f[B]\f[CB]scrollbar\f[B]\f[R] +Control when the scrollbar is shown to scroll the scrollback buffer. +.RS +.PP +The default value is \f[CR]system\f[R]. +.PP +Valid values: +.IP \(bu 2 +\f[CR]system\f[R] \- Respect the system settings for when to show +scrollbars. +For example, on macOS, this will respect the \(lqScrollbar behavior\(rq +system setting which by default usually only shows scrollbars while +actively scrolling or hovering the gutter. +.IP \(bu 2 +\f[CR]never\f[R] \- Never show a scrollbar. +You can still scroll using the mouse, keybind actions, etc. +but you will not have a visual UI widget showing a scrollbar. +.RE +.TP +\f[B]\f[CB]link\f[B]\f[R] +Match a regular expression against the terminal text and associate +clicking it with an action. +This can be used to match URLs, file paths, etc. +Actions can be opening using the system opener (e.g.\ \f[CR]open\f[R] or +\f[CR]xdg\-open\f[R]) or executing any arbitrary binding action. +.RS +.PP +Links that are configured earlier take precedence over links that are +configured later. +.PP +A default link that matches a URL and opens it in the system opener +always exists. +This can be disabled using \f[CR]link\-url\f[R]. +.PP +TODO: This can\(cqt currently be set! +.RE +.TP +\f[B]\f[CB]link\-url\f[B]\f[R] +Enable URL matching. +URLs are matched on hover with control (Linux) or command (macOS) +pressed and open using the default system application for the linked +URL. +.RS +.PP +The URL matcher is always lowest priority of any configured links (see +\f[CR]link\f[R]). +If you want to customize URL matching, use \f[CR]link\f[R] and disable +this. +.RE +.TP +\f[B]\f[CB]link\-previews\f[B]\f[R] +Show link previews for a matched URL. +.RS +.PP +When true, link previews are shown for all matched URLs. +When false, link previews are never shown. +When set to \(lqosc8\(rq, link previews are only shown for hyperlinks +created with the OSC 8 sequence (in this case, the link text can differ +from the link destination). +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]maximize\f[B]\f[R] +Whether to start the window in a maximized state. +This setting applies to new windows and does not apply to tabs, splits, +etc. +However, this setting will apply to all new windows, not just the first +one. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]fullscreen\f[B]\f[R] +Start new windows in fullscreen. +This setting applies to new windows and does not apply to tabs, splits, +etc. +However, this setting will apply to all new windows, not just the first +one. +.RS +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]false\f[R] \- Don\(cqt start in fullscreen (default) +.IP \(bu 2 +\f[CR]true\f[R] \- Start in native fullscreen +.IP \(bu 2 +\f[CR]non\-native\f[R] \- (macOS only) Start in non\-native fullscreen, +hiding the menu bar. +This is faster than native fullscreen since it doesn\(cqt use +animations. +On non\-macOS platforms, this behaves the same as \f[CR]true\f[R]. +.IP \(bu 2 +\f[CR]non\-native\-visible\-menu\f[R] \- (macOS only) Start in +non\-native fullscreen, keeping the menu bar visible. +On non\-macOS platforms, behaves like \f[CR]true\f[R]. +.IP \(bu 2 +\f[CR]non\-native\-padded\-notch\f[R] \- (macOS only) Start in +non\-native fullscreen, hiding the menu bar but padding for the notch on +applicable devices. +On non\-macOS platforms, behaves like \f[CR]true\f[R]. +.PP +Important: tabs DO NOT WORK with non\-native fullscreen modes. +Non\-native fullscreen removes the titlebar and macOS native tabs +require the titlebar. +If you use tabs, use \f[CR]true\f[R] (native) instead. +.PP +On macOS, \f[CR]true\f[R] (native fullscreen) does not work if +\f[CR]window\-decoration\f[R] is set to \f[CR]false\f[R], because native +fullscreen on macOS requires window decorations. +.RE +.TP +\f[B]\f[CB]title\f[B]\f[R] +The title Ghostty will use for the window. +This will force the title of the window to be this title at all times +and Ghostty will ignore any set title escape sequences programs (such as +Neovim) may send. +.RS +.PP +If you want a blank title, set this to one or more spaces by quoting the +value. +For example, \f[CR]title = \(dq \(dq\f[R]. +This effectively hides the title. +This is necessary because setting a blank value resets the title to the +default value of the running program. +.PP +This configuration can be reloaded at runtime. +If it is set, the title will update for all windows. +If it is unset, the next title change escape sequence will be honored +but previous changes will not retroactively be set. +This latter case may require you to restart programs such as Neovim to +get the new title. +.RE +.TP +\f[B]\f[CB]class\f[B]\f[R] +The setting that will change the application class value. +.RS +.PP +This controls the class field of the \f[CR]WM_CLASS\f[R] X11 property +(when running under X11), the Wayland application ID (when running under +Wayland), and the bus name that Ghostty uses to connect to DBus. +.PP +Note that changing this value between invocations will create new, +separate instances, of Ghostty when running with +\f[CR]gtk\-single\-instance=true\f[R]. +See that option for more details. +.PP +Changing this value may break launching Ghostty from \f[CR].desktop\f[R] +files, via DBus activation, or systemd user services as the system is +expecting Ghostty to connect to DBus using the default \f[CR]class\f[R] +when it is launched. +.PP +The class name must follow the requirements defined \c +.UR https://docs.gtk.org/gio/type_func.Application.id_is_valid.html +in the GTK documentation +.UE \c +\&. +.PP +The default is \f[CR]com.mitchellh.ghostty\f[R]. +.PP +This only affects GTK builds. +.RE +.TP +\f[B]\f[CB]x11\-instance\-name\f[B]\f[R] +This controls the instance name field of the \f[CR]WM_CLASS\f[R] X11 +property when running under X11. +It has no effect otherwise. +.RS +.PP +The default is \f[CR]ghostty\f[R]. +.PP +This only affects GTK builds. +.RE +.TP +\f[B]\f[CB]working\-directory\f[B]\f[R] +The directory to change to after starting the command. +.RS +.PP +This setting is secondary to the +\f[CR]window\-inherit\-working\-directory\f[R] setting. +If a previous Ghostty terminal exists in the same process, +\f[CR]window\-inherit\-working\-directory\f[R] will take precedence. +Otherwise, this setting will be used. +Typically, this setting is used only for the first window. +.PP +The default is \f[CR]inherit\f[R] except in special scenarios listed +next. +On macOS, if Ghostty can detect it is launched from launchd +(double\-clicked) or \f[CR]open\f[R], then it defaults to +\f[CR]home\f[R]. +On Linux with GTK, if Ghostty can detect it was launched from a desktop +launcher, then it defaults to \f[CR]home\f[R]. +.PP +The value of this must be an absolute path, a path prefixed with +\f[CR]\(ti/\f[R] (the tilde will be expanded to the user\(cqs home +directory), or one of the special values below: +.IP \(bu 2 +\f[CR]home\f[R] \- The home directory of the executing user. +.IP \(bu 2 +\f[CR]inherit\f[R] \- The working directory of the launching process. +.RE +.TP +\f[B]\f[CB]keybind\f[B]\f[R] +Key bindings. +The format is \f[CR]trigger=action\f[R]. +Duplicate triggers will overwrite previously set values. +The list of actions is available in the documentation or using the +\f[CR]ghostty +list\-actions\f[R] command. +.RS +.PP +Trigger: \f[CR]+\f[R]\-separated list of keys and modifiers. +Example: \f[CR]ctrl+a\f[R], \f[CR]ctrl+shift+b\f[R], \f[CR]up\f[R]. +.PP +If the key is a single Unicode codepoint, the trigger will match any +presses that produce that codepoint. +These are impacted by keyboard layouts. +For example, \f[CR]a\f[R] will match the \f[CR]a\f[R] key on a QWERTY +keyboard, but will match the \f[CR]q\f[R] key on a AZERTY keyboard +(assuming US physical layout). +.PP +For Unicode codepoints, matching is done by comparing the set of +modifiers with the unmodified codepoint. +The unmodified codepoint is sometimes called an \(lqunshifted +character\(rq in other software, but all modifiers are considered, not +only shift. +For example, \f[CR]ctrl+a\f[R] will match \f[CR]a\f[R] but not +\f[CR]ctrl+shift+a\f[R] (which is \f[CR]A\f[R] on a US keyboard). +.PP +Further, codepoint matching is case\-insensitive and the unmodified +codepoint is always case folded for comparison. +As a result, \f[CR]ctrl+A\f[R] configured will match when +\f[CR]ctrl+a\f[R] is pressed. +Note that this means some key combinations are impossible depending on +keyboard layout. +For example, \f[CR]ctrl+_\f[R] is impossible on a US keyboard because +\f[CR]_\f[R] is \f[CR]shift+\-\f[R] and \f[CR]ctrl+shift+\-\f[R] is not +equal to \f[CR]ctrl+_\f[R] (because the modifiers don\(cqt match!). +More details on impossible key combinations can be found at this +excellent source written by Qt developers: +https://doc.qt.io/qt\-6/qkeysequence.html#keyboard\-layout\-issues +.PP +Physical key codes can be specified by using any of the key codes as +specified by the \c +.UR https://www.w3.org/TR/uievents-code/ +W3C specification +.UE \c +\&. +For example, \f[CR]KeyA\f[R] will match the physical \f[CR]a\f[R] key on +a US standard keyboard regardless of the keyboard layout. +These are case\-sensitive. +.PP +For aesthetic reasons, the w3c codes also support snake case. +For example, \f[CR]key_a\f[R] is equivalent to \f[CR]KeyA\f[R]. +The only exceptions are function keys, e.g.\ \f[CR]F1\f[R] is +\f[CR]f1\f[R] (no underscore). +This is a consequence of our internal code using snake case but is +purposely supported and tested so it is safe to use. +It allows an all\-lowercase binding which I find more aesthetically +pleasing. +.PP +Function keys such as \f[CR]insert\f[R], \f[CR]up\f[R], \f[CR]f5\f[R], +etc. +are also specified using the keys as specified by the previously linked +W3C specification. +.PP +Physical keys always match with a higher priority than Unicode +codepoints, so if you specify both \f[CR]a\f[R] and \f[CR]KeyA\f[R], the +physical key will always be used regardless of what order they are +configured. +.PP +The special key \f[CR]catch_all\f[R] can be used to match any key that +is not otherwise bound. +This can be combined with modifiers, for example +\f[CR]ctrl+catch_all\f[R] will match any key pressed with +\f[CR]ctrl\f[R] that is not otherwise bound. +When looking up a binding, Ghostty first tries to match +\f[CR]catch_all\f[R] with modifiers. +If no match is found and the event has modifiers, it falls back to +\f[CR]catch_all\f[R] without modifiers. +.PP +Valid modifiers are \f[CR]shift\f[R], \f[CR]ctrl\f[R] (alias: +\f[CR]control\f[R]), \f[CR]alt\f[R] (alias: \f[CR]opt\f[R], +\f[CR]option\f[R]), and \f[CR]super\f[R] (alias: \f[CR]cmd\f[R], +\f[CR]command\f[R]). +You may use the modifier or the alias. +When debugging keybinds, the non\-aliased modifier will always be used +in output. +.PP +Note: The fn or \(lqglobe\(rq key on keyboards are not supported as a +modifier. +This is a limitation of the operating systems and GUI toolkits that +Ghostty uses. +.PP +Some additional notes for triggers: +.IP \(bu 2 +modifiers cannot repeat, \f[CR]ctrl+ctrl+a\f[R] is invalid. +.IP \(bu 2 +modifiers and keys can be in any order, \f[CR]shift+a+ctrl\f[R] is +\f[I]weird\f[R], but valid. +.IP \(bu 2 +only a single key input is allowed, \f[CR]ctrl+a+b\f[R] is invalid. +.PP +You may also specify multiple triggers separated by \f[CR]>\f[R] to +require a sequence of triggers to activate the action. +For example, \f[CR]ctrl+a>n=new_window\f[R] will only trigger the +\f[CR]new_window\f[R] action if the user presses \f[CR]ctrl+a\f[R] +followed separately by \f[CR]n\f[R]. +In other software, this is sometimes called a leader key, a key chord, a +key table, etc. +There is no hardcoded limit on the number of parts in a sequence. +.PP +Warning: If you define a sequence as a CLI argument to +\f[CR]ghostty\f[R], you probably have to quote the keybind since +\f[CR]>\f[R] is a special character in most shells. +Example: ghostty \(enkeybind=`ctrl+a>n=new_window' +.PP +A trigger sequence has some special handling: +.IP \(bu 2 +Ghostty will wait an indefinite amount of time for the next key in the +sequence. +There is no way to specify a timeout. +The only way to force the output of a prefix key is to assign another +keybind to specifically output that key +(e.g.\ \f[CR]ctrl+a>ctrl+a=text:foo\f[R]) or press an unbound key which +will send both keys to the program. +.IP \(bu 2 +If an unbound key is pressed during a sequence and a +\f[CR]catch_all\f[R] binding exists that would \f[CR]ignore\f[R] the +input, the entire sequence is dropped and nothing happens. +Otherwise, the entire sequence is encoded and sent to the running +program as if no keybind existed. +.IP \(bu 2 +If a prefix in a sequence is previously bound, the sequence will +override the previous binding. +For example, if \f[CR]ctrl+a\f[R] is bound to \f[CR]new_window\f[R] and +\f[CR]ctrl+a>n\f[R] is bound to \f[CR]new_tab\f[R], pressing +\f[CR]ctrl+a\f[R] will do nothing. +.IP \(bu 2 +Adding to the above, if a previously bound sequence prefix is used in a +new, non\-sequence binding, the entire previously bound sequence will be +unbound. +For example, if you bind \f[CR]ctrl+a>n\f[R] and \f[CR]ctrl+a>t\f[R], +and then bind \f[CR]ctrl+a\f[R] directly, both \f[CR]ctrl+a>n\f[R] and +\f[CR]ctrl+a>t\f[R] will become unbound. +.IP \(bu 2 +Trigger sequences are not allowed for \f[CR]global:\f[R] or +\f[CR]all:\f[R]\-prefixed triggers. +This is a limitation we could remove in the future. +.PP +Action is the action to take when the trigger is satisfied. +It takes the format \f[CR]action\f[R] or \f[CR]action:param\f[R]. +The latter form is only valid if the action requires a parameter. +.IP \(bu 2 +\f[CR]ignore\f[R] \- Do nothing, ignore the key input. +This can be used to black hole certain inputs to have no effect. +.IP \(bu 2 +\f[CR]unbind\f[R] \- Remove the binding. +This makes it so the previous action is removed, and the key will be +sent through to the child command if it is printable. +Unbind will remove any matching trigger, including +\f[CR]physical:\f[R]\-prefixed triggers without specifying the prefix. +.IP \(bu 2 +\f[CR]csi:text\f[R] \- Send a CSI sequence. +e.g.\ \f[CR]csi:A\f[R] sends \(lqcursor up\(rq. +.IP \(bu 2 +\f[CR]esc:text\f[R] \- Send an escape sequence. +e.g.\ \f[CR]esc:d\f[R] deletes to the end of the word to the right. +.IP \(bu 2 +\f[CR]text:text\f[R] \- Send a string. +Uses Zig string literal syntax. +e.g.\ \f[CR]text:\(rsx15\f[R] sends Ctrl\-U. +.IP \(bu 2 +All other actions can be found in the documentation or by using the +\f[CR]ghostty +list\-actions\f[R] command. +.PP +Some notes for the action: +.IP \(bu 2 +The parameter is taken as\-is after the \f[CR]:\f[R]. +Double quotes or other mechanisms are included and NOT parsed. +If you want to send a string value that includes spaces, wrap the entire +trigger/action in double quotes. +Example: \f[CR]\-\-keybind=\(dqup=csi:A B\(dq\f[R] +.PP +There are some additional special values that can be specified for +keybind: +.IP \(bu 2 +\f[CR]keybind=clear\f[R] will clear all set keybindings. +Warning: this removes ALL keybindings up to this point, including the +default keybindings. +.PP +The keybind trigger can be prefixed with some special values to change +the behavior of the keybind. +These are: +.IP \(bu 2 +\f[CR]all:\f[R] +.RS 2 +.PP +Make the keybind apply to all terminal surfaces. +By default, keybinds only apply to the focused terminal surface. +If this is true, then the keybind will be sent to all terminal surfaces. +This only applies to actions that are surface\-specific. +For actions that are already global (e.g.\ \f[CR]quit\f[R]), this prefix +has no effect. +.PP +Available since: 1.0.0 +.RE +.IP \(bu 2 +\f[CR]global:\f[R] +.RS 2 +.PP +Make the keybind global. +By default, keybinds only work within Ghostty and under the right +conditions (application focused, sometimes terminal focused, etc.). +If you want a keybind to work globally across your system (e.g.\ even +when Ghostty is not focused), specify this prefix. +This prefix implies \f[CR]all:\f[R]. +.PP +Note: this does not work in all environments; see the additional notes +below for more information. +.PP +Available since: 1.0.0 on macOS, 1.2.0 on GTK +.RE +.IP \(bu 2 +\f[CR]unconsumed:\f[R] +.RS 2 +.PP +Do not consume the input. +By default, a keybind will consume the input, meaning that the +associated encoding (if any) will not be sent to the running program in +the terminal. +If you wish to send the encoded value to the program, specify the +\f[CR]unconsumed:\f[R] prefix before the entire keybind. +For example: \f[CR]unconsumed:ctrl+a=reload_config\f[R]. +\f[CR]global:\f[R] and \f[CR]all:\f[R]\-prefixed keybinds will always +consume the input regardless of this setting. +Since they are not associated with a specific terminal surface, +they\(cqre never encoded. +.PP +Available since: 1.0.0 +.RE +.IP \(bu 2 +\f[CR]performable:\f[R] +.RS 2 +.PP +Only consume the input if the action is able to be performed. +For example, the \f[CR]copy_to_clipboard\f[R] action will only consume +the input if there is a selection to copy. +If there is no selection, Ghostty behaves as if the keybind was not set. +This has no effect with \f[CR]global:\f[R] or \f[CR]all:\f[R]\-prefixed +keybinds. +For key sequences, this will reset the sequence if the action is not +performable (acting identically to not having a keybind set at all). +.PP +Performable keybinds will not appear as menu shortcuts in the +application menu. +This is because the menu shortcuts force the action to be performed +regardless of the state of the terminal. +Performable keybinds will still work, they just won\(cqt appear as a +shortcut label in the menu. +.PP +Available since: 1.1.0 +.RE +.PP +Keybind triggers are not unique per prefix combination. +For example, \f[CR]ctrl+a\f[R] and \f[CR]global:ctrl+a\f[R] are not two +separate keybinds. +The keybind set later will overwrite the keybind set earlier. +In this case, the \f[CR]global:\f[R] keybind will be used. +.PP +Multiple prefixes can be specified. +For example, \f[CR]global:unconsumed:ctrl+a=reload_config\f[R] will make +the keybind global and not consume the input to reload the config. +.PP +Note: \f[CR]global:\f[R] is only supported on macOS and certain Linux +platforms. +.PP +On macOS, this feature requires accessibility permissions to be granted +to Ghostty. +When a \f[CR]global:\f[R] keybind is specified and Ghostty is launched +or reloaded, Ghostty will attempt to request these permissions. +If the permissions are not granted, the keybind will not work. +On macOS, you can find these permissions in System Preferences \-> +Privacy & Security \-> Accessibility. +.PP +On Linux, you need a desktop environment that implements the \c +.UR https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html +Global Shortcuts +.UE \c +\ protocol as a part of its XDG desktop protocol implementation. +Desktop environments that are known to support (or not support) global +shortcuts include: +.IP \(bu 2 +Users using KDE Plasma (since \c +.UR https://kde.org/announcements/plasma/5/5.27.0/#wayland +5.27 +.UE \c +) and GNOME (since \c +.UR https://release.gnome.org/48/#and-thats-not-all +48 +.UE \c +) should be able to use global shortcuts with little to no +configuration. +.IP \(bu 2 +Some manual configuration is required on Hyprland. +Consult the steps outlined on the \c +.UR https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts +Hyprland Wiki +.UE \c +\ to set up global shortcuts correctly. +(Important: \c +.UR https://wiki.hyprland.org/Hypr-Ecosystem/xdg-desktop-portal-hyprland/ +\f[CR]xdg\-desktop\-portal\-hyprland\f[R] +.UE \c +\ must also be installed!) +.IP \(bu 2 +Notably, global shortcuts have not been implemented on wlroots\-based +compositors like Sway (see \c +.UR https://github.com/emersion/xdg-desktop-portal-wlr/issues/240 +upstream issue +.UE \c +). +.SS Chained Actions +.PP +A keybind can have multiple actions by using the \f[CR]chain\f[R] +keyword for subsequent actions. +When a keybind is activated, all chained actions are executed in order. +The syntax is: +.IP +.EX +keybind = ctrl+a=new_window +keybind = chain=goto_split:left +.EE +.PP +This binds \f[CR]ctrl+a\f[R] to first open a new window, then move focus +to the left split. +Each \f[CR]chain\f[R] entry appends an action to the most recently +defined keybind. +You can chain as many actions as you want: +.IP +.EX +keybind = ctrl+a=new_window +keybind = chain=goto_split:left +keybind = chain=toggle_fullscreen +.EE +.PP +Chained actions cannot have prefixes like \f[CR]global:\f[R] or +\f[CR]unconsumed:\f[R]. +The flags from the original keybind apply to the entire chain. +.PP +Chained actions work with key sequences as well. +For example: +.IP +.EX +keybind = ctrl+a>n=new_window +keybind = chain=goto_split:left +.EE +.PP +Chains with key sequences apply to the most recent binding in the +sequence. +.PP +Chained keybinds are available since Ghostty 1.3.0. +.SS Key Tables +.PP +You may also create a named set of keybindings known as a \(lqkey +table.\(rq A key table must be explicitly activated for the bindings to +become available. +This can be used to implement features such as a \(lqcopy mode\(rq, +\(lqvim mode\(rq, etc. +Generically, this can implement modal keyboard input. +.PP +Key tables are defined using the syntax \f[CR]
/\f[R]. +The \f[CR]\f[R] value is everything documented above for +keybinds. +The \f[CR]
\f[R] value is the name of the key table. +Table names can contain anything except \f[CR]/\f[R], \f[CR]=\f[R], +\f[CR]+\f[R], and \f[CR]>\f[R]. +The characters \f[CR]+\f[R] and \f[CR]>\f[R] are reserved for keybind +syntax (modifier combinations and key sequences). +For example \f[CR]foo/ctrl+a=new_window\f[R] defines a binding within a +table named \f[CR]foo\f[R]. +.PP +Tables are activated and deactivated using the binding actions +\f[CR]activate_key_table:\f[R] and +\f[CR]deactivate_key_table\f[R]. +Other table related binding actions also exist; see the documentation +for a full list. +These are the primary way to interact with key tables. +.PP +Binding lookup proceeds from the innermost table outward, so keybinds in +the default table remain available unless explicitly unbound in an inner +table. +.PP +A key table has some special syntax and handling: +.IP \(bu 2 +\f[CR]/\f[R] (with no binding) defines and clears a table, +resetting all of its keybinds and settings. +.IP \(bu 2 +You cannot activate a table that is already the innermost table; such +attempts are ignored. +However, the same table can appear multiple times in the stack as long +as it is not innermost (e.g., \f[CR]A \-> B \-> A \-> B\f[R] is valid, +but \f[CR]A \-> B \-> B\f[R] is not). +.IP \(bu 2 +A table can be activated in one\-shot mode using +\f[CR]activate_key_table_once:\f[R]. +A one\-shot table is automatically deactivated when any non\-catch\-all +binding is invoked. +.IP \(bu 2 +Key sequences work within tables: +\f[CR]foo/ctrl+a>ctrl+b=new_window\f[R]. +If an invalid key is pressed, the sequence ends but the table remains +active. +.IP \(bu 2 +Chain actions work within tables, the \f[CR]chain\f[R] keyword applies +to the most recently defined binding in the table. +e.g.\ if you set \f[CR]table/ctrl+a=new_window\f[R] you can chain by +using \f[CR]chain=text:hello\f[R]. +Important: chain itself doesn\(cqt get prefixed with the table name, +since it applies to the most recent binding in any table. +.IP \(bu 2 +Prefixes like \f[CR]global:\f[R] work within tables: +\f[CR]foo/global:ctrl+a=new_window\f[R]. +.PP +Key tables are available since Ghostty 1.3.0. +.RE +.TP +\f[B]\f[CB]key\-remap\f[B]\f[R] +Remap modifier keys within Ghostty. +This allows you to swap or reassign modifier keys at the application +level without affecting system\-wide settings. +.RS +.PP +The format is \f[CR]from=to\f[R] where both \f[CR]from\f[R] and +\f[CR]to\f[R] are modifier key names. +You can use generic names like \f[CR]ctrl\f[R], \f[CR]alt\f[R], +\f[CR]shift\f[R], \f[CR]super\f[R] (macOS: +\f[CR]cmd\f[R]/\f[CR]command\f[R]) or sided names like +\f[CR]left_ctrl\f[R], \f[CR]right_alt\f[R], etc. +.PP +This will NOT change keyboard layout or key encodings outside of +Ghostty. +For example, on macOS, \f[CR]option+a\f[R] may still produce +\f[CR]å\f[R] even if \f[CR]option\f[R] is remapped to \f[CR]ctrl\f[R]. +Desktop environments usually handle key layout long before Ghostty +receives the key events. +.PP +Example: +.IP +.EX +key\-remap = ctrl=super +key\-remap = left_control=right_alt +.EE +.PP +Important notes: +.IP \(bu 2 +This is a one\-way remap. +If you remap \f[CR]ctrl=super\f[R], then the physical Ctrl key acts as +Super, but the Super key remains Super. +.IP \(bu 2 +Remaps are not transitive. +If you remap \f[CR]ctrl=super\f[R] and \f[CR]alt=ctrl\f[R], pressing Alt +will produce Ctrl, NOT Super. +.IP \(bu 2 +This affects both keybind matching and terminal input encoding. +This does NOT impact keyboard layout or how keys are interpreted prior +to Ghostty receiving them. +For example, \f[CR]option+a\f[R] on macOS may still produce \f[CR]å\f[R] +even if \f[CR]option\f[R] is remapped to \f[CR]ctrl\f[R]. +.IP \(bu 2 +Generic modifiers (e.g.\ \f[CR]ctrl\f[R]) match both left and right +physical keys. +Use sided names (e.g.\ \f[CR]left_ctrl\f[R]) to remap only one side. +.PP +There are other edge case scenarios that may not behave as expected but +are working as intended the way this feature is designed: +.IP \(bu 2 +On macOS, bindings in the main menu will trigger before any remapping is +done. +This is because macOS itself handles menu activation and this happens +before Ghostty receives the key event. +To workaround this, you should unbind the menu items and rebind them +using your desired modifier. +.PP +This configuration can be repeated to specify multiple remaps. +.RE +.TP +\f[B]\f[CB]window\-padding\-x\f[B]\f[R] +Horizontal window padding. +This applies padding between the terminal cells and the left and right +window borders. +The value is in points, meaning that it will be scaled appropriately for +screen DPI. +.RS +.PP +If this value is set too large, the screen will render nothing, because +the grid will be completely squished by the padding. +It is up to you as the user to pick a reasonable value. +If you pick an unreasonable value, a warning will appear in the logs. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e. +new windows, tabs, etc. +.PP +To set a different left and right padding, specify two numerical values +separated by a comma. +For example, \f[CR]window\-padding\-x = 2,4\f[R] will set the left +padding to 2 and the right padding to 4. +If you want to set both paddings to the same value, you can use a single +value. +For example, \f[CR]window\-padding\-x = 2\f[R] will set both paddings to +2. +.RE +.TP +\f[B]\f[CB]window\-padding\-y\f[B]\f[R] +Vertical window padding. +This applies padding between the terminal cells and the top and bottom +window borders. +The value is in points, meaning that it will be scaled appropriately for +screen DPI. +.RS +.PP +If this value is set too large, the screen will render nothing, because +the grid will be completely squished by the padding. +It is up to you as the user to pick a reasonable value. +If you pick an unreasonable value, a warning will appear in the logs. +.PP +Changing this configuration at runtime will only affect new terminals, +i.e.\ new windows, tabs, etc. +.PP +To set a different top and bottom padding, specify two numerical values +separated by a comma. +For example, \f[CR]window\-padding\-y = 2,4\f[R] will set the top +padding to 2 and the bottom padding to 4. +If you want to set both paddings to the same value, you can use a single +value. +For example, \f[CR]window\-padding\-y = 2\f[R] will set both paddings to +2. +.RE +.TP +\f[B]\f[CB]window\-padding\-balance\f[B]\f[R] +The viewport dimensions are usually not perfectly divisible by the cell +size. +In this case, some extra padding on the end of a column and the bottom +of the final row may exist. +If this is \f[CR]true\f[R], then this extra padding is automatically +balanced between all four edges to minimize imbalance on one side. +If this is \f[CR]false\f[R], the top left grid cell will always hug the +edge with zero padding other than what may be specified with the other +\f[CR]window\-padding\f[R] options. +.RS +.PP +If other \f[CR]window\-padding\f[R] fields are set and this is +\f[CR]true\f[R], this will still apply. +The other padding is applied first and may affect how many grid cells +actually exist, and this is applied last in order to balance the padding +given a certain viewport size and grid cell size. +.RE +.TP +\f[B]\f[CB]window\-padding\-color\f[B]\f[R] +The color of the padding area of the window. +Valid values are: +.RS +.IP \(bu 2 +\f[CR]background\f[R] \- The background color specified in +\f[CR]background\f[R]. +.IP \(bu 2 +\f[CR]extend\f[R] \- Extend the background color of the nearest grid +cell. +.IP \(bu 2 +\f[CR]extend\-always\f[R] \- Same as \(lqextend\(rq but always extends +without applying any of the heuristics that disable extending noted +below. +.PP +The \(lqextend\(rq value will be disabled in certain scenarios. +On primary screen applications (e.g.\ not something like Neovim), the +color will not be extended vertically if any of the following are true: +.IP \(bu 2 +The nearest row has any cells that have the default background color. +The thinking is that in this case, the default background color looks +fine as a padding color. +.IP \(bu 2 +The nearest row is a prompt row (requires shell integration). +The thinking here is that prompts often contain powerline glyphs that do +not look good extended. +.IP \(bu 2 +The nearest row contains a perfect fit powerline character. +These don\(cqt look good extended. +.RE +.TP +\f[B]\f[CB]window\-vsync\f[B]\f[R] +Synchronize rendering with the screen refresh rate. +If true, this will minimize tearing and align redraws with the screen +but may cause input latency. +If false, this will maximize redraw frequency but may cause tearing, and +under heavy load may use more CPU and power. +.RS +.PP +This defaults to true because out\-of\-sync rendering on macOS can cause +kernel panics (macOS 14.4+) and performance issues for external displays +over some hardware such as DisplayLink. +If you want to minimize input latency, set this to false with the known +aforementioned risks. +.PP +Changing this value at runtime will only affect new terminals. +.PP +This setting is only supported currently on macOS. +.RE +.TP +\f[B]\f[CB]window\-inherit\-working\-directory\f[B]\f[R] +If true, new windows will inherit the working directory of the +previously focused window. +If no window was previously focused, the default working directory will +be used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]tab\-inherit\-working\-directory\f[B]\f[R] +If true, new tabs will inherit the working directory of the previously +focused tab. +If no tab was previously focused, the default working directory will be +used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]split\-inherit\-working\-directory\f[B]\f[R] +If true, new split panes will inherit the working directory of the +previously focused split. +If no split was previously focused, the default working directory will +be used (the \f[CR]working\-directory\f[R] option). +.TP +\f[B]\f[CB]window\-inherit\-font\-size\f[B]\f[R] +If true, new windows and tabs will inherit the font size of the +previously focused window. +If no window was previously focused, the default font size will be used. +If this is false, the default font size specified in the configuration +\f[CR]font\-size\f[R] will be used. +.TP +\f[B]\f[CB]window\-decoration\f[B]\f[R] +Configure a preference for window decorations. +This setting specifies a \f[I]preference\f[R]; the actual OS, desktop +environment, window manager, etc. +may override this preference. +Ghostty will do its best to respect this preference but it may not +always be possible. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +All window decorations will be disabled. +Titlebar, borders, etc. +will not be shown. +On macOS, this will also disable tabs (enforced by the system). +.RE +.IP \(bu 2 +\f[CR]auto\f[R] +.RS 2 +.PP +Automatically decide to use either client\-side or server\-side +decorations based on the detected preferences of the current OS and +desktop environment. +This option usually makes Ghostty look the most \(lqnative\(rq for your +desktop. +.RE +.IP \(bu 2 +\f[CR]client\f[R] +.RS 2 +.PP +Prefer client\-side decorations. +.PP +Available since: 1.1.0 +.RE +.IP \(bu 2 +\f[CR]server\f[R] +.RS 2 +.PP +Prefer server\-side decorations. +This is only relevant on Linux with GTK, either on X11, or Wayland on a +compositor that supports the \f[CR]org_kde_kwin_server_decoration\f[R] +protocol (e.g.\ KDE Plasma, but almost any non\-GNOME desktop supports +this protocol). +.PP +If \f[CR]server\f[R] is set but the environment doesn\(cqt support +server\-side decorations, client\-side decorations will be used instead. +.PP +Available since: 1.1.0 +.RE +.PP +The default value is \f[CR]auto\f[R]. +.PP +For the sake of backwards compatibility and convenience, this setting +also accepts boolean true and false values. +If set to \f[CR]true\f[R], this is equivalent to \f[CR]auto\f[R]. +If set to \f[CR]false\f[R], this is equivalent to \f[CR]none\f[R]. +This is convenient for users who live primarily on systems that don\(cqt +differentiate between client and server\-side decorations (e.g.\ macOS +and Windows). +.PP +The \(lqtoggle_window_decorations\(rq keybind action can be used to +create a keybinding to toggle this setting at runtime. +.PP +macOS: To hide the titlebar without removing the native window borders +or rounded corners, use \f[CR]macos\-titlebar\-style = hidden\f[R] +instead. +.RE +.TP +\f[B]\f[CB]window\-title\-font\-family\f[B]\f[R] +The font that will be used for the application\(cqs window and tab +titles. +.RS +.PP +If this setting is left unset, the system default font will be used. +.PP +Note: any font available on the system may be used, this font is not +required to be a fixed\-width font. +.PP +Available since: 1.0.0 on macOS, 1.1.0 on GTK +.RE +.TP +\f[B]\f[CB]window\-subtitle\f[B]\f[R] +The text that will be displayed in the subtitle of the window. +Valid values: +.RS +.IP \(bu 2 +\f[CR]false\f[R] \- Disable the subtitle. +.IP \(bu 2 +\f[CR]working\-directory\f[R] \- Set the subtitle to the working +directory of the surface. +.PP +This feature is only supported on GTK. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]window\-theme\f[B]\f[R] +The theme to use for the windows. +Valid values: +.RS +.IP \(bu 2 +\f[CR]auto\f[R] \- Determine the theme based on the configured terminal +background color. +This has no effect if the \(lqtheme\(rq configuration has separate light +and dark themes. +In that case, the behavior of \(lqauto\(rq is equivalent to +\(lqsystem\(rq. +.IP \(bu 2 +\f[CR]system\f[R] \- Use the system theme. +.IP \(bu 2 +\f[CR]light\f[R] \- Use the light theme regardless of system theme. +.IP \(bu 2 +\f[CR]dark\f[R] \- Use the dark theme regardless of system theme. +.IP \(bu 2 +\f[CR]ghostty\f[R] \- Use the background and foreground colors specified +in the Ghostty configuration. +This is only supported on Linux builds. +.PP +On macOS, if \f[CR]macos\-titlebar\-style\f[R] is \f[CR]tabs\f[R] or +\f[CR]transparent\f[R], the window theme will be automatically set based +on the luminosity of the terminal background color. +This only applies to terminal windows. +This setting will still apply to non\-terminal windows within Ghostty. +.PP +This is currently only supported on macOS and Linux. +.RE +.TP +\f[B]\f[CB]window\-colorspace\f[B]\f[R] +The color space to use when interpreting terminal colors. +\(lqTerminal colors\(rq refers to colors specified in your configuration +and colors produced by direct\-color SGR sequences. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]srgb\f[R] \- Interpret colors in the sRGB color space. +This is the default. +.IP \(bu 2 +\f[CR]display\-p3\f[R] \- Interpret colors in the Display P3 color +space. +.PP +This setting is currently only supported on macOS. +.RE +.TP +\f[B]\f[CB]window\-height\f[B]\f[R] +The initial window size. +This size is in terminal grid cells by default. +Both values must be set to take effect. +If only one value is set, it is ignored. +.RS +.PP +We don\(cqt currently support specifying a size in pixels but a future +change can enable that. +If this isn\(cqt specified, the app runtime will determine some default +size. +.PP +Note that the window manager may put limits on the size or override the +size. +For example, a tiling window manager may force the window to be a +certain size to fit within the grid. +There is nothing Ghostty will do about this, but it will make an effort. +.PP +Sizes larger than the screen size will be clamped to the screen size. +This can be used to create a maximized\-by\-default window size. +.PP +This will not affect new tabs, splits, or other nested terminal +elements. +This only affects the initial window size of any new window. +Changing this value will not affect the size of the window after it has +been created. +This is only used for the initial size. +.PP +BUG: On Linux with GTK, the calculated window size will not properly +take into account window decorations. +As a result, the grid dimensions will not exactly match this +configuration. +If window decorations are disabled (see \f[CR]window\-decoration\f[R]), +then this will work as expected. +.PP +Windows smaller than 10 wide by 4 high are not allowed. +.RE +.PP +\f[B]\f[CB]window\-width\f[B]\f[R] +.TP +\f[B]\f[CB]window\-position\-x\f[B]\f[R] +The starting window position. +This position is in pixels and is relative to the top\-left corner of +the primary monitor. +Both values must be set to take effect. +If only one value is set, it is ignored. +.RS +.PP +Note that the window manager may put limits on the position or override +the position. +For example, a tiling window manager may force the window to be a +certain position to fit within the grid. +There is nothing Ghostty will do about this, but it will make an effort. +.PP +Also note that negative values are also up to the operating system and +window manager. +Some window managers may not allow windows to be placed off\-screen. +.PP +Invalid positions are runtime\-specific, but generally the positions are +clamped to the nearest valid position. +.PP +On macOS, the window position is relative to the top\-left corner of the +visible screen area. +This means that if the menu bar is visible, the window will be placed +below the menu bar. +.PP +Note: this is only supported on macOS. +The GTK runtime does not support setting the window position, as windows +are only allowed position themselves in X11 and not Wayland. +.RE +.PP +\f[B]\f[CB]window\-position\-y\f[B]\f[R] +.TP +\f[B]\f[CB]window\-save\-state\f[B]\f[R] +Whether to enable saving and restoring window state. +Window state includes their position, size, tabs, splits, etc. +Some window state requires shell integration, such as preserving working +directories. +See \f[CR]shell\-integration\f[R] for more information. +.RS +.PP +There are three valid values for this configuration: +.IP \(bu 2 +\f[CR]default\f[R] will use the default system behavior. +On macOS, this will only save state if the application is forcibly +terminated or if it is configured systemwide via Settings.app. +.IP \(bu 2 +\f[CR]never\f[R] will never save window state. +.IP \(bu 2 +\f[CR]always\f[R] will always save window state whenever Ghostty is +exited. +.PP +If you change this value to \f[CR]never\f[R] while Ghostty is not +running, the next Ghostty launch will NOT restore the window state. +.PP +If you change this value to \f[CR]default\f[R] while Ghostty is not +running and the previous exit saved state, the next Ghostty launch will +still restore the window state. +This is because Ghostty cannot know if the previous exit was due to a +forced save or not (macOS doesn\(cqt provide this information). +.PP +If you change this value so that window state is saved while Ghostty is +not running, the previous window state will not be restored because +Ghostty only saves state on exit if this is enabled. +.PP +The default value is \f[CR]default\f[R]. +.PP +This is currently only supported on macOS. +This has no effect on Linux. +.RE +.TP +\f[B]\f[CB]window\-step\-resize\f[B]\f[R] +Resize the window in discrete increments of the focused surface\(cqs +cell size. +If this is disabled, surfaces are resized in pixel increments. +Currently only supported on macOS. +.TP +\f[B]\f[CB]window\-new\-tab\-position\f[B]\f[R] +The position where new tabs are created. +Valid values: +.RS +.IP \(bu 2 +\f[CR]current\f[R] \- Insert the new tab after the currently focused +tab, or at the end if there are no focused tabs. +.IP \(bu 2 +\f[CR]end\f[R] \- Insert the new tab at the end of the tab list. +.RE +.TP +\f[B]\f[CB]window\-show\-tab\-bar\f[B]\f[R] +Whether to show the tab bar. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]always\f[R] +.RS 2 +.PP +Always display the tab bar, even when there\(cqs only one tab. +.PP +Available since: 1.2.0 +.RE +.IP \(bu 2 +\f[CR]auto\f[R] \f[I](default)\f[R] +.RS 2 +.PP +Automatically show and hide the tab bar. +The tab bar is only shown when there are two or more tabs present. +.RE +.IP \(bu 2 +\f[CR]never\f[R] +.RS 2 +.PP +Never show the tab bar. +Tabs are only accessible via the tab overview or by keybind actions. +.RE +.PP +Currently only supported on Linux (GTK). +.RE +.TP +\f[B]\f[CB]window\-titlebar\-background\f[B]\f[R] +Background color for the window titlebar. +This only takes effect if window\-theme is set to ghostty. +Currently only supported in the GTK app runtime. +.RS +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]window\-titlebar\-foreground\f[B]\f[R] +Foreground color for the window titlebar. +This only takes effect if window\-theme is set to ghostty. +Currently only supported in the GTK app runtime. +.RS +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]resize\-overlay\f[B]\f[R] +This controls when resize overlays are shown. +Resize overlays are a transient popup that shows the size of the +terminal while the surfaces are being resized. +The possible options are: +.RS +.IP \(bu 2 +\f[CR]always\f[R] \- Always show resize overlays. +.IP \(bu 2 +\f[CR]never\f[R] \- Never show resize overlays. +.IP \(bu 2 +\f[CR]after\-first\f[R] \- The resize overlay will not appear when the +surface is first created, but will show up if the surface is +subsequently resized. +.PP +The default is \f[CR]after\-first\f[R]. +.RE +.TP +\f[B]\f[CB]resize\-overlay\-position\f[B]\f[R] +If resize overlays are enabled, this controls the position of the +overlay. +The possible options are: +.RS +.IP \(bu 2 +\f[CR]center\f[R] +.IP \(bu 2 +\f[CR]top\-left\f[R] +.IP \(bu 2 +\f[CR]top\-center\f[R] +.IP \(bu 2 +\f[CR]top\-right\f[R] +.IP \(bu 2 +\f[CR]bottom\-left\f[R] +.IP \(bu 2 +\f[CR]bottom\-center\f[R] +.IP \(bu 2 +\f[CR]bottom\-right\f[R] +.PP +The default is \f[CR]center\f[R]. +.RE +.TP +\f[B]\f[CB]resize\-overlay\-duration\f[B]\f[R] +If resize overlays are enabled, this controls how long the overlay is +visible on the screen before it is hidden. +The default is ¾ of a second or 750 ms. +.RS +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +Available since 1.0.0 +.RE +.TP +\f[B]\f[CB]focus\-follows\-mouse\f[B]\f[R] +If true, when there are multiple split panes, the mouse selects the pane +that is focused. +This only applies to the currently focused window; e.g. +mousing over a split in an unfocused window will not focus that split +and bring the window to front. +.RS +.PP +Default is false. +.RE +.TP +\f[B]\f[CB]clipboard\-read\f[B]\f[R] +Whether to allow programs running in the terminal to read/write to the +system clipboard (OSC 52, for googling). +The default is to allow clipboard reading after prompting the user and +allow writing unconditionally. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]ask\f[R] +.IP \(bu 2 +\f[CR]allow\f[R] +.IP \(bu 2 +\f[CR]deny\f[R] +.RE +.PP +\f[B]\f[CB]clipboard\-write\f[B]\f[R] +.TP +\f[B]\f[CB]clipboard\-trim\-trailing\-spaces\f[B]\f[R] +Trims trailing whitespace on data that is copied to the clipboard. +This does not affect data sent to the clipboard via +\f[CR]clipboard\-write\f[R]. +This only applies to trailing whitespace on lines that have other +characters. +Completely blank lines always have their whitespace trimmed. +.TP +\f[B]\f[CB]clipboard\-paste\-protection\f[B]\f[R] +Require confirmation before pasting text that appears unsafe. +This helps prevent a \(lqcopy/paste attack\(rq where a user may +accidentally execute unsafe commands by pasting text with newlines. +.TP +\f[B]\f[CB]clipboard\-paste\-bracketed\-safe\f[B]\f[R] +If true, bracketed pastes will be considered safe. +By default, bracketed pastes are considered safe. +\(lqBracketed\(rq pastes are pastes while the running program has +bracketed paste mode enabled (a setting set by the running program, not +the terminal emulator). +.TP +\f[B]\f[CB]title\-report\f[B]\f[R] +Enables or disabled title reporting (CSI 21 t). +This escape sequence allows the running program to query the terminal +title. +This is a common security issue and is disabled by default. +.RS +.PP +Warning: This can expose sensitive information at best and enable +arbitrary code execution at worst (with a maliciously crafted title and +a minor amount of user interaction). +.PP +Available since: 1.0.1 +.RE +.TP +\f[B]\f[CB]image\-storage\-limit\f[B]\f[R] +The total amount of bytes that can be used for image data (e.g.\ the +Kitty image protocol) per terminal screen. +The maximum value is 4,294,967,295 (4GiB). +The default is 320MB. +If this is set to zero, then all image protocols will be disabled. +.RS +.PP +This value is separate for primary and alternate screens so the +effective limit per surface is double. +.RE +.TP +\f[B]\f[CB]copy\-on\-select\f[B]\f[R] +Whether to automatically copy selected text to the clipboard. +\f[CR]true\f[R] will prefer to copy to the selection clipboard, +otherwise it will copy to the system clipboard. +.RS +.PP +The value \f[CR]clipboard\f[R] will always copy text to the selection +clipboard as well as the system clipboard. +.PP +Middle\-click paste will always use the selection clipboard. +Middle\-click paste is always enabled even if this is \f[CR]false\f[R]. +.PP +The default value is true on Linux and macOS. +.RE +.TP +\f[B]\f[CB]right\-click\-action\f[B]\f[R] +The action to take when the user right\-clicks on the terminal surface. +.RS +.PP +Valid values: * \f[CR]context\-menu\f[R] \- Show the context menu. +* \f[CR]paste\f[R] \- Paste the contents of the clipboard. +* \f[CR]copy\f[R] \- Copy the selected text to the clipboard. +* \f[CR]copy\-or\-paste\f[R] \- If there is a selection, copy the +selected text to the clipboard; otherwise, paste the contents of the +clipboard. +* \f[CR]ignore\f[R] \- Do nothing, ignore the right\-click. +.PP +The default value is \f[CR]context\-menu\f[R]. +.RE +.TP +\f[B]\f[CB]click\-repeat\-interval\f[B]\f[R] +The time in milliseconds between clicks to consider a click a repeat +(double, triple, etc.) +or an entirely new single click. +A value of zero will use a platform\-specific default. +The default on macOS is determined by the OS settings. +On every other platform it is 500ms. +.TP +\f[B]\f[CB]config\-file\f[B]\f[R] +Additional configuration files to read. +This configuration can be repeated to read multiple configuration files. +Configuration files themselves can load more configuration files. +Paths are relative to the file containing the \f[CR]config\-file\f[R] +directive. +For command\-line arguments, paths are relative to the current working +directory. +.RS +.PP +Prepend a ? +character to the file path to suppress errors if the file does not +exist. +If you want to include a file that begins with a literal ? +character, surround the file path in double quotes (\(lq). +.PP +Cycles are not allowed. +If a cycle is detected, an error will be logged and the configuration +file will be ignored. +.PP +Configuration files are loaded after the configuration they\(cqre +defined within in the order they\(cqre defined. +\f[B]THIS IS A VERY SUBTLE BUT IMPORTANT POINT.\f[R] To put it another +way: configuration files do not take effect until after the entire +configuration is loaded. +For example, in the configuration below: +.IP +.EX +config\-file = \(dqfoo\(dq +a = 1 +.EE +.PP +If \(lqfoo\(rq contains \f[CR]a = 2\f[R], the final value of +\f[CR]a\f[R] will be 2, because \f[CR]foo\f[R] is loaded after the +configuration file that configures the nested \f[CR]config\-file\f[R] +value. +.RE +.TP +\f[B]\f[CB]config\-default\-files\f[B]\f[R] +When this is true, the default configuration file paths will be loaded. +The default configuration file paths are currently only the XDG config +path ($XDG_CONFIG_HOME/ghostty/config.ghostty). +.RS +.PP +If this is false, the default configuration paths will not be loaded. +This is targeted directly at using Ghostty from the CLI in a way that +minimizes external effects. +.PP +This is a CLI\-only configuration. +Setting this in a configuration file will have no effect. +It is not an error, but it will not do anything. +This configuration can only be set via CLI arguments. +.RE +.TP +\f[B]\f[CB]confirm\-close\-surface\f[B]\f[R] +Confirms that a surface should be closed before closing it. +.RS +.PP +This defaults to \f[CR]true\f[R]. +If set to \f[CR]false\f[R], surfaces will close without any +confirmation. +This can also be set to \f[CR]always\f[R], which will always confirm +closing a surface, even if shell integration says a process isn\(cqt +running. +.RE +.TP +\f[B]\f[CB]quit\-after\-last\-window\-closed\f[B]\f[R] +Whether or not to quit after the last surface is closed. +.RS +.PP +This defaults to \f[CR]false\f[R] on macOS since that is standard +behavior for a macOS application. +On Linux, this defaults to \f[CR]true\f[R] since that is generally +expected behavior. +.PP +On Linux, if this is \f[CR]true\f[R], Ghostty can delay quitting fully +until a configurable amount of time has passed after the last window is +closed. +See the documentation of +\f[CR]quit\-after\-last\-window\-closed\-delay\f[R]. +.RE +.TP +\f[B]\f[CB]quit\-after\-last\-window\-closed\-delay\f[B]\f[R] +Controls how long Ghostty will stay running after the last open surface +has been closed. +This only has an effect if \f[CR]quit\-after\-last\-window\-closed\f[R] +is also set to \f[CR]true\f[R]. +.RS +.PP +The minimum value for this configuration is \f[CR]1s\f[R]. +Any values lower than this will be clamped to \f[CR]1s\f[R]. +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +The maximum value is \f[CR]584y 49w 23h 34m 33s 709ms 551µs 615ns\f[R]. +Any value larger than this will be clamped to the maximum value. +.PP +By default \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] is unset +and Ghostty will quit immediately after the last window is closed if +\f[CR]quit\-after\-last\-window\-closed\f[R] is \f[CR]true\f[R]. +.PP +Only implemented on Linux. +.RE +.TP +\f[B]\f[CB]initial\-window\f[B]\f[R] +This controls whether an initial window is created when Ghostty is run. +Note that if \f[CR]quit\-after\-last\-window\-closed\f[R] is +\f[CR]true\f[R] and \f[CR]quit\-after\-last\-window\-closed\-delay\f[R] +is set, setting \f[CR]initial\-window\f[R] to \f[CR]false\f[R] will mean +that Ghostty will quit after the configured delay if no window is ever +created. +Only implemented on Linux and macOS. +.TP +\f[B]\f[CB]undo\-timeout\f[B]\f[R] +The duration that undo operations remain available. +After this time, the operation will be removed from the undo stack and +cannot be undone. +.RS +.PP +The default value is 5 seconds. +.PP +This timeout applies per operation, meaning that if you perform multiple +operations, each operation will have its own timeout. +New operations do not reset the timeout of previous operations. +.PP +A timeout of zero will effectively disable undo operations. +It is not possible to set an infinite timeout, but you can set a very +large timeout to effectively disable the timeout (on the order of +years). +This is highly discouraged, as it will cause the undo stack to grow +indefinitely, memory usage to grow unbounded, and terminal sessions to +never actually quit. +.PP +The duration is specified as a series of numbers followed by time units. +Whitespace is allowed between numbers and units. +Each number and unit will be added together to form the total duration. +.PP +The allowed time units are as follows: +.IP \(bu 2 +\f[CR]y\f[R] \- 365 SI days, or 8760 hours, or 31536000 seconds. +No adjustments are made for leap years or leap seconds. +.IP \(bu 2 +\f[CR]d\f[R] \- one SI day, or 86400 seconds. +.IP \(bu 2 +\f[CR]h\f[R] \- one hour, or 3600 seconds. +.IP \(bu 2 +\f[CR]m\f[R] \- one minute, or 60 seconds. +.IP \(bu 2 +\f[CR]s\f[R] \- one second. +.IP \(bu 2 +\f[CR]ms\f[R] \- one millisecond, or 0.001 second. +.IP \(bu 2 +\f[CR]us\f[R] or \f[CR]µs\f[R] \- one microsecond, or 0.000001 second. +.IP \(bu 2 +\f[CR]ns\f[R] \- one nanosecond, or 0.000000001 second. +.PP +Examples: * \f[CR]1h30m\f[R] * \f[CR]45s\f[R] +.PP +Units can be repeated and will be added together. +This means that \f[CR]1h1h\f[R] is equivalent to \f[CR]2h\f[R]. +This is confusing and should be avoided. +A future update may disallow this. +.PP +This configuration is only supported on macOS. +Linux doesn\(cqt support undo operations at all so this configuration +has no effect. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]quick\-terminal\-position\f[B]\f[R] +The position of the \(lqquick\(rq terminal window. +To learn more about the quick terminal, see the documentation for the +\f[CR]toggle_quick_terminal\f[R] binding action. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]top\f[R] \- Terminal appears at the top of the screen. +.IP \(bu 2 +\f[CR]bottom\f[R] \- Terminal appears at the bottom of the screen. +.IP \(bu 2 +\f[CR]left\f[R] \- Terminal appears at the left of the screen. +.IP \(bu 2 +\f[CR]right\f[R] \- Terminal appears at the right of the screen. +.IP \(bu 2 +\f[CR]center\f[R] \- Terminal appears at the center of the screen. +.PP +On macOS, changing this configuration requires restarting Ghostty +completely. +.PP +Note: There is no default keybind for toggling the quick terminal. +To enable this feature, bind the \f[CR]toggle_quick_terminal\f[R] action +to a key. +.RE +.TP +\f[B]\f[CB]quick\-terminal\-size\f[B]\f[R] +The size of the quick terminal. +.RS +.PP +The size can be specified either as a percentage of the screen +dimensions (height/width), or as an absolute size in pixels. +Percentage values are suffixed with \f[CR]%\f[R] (e.g.\ \f[CR]20%\f[R]) +while pixel values are suffixed with \f[CR]px\f[R] +(e.g.\ \f[CR]300px\f[R]). +A bare value without a suffix is a config error. +.PP +When only one size is specified, the size parameter affects the size of +the quick terminal on its \f[I]primary axis\f[R], which depends on its +position: height for quick terminals placed on the top or bottom, and +width for left or right. +The primary axis of a centered quick terminal depends on the +monitor\(cqs orientation: height when on a landscape monitor, and width +when on a portrait monitor. +.PP +The \f[I]secondary axis\f[R] would be maximized for non\-center +positioned quick terminals unless another size parameter is specified, +separated from the first by a comma (\f[CR],\f[R]). +Percentage and pixel sizes can be mixed together: for instance, a size +of \f[CR]50%,500px\f[R] for a top\-positioned quick terminal would be +half a screen tall, and 500 pixels wide. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]gtk\-quick\-terminal\-layer\f[B]\f[R] +The layer of the quick terminal window. +The higher the layer, the more windows the quick terminal may conceal. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]overlay\f[R] +.RS 2 +.PP +The quick terminal appears in front of all windows. +.RE +.IP \(bu 2 +\f[CR]top\f[R] (default) +.RS 2 +.PP +The quick terminal appears in front of normal windows but behind +fullscreen overlays like lock screens. +.RE +.IP \(bu 2 +\f[CR]bottom\f[R] +.RS 2 +.PP +The quick terminal appears behind normal windows but in front of +wallpapers and other windows in the background layer. +.RE +.IP \(bu 2 +\f[CR]background\f[R] +.RS 2 +.PP +The quick terminal appears behind all windows. +.RE +.PP +GTK Wayland only. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]gtk\-quick\-terminal\-namespace\f[B]\f[R] +The namespace for the quick terminal window. +.RS +.PP +This is an identifier that is used by the Wayland compositor and/or +scripts to determine the type of layer surfaces and to possibly apply +unique effects. +.PP +GTK Wayland only. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]quick\-terminal\-screen\f[B]\f[R] +The screen where the quick terminal should show up. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]main\f[R] \- The screen that the operating system recommends as +the main screen. +On macOS, this is the screen that is currently receiving keyboard input. +This screen is defined by the operating system and not chosen by +Ghostty. +.IP \(bu 2 +\f[CR]mouse\f[R] \- The screen that the mouse is currently hovered over. +.IP \(bu 2 +\f[CR]macos\-menu\-bar\f[R] \- The screen that contains the macOS menu +bar as set in the display settings on macOS. +This is a bit confusing because every screen on macOS has a menu bar, +but this is the screen that contains the primary menu bar. +.PP +The default value is \f[CR]main\f[R] because this is the recommended +screen by the operating system. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]quick\-terminal\-animation\-duration\f[B]\f[R] +Duration (in seconds) of the quick terminal enter and exit animation. +Set it to 0 to disable animation completely. +This can be changed at runtime. +.RS +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]quick\-terminal\-autohide\f[B]\f[R] +Automatically hide the quick terminal when focus shifts to another +window. +Set it to false for the quick terminal to remain open even when it loses +focus. +.RS +.PP +Defaults to true on macOS and on false on Linux/BSD. +This is because global shortcuts on Linux require system configuration +and are considerably less accessible than on macOS, meaning that it is +more preferable to keep the quick terminal open until the user has +completed their task. +This default may change in the future. +.RE +.TP +\f[B]\f[CB]quick\-terminal\-space\-behavior\f[B]\f[R] +This configuration option determines the behavior of the quick terminal +when switching between macOS spaces. +macOS spaces are virtual desktops that can be manually created or are +automatically created when an application is in full\-screen mode. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]move\f[R] \- When switching to another space, the quick terminal +will also moved to the current space. +.IP \(bu 2 +\f[CR]remain\f[R] \- The quick terminal will stay only in the space +where it was originally opened and will not follow when switching to +another space. +.PP +The default value is \f[CR]move\f[R]. +.PP +Only implemented on macOS. +On Linux the behavior is always equivalent to \f[CR]move\f[R]. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]quick\-terminal\-keyboard\-interactivity\f[B]\f[R] +Determines under which circumstances that the quick terminal should +receive keyboard input. +See the corresponding \c +.UR https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_surface_v1:enum:keyboard_interactivity +Wayland documentation +.UE \c +\ for a more detailed explanation of the behavior of each option. +.RS +.RS +.PP +[!NOTE] The exact behavior of each option may differ significantly +across compositors \(en experiment with them on your system to find one +that suits your liking! +.RE +.PP +Valid values are: +.IP \(bu 2 +\f[CR]none\f[R] +.RS 2 +.PP +The quick terminal will not receive any keyboard input. +.RE +.IP \(bu 2 +\f[CR]on\-demand\f[R] (default) +.RS 2 +.PP +The quick terminal would only receive keyboard input when it is focused. +.RE +.IP \(bu 2 +\f[CR]exclusive\f[R] +.RS 2 +.PP +The quick terminal will always receive keyboard input, even when another +window is currently focused. +.RE +.PP +Only has an effect on Linux Wayland. +On macOS the behavior is always equivalent to \f[CR]on\-demand\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]shell\-integration\f[B]\f[R] +Whether to enable shell integration auto\-injection or not. +Shell integration greatly enhances the terminal experience by enabling a +number of features: +.RS +.IP \(bu 2 +Working directory reporting so new tabs, splits inherit the previous +terminal\(cqs working directory. +.IP \(bu 2 +Prompt marking that enables the \(lqjump_to_prompt\(rq keybinding. +.IP \(bu 2 +If you\(cqre sitting at a prompt, closing a terminal will not ask for +confirmation. +.IP \(bu 2 +Resizing the window with a complex prompt usually paints much better. +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]none\f[R] \- Do not do any automatic injection. +You can still manually configure your shell to enable the integration. +.IP \(bu 2 +\f[CR]detect\f[R] \- Detect the shell based on the filename. +.IP \(bu 2 +\f[CR]bash\f[R], \f[CR]elvish\f[R], \f[CR]fish\f[R], \f[CR]nushell\f[R], +\f[CR]zsh\f[R] \- Use this specific shell injection scheme. +.PP +The default value is \f[CR]detect\f[R]. +.RE +.TP +\f[B]\f[CB]shell\-integration\-features\f[B]\f[R] +Shell integration features to enable. +These require our shell integration to be loaded, either automatically +via shell\-integration or manually. +.RS +.PP +The format of this is a list of features to enable separated by commas. +If you prefix a feature with \f[CR]no\-\f[R] then it is disabled. +If you omit a feature, its default value is used, so you must explicitly +disable features you don\(cqt want. +You can also use \f[CR]true\f[R] or \f[CR]false\f[R] to turn all +features on or off. +.PP +Example: \f[CR]cursor\f[R], \f[CR]no\-cursor\f[R], \f[CR]sudo\f[R], +\f[CR]no\-sudo\f[R], \f[CR]title\f[R], \f[CR]no\-title\f[R] +.PP +Available features: +.IP \(bu 2 +\f[CR]cursor\f[R] \- Set the cursor to a bar at the prompt. +.IP \(bu 2 +\f[CR]sudo\f[R] \- Set sudo wrapper to preserve terminfo. +.IP \(bu 2 +\f[CR]title\f[R] \- Set the window title via shell integration. +.IP \(bu 2 +\f[CR]ssh\-env\f[R] \- Enable SSH environment variable compatibility. +Automatically converts TERM from \f[CR]xterm\-ghostty\f[R] to +\f[CR]xterm\-256color\f[R] when connecting to remote hosts and +propagates COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. +Whether or not these variables will be accepted by the remote host(s) +will depend on whether or not the variables are allowed in their +sshd_config. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]ssh\-terminfo\f[R] \- Enable automatic terminfo installation on +remote hosts. +Attempts to install Ghostty\(cqs terminfo entry using \f[CR]infocmp\f[R] +and \f[CR]tic\f[R] when connecting to hosts that lack it. +Requires \f[CR]infocmp\f[R] to be available locally and \f[CR]tic\f[R] +to be available on remote hosts. +Once terminfo is installed on a remote host, it will be automatically +\(lqcached\(rq to avoid repeat installations. +If desired, the \f[CR]+ssh\-cache\f[R] CLI action can be used to manage +the installation cache manually using various arguments. +(Available since: 1.2.0) +.IP \(bu 2 +\f[CR]path\f[R] \- Add Ghostty\(cqs binary directory to PATH. +This ensures the \f[CR]ghostty\f[R] command is available in the shell +even if shell init scripts reset PATH. +This is particularly useful on macOS where PATH is often overridden by +system scripts. +The directory is only added if not already present. +.PP +SSH features work independently and can be combined for optimal +experience: when both \f[CR]ssh\-env\f[R] and \f[CR]ssh\-terminfo\f[R] +are enabled, Ghostty will install its terminfo on remote hosts and use +\f[CR]xterm\-ghostty\f[R] as TERM, falling back to +\f[CR]xterm\-256color\f[R] with environment variables if terminfo +installation fails. +.RE +.TP +\f[B]\f[CB]command\-palette\-entry\f[B]\f[R] +Custom entries into the command palette. +.RS +.PP +Each entry requires the title, the corresponding action, and an optional +description. +Each field should be prefixed with the field name, a colon +(\f[CR]:\f[R]), and then the specified value. +The syntax for actions is identical to the one for keybind actions. +Whitespace in between fields is ignored. +.PP +If you need to embed commas or any other special characters in the +values, enclose the value in double quotes and it will be interpreted as +a Zig string literal. +This is also useful for including whitespace at the beginning or the end +of a value. +See the \c +.UR https://ziglang.org/documentation/master/#Escape-Sequences +Zig documentation +.UE \c +\ for more information on string literals. +Note that multiline string literals are not supported. +.PP +Double quotes can not be used around the field names. +.IP +.EX +command\-palette\-entry = title:Reset Font Style, action:csi:0m +command\-palette\-entry = title:Crash on Main Thread,description:Causes a crash on the main (UI) thread.,action:crash:main +command\-palette\-entry = title:Focus Split: Right,description:\(dqFocus the split to the right, if it exists.\(dq,action:goto_split:right +command\-palette\-entry = title:\(dqGhostty\(dq,description:\(dqAdd a little Ghostty to your terminal.\(dq,action:\(dqtext:\(rsxf0\(rsx9f\(rsx91\(rsxbb\(dq +.EE +.PP +By default, the command palette is preloaded with most actions that +might be useful in an interactive setting yet do not have easily +accessible or memorizable shortcuts. +The default entries can be cleared by setting this setting to an empty +value: +.IP +.EX +command\-palette\-entry = +.EE +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]osc\-color\-report\-format\f[B]\f[R] +Sets the reporting format for OSC sequences that request color +information. +Ghostty currently supports OSC 10 (foreground), OSC 11 (background), and +OSC 4 (256 color palette) queries, and by default the reported values +are scaled\-up RGB values, where each component are 16 bits. +This is how most terminals report these values. +However, some legacy applications may require 8\-bit, unscaled, +components. +We also support turning off reporting altogether. +The components are lowercase hex values. +.RS +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]none\f[R] \- OSC 4/10/11 queries receive no reply +.IP \(bu 2 +\f[CR]8\-bit\f[R] \- Color components are return unscaled, +e.g.\ \f[CR]rr/gg/bb\f[R] +.IP \(bu 2 +\f[CR]16\-bit\f[R] \- Color components are returned scaled, +e.g.\ \f[CR]rrrr/gggg/bbbb\f[R] +.PP +The default value is \f[CR]16\-bit\f[R]. +.RE +.TP +\f[B]\f[CB]vt\-kam\-allowed\f[B]\f[R] +If true, allows the \(lqKAM\(rq mode (ANSI mode 2) to be used within the +terminal. +KAM disables keyboard input at the request of the application. +This is not a common feature and is not recommended to be enabled. +This will not be documented further because if you know you need KAM, +you know. +If you don\(cqt know if you need KAM, you don\(cqt need it. +.TP +\f[B]\f[CB]custom\-shader\f[B]\f[R] +Custom shaders to run after the default shaders. +This is a file path to a GLSL\-syntax shader for all platforms. +.RS +.PP +Warning: Invalid shaders can cause Ghostty to become unusable such as by +causing the window to be completely black. +If this happens, you can unset this configuration to disable the shader. +.PP +Custom shader support is based on and compatible with the Shadertoy +shaders. +Shaders should specify a \f[CR]mainImage\f[R] function and the available +uniforms largely match Shadertoy, with some caveats and +Ghostty\-specific extensions. +.PP +The uniform values available to shaders are as follows: +.IP \(bu 2 +\f[CR]sampler2D iChannel0\f[R] \- Input texture. +.RS 2 +.PP +A texture containing the current terminal screen. +If multiple custom shaders are specified, the output of previous shaders +is written to this texture, to allow combining multiple effects. +.RE +.IP \(bu 2 +\f[CR]vec3 iResolution\f[R] \- Output texture size, +\f[CR][width, height, 1]\f[R] (in px). +.IP \(bu 2 +\f[CR]float iTime\f[R] \- Time in seconds since first frame was +rendered. +.IP \(bu 2 +\f[CR]float iTimeDelta\f[R] \- Time in seconds since previous frame was +rendered. +.IP \(bu 2 +\f[CR]float iFrameRate\f[R] \- Average framerate. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]int iFrame\f[R] \- Number of frames that have been rendered so +far. +.IP \(bu 2 +\f[CR]float iChannelTime[4]\f[R] \- Current time for video or sound +input. +(N/A) +.IP \(bu 2 +\f[CR]vec3 iChannelResolution[4]\f[R] \- Resolutions of the 4 input +samplers. +.RS 2 +.PP +Currently only \f[CR]iChannel0\f[R] exists, and +\f[CR]iChannelResolution[0]\f[R] is identical to \f[CR]iResolution\f[R]. +.RE +.IP \(bu 2 +\f[CR]vec4 iMouse\f[R] \- Mouse input info. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]vec4 iDate\f[R] \- Date/time info. +(NOT CURRENTLY SUPPORTED) +.IP \(bu 2 +\f[CR]float iSampleRate\f[R] \- Sample rate for audio. +(N/A) +.PP +Ghostty\-specific extensions: +.IP \(bu 2 +\f[CR]vec4 iCurrentCursor\f[R] \- Info about the terminal cursor. +.RS 2 +.IP \(bu 2 +\f[CR]iCurrentCursor.xy\f[R] is the \-X, +Y corner of the current +cursor. +.IP \(bu 2 +\f[CR]iCurrentCursor.zw\f[R] is the width and height of the current +cursor. +.RE +.IP \(bu 2 +\f[CR]vec4 iPreviousCursor\f[R] \- Info about the previous terminal +cursor. +.IP \(bu 2 +\f[CR]vec4 iCurrentCursorColor\f[R] \- Color of the terminal cursor. +.IP \(bu 2 +\f[CR]vec4 iPreviousCursorColor\f[R] \- Color of the previous terminal +cursor. +.IP \(bu 2 +\f[CR]vec4 iCurrentCursorStyle\f[R] \- Style of the terminal cursor +.RS 2 +.PP +Macros simplified use are defined for the various cursor styles: +.IP \(bu 2 +\f[CR]CURSORSTYLE_BLOCK\f[R] or \f[CR]0\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_BLOCK_HOLLOW\f[R] or \f[CR]1\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_BAR\f[R] or \f[CR]2\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_UNDERLINE\f[R] or \f[CR]3\f[R] +.IP \(bu 2 +\f[CR]CURSORSTYLE_LOCK\f[R] or \f[CR]4\f[R] +.RE +.IP \(bu 2 +\f[CR]vec4 iPreviousCursorStyle\f[R] \- Style of the previous terminal +cursor +.IP \(bu 2 +\f[CR]vec4 iCursorVisible\f[R] \- Visibility of the terminal cursor. +.IP \(bu 2 +\f[CR]float iTimeCursorChange\f[R] \- Timestamp of terminal cursor +change. +.RS 2 +.PP +When the terminal cursor changes position or color, this is set to the +same time as the \f[CR]iTime\f[R] uniform, allowing you to compute the +time since the change by subtracting this from \f[CR]iTime\f[R]. +.RE +.IP \(bu 2 +\f[CR]float iTimeFocus\f[R] \- Timestamp when the surface last gained +iFocus. +.RS 2 +.PP +When the surface gains focus, this is set to the current value of +\f[CR]iTime\f[R], similar to how \f[CR]iTimeCursorChange\f[R] works. +This allows you to compute the time since focus was gained or lost by +calculating \f[CR]iTime \- iTimeFocus\f[R]. +Use this to create animations that restart when the terminal regains +focus. +.RE +.IP \(bu 2 +\f[CR]int iFocus\f[R] \- Current focus state of the surface. +.RS 2 +.PP +Set to 1.0 when the surface is focused, 0.0 when unfocused. +This allows shaders to detect unfocused state and avoid animation +artifacts from large time deltas caused by infrequent \(lqdeceptive +frames\(rq (e.g., modifier key presses, link hover events in unfocused +split panes). +Check \f[CR]iFocus > 0\f[R] to determine if the surface is currently +focused. +.RE +.IP \(bu 2 +\f[CR]vec3 iPalette[256]\f[R] \- The 256\-color terminal palette. +.RS 2 +.PP +RGB values for all 256 colors in the terminal palette, normalized to +[0.0, 1.0]. +Index 0\-15 are the ANSI colors, 16\-231 are the 6x6x6 color cube, and +232\-255 are the grayscale colors. +.RE +.IP \(bu 2 +\f[CR]vec3 iBackgroundColor\f[R] \- Terminal background color (RGB). +.IP \(bu 2 +\f[CR]vec3 iForegroundColor\f[R] \- Terminal foreground color (RGB). +.IP \(bu 2 +\f[CR]vec3 iCursorColor\f[R] \- Terminal cursor color (RGB). +.IP \(bu 2 +\f[CR]vec3 iCursorText\f[R] \- Terminal cursor text color (RGB). +.IP \(bu 2 +\f[CR]vec3 iSelectionBackgroundColor\f[R] \- Selection background color +(RGB). +.IP \(bu 2 +\f[CR]vec3 iSelectionForegroundColor\f[R] \- Selection foreground color +(RGB). +.PP +If the shader fails to compile, the shader will be ignored. +Any errors related to shader compilation will not show up as +configuration errors and only show up in the log, since shader +compilation happens after configuration loading on the dedicated render +thread. +For interactive development, use \c +.UR https://shadertoy.com +shadertoy.com +.UE \c +\&. +.PP +This can be repeated multiple times to load multiple shaders. +The shaders will be run in the order they are specified. +.PP +This can be changed at runtime and will affect all open terminals. +.RE +.TP +\f[B]\f[CB]custom\-shader\-animation\f[B]\f[R] +If \f[CR]true\f[R] (default), the focused terminal surface will run an +animation loop when custom shaders are used. +This uses slightly more CPU (generally less than 10%) but allows the +shader to animate. +This only runs if there are custom shaders and the terminal is focused. +.RS +.PP +If this is set to \f[CR]false\f[R], the terminal and custom shader will +only render when the terminal is updated. +This is more efficient but the shader will not animate. +.PP +This can also be set to \f[CR]always\f[R], which will always run the +animation loop regardless of whether the terminal is focused or not. +The animation loop will still only run when custom shaders are used. +Note that this will use more CPU per terminal surface and can become +quite expensive depending on the shader and your terminal usage. +.PP +This can be changed at runtime and will affect all open terminals. +.RE +.TP +\f[B]\f[CB]bell\-features\f[B]\f[R] +Bell features to enable if bell support is available in your runtime. +Not all features are available on all runtimes. +The format of this is a list of features to enable separated by commas. +If you prefix a feature with \f[CR]no\-\f[R] then it is disabled. +If you omit a feature, its default value is used. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]system\f[R] +.RS 2 +.PP +Instruct the system to notify the user using built\-in system functions. +This could result in an audiovisual effect, a notification, or something +else entirely. +Changing these effects require altering system settings: for instance +under the \(lqSound > Alert Sound\(rq setting in GNOME, or the +\(lqAccessibility > System Bell\(rq settings in KDE Plasma. +.PP +On macOS, this plays the system alert sound. +.RE +.IP \(bu 2 +\f[CR]audio\f[R] +.RS 2 +.PP +Play a custom sound. +(Available since 1.3.0 on macOS) +.RE +.IP \(bu 2 +\f[CR]attention\f[R] \f[I](enabled by default)\f[R] +.RS 2 +.PP +Request the user\(cqs attention when Ghostty is unfocused, until it has +received focus again. +On macOS, this will bounce the app icon in the dock once. +On Linux, the behavior depends on the desktop environment and/or the +window manager/compositor: +.IP \(bu 2 +On KDE, the background of the desktop icon in the task bar would be +highlighted; +.IP \(bu 2 +On GNOME, you may receive a notification that, when clicked, would bring +the Ghostty window into focus; +.IP \(bu 2 +On Sway, the window may be decorated with a distinctly colored border; +.IP \(bu 2 +On other systems this may have no effect at all. +.RE +.IP \(bu 2 +\f[CR]title\f[R] \f[I](enabled by default)\f[R] +.RS 2 +.PP +Prepend a bell emoji (🔔) to the title of the alerted surface until the +terminal is re\-focused or interacted with (such as on keyboard input). +.RE +.IP \(bu 2 +\f[CR]border\f[R] +.RS 2 +.PP +Display a border around the alerted surface until the terminal is +re\-focused or interacted with (such as on keyboard input). +.PP +Available since: 1.2.0 on GTK, 1.2.1 on macOS +.RE +.PP +Example: \f[CR]audio\f[R], \f[CR]no\-audio\f[R], \f[CR]system\f[R], +\f[CR]no\-system\f[R] +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]bell\-audio\-path\f[B]\f[R] +If \f[CR]audio\f[R] is an enabled bell feature, this is a path to an +audio file. +If the path is not absolute, it is considered relative to the directory +of the configuration file that it is referenced from, or from the +current working directory if this is used as a CLI flag. +The path may be prefixed with \f[CR]\(ti/\f[R] to reference the +user\(cqs home directory. +.RS +.PP +Available since: 1.2.0 on GTK, 1.3.0 on macOS. +.RE +.TP +\f[B]\f[CB]bell\-audio\-volume\f[B]\f[R] +If \f[CR]audio\f[R] is an enabled bell feature, this is the volume to +play the audio file at (relative to the system volume). +This is a floating point number ranging from 0.0 (silence) to 1.0 (as +loud as possible). +The default is 0.5. +.RS +.PP +Available since: 1.2.0 on GTK, 1.3.0 on macOS. +.RE +.TP +\f[B]\f[CB]app\-notifications\f[B]\f[R] +Control the in\-app notifications that Ghostty shows. +.RS +.PP +On Linux (GTK), in\-app notifications show up as toasts. +Toasts appear overlaid on top of the terminal window. +They are used to show information that is not critical but may be +important. +.PP +Possible notifications are: +.IP \(bu 2 +\f[CR]clipboard\-copy\f[R] (default: true) \- Show a notification when +text is copied to the clipboard. +.IP \(bu 2 +\f[CR]config\-reload\f[R] (default: true) \- Show a notification when +the configuration is reloaded. +.PP +To specify a notification to enable, specify the name of the +notification. +To specify a notification to disable, prefix the name with +\f[CR]no\-\f[R]. +For example, to disable \f[CR]clipboard\-copy\f[R], set this +configuration to \f[CR]no\-clipboard\-copy\f[R]. +To enable it, set this configuration to \f[CR]clipboard\-copy\f[R]. +.PP +Multiple notifications can be enabled or disabled by separating them +with a comma. +.PP +A value of \(lqfalse\(rq will disable all notifications. +A value of \(lqtrue\(rq will enable all notifications. +.PP +This configuration only applies to GTK. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]macos\-non\-native\-fullscreen\f[B]\f[R] +If anything other than false, fullscreen mode on macOS will not use the +native fullscreen, but make the window fullscreen without animations and +using a new space. +It\(cqs faster than the native fullscreen mode since it doesn\(cqt use +animations. +.RS +.PP +Important: tabs DO NOT WORK in this mode. +Non\-native fullscreen removes the titlebar and macOS native tabs +require the titlebar. +If you use tabs, you should not use this mode. +.PP +If you fullscreen a window with tabs, the currently focused tab will +become fullscreen while the others will remain in a separate window in +the background. +You can switch to that window using normal window\-switching keybindings +such as command+tilde. +When you exit fullscreen, the window will return to the tabbed state it +was in before. +.PP +Allowable values are: +.IP \(bu 2 +\f[CR]true\f[R] \- Use non\-native macOS fullscreen, hide the menu bar +.IP \(bu 2 +\f[CR]false\f[R] \- Use native macOS fullscreen +.IP \(bu 2 +\f[CR]visible\-menu\f[R] \- Use non\-native macOS fullscreen, keep the +menu bar visible +.IP \(bu 2 +\f[CR]padded\-notch\f[R] \- Use non\-native macOS fullscreen, hide the +menu bar, but ensure the window is not obscured by the notch on +applicable devices. +The area around the notch will remain transparent currently, but in the +future we may fill it with the window background color. +.PP +Changing this option at runtime works, but will only apply to the next +time the window is made fullscreen. +If a window is already fullscreen, it will retain the previous setting +until fullscreen is exited. +.RE +.TP +\f[B]\f[CB]macos\-window\-buttons\f[B]\f[R] +Whether the window buttons in the macOS titlebar are visible. +The window buttons are the colored buttons in the upper left corner of +most macOS apps, also known as the traffic lights, that allow you to +close, miniaturize, and zoom the window. +.RS +.PP +This setting has no effect when \f[CR]window\-decoration = none\f[R] or +\f[CR]macos\-titlebar\-style = hidden\f[R], as the window buttons are +always hidden in these modes. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]visible\f[R] \- Show the window buttons. +.IP \(bu 2 +\f[CR]hidden\f[R] \- Hide the window buttons. +.PP +The default value is \f[CR]visible\f[R]. +.PP +Changing this option at runtime only applies to new windows. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]macos\-titlebar\-style\f[B]\f[R] +The style of the macOS titlebar. +Available values are: \(lqnative\(rq, \(lqtransparent\(rq, \(lqtabs\(rq, +and \(lqhidden\(rq. +.RS +.PP +The \(lqnative\(rq style uses the native macOS titlebar with zero +customization. +The titlebar will match your window theme (see +\f[CR]window\-theme\f[R]). +.PP +The \(lqtransparent\(rq style is the same as \(lqnative\(rq but the +titlebar will be transparent and allow your window background color to +come through. +This makes a more seamless window appearance but looks a little less +typical for a macOS application and may not work well with all themes. +.PP +The \(lqtransparent\(rq style will also update in real\-time to dynamic +changes to the window background color, e.g.\ via OSC 11. +To make this more aesthetically pleasing, this only happens if the +terminal is a window, tab, or split that borders the top of the window. +This avoids a disjointed appearance where the titlebar color changes but +all the topmost terminals don\(cqt match. +.PP +The \(lqtabs\(rq style is a completely custom titlebar that integrates +the tab bar into the titlebar. +This titlebar always matches the background color of the terminal. +There are some limitations to this style: On macOS 13 and below, saved +window state will not restore tabs correctly. +macOS 14 does not have this issue and any other macOS version has not +been tested. +.PP +The \(lqhidden\(rq style hides the titlebar. +Unlike \f[CR]window\-decoration = none\f[R], however, it does not remove +the frame from the window or cause it to have squared corners. +Changing to or from this option at run\-time may affect existing windows +in buggy ways. +.PP +When \(lqhidden\(rq, the top titlebar area can no longer be used for +dragging the window. +To drag the window, you can use option+click on the resizable areas of +the frame to drag the window. +This is a standard macOS behavior and not something Ghostty enables. +.PP +The default value is \(lqtransparent\(rq. +This is an opinionated choice but its one I think is the most +aesthetically pleasing and works in most cases. +.PP +Changing this option at runtime only applies to new windows. +.RE +.TP +\f[B]\f[CB]macos\-titlebar\-proxy\-icon\f[B]\f[R] +Whether the proxy icon in the macOS titlebar is visible. +The proxy icon is the icon that represents the folder of the current +working directory. +You can see this very clearly in the macOS built\-in Terminal.app +titlebar. +.RS +.PP +The proxy icon is only visible with the native macOS titlebar style. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]visible\f[R] \- Show the proxy icon. +.IP \(bu 2 +\f[CR]hidden\f[R] \- Hide the proxy icon. +.PP +The default value is \f[CR]visible\f[R]. +.PP +This setting can be changed at runtime and will affect all currently +open windows but only after their working directory changes again. +Therefore, to make this work after changing the setting, you must +usually \f[CR]cd\f[R] to a different directory, open a different file in +an editor, etc. +.RE +.TP +\f[B]\f[CB]macos\-dock\-drop\-behavior\f[B]\f[R] +Controls the windowing behavior when dropping a file or folder onto the +Ghostty icon in the macOS dock. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]new\-tab\f[R] \- Create a new tab in the current window, or open a +new window if none exist. +.IP \(bu 2 +\f[CR]new\-window\f[R] \- Create a new window unconditionally. +.PP +The default value is \f[CR]new\-tab\f[R]. +.PP +This setting is only supported on macOS and has no effect on other +platforms. +.RE +.TP +\f[B]\f[CB]macos\-option\-as\-alt\f[B]\f[R] +macOS doesn\(cqt have a distinct \(lqalt\(rq key and instead has the +\(lqoption\(rq key which behaves slightly differently. +On macOS by default, the option key plus a character will sometimes +produce a Unicode character. +For example, on US standard layouts option\-b produces \(lq∫\(rq. +This may be undesirable if you want to use \(lqoption\(rq as an +\(lqalt\(rq key for keybindings in terminal programs or shells. +.RS +.PP +This configuration lets you change the behavior so that option is +treated as alt. +.PP +The default behavior (unset) will depend on your active keyboard layout. +If your keyboard layout is one of the keyboard layouts listed below, +then the default value is \(lqtrue\(rq. +Otherwise, the default value is \(lqfalse\(rq. +Keyboard layouts with a default value of \(lqtrue\(rq are: +.IP \(bu 2 +U.S. +Standard +.IP \(bu 2 +U.S. +International +.PP +Note that if an \f[I]Option\f[R]\-sequence doesn\(cqt produce a +printable character, it will be treated as \f[I]Alt\f[R] regardless of +this setting. +(e.g.\ \f[CR]alt+ctrl+a\f[R]). +.PP +Explicit values that can be set: +.PP +If \f[CR]true\f[R], the \f[I]Option\f[R] key will be treated as +\f[I]Alt\f[R]. +This makes terminal sequences expecting \f[I]Alt\f[R] to work properly, +but will break Unicode input sequences on macOS if you use them via the +\f[I]Alt\f[R] key. +.PP +You may set this to \f[CR]false\f[R] to restore the macOS \f[I]Alt\f[R] +key unicode sequences but this will break terminal sequences expecting +\f[I]Alt\f[R] to work. +.PP +The values \f[CR]left\f[R] or \f[CR]right\f[R] enable this for the left +or right \f[I]Option\f[R] key, respectively. +.RE +.TP +\f[B]\f[CB]macos\-window\-shadow\f[B]\f[R] +Whether to enable the macOS window shadow. +The default value is true. +With some window managers and window transparency settings, you may find +false more visually appealing. +.TP +\f[B]\f[CB]macos\-hidden\f[B]\f[R] +If true, the macOS icon in the dock and app switcher will be hidden. +This is mainly intended for those primarily using the quick\-terminal +mode. +.RS +.PP +Note that setting this to true means that keyboard layout changes will +no longer be automatic. +.PP +Control whether macOS app is excluded from the dock and app switcher, a +\(lqhidden\(rq state. +This is mainly intended for those primarily using quick\-terminal mode, +but is a general configuration for any use case. +.PP +Available values: +.IP \(bu 2 +\f[CR]never\f[R] \- The macOS app is never hidden. +.IP \(bu 2 +\f[CR]always\f[R] \- The macOS app is always hidden. +.PP +Note: When the macOS application is hidden, keyboard layout changes will +no longer be automatic. +This is a limitation of macOS. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]macos\-auto\-secure\-input\f[B]\f[R] +If true, Ghostty on macOS will automatically enable the \(lqSecure +Input\(rq feature when it detects that a password prompt is being +displayed. +.RS +.PP +\(lqSecure Input\(rq is a macOS security feature that prevents +applications from reading keyboard events. +This can always be enabled manually using the +\f[CR]Ghostty > Secure Keyboard Entry\f[R] menu item. +.PP +Note that automatic password prompt detection is based on heuristics and +may not always work as expected. +Specifically, it does not work over SSH connections, but there may be +other cases where it also doesn\(cqt work. +.PP +A reason to disable this feature is if you find that it is interfering +with legitimate accessibility software (or software that uses the +accessibility APIs), since secure input prevents any application from +reading keyboard events. +.RE +.TP +\f[B]\f[CB]macos\-secure\-input\-indication\f[B]\f[R] +If true, Ghostty will show a graphical indication when secure input is +enabled. +This indication is generally recommended to know when secure input is +enabled. +.RS +.PP +Normally, secure input is only active when a password prompt is +displayed or it is manually (and typically temporarily) enabled. +However, if you always have secure input enabled, the indication can be +distracting and you may want to disable it. +.RE +.TP +\f[B]\f[CB]macos\-applescript\f[B]\f[R] +If true, Ghostty exposes and handles the built\-in AppleScript +dictionary on macOS. +.RS +.PP +If false, all AppleScript interactions are disabled. +This includes AppleScript commands and AppleScript object lookup for +windows, tabs, and terminals. +.PP +The default is true. +.RE +.TP +\f[B]\f[CB]macos\-icon\f[B]\f[R] +Customize the macOS app icon. +.RS +.PP +This only affects the icon that appears in the dock, application +switcher, etc. +This does not affect the icon in Finder because that is controlled by a +hardcoded value in the signed application bundle and can\(cqt be changed +at runtime. +For more details on what exactly is affected, see the +\f[CR]NSApplication.icon\f[R] Apple documentation; that is the API that +is being used to set the icon. +.PP +Valid values: +.IP \(bu 2 +\f[CR]official\f[R] \- Use the official Ghostty icon. +.IP \(bu 2 +\f[CR]blueprint\f[R], \f[CR]chalkboard\f[R], \f[CR]microchip\f[R], +\f[CR]glass\f[R], \f[CR]holographic\f[R], \f[CR]paper\f[R], +\f[CR]retro\f[R], \f[CR]xray\f[R] \- Official variants of the Ghostty +icon hand\-created by artists (no AI). +.IP \(bu 2 +\f[CR]custom\f[R] \- Use a completely custom icon. +The location must be specified using the additional +\f[CR]macos\-custom\-icon\f[R] configuration +.IP \(bu 2 +\f[CR]custom\-style\f[R] \- Use the official Ghostty icon but with +custom styles applied to various layers. +The custom styles must be specified using the additional +\f[CR]macos\-icon\f[R]\-prefixed configurations. +The \f[CR]macos\-icon\-ghost\-color\f[R] and +\f[CR]macos\-icon\-screen\-color\f[R] configurations are required for +this style. +.PP +WARNING: The \f[CR]custom\-style\f[R] option is \f[I]experimental\f[R]. +We may change the format of the custom styles in the future. +We\(cqre still finalizing the exact layers and customization options +that will be available. +.PP +Other caveats: +.IP \(bu 2 +The icon in the update dialog will always be the official icon. +This is because the update dialog is managed through a separate +framework and cannot be customized without significant effort. +.RE +.TP +\f[B]\f[CB]macos\-custom\-icon\f[B]\f[R] +The absolute path to the custom icon file. +Supported formats include PNG, JPEG, and ICNS. +.RS +.PP +Defaults to \f[CR]\(ti/.config/ghostty/Ghostty.icns\f[R] +.RE +.TP +\f[B]\f[CB]macos\-icon\-frame\f[B]\f[R] +The material to use for the frame of the macOS app icon. +.RS +.PP +Valid values: +.IP \(bu 2 +\f[CR]aluminum\f[R] \- A brushed aluminum frame. +This is the default. +.IP \(bu 2 +\f[CR]beige\f[R] \- A classic 90\(cqs computer beige frame. +.IP \(bu 2 +\f[CR]plastic\f[R] \- A glossy, dark plastic frame. +.IP \(bu 2 +\f[CR]chrome\f[R] \- A shiny chrome frame. +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.RE +.TP +\f[B]\f[CB]macos\-icon\-ghost\-color\f[B]\f[R] +The color of the ghost in the macOS app icon. +.RS +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.PP +Specified as either hex (\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or a +named X11 color. +.RE +.TP +\f[B]\f[CB]macos\-icon\-screen\-color\f[B]\f[R] +The color of the screen in the macOS app icon. +.RS +.PP +The screen is a linear gradient so you can specify multiple colors that +make up the gradient. +Up to 64 comma\-separated colors may be specified as either hex +(\f[CR]#RRGGBB\f[R] or \f[CR]RRGGBB\f[R]) or as named X11 colors. +The first color is the bottom of the gradient and the last color is the +top of the gradient. +.PP +Note: This configuration is required when \f[CR]macos\-icon\f[R] is set +to \f[CR]custom\-style\f[R]. +.RE +.TP +\f[B]\f[CB]macos\-shortcuts\f[B]\f[R] +Whether macOS Shortcuts are allowed to control Ghostty. +.RS +.PP +Ghostty exposes a number of actions that allow Shortcuts to control and +interact with Ghostty. +This includes creating new terminals, sending text to terminals, running +commands, invoking any keybind action, etc. +.PP +This is a powerful feature but can be a security risk if a malicious +shortcut is able to be installed and executed. +Therefore, this configuration allows you to disable this feature. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]ask\f[R] \- Ask the user whether for permission. +Ghostty will remember this choice and never ask again. +This is similar to other macOS permissions such as microphone access, +camera access, etc. +.IP \(bu 2 +\f[CR]allow\f[R] \- Allow Shortcuts to control Ghostty without asking. +.IP \(bu 2 +\f[CR]deny\f[R] \- Deny Shortcuts from controlling Ghostty. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]linux\-cgroup\f[B]\f[R] +Put every surface (tab, split, window) into a transient +\f[CR]systemd\f[R] scope. +.RS +.PP +This allows per\-surface resource management. +For example, if a shell program is using too much memory, only that +shell will be killed by the oom monitor instead of the entire Ghostty +process. +Similarly, if a shell program is using too much CPU, only that surface +will be CPU\-throttled. +.PP +This will cause startup times to be slower (a hundred milliseconds or +so), so the default value is \(lqsingle\-instance.\(rq In +single\-instance mode, only one instance of Ghostty is running (see +gtk\-single\-instance) so the startup time is a one\-time cost. +Additionally, single instance Ghostty is much more likely to have many +windows, tabs, etc. +so cgroup isolation is a big benefit. +.PP +This feature requires \f[CR]systemd\f[R]. +If \f[CR]systemd\f[R] is unavailable, cgroup initialization will fail. +By default, this will not prevent Ghostty from working (see +\f[CR]linux\-cgroup\-hard\-fail\f[R]). +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]never\f[R] \- Never use cgroups. +.IP \(bu 2 +\f[CR]always\f[R] \- Always use cgroups. +.IP \(bu 2 +\f[CR]single\-instance\f[R] \- Enable cgroups only for Ghostty instances +launched as single\-instance applications (see gtk\-single\-instance). +.RE +.TP +\f[B]\f[CB]linux\-cgroup\-memory\-limit\f[B]\f[R] +Memory limit for any individual terminal process (tab, split, window, +etc.) +in bytes. +If this is unset then no memory limit will be set. +.RS +.PP +Note that this sets the \f[CR]MemoryHigh\f[R] setting on the transient +\f[CR]systemd\f[R] scope, which is a soft limit. +You should configure something like \f[CR]systemd\-oom\f[R] to handle +killing processes that have too much memory pressure. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +See the \f[CR]systemd.resource\-control\f[R] manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource\-control.html +.RE +.TP +\f[B]\f[CB]linux\-cgroup\-processes\-limit\f[B]\f[R] +Number of processes limit for any individual terminal process (tab, +split, window, etc.). +If this is unset then no limit will be set. +.RS +.PP +Note that this sets the \f[CR]TasksMax\f[R] setting on the transient +\f[CR]systemd\f[R] scope, which is a hard limit. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.PP +See the \f[CR]systemd.resource\-control\f[R] manual page for more +information: +https://www.freedesktop.org/software/systemd/man/latest/systemd.resource\-control.html +.RE +.TP +\f[B]\f[CB]linux\-cgroup\-hard\-fail\f[B]\f[R] +If this is false, then creating a transient \f[CR]systemd\f[R] scope +(for \f[CR]linux\-cgroup\f[R]) will be allowed to fail and the failure +is ignored. +This is useful if you view cgroup isolation as a \(lqnice to have\(rq +and not a critical resource management feature, because surface creation +will not fail if \f[CR]systemd\f[R] APIs fail. +.RS +.PP +If this is true, then any transient \f[CR]systemd\f[R] scope creation +failure will cause surface creation to fail. +.PP +Changing this value and reloading the config will not affect existing +surfaces. +.RE +.TP +\f[B]\f[CB]gtk\-opengl\-debug\f[B]\f[R] +Enable or disable GTK\(cqs OpenGL debugging logs. +The default is \f[CR]true\f[R] for debug builds, \f[CR]false\f[R] for +all others. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]gtk\-single\-instance\f[B]\f[R] +If \f[CR]true\f[R], the Ghostty GTK application will run in +single\-instance mode: each new \f[CR]ghostty\f[R] process launched will +result in a new window if there is already a running process. +.RS +.PP +If \f[CR]false\f[R], each new ghostty process will launch a separate +application. +.PP +If \f[CR]detect\f[R], Ghostty will assume true (single instance) unless +one of the following scenarios is found: +.IP "1." 3 +TERM_PROGRAM environment variable is a non\-empty value. +In this case, we assume Ghostty is being launched from a graphical +terminal session and you want a dedicated instance. +.IP "2." 3 +Any CLI arguments exist. +In this case, we assume you are passing custom Ghostty configuration. +Single instance mode inherits the configuration from when it was +launched, so we must disable single instance to load the new +configuration. +.PP +If either of these scenarios is producing a false positive, you can set +this configuration explicitly to the behavior you want. +.PP +The pre\-1.2 option \f[CR]desktop\f[R] has been deprecated. +Please replace this with \f[CR]detect\f[R]. +.PP +The default value is \f[CR]detect\f[R]. +.PP +Note that debug builds of Ghostty have a separate single\-instance ID so +you can test single instance without conflicting with release builds. +.RE +.TP +\f[B]\f[CB]gtk\-titlebar\f[B]\f[R] +When enabled, the full GTK titlebar is displayed instead of your window +manager\(cqs simple titlebar. +The behavior of this option will vary with your window manager. +.RS +.PP +This option does nothing when \f[CR]window\-decoration\f[R] is none or +when running under macOS. +.RE +.TP +\f[B]\f[CB]gtk\-tabs\-location\f[B]\f[R] +Determines the side of the screen that the GTK tab bar will stick to. +Top, bottom, and hidden are supported. +The default is top. +.RS +.PP +When \f[CR]hidden\f[R] is set, a tab button displaying the number of +tabs will appear in the title bar. +It has the ability to open a tab overview for displaying tabs. +Alternatively, you can use the \f[CR]toggle_tab_overview\f[R] action in +a keybind if your window doesn\(cqt have a title bar, or you can switch +tabs with keybinds. +.RE +.TP +\f[B]\f[CB]gtk\-titlebar\-hide\-when\-maximized\f[B]\f[R] +If this is \f[CR]true\f[R], the titlebar will be hidden when the window +is maximized, and shown when the titlebar is unmaximized. +GTK only. +.RS +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]gtk\-toolbar\-style\f[B]\f[R] +Determines the appearance of the top and bottom bars tab bar. +.RS +.PP +Valid values are: +.IP \(bu 2 +\f[CR]flat\f[R] \- Top and bottom bars are flat with the terminal +window. +.IP \(bu 2 +\f[CR]raised\f[R] \- Top and bottom bars cast a shadow on the terminal +area. +.IP \(bu 2 +\f[CR]raised\-border\f[R] \- Similar to \f[CR]raised\f[R] but the shadow +is replaced with a more subtle border. +.RE +.TP +\f[B]\f[CB]gtk\-titlebar\-style\f[B]\f[R] +The style of the GTK titlebar. +Available values are \f[CR]native\f[R] and \f[CR]tabs\f[R]. +.RS +.PP +The \f[CR]native\f[R] titlebar style is a traditional titlebar with a +title, a few buttons and window controls. +A separate tab bar will show up below the titlebar if you have multiple +tabs open in the window. +.PP +The \f[CR]tabs\f[R] titlebar merges the tab bar and the traditional +titlebar. +This frees up vertical space on your screen if you use multiple tabs. +One limitation of the \f[CR]tabs\f[R] titlebar is that you cannot drag +the titlebar by the titles any longer (as they are tab titles now). +Other areas of the \f[CR]tabs\f[R] title bar can be used to drag the +window around. +.PP +The default style is \f[CR]native\f[R]. +.RE +.TP +\f[B]\f[CB]gtk\-wide\-tabs\f[B]\f[R] +If \f[CR]true\f[R] (default), then the Ghostty GTK tabs will be +\(lqwide.\(rq Wide tabs are the new typical Gnome style where tabs fill +their available space. +If you set this to \f[CR]false\f[R] then tabs will only take up space +they need, which is the old style. +.TP +\f[B]\f[CB]gtk\-custom\-css\f[B]\f[R] +Custom CSS files to be loaded. +.RS +.PP +GTK CSS documentation can be found at the following links: +.IP \(bu 2 +https://docs.gtk.org/gtk4/css\-overview.html \- An overview of GTK CSS. +.IP \(bu 2 +https://docs.gtk.org/gtk4/css\-properties.html \- A comprehensive list +of supported CSS properties. +.PP +Launch Ghostty with \f[CR]env GTK_DEBUG=interactive ghostty\f[R] to +tweak Ghostty\(cqs CSS in real time using the GTK Inspector. +Errors in your CSS files would also be reported in the terminal you +started Ghostty from. +See https://developer.gnome.org/documentation/tools/inspector.html for +more information about the GTK Inspector. +.PP +This configuration can be repeated multiple times to load multiple +files. +Prepend a ? +character to the file path to suppress errors if the file does not +exist. +If you want to include a file that begins with a literal ? +character, surround the file path in double quotes (\(lq). +The file size limit for a single stylesheet is 5MiB. +.PP +Available since: 1.1.0 +.RE +.TP +\f[B]\f[CB]desktop\-notifications\f[B]\f[R] +If \f[CR]true\f[R] (default), applications running in the terminal can +show desktop notifications using certain escape sequences such as OSC 9 +or OSC 777. +.TP +\f[B]\f[CB]progress\-style\f[B]\f[R] +If \f[CR]true\f[R] (default), applications running in the terminal can +show graphical progress bars using the ConEmu OSC 9;4 escape sequence. +If \f[CR]false\f[R], progress bar sequences are silently ignored. +.TP +\f[B]\f[CB]bold\-color\f[B]\f[R] +Modifies the color used for bold text in the terminal. +.RS +.PP +This can be set to a specific color, using the same format as +\f[CR]background\f[R] or \f[CR]foreground\f[R] (e.g.\ \f[CR]#RRGGBB\f[R] +but other formats are also supported; see the aforementioned +documentation). +If a specific color is set, this color will always be used for the +default bold text color. +It will set the rest of the bold colors to \f[CR]bright\f[R]. +.PP +This can also be set to \f[CR]bright\f[R], which uses the bright color +palette for bold text. +For example, if the text is red, then the bold will use the bright red +color. +The terminal palette is set with \f[CR]palette\f[R] but can also be +overridden by the terminal application itself using escape sequences +such as OSC 4. +(Since Ghostty 1.2.0, the previous configuration +\f[CR]bold\-is\-bright\f[R] is deprecated and replaced by this usage). +.PP +Available since Ghostty 1.2.0. +.RE +.TP +\f[B]\f[CB]faint\-opacity\f[B]\f[R] +The opacity level (opposite of transparency) of the faint text. +A value of 1 is fully opaque and a value of 0 is fully transparent. +A value less than 0 or greater than 1 will be clamped to the nearest +valid value. +.RS +.PP +Available since Ghostty 1.2.0. +.RE +.TP +\f[B]\f[CB]term\f[B]\f[R] +This will be used to set the \f[CR]TERM\f[R] environment variable. +HACK: We set this with an \f[CR]xterm\f[R] prefix because vim uses that +to enable key protocols (specifically this will enable +\f[CR]modifyOtherKeys\f[R]), among other features. +An option exists in vim to modify this: +\f[CR]:set keyprotocol=ghostty:kitty\f[R], however a bug in the +implementation prevents it from working properly. +https://github.com/vim/vim/pull/13211 fixes this. +.TP +\f[B]\f[CB]enquiry\-response\f[B]\f[R] +String to send when we receive \f[CR]ENQ\f[R] (\f[CR]0x05\f[R]) from the +command that we are running. +Defaults to an empty string if not set. +.TP +\f[B]\f[CB]async\-backend\f[B]\f[R] +Configures the low\-level API to use for async IO, eventing, etc. +.RS +.PP +Most users should leave this set to \f[CR]auto\f[R]. +This will automatically detect scenarios where APIs may not be available +(for example \f[CR]io_uring\f[R] on certain hardened kernels) and fall +back to a different API. +However, if you want to force a specific backend for any reason, you can +set this here. +.PP +Based on various benchmarks, we haven\(cqt found a statistically +significant difference between the backends with regards to memory, CPU, +or latency. +The choice of backend is more about compatibility and features. +.PP +Available options: +.IP \(bu 2 +\f[CR]auto\f[R] \- Automatically choose the best backend for the +platform based on available options. +.IP \(bu 2 +\f[CR]epoll\f[R] \- Use the \f[CR]epoll\f[R] API +.IP \(bu 2 +\f[CR]io_uring\f[R] \- Use the \f[CR]io_uring\f[R] API +.PP +If the selected backend is not available on the platform, Ghostty will +fall back to an automatically chosen backend that is available. +.PP +Changing this value requires a full application restart to take effect. +.PP +This is only supported on Linux, since this is the only platform where +we have multiple options. +On macOS, we always use \f[CR]kqueue\f[R]. +.PP +Available since: 1.2.0 +.RE +.TP +\f[B]\f[CB]auto\-update\f[B]\f[R] +Control the auto\-update functionality of Ghostty. +This is only supported on macOS currently, since Linux builds are +distributed via package managers that are not centrally controlled by +Ghostty. +.RS +.PP +Checking or downloading an update does not send any information to the +project beyond standard network information mandated by the underlying +protocols. +To put it another way: Ghostty doesn\(cqt explicitly add any tracking to +the update process. +The update process works by downloading information about the latest +version and comparing it client\-side to the current version. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]off\f[R] \- Disable auto\-updates. +.IP \(bu 2 +\f[CR]check\f[R] \- Check for updates and notify the user if an update +is available, but do not automatically download or install the update. +.IP \(bu 2 +\f[CR]download\f[R] \- Check for updates, automatically download the +update, notify the user, but do not automatically install the update. +.PP +If unset, we defer to Sparkle\(cqs default behavior, which respects the +preference stored in the standard user defaults +(\f[CR]defaults(1)\f[R]). +.PP +Changing this value at runtime works after a small delay. +.RE +.TP +\f[B]\f[CB]auto\-update\-channel\f[B]\f[R] +The release channel to use for auto\-updates. +.RS +.PP +The default value of this matches the release channel of the currently +running Ghostty version. +If you download a pre\-release version of Ghostty then this will be set +to \f[CR]tip\f[R] and you will receive pre\-release updates. +If you download a stable version of Ghostty then this will be set to +\f[CR]stable\f[R] and you will receive stable updates. +.PP +Valid values are: +.IP \(bu 2 +\f[CR]stable\f[R] \- Stable, tagged releases such as \(lq1.0.0\(rq. +.IP \(bu 2 +\f[CR]tip\f[R] \- Pre\-release versions generated from each commit to +the main branch. +This is the version that was in use during private beta testing by +thousands of people. +It is generally stable but will likely have more bugs than the stable +channel. +.PP +Changing this configuration requires a full restart of Ghostty to take +effect. +.PP +This only works on macOS since only macOS has an auto\-update feature. +.RE +.SH KEYBIND ACTIONS +.TP +\f[B]\f[CB]ignore\f[B]\f[R] +Ignore this key combination. +.RS +.PP +Ghostty will not process this combination nor forward it to the child +process within the terminal, but it may still be processed by the OS or +other applications. +.RE +.TP +\f[B]\f[CB]unbind\f[B]\f[R] +Unbind a previously bound key binding. +.RS +.PP +This cannot unbind bindings that were not bound by Ghostty or the user +(e.g.\ bindings set by the OS or some other application). +.RE +.TP +\f[B]\f[CB]csi\f[B]\f[R] +Send a CSI sequence. +.RS +.PP +The value should be the CSI sequence without the CSI header +(\f[CR]ESC [\f[R] or \f[CR]\(rsx1b[\f[R]). +.PP +For example, \f[CR]csi:0m\f[R] can be sent to reset all styles of the +current text. +.RE +.TP +\f[B]\f[CB]esc\f[B]\f[R] +Send an \f[CR]ESC\f[R] sequence. +.TP +\f[B]\f[CB]text\f[B]\f[R] +Send the specified text. +.RS +.PP +Uses Zig string literal syntax. +This is currently not validated. +If the text is invalid (i.e.\ contains an invalid escape sequence), the +error will currently only show up in logs. +.RE +.TP +\f[B]\f[CB]cursor_key\f[B]\f[R] +Send data to the pty depending on whether cursor key mode is enabled +(\f[CR]application\f[R]) or disabled (\f[CR]normal\f[R]). +.TP +\f[B]\f[CB]reset\f[B]\f[R] +Reset the terminal. +.RS +.PP +This can fix a lot of issues when a running program puts the terminal +into a broken state, equivalent to running the \f[CR]reset\f[R] command. +.PP +If you do this while in a TUI program such as vim, this may break the +program. +If you do this while in a shell, you may have to press enter after to +get a new prompt. +.RE +.TP +\f[B]\f[CB]copy_to_clipboard\f[B]\f[R] +Copy the selected text to the clipboard. +.TP +\f[B]\f[CB]paste_from_clipboard\f[B]\f[R] +Paste the contents of the default clipboard. +.TP +\f[B]\f[CB]paste_from_selection\f[B]\f[R] +Paste the contents of the selection clipboard. +.TP +\f[B]\f[CB]copy_url_to_clipboard\f[B]\f[R] +If there is a URL under the cursor, copy it to the default clipboard. +.TP +\f[B]\f[CB]copy_title_to_clipboard\f[B]\f[R] +Copy the terminal title to the clipboard. +If the terminal title is not set or is empty this has no effect. +.TP +\f[B]\f[CB]increase_font_size\f[B]\f[R] +Increase the font size by the specified amount in points (pt). +.RS +.PP +For example, \f[CR]increase_font_size:1.5\f[R] will increase the font +size by 1.5 points. +.RE +.TP +\f[B]\f[CB]decrease_font_size\f[B]\f[R] +Decrease the font size by the specified amount in points (pt). +.RS +.PP +For example, \f[CR]decrease_font_size:1.5\f[R] will decrease the font +size by 1.5 points. +.RE +.TP +\f[B]\f[CB]reset_font_size\f[B]\f[R] +Reset the font size to the original configured size. +.TP +\f[B]\f[CB]set_font_size\f[B]\f[R] +Set the font size to the specified size in points (pt). +.RS +.PP +For example, \f[CR]set_font_size:14.5\f[R] will set the font size to +14.5 points. +.RE +.TP +\f[B]\f[CB]search\f[B]\f[R] +Start a search for the given text. +If the text is empty, then the search is canceled. +A canceled search will not disable any GUI elements showing search. +For that, the explicit end_search binding should be used. +.RS +.PP +If a previous search is active, it is replaced. +.RE +.TP +\f[B]\f[CB]search_selection\f[B]\f[R] +Start a search for the current text selection. +If there is no selection, this does nothing. +If a search is already active, this changes the search terms. +.TP +\f[B]\f[CB]navigate_search\f[B]\f[R] +Navigate the search results. +If there is no active search, this is not performed. +.TP +\f[B]\f[CB]start_search\f[B]\f[R] +Start a search if it isn\(cqt started already. +This doesn\(cqt set any search terms, but opens the UI for searching. +.TP +\f[B]\f[CB]end_search\f[B]\f[R] +End the current search if any and hide any GUI elements. +.TP +\f[B]\f[CB]clear_screen\f[B]\f[R] +Clear the screen and all scrollback. +.TP +\f[B]\f[CB]select_all\f[B]\f[R] +Select all text on the screen. +.TP +\f[B]\f[CB]scroll_to_top\f[B]\f[R] +Scroll to the top of the screen. +.TP +\f[B]\f[CB]scroll_to_bottom\f[B]\f[R] +Scroll to the bottom of the screen. +.TP +\f[B]\f[CB]scroll_to_selection\f[B]\f[R] +Scroll to the selected text. +.TP +\f[B]\f[CB]scroll_to_row\f[B]\f[R] +Scroll to the given absolute row in the screen with 0 being the first +row. +.TP +\f[B]\f[CB]scroll_page_up\f[B]\f[R] +Scroll the screen up by one page. +.TP +\f[B]\f[CB]scroll_page_down\f[B]\f[R] +Scroll the screen down by one page. +.TP +\f[B]\f[CB]scroll_page_fractional\f[B]\f[R] +Scroll the screen by the specified fraction of a page. +.RS +.PP +Positive values scroll downwards, and negative values scroll upwards. +.PP +For example, \f[CR]scroll_page_fractional:0.5\f[R] would scroll the +screen downwards by half a page, while +\f[CR]scroll_page_fractional:\-1.5\f[R] would scroll it upwards by one +and a half pages. +.RE +.TP +\f[B]\f[CB]scroll_page_lines\f[B]\f[R] +Scroll the screen by the specified amount of lines. +.RS +.PP +Positive values scroll downwards, and negative values scroll upwards. +.PP +For example, \f[CR]scroll_page_lines:3\f[R] would scroll the screen +downwards by 3 lines, while \f[CR]scroll_page_lines:\-10\f[R] would +scroll it upwards by 10 lines. +.RE +.TP +\f[B]\f[CB]adjust_selection\f[B]\f[R] +Adjust the current selection in the given direction or position, +relative to the cursor. +.RS +.PP +WARNING: This does not create a new selection, and does nothing when +there currently isn\(cqt one. +.PP +Valid arguments are: +.IP \(bu 2 +\f[CR]left\f[R], \f[CR]right\f[R] +.RS 2 +.PP +Adjust the selection one cell to the left or right respectively. +.RE +.IP \(bu 2 +\f[CR]up\f[R], \f[CR]down\f[R] +.RS 2 +.PP +Adjust the selection one line upwards or downwards respectively. +.RE +.IP \(bu 2 +\f[CR]page_up\f[R], \f[CR]page_down\f[R] +.RS 2 +.PP +Adjust the selection one page upwards or downwards respectively. +.RE +.IP \(bu 2 +\f[CR]home\f[R], \f[CR]end\f[R] +.RS 2 +.PP +Adjust the selection to the top\-left or the bottom\-right corner of the +screen respectively. +.RE +.IP \(bu 2 +\f[CR]beginning_of_line\f[R], \f[CR]end_of_line\f[R] +.RS 2 +.PP +Adjust the selection to the beginning or the end of the line +respectively. +.RE +.RE +.TP +\f[B]\f[CB]jump_to_prompt\f[B]\f[R] +Jump the viewport forward or back by the given number of prompts. +.RS +.PP +Requires shell integration. +.PP +Positive values scroll downwards, and negative values scroll upwards. +.RE +.TP +\f[B]\f[CB]write_scrollback_file\f[B]\f[R] +Write the entire scrollback into a temporary file with the specified +action. +The action determines what to do with the filepath. +.RS +.PP +Valid actions are: +.IP \(bu 2 +\f[CR]copy\f[R] +.RS 2 +.PP +Copy the file path into the clipboard. +.RE +.IP \(bu 2 +\f[CR]paste\f[R] +.RS 2 +.PP +Paste the file path into the terminal. +.RE +.IP \(bu 2 +\f[CR]open\f[R] +.RS 2 +.PP +Open the file in the default OS editor for text files. +.PP +The default OS editor is determined by using \f[CR]open\f[R] on macOS +and \f[CR]xdg\-open\f[R] on Linux. +.RE +.RE +.TP +\f[B]\f[CB]write_screen_file\f[B]\f[R] +Write the contents of the screen into a temporary file with the +specified action. +.RS +.PP +See \f[CR]write_scrollback_file\f[R] for possible actions. +.RE +.TP +\f[B]\f[CB]write_selection_file\f[B]\f[R] +Write the currently selected text into a temporary file with the +specified action. +.RS +.PP +See \f[CR]write_scrollback_file\f[R] for possible actions. +.PP +Does nothing when no text is selected. +.RE +.TP +\f[B]\f[CB]new_window\f[B]\f[R] +Open a new window. +.RS +.PP +If the application isn\(cqt currently focused, this will bring it to the +front. +.RE +.TP +\f[B]\f[CB]new_tab\f[B]\f[R] +Open a new tab. +.TP +\f[B]\f[CB]previous_tab\f[B]\f[R] +Go to the previous tab. +.TP +\f[B]\f[CB]next_tab\f[B]\f[R] +Go to the next tab. +.TP +\f[B]\f[CB]last_tab\f[B]\f[R] +Go to the last tab. +.TP +\f[B]\f[CB]goto_tab\f[B]\f[R] +Go to the tab with the specific index, starting from 1. +.RS +.PP +If the tab number is higher than the number of tabs, this will go to the +last tab. +.RE +.TP +\f[B]\f[CB]move_tab\f[B]\f[R] +Moves a tab by a relative offset. +.RS +.PP +Positive values move the tab forwards, and negative values move it +backwards. +If the new position is out of bounds, it is wrapped around cyclically +within the tab list. +.PP +For example, \f[CR]move_tab:1\f[R] moves the tab one position forwards, +and if it was already the last tab in the list, it wraps around and +becomes the first tab in the list. +Likewise, \f[CR]move_tab:\-1\f[R] moves the tab one position backwards, +and if it was the first tab, then it will become the last tab. +.RE +.TP +\f[B]\f[CB]toggle_tab_overview\f[B]\f[R] +Toggle the tab overview. +.RS +.PP +This is only supported on Linux and when the system\(cqs libadwaita +version is 1.4 or newer. +The current libadwaita version can be found by running +\f[CR]ghostty +version\f[R]. +.RE +.TP +\f[B]\f[CB]prompt_surface_title\f[B]\f[R] +Change the title of the current focused surface via a pop\-up prompt. +.TP +\f[B]\f[CB]prompt_tab_title\f[B]\f[R] +Change the title of the current tab via a pop\-up prompt. +The title set via this prompt overrides any title set by the terminal +and persists across focus changes within the tab. +.TP +\f[B]\f[CB]set_surface_title\f[B]\f[R] +Set the title for the current focused surface. +.RS +.PP +If the title is empty, the surface title is reset to an empty title. +.RE +.TP +\f[B]\f[CB]set_tab_title\f[B]\f[R] +Set the title for the current focused tab. +.RS +.PP +If the title is empty, the tab title override is cleared. +.RE +.TP +\f[B]\f[CB]new_split\f[B]\f[R] +Create a new split in the specified direction. +.RS +.PP +Valid arguments: +.IP \(bu 2 +\f[CR]right\f[R], \f[CR]down\f[R], \f[CR]left\f[R], \f[CR]up\f[R] +.RS 2 +.PP +Creates a new split in the corresponding direction. +.RE +.IP \(bu 2 +\f[CR]auto\f[R] +.RS 2 +.PP +Creates a new split along the larger direction. +For example, if the parent split is currently wider than it is tall, +then a left\-right split would be created, and vice versa. +.RE +.RE +.TP +\f[B]\f[CB]goto_split\f[B]\f[R] +Focus on a split either in the specified direction (\f[CR]right\f[R], +\f[CR]down\f[R], \f[CR]left\f[R] and \f[CR]up\f[R]), or in the adjacent +split in the order of creation (\f[CR]previous\f[R] and +\f[CR]next\f[R]). +.TP +\f[B]\f[CB]goto_window\f[B]\f[R] +Focus on either the previous window or the next one (`previous', `next') +.TP +\f[B]\f[CB]toggle_split_zoom\f[B]\f[R] +Zoom in or out of the current split. +.RS +.PP +When a split is zoomed into, it will take up the entire space in the +current tab, hiding other splits. +The tab or tab bar would also reflect this by displaying an icon +indicating the zoomed state. +.RE +.TP +\f[B]\f[CB]toggle_readonly\f[B]\f[R] +Toggle read\-only mode for the current surface. +.RS +.PP +When a surface is in read\-only mode: \- No input is sent to the PTY +(mouse events, key encoding) \- Input can still be used at the terminal +level to make selections, copy/paste (keybinds), scroll, etc. +\- Warn before quit is always enabled in this state even if an active +process is not running +.RE +.TP +\f[B]\f[CB]resize_split\f[B]\f[R] +Resize the current split in the specified direction and amount in +pixels. +The two arguments should be joined with a comma (\f[CR],\f[R]), like in +\f[CR]resize_split:up,10\f[R]. +.TP +\f[B]\f[CB]equalize_splits\f[B]\f[R] +Equalize the size of all splits in the current window. +.TP +\f[B]\f[CB]reset_window_size\f[B]\f[R] +Reset the window to the default size. +The \(lqdefault size\(rq is the size that a new window would be created +with. +This has no effect if the window is fullscreen. +.RS +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]inspector\f[B]\f[R] +Control the visibility of the terminal inspector. +.RS +.PP +Valid arguments: \f[CR]toggle\f[R], \f[CR]show\f[R], \f[CR]hide\f[R]. +.RE +.TP +\f[B]\f[CB]show_gtk_inspector\f[B]\f[R] +Show the GTK inspector. +.RS +.PP +Has no effect on macOS. +.RE +.TP +\f[B]\f[CB]show_on_screen_keyboard\f[B]\f[R] +Show the on\-screen keyboard if one is present. +.RS +.PP +Only implemented on Linux (GTK). +On GNOME, the \(lqScreen Keyboard\(rq accessibility feature must be +turned on, which can be found under Settings > Accessibility > Typing. +Other platforms are as of now untested. +.RE +.TP +\f[B]\f[CB]open_config\f[B]\f[R] +Open the configuration file in the default OS editor. +.RS +.PP +If your default OS editor isn\(cqt configured then this will fail. +Currently, any failures to open the configuration will show up only in +the logs. +.RE +.TP +\f[B]\f[CB]reload_config\f[B]\f[R] +Reload the configuration. +.RS +.PP +The exact meaning depends on the app runtime in use, but this usually +involves re\-reading the configuration file and applying any changes +Note that not all changes can be applied at runtime. +.RE +.TP +\f[B]\f[CB]close_surface\f[B]\f[R] +Close the current \(lqsurface\(rq, whether that is a window, tab, split, +etc. +.RS +.PP +This might trigger a close confirmation popup, depending on the value of +the \f[CR]confirm\-close\-surface\f[R] configuration setting. +.RE +.TP +\f[B]\f[CB]close_tab\f[B]\f[R] +Close the current tab and all splits therein, close all other tabs, or +close every tab to the right of the current one depending on the mode. +.RS +.PP +If the mode is not specified, defaults to closing the current tab. +.PP +This might trigger a close confirmation popup, depending on the value of +the \f[CR]confirm\-close\-surface\f[R] configuration setting. +.RE +.TP +\f[B]\f[CB]close_window\f[B]\f[R] +Close the current window and all tabs and splits therein. +.RS +.PP +This might trigger a close confirmation popup, depending on the value of +the \f[CR]confirm\-close\-surface\f[R] configuration setting. +.RE +.TP +\f[B]\f[CB]close_all_windows\f[B]\f[R] +Close all windows. +.RS +.PP +WARNING: This action has been deprecated and has no effect on either +Linux or macOS. +Users are instead encouraged to use \f[CR]all:close_window\f[R] instead. +.RE +.TP +\f[B]\f[CB]toggle_maximize\f[B]\f[R] +Maximize or unmaximize the current window. +.RS +.PP +This has no effect on macOS as it does not have the concept of maximized +windows. +.RE +.TP +\f[B]\f[CB]toggle_fullscreen\f[B]\f[R] +Fullscreen or unfullscreen the current window. +.TP +\f[B]\f[CB]toggle_window_decorations\f[B]\f[R] +Toggle window decorations (titlebar, buttons, etc.) +for the current window. +.RS +.PP +Only implemented on Linux. +.RE +.TP +\f[B]\f[CB]toggle_window_float_on_top\f[B]\f[R] +Toggle whether the terminal window should always float on top of other +windows even when unfocused. +.RS +.PP +Terminal windows always start as normal (not float\-on\-top) windows. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]toggle_secure_input\f[B]\f[R] +Toggle secure input mode. +.RS +.PP +This is used to prevent apps from monitoring your keyboard input when +entering passwords or other sensitive information. +.PP +This applies to the entire application, not just the focused terminal. +You must manually untoggle it or quit Ghostty entirely to disable it. +.PP +Only implemented on macOS, as this uses a built\-in system API. +.RE +.TP +\f[B]\f[CB]toggle_mouse_reporting\f[B]\f[R] +Toggle mouse reporting on or off. +.RS +.PP +When mouse reporting is disabled, mouse events will not be reported to +terminal applications even if they request it. +This allows you to always use the mouse for selection and other terminal +UI interactions without applications capturing mouse input. +.PP +This can also be controlled via the \f[CR]mouse\-reporting\f[R] +configuration option. +.RE +.TP +\f[B]\f[CB]toggle_command_palette\f[B]\f[R] +Toggle the command palette. +.RS +.PP +The command palette is a popup that lets you see what actions you can +perform, their associated keybindings (if any), a search bar to filter +the actions, and the ability to then execute the action. +.PP +This requires libadwaita 1.5 or newer on Linux. +The current libadwaita version can be found by running +\f[CR]ghostty +version\f[R]. +.RE +.TP +\f[B]\f[CB]toggle_quick_terminal\f[B]\f[R] +Toggle the quick terminal. +.RS +.PP +The quick terminal, also known as the \(lqQuake\-style\(rq or drop\-down +terminal, is a terminal window that appears on demand from a keybinding, +often sliding in from a screen edge such as the top. +This is useful for quick access to a terminal without having to open a +new window or tab. +.PP +The terminal state is preserved between appearances, so showing the +quick terminal after it was already hidden would display the same window +instead of creating a new one. +.PP +As quick terminals are often useful when other windows are currently +focused, they are best used with \f[I]global\f[R] keybinds. +For example, one can define the following key bind to toggle the quick +terminal from anywhere within the system by pressing +\f[CR]Cmd+\(ga\f[R]: +.IP +.EX +keybind = global:cmd+backquote=toggle_quick_terminal +.EE +.PP +The quick terminal has some limitations: +.IP \(bu 2 +Only one quick terminal instance can exist at a time. +.IP \(bu 2 +Unlike normal terminal windows, the quick terminal will not be restored +when the application is restarted on systems that support window +restoration like macOS. +.IP \(bu 2 +On Linux, the quick terminal is only supported on Wayland and not X11, +and only on Wayland compositors that support the +\f[CR]wlr\-layer\-shell\-v1\f[R] protocol. +In practice, this means that only GNOME users would not be able to use +this feature. +.IP \(bu 2 +On Linux, slide\-in animations are only supported on KDE, and when the +\(lqSliding Popups\(rq KWin plugin is enabled. +.RS 2 +.PP +If you do not have this plugin enabled, open System Settings > Apps & +Windows > Window Management > Desktop Effects, and enable the plugin in +the plugin list. +Ghostty would then need to be restarted fully for this to take effect. +.RE +.IP \(bu 2 +Quick terminal tabs are only supported on Linux and not on macOS. +This is because tabs on macOS require a title bar. +.IP \(bu 2 +On macOS, a fullscreened quick terminal will always be in non\-native +fullscreen mode. +This is a requirement due to how the quick terminal is rendered. +.PP +See the various configurations for the quick terminal in the +configuration file to customize its behavior. +.RE +.TP +\f[B]\f[CB]toggle_visibility\f[B]\f[R] +Show or hide all windows. +If all windows become shown, we also ensure Ghostty becomes focused. +When hiding all windows, focus is yielded to the next application as +determined by the OS. +.RS +.PP +Note: When the focused surface is fullscreen, this method does nothing. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]toggle_background_opacity\f[B]\f[R] +Toggle the window background opacity between transparent and opaque. +.RS +.PP +This does nothing when \f[CR]background\-opacity\f[R] is set to 1 or +above. +.PP +When \f[CR]background\-opacity\f[R] is less than 1, this action will +either make the window transparent or not depending on its current +transparency state. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]check_for_updates\f[B]\f[R] +Check for updates. +.RS +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]undo\f[B]\f[R] +Undo the last undoable action for the focused surface or terminal, if +possible. +This can undo actions such as closing tabs or windows. +.RS +.PP +Not every action in Ghostty can be undone or redone. +The list of actions support undo/redo is currently limited to: +.IP \(bu 2 +New window, close window +.IP \(bu 2 +New tab, close tab +.IP \(bu 2 +New split, close split +.PP +All actions are only undoable/redoable for a limited time. +For example, restoring a closed split can only be done for some number +of seconds since the split was closed. +The exact amount is configured with the \f[CR]undo\-timeout\f[R] +configuration settings. +.PP +The undo/redo actions being limited ensures that there is bounded memory +usage over time, closed surfaces don\(cqt continue running in the +background indefinitely, and the keybinds become available for terminal +applications to use. +.PP +Only implemented on macOS. +.RE +.TP +\f[B]\f[CB]redo\f[B]\f[R] +Redo the last undoable action for the focused surface or terminal, if +possible. +See \(lqundo\(rq for more details on what can and cannot be undone or +redone. +.TP +\f[B]\f[CB]end_key_sequence\f[B]\f[R] +End the currently active key sequence, if any, and flush the keys up to +this point to the terminal, excluding the key that triggered this +action. +.RS +.PP +For example: \f[CR]ctrl+w>escape=end_key_sequence\f[R] would encode +\f[CR]ctrl+w\f[R] to the terminal and exit the key sequence. +.PP +Normally, an invalid sequence will reset the key sequence and flush all +data including the invalid key. +This action allows you to flush only the prior keys, which is useful +when you want to bind something like a control key (\f[CR]ctrl+w\f[R]) +but not send additional inputs. +.RE +.TP +\f[B]\f[CB]activate_key_table\f[B]\f[R] +Activate a named key table (see \f[CR]keybind\f[R] configuration +documentation). +The named key table will remain active until +\f[CR]deactivate_key_table\f[R] is called. +If you want a one\-shot key table activation, use the +\f[CR]activate_key_table_once\f[R] action instead. +.RS +.PP +If the named key table does not exist, this action has no effect and +performable will report false. +.PP +If the named key table is already the currently active key table, this +action has no effect and performable will report false. +.RE +.TP +\f[B]\f[CB]activate_key_table_once\f[B]\f[R] +Same as activate_key_table, but the key table will only be active until +the first valid keybinding from that table is used (including any +defined \f[CR]catch_all\f[R] bindings). +.RS +.PP +The \(lqonce\(rq check is only done if this is the currently active key +table. +If another key table is activated later, then this table will remain +active until it pops back out to being the active key table. +.RE +.TP +\f[B]\f[CB]deactivate_key_table\f[B]\f[R] +Deactivate the currently active key table, if any. +The next most recently activated key table (if any) will become active +again. +If no key table is active, this action has no effect. +.TP +\f[B]\f[CB]deactivate_all_key_tables\f[B]\f[R] +Deactivate all active key tables. +If no active key table exists, this will report performable as false. +.TP +\f[B]\f[CB]quit\f[B]\f[R] +Quit Ghostty. +.TP +\f[B]\f[CB]crash\f[B]\f[R] +Crash Ghostty in the desired thread for the focused surface. +.RS +.PP +WARNING: This is a hard crash (panic) and data can be lost. +.PP +The purpose of this action is to test crash handling. +For some users, it may be useful to test crash reporting functionality +in order to determine if it all works as expected. +.PP +The value determines the crash location: +.IP \(bu 2 +\f[CR]main\f[R] +.RS 2 +.PP +Crash on the main (GUI) thread. +.RE +.IP \(bu 2 +\f[CR]io\f[R] +.RS 2 +.PP +Crash on the IO thread for the focused surface. +.RE +.IP \(bu 2 +\f[CR]render\f[R] +.RS 2 +.PP +Crash on the render thread for the focused surface. +.RE +.RE +.SH FILES +.TP +\f[I]$XDG_CONFIG_HOME/ghostty/config.ghostty\f[R] +Location of the default configuration file. +.TP +\f[I]$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty\f[R] +\f[B]On macOS\f[R], location of the default configuration file. +This location takes precedence over the XDG environment locations. +.TP +\f[I]$LOCALAPPDATA/ghostty/config.ghostty\f[R] +\f[B]On Windows\f[R], if \f[I]$XDG_CONFIG_HOME\f[R] is not set, +\f[I]$LOCALAPPDATA\f[R] will be searched for configuration files. +.SH ENVIRONMENT +.TP +\f[B]XDG_CONFIG_HOME\f[R] +Default location for configuration files. +.TP +\f[B]$HOME/Library/Application Support/com.mitchellh.ghostty\f[R] +\f[B]MACOS ONLY\f[R] default location for configuration files. +This location takes precedence over the XDG environment locations. +.TP +\f[B]LOCALAPPDATA\f[R] +\f[B]WINDOWS ONLY:\f[R] alternate location to search for configuration +files. +.SH BUGS +See GitHub issues: \c +.UR https://github.com/ghostty-org/ghostty/issues +.UE \c +.SH AUTHOR +Mitchell Hashimoto \c +.MT m@mitchellh.com +.ME \c +\ Ghostty contributors \c +.UR https://github.com/ghostty-org/ghostty/graphs/contributors +.UE \c +.SH SEE ALSO +\f[B]ghostty(1)\f[R] diff --git a/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/compiler/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/compiler/ghostty.vim new file mode 100644 index 0000000..c531a20 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/compiler/ghostty.vim @@ -0,0 +1,13 @@ +" Vim compiler file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists("current_compiler") + finish +endif +let current_compiler = "ghostty" + +CompilerSet makeprg=ghostty\ +validate-config\ --config-file=%:S +CompilerSet errorformat=%f:%l:%m,%m diff --git a/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftdetect/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftdetect/ghostty.vim new file mode 100644 index 0000000..636cd9a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftdetect/ghostty.vim @@ -0,0 +1,7 @@ +" Vim filetype detect file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +au BufRead,BufNewFile */ghostty/config,*/*.ghostty/config,*/ghostty/themes/*,*.ghostty setf ghostty diff --git a/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftplugin/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftplugin/ghostty.vim new file mode 100644 index 0000000..7523ce0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/ftplugin/ghostty.vim @@ -0,0 +1,23 @@ +" Vim filetype plugin file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=#\ %s +setlocal iskeyword+=- + +" Use syntax keywords for completion +setlocal omnifunc=syntaxcomplete#Complete + +let b:undo_ftplugin = 'setl cms< isk< ofu<' + +if !exists('current_compiler') + compiler ghostty + let b:undo_ftplugin .= " makeprg< errorformat<" +endif diff --git a/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/syntax/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/syntax/ghostty.vim new file mode 100644 index 0000000..f9518f3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/nvim/site/syntax/ghostty.vim @@ -0,0 +1,227 @@ +" Vim syntax file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists('b:current_syntax') + finish +endif + +let b:current_syntax = 'ghostty' + +let s:cpo_save = &cpo +set cpo&vim + +syn iskeyword @,48-57,- +syn keyword ghosttyConfigKeyword + \ language + \ font-family + \ font-family-bold + \ font-family-italic + \ font-family-bold-italic + \ font-style + \ font-style-bold + \ font-style-italic + \ font-style-bold-italic + \ font-synthetic-style + \ font-feature + \ font-size + \ font-variation + \ font-variation-bold + \ font-variation-italic + \ font-variation-bold-italic + \ font-codepoint-map + \ clipboard-codepoint-map + \ font-thicken + \ font-thicken-strength + \ font-shaping-break + \ alpha-blending + \ adjust-cell-width + \ adjust-cell-height + \ adjust-font-baseline + \ adjust-underline-position + \ adjust-underline-thickness + \ adjust-strikethrough-position + \ adjust-strikethrough-thickness + \ adjust-overline-position + \ adjust-overline-thickness + \ adjust-cursor-thickness + \ adjust-cursor-height + \ adjust-box-thickness + \ adjust-icon-height + \ grapheme-width-method + \ freetype-load-flags + \ theme + \ background + \ foreground + \ background-image + \ background-image-opacity + \ background-image-position + \ background-image-fit + \ background-image-repeat + \ selection-foreground + \ selection-background + \ selection-clear-on-typing + \ selection-clear-on-copy + \ selection-word-chars + \ minimum-contrast + \ palette + \ palette-generate + \ palette-harmonious + \ cursor-color + \ cursor-opacity + \ cursor-style + \ cursor-style-blink + \ cursor-text + \ cursor-click-to-move + \ mouse-hide-while-typing + \ scroll-to-bottom + \ mouse-shift-capture + \ mouse-reporting + \ mouse-scroll-multiplier + \ background-opacity + \ background-opacity-cells + \ background-blur + \ unfocused-split-opacity + \ unfocused-split-fill + \ split-divider-color + \ split-preserve-zoom + \ search-foreground + \ search-background + \ search-selected-foreground + \ search-selected-background + \ command + \ initial-command + \ notify-on-command-finish + \ notify-on-command-finish-action + \ notify-on-command-finish-after + \ env + \ input + \ wait-after-command + \ abnormal-command-exit-runtime + \ scrollback-limit + \ scrollbar + \ link + \ link-url + \ link-previews + \ maximize + \ fullscreen + \ title + \ class + \ x11-instance-name + \ working-directory + \ keybind + \ key-remap + \ window-padding-x + \ window-padding-y + \ window-padding-balance + \ window-padding-color + \ window-vsync + \ window-inherit-working-directory + \ tab-inherit-working-directory + \ split-inherit-working-directory + \ window-inherit-font-size + \ window-decoration + \ window-title-font-family + \ window-subtitle + \ window-theme + \ window-colorspace + \ window-height + \ window-width + \ window-position-x + \ window-position-y + \ window-save-state + \ window-step-resize + \ window-new-tab-position + \ window-show-tab-bar + \ window-titlebar-background + \ window-titlebar-foreground + \ resize-overlay + \ resize-overlay-position + \ resize-overlay-duration + \ focus-follows-mouse + \ clipboard-read + \ clipboard-write + \ clipboard-trim-trailing-spaces + \ clipboard-paste-protection + \ clipboard-paste-bracketed-safe + \ title-report + \ image-storage-limit + \ copy-on-select + \ right-click-action + \ click-repeat-interval + \ config-file + \ config-default-files + \ confirm-close-surface + \ quit-after-last-window-closed + \ quit-after-last-window-closed-delay + \ initial-window + \ undo-timeout + \ quick-terminal-position + \ quick-terminal-size + \ gtk-quick-terminal-layer + \ gtk-quick-terminal-namespace + \ quick-terminal-screen + \ quick-terminal-animation-duration + \ quick-terminal-autohide + \ quick-terminal-space-behavior + \ quick-terminal-keyboard-interactivity + \ shell-integration + \ shell-integration-features + \ command-palette-entry + \ osc-color-report-format + \ vt-kam-allowed + \ custom-shader + \ custom-shader-animation + \ bell-features + \ bell-audio-path + \ bell-audio-volume + \ app-notifications + \ macos-non-native-fullscreen + \ macos-window-buttons + \ macos-titlebar-style + \ macos-titlebar-proxy-icon + \ macos-dock-drop-behavior + \ macos-option-as-alt + \ macos-window-shadow + \ macos-hidden + \ macos-auto-secure-input + \ macos-secure-input-indication + \ macos-applescript + \ macos-icon + \ macos-custom-icon + \ macos-icon-frame + \ macos-icon-ghost-color + \ macos-icon-screen-color + \ macos-shortcuts + \ linux-cgroup + \ linux-cgroup-memory-limit + \ linux-cgroup-processes-limit + \ linux-cgroup-hard-fail + \ gtk-opengl-debug + \ gtk-single-instance + \ gtk-titlebar + \ gtk-tabs-location + \ gtk-titlebar-hide-when-maximized + \ gtk-toolbar-style + \ gtk-titlebar-style + \ gtk-wide-tabs + \ gtk-custom-css + \ desktop-notifications + \ progress-style + \ bold-color + \ faint-opacity + \ term + \ enquiry-response + \ async-backend + \ auto-update + \ auto-update-channel + +syn match ghosttyConfigComment /^\s*#.*/ contains=@Spell + +hi def link ghosttyConfigComment Comment +hi def link ghosttyConfigKeyword Keyword + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/ghostty-template/Ghostty.app/Contents/Resources/terminfo/67/ghostty b/ghostty-template/Ghostty.app/Contents/Resources/terminfo/67/ghostty new file mode 120000 index 0000000..0b38f51 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/terminfo/67/ghostty @@ -0,0 +1 @@ +.././78/xterm-ghostty \ No newline at end of file diff --git a/ghostty-template/Ghostty.app/Contents/Resources/terminfo/78/xterm-ghostty b/ghostty-template/Ghostty.app/Contents/Resources/terminfo/78/xterm-ghostty new file mode 100644 index 0000000..182f517 Binary files /dev/null and b/ghostty-template/Ghostty.app/Contents/Resources/terminfo/78/xterm-ghostty differ diff --git a/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/compiler/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/compiler/ghostty.vim new file mode 100644 index 0000000..c531a20 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/compiler/ghostty.vim @@ -0,0 +1,13 @@ +" Vim compiler file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists("current_compiler") + finish +endif +let current_compiler = "ghostty" + +CompilerSet makeprg=ghostty\ +validate-config\ --config-file=%:S +CompilerSet errorformat=%f:%l:%m,%m diff --git a/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftdetect/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftdetect/ghostty.vim new file mode 100644 index 0000000..636cd9a --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftdetect/ghostty.vim @@ -0,0 +1,7 @@ +" Vim filetype detect file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +au BufRead,BufNewFile */ghostty/config,*/*.ghostty/config,*/ghostty/themes/*,*.ghostty setf ghostty diff --git a/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftplugin/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftplugin/ghostty.vim new file mode 100644 index 0000000..7523ce0 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/ftplugin/ghostty.vim @@ -0,0 +1,23 @@ +" Vim filetype plugin file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=#\ %s +setlocal iskeyword+=- + +" Use syntax keywords for completion +setlocal omnifunc=syntaxcomplete#Complete + +let b:undo_ftplugin = 'setl cms< isk< ofu<' + +if !exists('current_compiler') + compiler ghostty + let b:undo_ftplugin .= " makeprg< errorformat<" +endif diff --git a/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/syntax/ghostty.vim b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/syntax/ghostty.vim new file mode 100644 index 0000000..f9518f3 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/vim/vimfiles/syntax/ghostty.vim @@ -0,0 +1,227 @@ +" Vim syntax file +" Language: Ghostty config file +" Maintainer: Ghostty +" +" THIS FILE IS AUTO-GENERATED + +if exists('b:current_syntax') + finish +endif + +let b:current_syntax = 'ghostty' + +let s:cpo_save = &cpo +set cpo&vim + +syn iskeyword @,48-57,- +syn keyword ghosttyConfigKeyword + \ language + \ font-family + \ font-family-bold + \ font-family-italic + \ font-family-bold-italic + \ font-style + \ font-style-bold + \ font-style-italic + \ font-style-bold-italic + \ font-synthetic-style + \ font-feature + \ font-size + \ font-variation + \ font-variation-bold + \ font-variation-italic + \ font-variation-bold-italic + \ font-codepoint-map + \ clipboard-codepoint-map + \ font-thicken + \ font-thicken-strength + \ font-shaping-break + \ alpha-blending + \ adjust-cell-width + \ adjust-cell-height + \ adjust-font-baseline + \ adjust-underline-position + \ adjust-underline-thickness + \ adjust-strikethrough-position + \ adjust-strikethrough-thickness + \ adjust-overline-position + \ adjust-overline-thickness + \ adjust-cursor-thickness + \ adjust-cursor-height + \ adjust-box-thickness + \ adjust-icon-height + \ grapheme-width-method + \ freetype-load-flags + \ theme + \ background + \ foreground + \ background-image + \ background-image-opacity + \ background-image-position + \ background-image-fit + \ background-image-repeat + \ selection-foreground + \ selection-background + \ selection-clear-on-typing + \ selection-clear-on-copy + \ selection-word-chars + \ minimum-contrast + \ palette + \ palette-generate + \ palette-harmonious + \ cursor-color + \ cursor-opacity + \ cursor-style + \ cursor-style-blink + \ cursor-text + \ cursor-click-to-move + \ mouse-hide-while-typing + \ scroll-to-bottom + \ mouse-shift-capture + \ mouse-reporting + \ mouse-scroll-multiplier + \ background-opacity + \ background-opacity-cells + \ background-blur + \ unfocused-split-opacity + \ unfocused-split-fill + \ split-divider-color + \ split-preserve-zoom + \ search-foreground + \ search-background + \ search-selected-foreground + \ search-selected-background + \ command + \ initial-command + \ notify-on-command-finish + \ notify-on-command-finish-action + \ notify-on-command-finish-after + \ env + \ input + \ wait-after-command + \ abnormal-command-exit-runtime + \ scrollback-limit + \ scrollbar + \ link + \ link-url + \ link-previews + \ maximize + \ fullscreen + \ title + \ class + \ x11-instance-name + \ working-directory + \ keybind + \ key-remap + \ window-padding-x + \ window-padding-y + \ window-padding-balance + \ window-padding-color + \ window-vsync + \ window-inherit-working-directory + \ tab-inherit-working-directory + \ split-inherit-working-directory + \ window-inherit-font-size + \ window-decoration + \ window-title-font-family + \ window-subtitle + \ window-theme + \ window-colorspace + \ window-height + \ window-width + \ window-position-x + \ window-position-y + \ window-save-state + \ window-step-resize + \ window-new-tab-position + \ window-show-tab-bar + \ window-titlebar-background + \ window-titlebar-foreground + \ resize-overlay + \ resize-overlay-position + \ resize-overlay-duration + \ focus-follows-mouse + \ clipboard-read + \ clipboard-write + \ clipboard-trim-trailing-spaces + \ clipboard-paste-protection + \ clipboard-paste-bracketed-safe + \ title-report + \ image-storage-limit + \ copy-on-select + \ right-click-action + \ click-repeat-interval + \ config-file + \ config-default-files + \ confirm-close-surface + \ quit-after-last-window-closed + \ quit-after-last-window-closed-delay + \ initial-window + \ undo-timeout + \ quick-terminal-position + \ quick-terminal-size + \ gtk-quick-terminal-layer + \ gtk-quick-terminal-namespace + \ quick-terminal-screen + \ quick-terminal-animation-duration + \ quick-terminal-autohide + \ quick-terminal-space-behavior + \ quick-terminal-keyboard-interactivity + \ shell-integration + \ shell-integration-features + \ command-palette-entry + \ osc-color-report-format + \ vt-kam-allowed + \ custom-shader + \ custom-shader-animation + \ bell-features + \ bell-audio-path + \ bell-audio-volume + \ app-notifications + \ macos-non-native-fullscreen + \ macos-window-buttons + \ macos-titlebar-style + \ macos-titlebar-proxy-icon + \ macos-dock-drop-behavior + \ macos-option-as-alt + \ macos-window-shadow + \ macos-hidden + \ macos-auto-secure-input + \ macos-secure-input-indication + \ macos-applescript + \ macos-icon + \ macos-custom-icon + \ macos-icon-frame + \ macos-icon-ghost-color + \ macos-icon-screen-color + \ macos-shortcuts + \ linux-cgroup + \ linux-cgroup-memory-limit + \ linux-cgroup-processes-limit + \ linux-cgroup-hard-fail + \ gtk-opengl-debug + \ gtk-single-instance + \ gtk-titlebar + \ gtk-tabs-location + \ gtk-titlebar-hide-when-maximized + \ gtk-toolbar-style + \ gtk-titlebar-style + \ gtk-wide-tabs + \ gtk-custom-css + \ desktop-notifications + \ progress-style + \ bold-color + \ faint-opacity + \ term + \ enquiry-response + \ async-backend + \ auto-update + \ auto-update-channel + +syn match ghosttyConfigComment /^\s*#.*/ contains=@Spell + +hi def link ghosttyConfigComment Comment +hi def link ghosttyConfigKeyword Keyword + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/ghostty-template/Ghostty.app/Contents/Resources/zsh/site-functions/_ghostty b/ghostty-template/Ghostty.app/Contents/Resources/zsh/site-functions/_ghostty new file mode 100644 index 0000000..d7282c6 --- /dev/null +++ b/ghostty-template/Ghostty.app/Contents/Resources/zsh/site-functions/_ghostty @@ -0,0 +1,337 @@ +#compdef ghostty + +_fonts () { + local font_list=$(ghostty +list-fonts | grep -Z '^[A-Z]') + local fonts=(${(f)font_list}) + _describe -t fonts 'fonts' fonts +} + +_themes() { + local theme_list=$(ghostty +list-themes | sed -E 's/^(.*) \(.*$/\1/') + local themes=(${(f)theme_list}) + _describe -t themes 'themes' themes +} +_config() { + _arguments \ + "--help" \ + "--version" \ + "--language=-:::( )" \ + "--font-family=-:::_fonts" \ + "--font-family-bold=-:::_fonts" \ + "--font-family-italic=-:::_fonts" \ + "--font-family-bold-italic=-:::_fonts" \ + "--font-style=-:::( )" \ + "--font-style-bold=-:::( )" \ + "--font-style-italic=-:::( )" \ + "--font-style-bold-italic=-:::( )" \ + "--font-synthetic-style=-:::(bold no-bold italic no-italic bold-italic no-bold-italic)" \ + "--font-feature=-:::( )" \ + "--font-size=-:::( )" \ + "--font-variation=-:::( )" \ + "--font-variation-bold=-:::( )" \ + "--font-variation-italic=-:::( )" \ + "--font-variation-bold-italic=-:::( )" \ + "--font-codepoint-map=-:::( )" \ + "--clipboard-codepoint-map=-:::( )" \ + "--font-thicken" \ + "--font-thicken-strength=-:::( )" \ + "--font-shaping-break=-:::(cursor no-cursor)" \ + "--alpha-blending=-:::(native linear linear-corrected)" \ + "--adjust-cell-width=-:::( )" \ + "--adjust-cell-height=-:::( )" \ + "--adjust-font-baseline=-:::( )" \ + "--adjust-underline-position=-:::( )" \ + "--adjust-underline-thickness=-:::( )" \ + "--adjust-strikethrough-position=-:::( )" \ + "--adjust-strikethrough-thickness=-:::( )" \ + "--adjust-overline-position=-:::( )" \ + "--adjust-overline-thickness=-:::( )" \ + "--adjust-cursor-thickness=-:::( )" \ + "--adjust-cursor-height=-:::( )" \ + "--adjust-box-thickness=-:::( )" \ + "--adjust-icon-height=-:::( )" \ + "--grapheme-width-method=-:::(legacy unicode)" \ + "--freetype-load-flags=-:::(hinting no-hinting force-autohint no-force-autohint monochrome no-monochrome autohint no-autohint light no-light)" \ + "--theme=-:::_themes" \ + "--background=-:::( )" \ + "--foreground=-:::( )" \ + "--background-image=-:::( )" \ + "--background-image-opacity=-:::( )" \ + "--background-image-position=-:::(top-left top-center top-right center-left center-center center-right bottom-left bottom-center bottom-right center)" \ + "--background-image-fit=-:::(contain cover stretch none)" \ + "--background-image-repeat" \ + "--selection-foreground=-:::( )" \ + "--selection-background=-:::( )" \ + "--selection-clear-on-typing" \ + "--selection-clear-on-copy" \ + "--selection-word-chars=-:::( )" \ + "--minimum-contrast=-:::( )" \ + "--palette=-:::( )" \ + "--palette-generate" \ + "--palette-harmonious" \ + "--cursor-color=-:::( )" \ + "--cursor-opacity=-:::( )" \ + "--cursor-style=-:::(bar block underline block_hollow)" \ + "--cursor-style-blink=-:::( )" \ + "--cursor-text=-:::( )" \ + "--cursor-click-to-move" \ + "--mouse-hide-while-typing" \ + "--scroll-to-bottom=-:::(keystroke no-keystroke output no-output)" \ + "--mouse-shift-capture=-:::(false true always never)" \ + "--mouse-reporting" \ + "--mouse-scroll-multiplier=-:::( )" \ + "--background-opacity=-:::( )" \ + "--background-opacity-cells" \ + "--background-blur=-:::( )" \ + "--unfocused-split-opacity=-:::( )" \ + "--unfocused-split-fill=-:::( )" \ + "--split-divider-color=-:::( )" \ + "--split-preserve-zoom=-:::(navigation no-navigation)" \ + "--search-foreground=-:::( )" \ + "--search-background=-:::( )" \ + "--search-selected-foreground=-:::( )" \ + "--search-selected-background=-:::( )" \ + "--command=-:::( )" \ + "--initial-command=-:::( )" \ + "--notify-on-command-finish=-:::(never unfocused always)" \ + "--notify-on-command-finish-action=-:::(bell no-bell notify no-notify)" \ + "--notify-on-command-finish-after=-:::( )" \ + "--env=-:::( )" \ + "--input=-:::( )" \ + "--wait-after-command" \ + "--abnormal-command-exit-runtime=-:::( )" \ + "--scrollback-limit=-:::( )" \ + "--scrollbar=-:::(system never)" \ + "--link=-:::( )" \ + "--link-url" \ + "--link-previews=-:::(false true osc8)" \ + "--maximize" \ + "--fullscreen=-:::(false true non-native non-native-visible-menu non-native-padded-notch)" \ + "--title=-:::( )" \ + "--class=-:::( )" \ + "--x11-instance-name=-:::( )" \ + "--working-directory=-:::{_files -/}" \ + "--keybind=-:::( )" \ + "--key-remap=-:::( )" \ + "--window-padding-x=-:::( )" \ + "--window-padding-y=-:::( )" \ + "--window-padding-balance" \ + "--window-padding-color=-:::(background extend extend-always)" \ + "--window-vsync" \ + "--window-inherit-working-directory" \ + "--tab-inherit-working-directory" \ + "--split-inherit-working-directory" \ + "--window-inherit-font-size" \ + "--window-decoration=-:::(auto client server none)" \ + "--window-title-font-family=-:::( )" \ + "--window-subtitle=-:::(false working-directory)" \ + "--window-theme=-:::(auto system light dark ghostty)" \ + "--window-colorspace=-:::(srgb display-p3)" \ + "--window-height=-:::( )" \ + "--window-width=-:::( )" \ + "--window-position-x=-:::( )" \ + "--window-position-y=-:::( )" \ + "--window-save-state=-:::(default never always)" \ + "--window-step-resize" \ + "--window-new-tab-position=-:::(current end)" \ + "--window-show-tab-bar=-:::(always auto never)" \ + "--window-titlebar-background=-:::( )" \ + "--window-titlebar-foreground=-:::( )" \ + "--resize-overlay=-:::(always never after-first)" \ + "--resize-overlay-position=-:::(center top-left top-center top-right bottom-left bottom-center bottom-right)" \ + "--resize-overlay-duration=-:::( )" \ + "--focus-follows-mouse" \ + "--clipboard-read=-:::(allow deny ask)" \ + "--clipboard-write=-:::(allow deny ask)" \ + "--clipboard-trim-trailing-spaces" \ + "--clipboard-paste-protection" \ + "--clipboard-paste-bracketed-safe" \ + "--title-report" \ + "--image-storage-limit=-:::( )" \ + "--copy-on-select=-:::(false true clipboard)" \ + "--right-click-action=-:::(ignore paste copy copy-or-paste context-menu)" \ + "--click-repeat-interval=-:::( )" \ + "--config-file=-:::_files" \ + "--config-default-files" \ + "--confirm-close-surface=-:::(false true always)" \ + "--quit-after-last-window-closed" \ + "--quit-after-last-window-closed-delay=-:::( )" \ + "--initial-window" \ + "--undo-timeout=-:::( )" \ + "--quick-terminal-position=-:::(top bottom left right center)" \ + "--quick-terminal-size=-:::( )" \ + "--gtk-quick-terminal-layer=-:::(overlay top bottom background)" \ + "--gtk-quick-terminal-namespace=-:::( )" \ + "--quick-terminal-screen=-:::(main mouse macos-menu-bar)" \ + "--quick-terminal-animation-duration=-:::( )" \ + "--quick-terminal-autohide" \ + "--quick-terminal-space-behavior=-:::(remain move)" \ + "--quick-terminal-keyboard-interactivity=-:::(none on-demand exclusive)" \ + "--shell-integration=-:::(none detect bash elvish fish nushell zsh)" \ + "--shell-integration-features=-:::(cursor no-cursor sudo no-sudo title no-title ssh-env no-ssh-env ssh-terminfo no-ssh-terminfo path no-path)" \ + "--command-palette-entry=-:::( )" \ + "--osc-color-report-format=-:::(none 8-bit 16-bit)" \ + "--vt-kam-allowed" \ + "--custom-shader=-:::_files" \ + "--custom-shader-animation=-:::(false true always)" \ + "--bell-features=-:::(system no-system audio no-audio attention no-attention title no-title border no-border)" \ + "--bell-audio-path=-:::( )" \ + "--bell-audio-volume=-:::( )" \ + "--app-notifications=-:::(clipboard-copy no-clipboard-copy config-reload no-config-reload)" \ + "--macos-non-native-fullscreen=-:::(false true visible-menu padded-notch)" \ + "--macos-window-buttons=-:::(visible hidden)" \ + "--macos-titlebar-style=-:::(native transparent tabs hidden)" \ + "--macos-titlebar-proxy-icon=-:::(visible hidden)" \ + "--macos-dock-drop-behavior=-:::(new-tab new-window)" \ + "--macos-option-as-alt=-:::( )" \ + "--macos-window-shadow" \ + "--macos-hidden=-:::(never always)" \ + "--macos-auto-secure-input" \ + "--macos-secure-input-indication" \ + "--macos-applescript" \ + "--macos-icon=-:::(official blueprint chalkboard microchip glass holographic paper retro xray custom custom-style)" \ + "--macos-custom-icon=-:::( )" \ + "--macos-icon-frame=-:::(aluminum beige plastic chrome)" \ + "--macos-icon-ghost-color=-:::( )" \ + "--macos-icon-screen-color=-:::( )" \ + "--macos-shortcuts=-:::(allow deny ask)" \ + "--linux-cgroup=-:::(never always single-instance)" \ + "--linux-cgroup-memory-limit=-:::( )" \ + "--linux-cgroup-processes-limit=-:::( )" \ + "--linux-cgroup-hard-fail" \ + "--gtk-opengl-debug" \ + "--gtk-single-instance=-:::(false true detect)" \ + "--gtk-titlebar" \ + "--gtk-tabs-location=-:::(top bottom)" \ + "--gtk-titlebar-hide-when-maximized" \ + "--gtk-toolbar-style=-:::(flat raised raised-border)" \ + "--gtk-titlebar-style=-:::(native tabs)" \ + "--gtk-wide-tabs" \ + "--gtk-custom-css=-:::_files" \ + "--desktop-notifications" \ + "--progress-style" \ + "--bold-color=-:::( )" \ + "--faint-opacity=-:::( )" \ + "--term=-:::( )" \ + "--enquiry-response=-:::( )" \ + "--async-backend=-:::(auto epoll io_uring)" \ + "--auto-update=-:::( )" \ + "--auto-update-channel=-:::( )" \ + +} + +_ghostty() { + typeset -A opt_args + local context state line + local opt=('-e' '--help' '--version') + + _arguments -C \ + '1:actions:->actions' \ + '*:: :->rest' \ + + if [[ "$line[1]" == "--help" || "$line[1]" == "--version" || "$line[1]" == "-e" ]]; then + return + fi + + if [[ "$line[1]" == -* ]]; then + _config + return + fi + + case "$state" in + (actions) + local actions; actions=( + '+version' + '+help' + '+list-fonts' + '+list-keybinds' + '+list-themes' + '+list-colors' + '+list-actions' + '+ssh-cache' + '+edit-config' + '+show-config' + '+validate-config' + '+show-face' + '+crash-report' + '+boo' + '+new-window' + ) + _describe '' opt + _describe -t action 'action' actions + ;; + (rest) + if [[ "$line[2]" == "--help" ]]; then + return + fi + + local help=('--help') + _describe '' help + + case $line[1] in + (+help) + _arguments \ + '--help' \ + ;; + (+list-fonts) + _arguments \ + '--family=-:::( )' \ + '--style=-:::( )' \ + '--bold' \ + '--italic' \ + ;; + (+list-keybinds) + _arguments \ + '--default' \ + '--docs' \ + '--plain' \ + ;; + (+list-themes) + _arguments \ + '--path' \ + '--plain' \ + '--color=-:::(all dark light)' \ + ;; + (+list-colors) + _arguments \ + '--plain' \ + ;; + (+list-actions) + _arguments \ + '--docs' \ + ;; + (+ssh-cache) + _arguments \ + '--clear' \ + '--add=-:::( )' \ + '--remove=-:::( )' \ + '--host=-:::( )' \ + '--expire-days=-:::( )' \ + ;; + (+show-config) + _arguments \ + '--default' \ + '--changes-only' \ + '--docs' \ + ;; + (+validate-config) + _arguments \ + '--config-file=-:::_files' \ + ;; + (+show-face) + _arguments \ + '--cp=-:::( )' \ + '--string=-:::( )' \ + '--style=-:::(regular bold italic bold_italic)' \ + '--presentation=-:::(text emoji)' \ + ;; + (+new-window) + _arguments \ + '--class=-:::( )' \ + ;; + esac + ;; + esac +} + +_ghostty "$@"