- iTerm 2’yi uzun süredir kullanan bir kullanıcı, metin tabanlı yapılandırma ve dotfiles paylaşımı için WezTerm’i yeniden denedi; Lua yapılandırma API’siyle görünüm, tuş bağları, multiplexing ve workspace’leri ayrıntılı biçimde özelleştirdi
- Yapılandırma
wezterm.lua içinde tutuluyor ve kaydedildiği anda hot reload ediliyor; CTRL + SHIFT + L debug overlay üzerinden loglar ve Lua REPL doğrudan görülebiliyor
- Lua yapılandırmasıyla 1.000’den fazla yerleşik renk şeması, sistem dark/light modu entegrasyonu, font, macOS pencere dekorasyonları ve powerline tarzı durum çubuğu dinamik olarak kurulabiliyor
- Varsayılan tuş bağları korunabiliyor veya kapatılabiliyor;
Option + Arrow ile kelime bazlı gezinme, CMD +, ile ayarları açma, leader key ve key table tabanlı pane işlemleri doğrudan tanımlanıyor
- Yerleşik multiplexing ve workspaces, tmux session’ları gibi proje bazlı pencere, pane ve tab durumlarını koruyor; Lua ile proje seçme arayüzü ve geçiş akışı bile oluşturulabiliyor
iTerm 2’den WezTerm’e geçmeyi denememin nedeni
- iTerm 2’yi neredeyse 10 yıldır kullanıyordum, ancak tüm ayarları metin olarak yönetip dotfiles içine koyabileceğim ve iş/kişisel makineler arasında paylaşabileceğim bir terminal istiyordum
- WezTerm’in güçlü API’si ve Lua config desteği öne çıkıyor; ikinci denemede daha güzel görünen ve daha işlevsel bir terminal kurulumu mümkün oldu
- Ele alınan kapsam: görünüm, tuş bağları, multiplexing, workspace geçişi, durum çubuğu ve dinamik tema ayarı
- Bu yazıda ele alınmayan özellikler de var
- Özel hyperlink vurgulama kuralları
- Aranabilir scrollback
- Quick copy mode
- Görsel desteği
- Örnek kurulum macOS kullanım deneyimine göre hazırlanmış; diğer sistemlerde test edilmedi, ancak WezTerm’in kendisi birçok ortamda çalışıyor
- Nihai yapılandırma örneği bir gist olarak sunuluyor
Kurulum ve Lua yapılandırmasının temel yapısı
brew install wezterm
- Yapılandırma dosyasını
$XDG_CONFIG_HOME/wezterm/wezterm.lua konumuna koyan akış kullanılıyor
- macOS dahil çoğu sistemde bu,
~/.config/wezterm/wezterm.lua olarak yorumlanır
- Her şeyi tek bir
~/.wezterm.lua dosyasına koymak yerine dizin kullanmak, yapılandırmayı birden fazla dosyaya bölerek yönetmeyi kolaylaştırır
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
return config
- WezTerm yapılandırması Lua ile yazıldığı için YAML veya TOML’a göre daha karmaşık dinamik ayarlar oluşturmak daha kolaydır
- Lua bir programlama dili olduğundan YAML/TOML’a göre öğrenmesi daha zordur; ancak Ruby, Python, JavaScript gibi dinamik dillerde deneyiminiz varsa örnek kodları okumak kolaydır
- Lua öğrenme kaynağı olarak Getting Started guide incelenebilir
Hot reload ve debug overlay
- WezTerm, yapılandırma dosyası değişikliklerini algılayıp otomatik reload yaptığı için terminali yeniden başlatmadan ayarların etkisi hemen görülebilir
- Yanlış fonksiyon adı gibi hatalı bir yapılandırma kaydedildiğinde anında runtime error popup’ı görünür
wezterm.config_builderZ()
- Loglar
wezterm.log_info() ile bırakılabilir
wezterm.log_info("hello world! my name is " .. wezterm.hostname())
CTRL + SHIFT + L ile debug overlay açıldığında loglar ve Lua REPL görülebilir
1 + 1 gibi Lua ifadeleri çalıştırılabilir
wezterm.home_dir gibi wezterm modülü değerleri de kontrol edilebilir
- Hot reload ve debug overlay birlikte kullanıldığında ayar değiştirip sonucu kontrol etme geri bildirim döngüsü kısalır
Görünüm ayarları: renk, sistem teması, font, pencere stili
-
Renk şemaları ve dinamik yapılandırma
- WezTerm 1.000’den fazla yerleşik renk şeması sunar; seçim
config.color_scheme ile yapılır
config.color_scheme = 'Tokyo Night'
- Renk şeması listesi WezTerm colorschemes sayfasında görülebilir
window-config-reloaded olayı ve wezterm.color.get_builtin_schemes() kullanılarak her yeni pencereye rastgele renk şeması uygulayan dinamik yapılandırma da mümkündür
- Pencere bazlı config override ayarlandıktan sonra statik renk şemasına dönülürse hot reload hemen uygulanmayabilir
- Debug terminalinde
window:set_config_overrides({}) çalıştırarak veya pencereyi kapatıp yeniden açarak override temizlenebilir
-
Sistem dark/light modu entegrasyonu
- Yapılandırma
appearance.lua modülüne ayrılarak işletim sistemi görünümüne göre renk şeması değiştirilebilir
wezterm.gui.get_appearance() içinde "Dark" dizesi aranarak dark mode olup olmadığı belirlenir
wezterm.gui olmayan ortamlarda varsayılan olarak dark mode kabul edilir
if appearance.is_dark() then
config.color_scheme = 'Tokyo Night'
else
config.color_scheme = 'Tokyo Night Day'
end
-
Font ve pencere dekorasyonları
- WezTerm varsayılan olarak JetBrains Mono ve Nerd Font Symbols içerir
- Örnek yapılandırma Berkeley Mono 13pt kullanır
config.font = wezterm.font({ family = 'Berkeley Mono' })
config.font_size = 13
- macOS pencere stili örneği yarı saydam arka plan, blur, titlebar’ın kaldırılması ve tabbar font ayarını içerir
config.window_background_opacity = 0.9
config.macos_window_background_blur = 30
config.window_decorations = 'RESIZE'
Durum çubuğu ve WezTerm event API’si
update-status event callback’iyle sağ durum çubuğuna powerline biçiminde segmentler eklenir
- İlk örnek, geçerli renk şemasının arka plan/ön plan renklerini ve
wezterm.hostname() değerini kullanarak hostname segmentini gösterir
wezterm.on, terminal event’lerine callback bağlar
update-status, durum güncellemesi hazır olduğunda periyodik olarak tetiklenir
- WezTerm aynı anda yalnızca tek bir güncellemenin çalışmasını sağlar; kod çok uzun sürerse handler’ı durdurur
window:effective_config().resolved_palette ile override’ların yansıtıldığı geçerli palet alınabilir
wezterm.format, dizelere renk, kalınlık, alt çizgi gibi stiller uygulamak için kullanılır
- Yazının ilerleyen bölümündeki örnekte durum çubuğu segmentleri daha da artırılır
- Geçerli workspace
- Tarih ve saat
- Hostname
wezterm.color.parse, color:lighten, color:darken, wezterm.color.gradient ile geçerli temaya dayalı gradyan renkler hesaplanır
Tuş bağları: macOS kelime hareketi ve ayarları açma
- WezTerm varsayılan tuş bağları sunar; örnekte bunlar korunur
- Varsayılan tuş bağlarını kapatmak için
config.disable_default_key_bindings = true kullanılabilir
- macOS’te iTerm 2 ve Terminal.app’te olduğu gibi
Option + LeftArrow, Option + RightArrow ile kelime bazında hareket etmek için ESC + b, ESC + f gönderilir
{
key = 'LeftArrow',
mods = 'OPT',
action = wezterm.action.SendString '\x1bb',
}
CMD + , ile WezTerm yapılandırma dosyası yeni bir tab’da açılacak şekilde ayarlanabilir
- Örnek
nvim ve wezterm.config_file kullanır
- WezTerm macOS Finder’dan başlatıldıysa, editor binary’si
PATH içinde olmadığı için komut çalıştırma başarısız olabilir
config.set_environment_variables ile varsayılan ortam değişkenleri güçlendirilirse, sonraki spawn komutlarına da aynı ortam aktarılır
config.set_environment_variables = {
PATH = '/opt/homebrew/bin:' .. os.getenv('PATH')
}
Yerleşik multiplexing ve leader key
- WezTerm’in yerleşik multiplexing’i tmux yerine kullanılabilecek bir özelliktir
- Yerleşik özellikler pane bazlı scrollback buffer, daha iyi fare kontrolü, daha kolay seçim işlevleri ve genel olarak daha hızlı performans sunar
CTRL + SHIFT + P ile command palette açılıp “Shell: Split Horizontally”, “Shell: Split Vertically” gibi komutlar çalıştırılabilir
- Varsayılan split kısayolları çakışmaları önlemek için karmaşık olduğundan, leader key ile daha basit kombinasyonlar oluşturulabilir
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
- Örnekte tmux tarzında leader’dan sonra
" tuşuna basılarak yatay split, % tuşuna basılarak dikey split çalıştırılır
{
key = '"',
mods = 'LEADER',
action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
}
CTRL + A tuşunun kendisini terminale göndermek istendiğinde, LEADER|CTRL kombinasyonuyla yeniden CTRL + A gönderilecek şekilde mapping yapılır
Pane geçişi, yeniden boyutlandırma ve key table
- Pane geçişi, vim yön tuşu tarzındaki
h, j, k, l tuşları leader kombinasyonuna map edilir
ActivatePaneDirection ile Down, Up, Left, Right yönlerine geçiş yapılır
- Tekrarlanan Lua tabloları fonksiyonla azaltılabilir
local function move_pane(key, direction)
return {
key = key,
mods = 'LEADER',
action = wezterm.action.ActivatePaneDirection(direction),
}
end
- Pane yeniden boyutlandırma fareyle de yapılabilir, ancak örnek klavye merkezli akış için key table kullanır
- Key table, belirli bir moda girip o moda özel tuş bağlarını kullanma yöntemidir
- Leader key’e benzer, ancak bir işlemden sonra hemen devre dışı kalmayacak şekilde yapılabilir
- Yeniden boyutlandırma gibi aynı tuşun tekrar tekrar girilmesi gereken işler için uygundur
- Örnek,
LEADER + r ile resize_panes key table’ını etkinleştirir ve h/j/k/l ile pane boyutunu 3 hücrelik adımlarla ayarlar
timeout_milliseconds = 1000 ile 1 saniye sonra yeniden boyutlandırma modundan çıkılacak şekilde ayarlanır
- Neovim kullanıcıları, WezTerm pane’leri ile vim pane’leri arasında geçişe yardımcı olan smart-splits.nvim eklentisine bakabilir
Proje bazlı workspace yapılandırması
- Aynı anda birden fazla projeyle çalışırken her proje için ayrı multiplexer instance’ı, pencere, pane ve tab durumunu koruma ihtiyacı doğar
- tmux’taki session’lara benzer amaç WezTerm’de workspaces ile karşılanır
projects.lua oluşturulup proje seçme fonksiyonunun ana yapılandırmadan çağrıldığı bir yapı kullanılır
- İlk örnek proje yollarını elle listeler ve
InputSelector ile seçim arayüzü gösterir
fuzzy = true ile fuzzy search etkinleştirilir
- Seçim sonucu başlangıçta yalnızca debug overlay’e log olarak yazdırılır
LEADER + p proje seçme arayüzünü açar; LEADER + f ise mevcut workspace listesini fuzzy search ile gösterecek şekilde ayarlanır
action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
- Proje yollarını elle yönetmenin zahmeti,
wezterm.glob() ile proje klasörü altındaki alt dizinler otomatik toplanarak azaltılır
- Örnek,
~/Projects altındaki alt dizinleri proje olarak kullanır ve home dizinini de proje listesine dahil eder
- Bir proje seçildiğinde
SwitchToWorkspace çalıştırılır
- Workspace varsa ona geçer
- Yoksa yeni oluşturur
- Workspace adı olarak yolun son segmenti kullanılır
- Yeni terminalin geçerli çalışma dizini seçilen proje yolu olarak ayarlanır
Daha fazlası için
- WezTerm’de özellik listesinde yer alan daha birçok özellik bulunur
- Lua yapılandırmasının olanakları WezTerm API docs içinde daha fazla incelenebilir
- Adım adım oluşturulan yapılandırmada yalnızca gerçekten kullanılacak öğeleri bırakıp, kendi tarzınıza göre yeniden yazdıktan sonra ihtiyaç duyulan özellikleri eklemek iyi bir akıştır
- WezTerm’i beğenirseniz açık kaynak çalışmaları yapan Wez’e sponsor da olabilirsiniz
1 yorum
Hacker News görüşleri
Yakın zamanda WezTerm’e geçtim ve çok memnunum
Önceden kitty kullanıyordum; iTerm2’den geçerken yapılandırmasını ve sadeliğini sevmiştim, ama yerleşik özellikler açısından WezTerm çok daha iyi. Terminal yapılandırması da editörde tek ekrana sığacak kadar kısa; sonrasında terminal artık araya girmediği için düşünmem gerekmiyor
kitty’den vazgeçmemdeki belirleyici şey, bir sorunla karşılaştığımda ya da bir iTerm2 özelliğini yeniden oluşturmaya çalıştığımda maintainer’ın kısa ve küçümseyici görünen yanıtlarını görmemdi
Örneğin “kitty’de tmux nasıl ayarlanır?” sorusuna “yapma, tmux aptalcadır” gibi cevap verip kapattığını hatırlıyorum; sonunda bıraktım
Elbette kendi projesi ve harika bir programcı, ama biraz tevazunun da zararı olmaz gibi
Aşina olmayanlar için: belirli bir kısayolla göster/gizle arasında geçiş yapan ve göründüğünde tüm pencerelerin üzerinde durarak terminali her yerden anında kullanmanızı sağlayan bir pencere. Onsuz yaşanır, ama özellikle vazgeçmek istemediğim bir özellik; WezTerm’in diğer özellikleri iyi olsa da bu yoksa benim için baştan elenir
Dışarıdan çoğu zaman en iyi ürün gibi görünür, ama derinlemesine kullanmaya başladığınız anda o kişinin seçimlerine kilitlenirsiniz ve geri dönecek yeriniz kalmaz
Ama bu yılın başında WezTerm kullanmaya başladığımda gerçekten şaşırdım. Wez’in yazılarını çok okudum; her seferinde tonu kusursuzdu ve gerçekten harika olduğunu hissettim
Linux’un eski
make menuconfigarayüzünü bile düzgün render edememesi ve bunun ayarla düzeltilememesi—çünkü kendisi ayarlara inanmıyor—sembolik bir durum. Issue tracker’daki yazıları okuyunca yalnızca hakaretamiz gelmiyor; rastgele terminal kullanma biçimlerini benim de aynı hararetle “savunmam” gerekiyormuş gibi bir duygu da oluşuyor, bu da sağlıklı değilKesin bilemem, ama terminalle ilgili her konuda onunla aynı fikirde olsam bile, onun terminalini kullanmaktansa kendi terminalimi yapma isteğim aynı kalırdı sanırım
Benim deneyimime göre Wez, GitHub issue’larına şaşırtıcı derecede hızlı yanıt veriyor ve gerçekten yanlış olan bir şeyse genelde bir iki gün içinde düzeltiyor
SSH üzerinden modifier tuşları ile ilgili bir iki küçük şikâyet dışında özellikler neredeyse ihtiyaçlarıma tamamen uyuyor, üstelik hızlı. Eskiden Alacritty’yi hevesle kullanıyordum ama uzak Emacs’te daha iyi modifier desteğine ihtiyacım vardı
Zaten kapatılmış bir issue’ya yorum yazmıştım; sonuçta “won’t do” olarak kapatılmıştı ve yorumum görmezden gelindi. Zaten reddedilmiş aynı konu için yeni bir issue açmak istemedim
https://github.com/wez/wezterm/issues/4706
C-S-"gibi kombinasyonları terminal protokolü desteklemediği için göndermenin iyi bir yolu yok. Bu yüzden WezTerm’in bunun yerine" c s '"göndermesini sağladım ve Emacs’e ek bir binding koydum. Bu F12 numarası sayesinde terminal protokolünün destekleyemediği epey karmaşık kombinasyonları da gönderebildimAslında WezTerm’i, Kubuntu’dan Ubuntu’ya geçerken Konsole kurmadan Konsole’un bazı özelliklerini, örneğin sınırsız scrollback ve scrollback içinde aramayı kullanmak istediğim için kurmuştum.
Gnome’da da Konsole kurulabileceğini biliyorum ama bir şekilde pek doğru gelmemişti. WezTerm’i hemen beğendim; bu yazıyı görünce de yapılandırma olanaklarında hâlâ sadece yüzeyi kazımış olduğumu anladım.
Tek şikâyetim, birçok özelliğin kolay keşfedilememesi. Belgeler gerçekten iyi, yazarı da aktif ve yardımsever; ama örneğin yalnızca klavyeyle büyük metin bloklarını seçmenin yolunu bulup bir kez denedim ve “bunu aklımda tutmalıyım!” dedim, sonra hemen unuttum. Şimdi yine tamamen acemi gibi fareyle seçiyorum. Zaten sık yaptığım bir şey olmadığı için, o belge sayfasını tekrar Google’da aramaktan daha hızlı geliyor.
Bu arada bahsettiğim sayfa https://wezfurlong.org/wezterm/copymode.html; adına bakınca aradığım şey gibi görünse de tamamen farklı bir özellik olan https://wezfurlong.org/wezterm/quickselect.html değil. O da çok kullanışlı ve iyi bir fikir, ama aradığım şey o değildi.
https://github.com/bbkane/dotfiles/tree/master/wezterm
Varsayılan hâliyle bile kullanışlı, ama asıl gücü eşleştirilecek regex’i özelleştirebilmenizde.
eza --iconsçıktısındaki tüm dosya adlarını bulan bir regex ekledim;\p{Co}ikonlarla eşleşiyor. Böylecels’iezaiçin alias yaptıktan sonra, shift+QuickSelect harfiyle herhangi bir dosya adını hemen girebiliyorum.Ben henüz o yolu bulamadım; bu yüzden çoğu zaman bir Konsole oturumunu da açık tutuyorum. Canlı logları tail ederken bu iki özellik gerçekten çok güçlü.
Mac Terminal, iTerm2, Kitty, Warp vb. denedikten sonra sonunda WezTerm’de karar kıldım.
Yapılandırması kolay, hızlı ve güzel görünüyor. Bir tema da yaptım.
https://tiniri.vlad.studio/
Terminalleri karşılaştırmak için tesadüfen şu siteyi görmüştüm: https://terminaltrove.com/terminals/
Terminal karşılaştırmak isteyenler için epey yararlı görünüyor.
WezTerm’i yaklaşık 1 yıldır kullanıyorum ve GitHub’da Wez’e sponsor oluyorum; harika bir terminal ve o da iyi bir geliştirici.
Bu yazıda ele alınmadığı söylenmiş ama en sevdiğim özelliklerden biri Quick Copy ve diğer kopyalama modları. Gerçekten sürekli kullanıyorum.
C-S-Space’e basıp kopyalamak istediğiniz öğenin yanında gösterilen harfi girmeniz yeterli.Büyük kullanım senaryom, macOS dizüstünden şirketteki Linux makinesine mosh+tmux benzeri bir işlevle bağlanmak. Oturumu her zaman açık tutup Mac’ten şirket makinesinde çalışabiliyorum. Yeniden bağlanılabilir oturumların yanında pane ve tab da sunduğu için masamdan uzaktayken bile çalışabiliyorum; kalitesi de çok iyi.
WezTerm’de beğenilmeyecek ne var diye düşünüyorum
Benim en sevdiğim ama sıkça gözden kaçan özellik tam çapraz işletim sistemi desteği. Benim gibi Linux, macOS ve Windows’un hepsini kullanan bir ortamdaysanız, WezTerm’i öğrenmeniz yeterli. Terminal ayarlarımın önemli bir kısmını da işletim sistemleri arasında paylaşıyorum
Sadece bana özgü bir sorun ya da tmux’u kullanma şeklimden kaynaklanıyor olabilir ama satır wrap edilmiş durumdayken kopyalayınca, kopyalanan metne satır sonları dahil oluyormuş gibi görünüyordu. Çok rahatsız ediciydi ve bunun WezTerm ile tmux’un etkileşiminden kaynaklandığını düşündüm
İyi bir hata raporu hazırlayacak kadar kanıtım yok; ayrıca WezTerm’in kendi terminal multiplexing sunucusu olan “ssh domains” olduğu için düzeltmeye değecek kadar önemli de olmayabilir. Ama WezTerm multiplexing sunucusunu her yere kurmak istemiyorum; SSH ile girdiğim yerlerde de genelde tmux zaten var
Bunun dışında WezTerm harika
macOS ayar seçenekleri sınırlı ve çeşitli dolambaçlı çözümler gerektiriyor; Linux’u macOS’a uydurmak da mümkün ama macOS kısayollarının kendisini pek sevmiyorum. Bu yüzden tuhaf bir karma durum ortaya çıkıyor ve her geçişte sürekli yanlış tuşlara basıyorum
İyi oturan bir ayar bulan var mı merak ediyorum
Nedenini de bilmiyorum, nasıl teşhis edeceğimi de. Büyük scrollback tek tahminim ama ondan vazgeçemem. Sonunda Kitty’ye geçtim; Kitty’nin de kendince sorunları var ama en azından çalışıyor
Lua ayar dili, ortama göre değişiklikleri oldukça kolaylaştırabildiği için parlıyor. Rust’ın yeterince takdir edilmeyen bir yan etkisi de olduğunu düşünüyorum. Modern Rust araçları, dil ile işletim sistemi arasındaki soyutlama katmanı iyi olduğundan olsa gerek, çoğu zaman mükemmel çapraz platform desteğine sahip oluyor
2019 civarında GitHub Actions, issue’lar ve dokümantasyon açısından wez deposunu başka şeylerle bir kez karşılaştırmam ikna olmam için yetmişti; o zamandan beri geri dönmedim. Varsayılan olarak tab işlevini bile destekliyor
Destek ve hız açısından urxvt’nin gerçekten yerini alan ilk terminal. Ondan önce termite kullanıyor, termite’ın garip durumlarda hata çıkarması ihtimaline karşı urxvt’yi yedek olarak tutuyordum
iTerm2’de kalma nedenim
Edit->Selection Respects Soft Boundaries“Etkinleştirildiğinde pipe karakteri
|içindeki dikey çizgiyi vim ya da emacs’teki pane ayırıcıları gibi yorumlar ve seçim alanı o noktada wrap edilir” şeklinde bir özellikBenim durumumda IRC’de metin seçerken buna ihtiyacım oluyor
https://github.com/wez/wezterm/issues/596
Herkesin tüm özelliklere ihtiyacı yok ama herkesin istediği 10 niş özellik var ve bu 10 özellik birbirinin aynısı değil. Bu yüzden 10 niş özelliği elde etmek için şişkinliği kabul etmek zorunda kalınıyor
Düzenleme: Sert konuşmuşum, kusura bakmayın. IRC’de kullandığınız kısmı kaçırmışım
Neredeyse 10 yıl önce macOS’u ilk kullanmaya başladığımdan beri iTerm2 kullanıcısıydım
Ancak son zamanlarda gerçekten yavaşladığını hissettim;
cmd-tabile geçiş yaptığımda terminalin görünmesi için 1 saniyeden fazla beklemeye başlayınca sınırıma geldimBirkaç alternatife baktım ama tam uyan bir şey yoktu. Bazı terminallerin çalışması için hesap/oturum açma gerektirmesi büyük bir eksiydi; başka bir terminal ise {Java,Type}Script ile yazılmıştı ve Node.js stream’lerinin asenkron doğası yüzünden
yesgibi basit bir komutu bile bozuyorduŞu ana kadar WezTerm’i çok beğendim. Oldukça hızlı, çok ayarlanabilir ve iTerm2’de kullandığım tema olan OneDark(base16) varsayılan olarak içinde geliyor
Başta yaşadığım tek rahatsızlık, Lua ayarlarına
cmd-leftvecmd-rightyapılandırmasını kendim eklemek zorunda kalmamdı; keşke varsayılanlarda olsaydıWez, Rust sistem programlama kitabı da yayımlıyor
https://leanpub.com/sysprog
Güzel bir yazı; WezTerm’i bir denemeye değer bulabilirim ama yakın zamanda Kitty’ye geçmişken çok sık geçiş yapmak istemiyorum
Yine de Kitty ile ilgili bir düzeltme gerekiyor. Kitty YAML ya da TOML kullanmıyor; kendi basit ayar DSL’ini kullanıyor ve bunun dışında Python ile tamamen script edilebiliyor