4 puan yazan GN⁺ 2024-08-13 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-08-13
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

    • Ben de maintainer’ın bu tür yanıtları yüzünden Kitty’den WezTerm’e geçtim
      Elbette kendi projesi ve harika bir programcı, ama biraz tevazunun da zararı olmaz gibi
    • WezTerm’in iTerm’deki hotkey window karşılığı bir özelliği destekleyip desteklemediğini merak ediyorum
      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
    • Yaşım ilerledikçe, aşırı dogmatik ve küçümseyici bir maintainer bana bir projeden kaçınmak için en büyük uyarı işareti gibi geliyor
      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
    • Kitty maintainer’ının biraz ters olmasının dışında özellikle ciddi bir durum olduğunu düşünmüyorum; maintainer’ın kullanıcıların arkadaşı olma zorunluluğu yok
      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
    • kitty geliştiricisi, terminalin nasıl kullanılması gerektiğini herkesten daha iyi bildiğine inanıyor ve başkalarının görüşlerini temelden yanlış görüyor gibi duruyor
      Linux’un eski make menuconfig arayü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ğil
      Kesin 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ı

    • Ben de bir issue açtım (https://github.com/wez/wezterm/issues/4917); yalnızca yanıt vermekle kalmadı, yan sorularıma da cevap verdi ve yaptığım iki düzeltme PR’ını da gerçekten hızlı bir şekilde merge etti
    • Benim deneyimim o kadar olumlu değildi
      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
    • Uzak Emacs ile ilgili olarak, WezTerm tuş kombinasyonlarını tamamen yakalayıp yeniden tanımlayabiliyor
      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önderebildim
  • Aslı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.

    • WezTerm ayarlarını dotfiles depoma koydum; sonra kolay bulmak için README’ye böyle notlar yazdım.
      https://github.com/bbkane/dotfiles/tree/master/wezterm
    • QuickSelect modu gerçekten harika.
      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öylece ls’i eza için alias yaptıktan sonra, shift+QuickSelect harfiyle herhangi bir dosya adını hemen girebiliyorum.
    • WezTerm’de sınırsız scrollback ve canlı scrollback aramasını Konsole’daki gibi yapmanın bir yolu olduğu anlamına mı geliyor, merak ediyorum.
      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ü.
    • Kubuntu’dan neden geçtiğini merak ettim. Kurmayı düşündüğüm için soruyorum.
  • 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/

    • Ben de bu terminalleri denedim ama sonunda WezTerm’de kaldım; şu anda en sevdiğim terminallerden biri.
      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.
    • Bu tema çok iyi. JetBrains editörlerinde kullanmanın bir yolu var mı, merak ediyorum.
    • Açık renkli Vlad temasını beğendim ve kurdum.
    • Renk temaları gerçekten çok iyi. Konsole ve Sublime Text için de olsa güzel olurdu.
  • 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.

    • Quick Copy modunun gerçekten harika özelliklerinden biri, harfi büyük harfli sürümüyle girerseniz değerin otomatik olarak terminal prompt’una geri yapıştırılması.
    • QuickSelect’i yeni öğrendim; bundan sonra çok kullanacak gibiyim.
  • 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

    • WezTerm’de hoşuma gitmeyen tek şey ve kullanmayı bırakma nedenim, satır kaydırılmış satırları panoya kopyalama biçimiyle ilgiliydi
      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
    • Şirket MacBook’u ile kişisel Linux makinem arasında gidip gelirken en büyük acı kısayollar
      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
    • Benim ortamımda performansı iyi değildi; zaman geçtikçe sekme değiştirirken birkaç saniyeliğine takılma eğilimi vardı
      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
    • Burada dil seçiminin gerçekten önemli olduğunu düşünüyorum
      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
    • Üç işletim sisteminin tamamında iyi test edilmiş olması da büyük bir artı
      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 özellik
    Benim durumumda IRC’de metin seçerken buna ihtiyacım oluyor
    https://github.com/wez/wezterm/issues/596

    • Bu aslında Microsoft Word tarzı şişme sorunu
      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
    • Bu özellik inanılmaz iyi görünüyor. Linux’ta bunu destekleyen bir terminal var mı merak ediyorum
    • zellij, terminal uygun OSC işlevini destekliyorsa bunu varsayılan olarak destekliyor. Bu başlıktaki terminal destekliyor olmalı
      Düzenleme: Sert konuşmuşum, kusura bakmayın. IRC’de kullandığınız kısmı kaçırmışım
    • Gerçekten bakınca bunun harika bir UI/UX özelliği olduğuna %100 katılıyorum
    • iTerm’i yıllardır kullanıyordum ama bu ayardan hiç haberim yoktu. Emacs kullanımım için belirleyici bir özellik
  • 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-tab ile geçiş yaptığımda terminalin görünmesi için 1 saniyeden fazla beklemeye başlayınca sınırıma geldim
    Birkaç 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 yes gibi 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-left ve cmd-right yapılandırmasını kendim eklemek zorunda kalmamdı; keşke varsayılanlarda olsaydı

    • Hesap/oturum açma gerektiren Warp, {Java,Type}Script ile yazılmış olan da Tabby ya da extraterm’den biri mi demek istiyorsunuz?
  • 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

    • Ben de benzer durumdayım, şimdilik sadece yer imlerine ekledim