4 poin oleh GN⁺ 2024-08-13 | 1 komentar | Bagikan ke WhatsApp
  • Pengguna lama iTerm 2 mencoba lagi WezTerm untuk konfigurasi berbasis teks dan berbagi dotfiles, lalu menyesuaikan tampilan, keybinding, multiplexing, dan workspace secara detail dengan API konfigurasi Lua
  • Konfigurasi ditempatkan di wezterm.lua dan hot reload segera setelah disimpan; log dan Lua REPL bisa langsung dilihat dari overlay debug CTRL + SHIFT + L
  • Dengan konfigurasi Lua, lebih dari 1.000 skema warna bawaan, integrasi mode gelap/terang sistem, font, dekorasi jendela macOS, dan status bar bergaya powerline dapat disusun secara dinamis
  • Keybinding bawaan bisa dipertahankan atau dimatikan, dan penulis mendefinisikan sendiri perpindahan kata dengan Option + Arrow, membuka konfigurasi dengan CMD +,, serta manipulasi pane berbasis leader key dan key table
  • Multiplexing bawaan dan workspaces mempertahankan status jendela, pane, dan tab per proyek seperti session tmux, serta memungkinkan pembuatan UI pemilihan proyek dan alur perpindahan dengan Lua

Alasan Mencoba Beralih dari iTerm 2 ke WezTerm

  • Saya sudah memakai iTerm 2 hampir 10 tahun, tetapi menginginkan terminal yang seluruh konfigurasinya bisa dikelola sebagai teks, dimasukkan ke dotfiles, lalu dibagikan ke mesin kerja dan pribadi
  • Keunggulan WezTerm adalah API yang kuat dan Lua config; pada percobaan kedua, saya bisa membuat konfigurasi terminal yang lebih enak dilihat dan fungsional
  • Cakupan yang dibahas meliputi tampilan, keybinding, multiplexing, perpindahan workspace, status bar, dan pengaturan tema dinamis
  • Ada juga fitur yang tidak dibahas dalam tulisan ini
    • Aturan highlight hyperlink kustom
    • Scrollback yang bisa dicari
    • Quick copy mode
    • Dukungan gambar
  • Contoh konfigurasi disesuaikan dengan pengalaman penggunaan macOS; belum diuji di sistem lain, tetapi WezTerm sendiri berjalan di berbagai lingkungan
  • Contoh konfigurasi final tersedia sebagai gist

Instalasi dan Struktur Dasar Konfigurasi Lua

brew install wezterm
  • Alur yang digunakan adalah menaruh file konfigurasi di $XDG_CONFIG_HOME/wezterm/wezterm.lua
    • Di sebagian besar sistem, termasuk macOS, ini diartikan sebagai ~/.config/wezterm/wezterm.lua
    • Menggunakan direktori, alih-alih satu file ~/.wezterm.lua, memudahkan pengelolaan konfigurasi yang dipecah ke beberapa file
local wezterm = require 'wezterm'
local config = wezterm.config_builder()

return config
  • Karena konfigurasi WezTerm ditulis dengan Lua, konfigurasi dinamis yang kompleks lebih mudah dibuat dibanding YAML atau TOML
  • Lua adalah bahasa pemrograman sehingga lebih sulit dipelajari daripada YAML/TOML, tetapi jika punya pengalaman dengan bahasa dinamis seperti Ruby, Python, atau JavaScript, kode contohnya akan mudah dibaca
  • Untuk materi belajar Lua, bisa merujuk ke Getting Started guide

Hot Reload dan Overlay Debug

  • WezTerm mendeteksi perubahan file konfigurasi dan melakukan reload otomatis, sehingga efek konfigurasi bisa langsung dilihat tanpa me-restart terminal
  • Jika menyimpan konfigurasi yang berisi error, misalnya nama fungsi yang salah, popup error runtime akan langsung muncul
wezterm.config_builderZ()
  • Log bisa ditinggalkan dengan wezterm.log_info()
wezterm.log_info("hello world! my name is " .. wezterm.hostname())
  • Dengan CTRL + SHIFT + L, debug overlay dapat dibuka untuk melihat log dan Lua REPL
    • Ekspresi Lua seperti 1 + 1 bisa dijalankan
    • Nilai modul wezterm seperti wezterm.home_dir juga bisa diperiksa
  • Menggunakan hot reload bersama debug overlay memperpendek feedback loop saat mengubah dan memeriksa konfigurasi

Pengaturan Tampilan: Warna, Tema Sistem, Font, Gaya Jendela

  • Skema Warna dan Pengaturan Dinamis

    • WezTerm menyediakan lebih dari 1.000 skema warna bawaan, yang dipilih dengan config.color_scheme
    config.color_scheme = 'Tokyo Night'
    
    • Daftar skema warna dapat dilihat di WezTerm colorschemes
    • Dengan event window-config-reloaded dan wezterm.color.get_builtin_schemes(), pengaturan dinamis yang menerapkan skema warna acak untuk setiap jendela baru juga bisa dibuat
    • Setelah menetapkan config override per jendela, hot reload mungkin tidak langsung diterapkan saat kembali ke skema warna statis
    • Override bisa dihapus dengan menjalankan window:set_config_overrides({}) di terminal debug, atau dengan menutup lalu membuka kembali jendela
  • Integrasi Mode Gelap/Terang Sistem

    • Konfigurasi bisa dipisahkan ke modul appearance.lua untuk mengganti skema warna sesuai tampilan sistem operasi
    • Dari wezterm.gui.get_appearance(), string "Dark" dicari untuk menentukan apakah sedang dalam mode gelap
    • Di lingkungan tanpa wezterm.gui, mode gelap diperlakukan sebagai default
    if appearance.is_dark() then
      config.color_scheme = 'Tokyo Night'
    else
      config.color_scheme = 'Tokyo Night Day'
    end
    
  • Font dan Dekorasi Jendela

    • Secara default, WezTerm menyertakan JetBrains Mono dan Nerd Font Symbols
    • Contoh konfigurasi menggunakan Berkeley Mono 13pt
    config.font = wezterm.font({ family = 'Berkeley Mono' })
    config.font_size = 13
    
    • Contoh gaya jendela macOS mencakup latar belakang semitransparan, blur, penghapusan title bar, dan pengaturan font tab bar
    config.window_background_opacity = 0.9
    config.macos_window_background_blur = 30
    config.window_decorations = 'RESIZE'
    

Status Bar dan API Event WezTerm

  • Dengan callback event update-status, segmen berbentuk powerline ditambahkan ke status bar kanan
  • Contoh awal menampilkan segmen hostname menggunakan warna latar dan warna depan dari skema warna saat ini serta wezterm.hostname()
  • wezterm.on menghubungkan callback ke event terminal
    • update-status terjadi secara berkala saat update status siap dilakukan
    • WezTerm memastikan hanya satu update yang berjalan pada satu waktu, dan akan menghentikan handler jika kodenya berjalan terlalu lama
  • Dengan window:effective_config().resolved_palette, palet saat ini yang sudah mencerminkan override bisa diambil
  • wezterm.format digunakan untuk menerapkan gaya seperti warna, bold, dan underline pada string
  • Pada contoh bagian akhir, segmen status bar ditambah lagi
    • Workspace saat ini
    • Tanggal dan waktu
    • Hostname
  • wezterm.color.parse, color:lighten, color:darken, dan wezterm.color.gradient digunakan untuk menghitung warna gradien berbasis tema saat ini

Keybinding: Perpindahan Kata macOS dan Membuka Konfigurasi

  • WezTerm menyediakan keybinding bawaan, dan contoh ini mempertahankannya
  • Untuk mematikan keybinding bawaan, config.disable_default_key_bindings = true dapat digunakan
  • Di macOS, agar Option + LeftArrow dan Option + RightArrow berpindah per kata seperti iTerm 2 dan Terminal.app, dikirimkan ESC + b dan ESC + f
{
  key = 'LeftArrow',
  mods = 'OPT',
  action = wezterm.action.SendString '\x1bb',
}
  • WezTerm dapat dikonfigurasi agar CMD + , membuka file konfigurasi di tab baru
    • Contohnya menggunakan nvim dan wezterm.config_file
  • Jika WezTerm dijalankan dari Finder macOS, binary editor mungkin tidak ada di PATH, sehingga eksekusi perintah bisa gagal
  • Dengan config.set_environment_variables, variabel lingkungan default dapat dilengkapi sehingga environment yang sama juga diteruskan ke perintah spawn berikutnya
config.set_environment_variables = {
  PATH = '/opt/homebrew/bin:' .. os.getenv('PATH')
}

Multiplexing Bawaan dan Leader Key

  • Multiplexing bawaan WezTerm adalah fitur yang bisa digunakan sebagai pengganti tmux
  • Fitur bawaan ini menyediakan scrollback buffer per pane, kontrol mouse yang lebih baik, seleksi yang lebih mudah, dan umumnya performa yang lebih cepat
  • Dengan CTRL + SHIFT + P, command palette dapat dibuka dan perintah seperti “Shell: Split Horizontally” dan “Shell: Split Vertically” dapat dijalankan
  • Shortcut split bawaan dibuat cukup kompleks untuk menghindari konflik, sehingga leader key bisa digunakan untuk membuat kombinasi yang lebih sederhana
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
  • Contohnya bergaya tmux: setelah leader, tekan " untuk split horizontal dan % untuk split vertikal
{
  key = '"',
  mods = 'LEADER',
  action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
}
  • Saat ingin mengirim CTRL + A itu sendiri ke terminal, kombinasi LEADER|CTRL dipetakan agar mengirim kembali CTRL + A

Perpindahan Pane, Resize, dan Key Table

  • Perpindahan pane memetakan tombol arah gaya vim, yaitu h, j, k, l, ke kombinasi leader
  • ActivatePaneDirection menjalankan perpindahan Down, Up, Left, Right
  • Tabel Lua yang berulang dapat dipersingkat dengan fungsi
local function move_pane(key, direction)
  return {
    key = key,
    mods = 'LEADER',
    action = wezterm.action.ActivatePaneDirection(direction),
  }
end
  • Resize pane juga bisa dilakukan dengan mouse, tetapi contoh ini menggunakan key table untuk alur yang berfokus pada keyboard
  • Key table adalah cara masuk ke mode tertentu dan memakai keybinding khusus untuk mode itu
    • Mirip dengan leader key, tetapi dapat dibuat agar tidak langsung nonaktif setelah satu aksi
    • Cocok untuk pekerjaan seperti resize yang membutuhkan penekanan tombol yang sama berulang kali
  • Contohnya mengaktifkan key table resize_panes dengan LEADER + r, lalu menyesuaikan ukuran pane sebanyak 3 sel dengan h/j/k/l
  • Dengan timeout_milliseconds = 1000, mode resize diatur keluar setelah 1 detik
  • Pengguna Neovim dapat merujuk ke smart-splits.nvim, yang membantu perpindahan antara pane WezTerm dan pane vim

Konfigurasi Workspace per Proyek

  • Saat menangani banyak proyek sekaligus, biasanya kita ingin mempertahankan status instance multiplexer, jendela, pane, dan tab yang terpisah untuk setiap proyek
  • Tujuan yang mirip dengan session tmux ditangani di WezTerm dengan workspaces
  • Struktur yang digunakan adalah membuat projects.lua lalu memanggil fungsi pemilihan proyek dari konfigurasi utama
  • Contoh awal mencantumkan path proyek secara manual dan menampilkan UI pilihan dengan InputSelector
    • fuzzy = true mengaktifkan pencarian fuzzy
    • Hasil pilihan awalnya hanya dicetak sebagai log di debug overlay
  • LEADER + p membuka UI pemilihan proyek, sedangkan LEADER + f menampilkan daftar workspace yang ada dengan pencarian fuzzy
action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
  • Ketidaknyamanan mengelola path proyek secara manual dikurangi dengan wezterm.glob(), yang mengumpulkan subdirektori di bawah folder proyek secara otomatis
  • Contohnya menggunakan subdirektori di bawah ~/Projects sebagai proyek, dan juga memasukkan direktori home ke daftar proyek
  • Saat sebuah proyek dipilih, SwitchToWorkspace dijalankan
    • Jika workspace sudah ada, beralih ke sana
    • Jika belum ada, membuat yang baru
    • Nama workspace menggunakan segmen terakhir dari path
    • Current working directory terminal baru diatur ke path proyek yang dipilih

Hal Lain yang Bisa Dicoba

  • WezTerm memiliki lebih banyak fitur yang tercantum di daftar fitur
  • Kemungkinan konfigurasi Lua bisa dipelajari lebih lanjut di WezTerm API docs
  • Untuk konfigurasi yang dibuat secara bertahap, sebaiknya sisakan hanya bagian yang benar-benar akan dipakai, tulis ulang dengan gaya sendiri, lalu tambahkan fitur yang diperlukan
  • Jika menyukai WezTerm, Anda juga bisa mendukung Wez yang mengerjakan proyek open source ini

1 komentar

 
GN⁺ 2024-08-13
Komentar Hacker News
  • Baru-baru ini pindah ke WezTerm dan sangat puas
    Sebelumnya saya memakai kitty, dan saat beralih dari iTerm2 saya menyukai konfigurasi dan kesederhanaannya, tetapi dari sisi fitur bawaan WezTerm jauh lebih baik. Konfigurasi terminalnya juga cukup pendek hingga muat dalam satu layar editor, dan setelah itu terminalnya tidak mengganggu, jadi tidak perlu dipikirkan lagi
    Faktor penentu yang membuat saya meninggalkan kitty adalah setiap kali menghadapi masalah atau mencoba mereplikasi fitur iTerm2, saya melihat jawaban maintainer yang singkat dan terkesan meremehkan
    Misalnya, untuk pertanyaan “bagaimana mengatur tmux di kitty?”, seingat saya jawabannya seperti “jangan, tmux itu bodoh” lalu ditutup, jadi akhirnya saya menyerah

    • Saya juga pindah dari Kitty ke WezTerm karena jawaban-jawaban maintainer seperti itu
      Tentu itu proyeknya sendiri dan dia programmer yang hebat, tetapi sedikit kerendahan hati sepertinya tidak ada salahnya
    • Saya penasaran apakah WezTerm mendukung fitur yang setara dengan hotkey window milik iTerm
      Untuk yang belum familiar, ini adalah jendela yang bisa di-toggle tampil/sembunyi dengan shortcut tertentu, dan saat tampil akan mengambang di atas semua jendela sehingga terminal bisa langsung dipakai dari mana saja. Bisa saja hidup tanpanya, tetapi saya tidak ingin sengaja melepaskan fitur ini; jadi meski fitur WezTerm lain bagus, tanpa ini bagi saya sudah gugur sejak awal
    • Semakin tua, saya merasa maintainer yang terlalu dogmatis dan meremehkan adalah sinyal peringatan terbesar untuk menghindari sebuah proyek
      Dari luar sering terlihat seperti produk terbaik, tetapi begitu mulai dipakai secara mendalam, kita terjebak dalam pilihan orang itu dan tidak punya tempat kembali
    • Saya tidak melihat maintainer Kitty sebagai sesuatu yang sangat serius selain agak ketus, dan maintainer memang tidak berkewajiban menjadi teman pengguna
      Namun ketika mulai memakai WezTerm awal tahun ini, saya benar-benar terkejut. Saya banyak membaca tulisan Wez, dan setiap kali nadanya sempurna; rasanya benar-benar luar biasa
    • Pengembang kitty tampaknya cenderung percaya bahwa ia lebih tahu daripada semua orang tentang bagaimana terminal seharusnya digunakan, dan pandangan orang lain pada dasarnya salah
      Bahkan UI lama make menuconfig di Linux saja tidak bisa dirender dengan benar, dan tidak bisa diperbaiki lewat konfigurasi karena ia tidak percaya pada konfigurasi—itu cukup simbolis. Membaca issue tracker-nya bukan hanya terasa menghina, tetapi juga membuat saya merasa harus “membela” cara penggunaan terminal acak dengan sama kerasnya, dan itu tidak sehat
      Tidak bisa tahu pasti, tetapi bahkan seandainya saya sepakat dengannya dalam semua hal tentang terminal, saya rasa saya tetap akan lebih memilih membuat terminal sendiri daripada memakai terminalnya
  • Berdasarkan pengalaman saya, Wez merespons issue GitHub dengan sangat cepat, dan jika memang ada yang salah biasanya diperbaiki dalam satu atau dua hari
    Selain satu-dua keluhan kecil terkait modifier key melalui SSH, fiturnya hampir sempurna untuk kebutuhan saya, dan juga cepat. Dulu saya pengguna fanatik Alacritty, tetapi membutuhkan dukungan modifier yang lebih baik di Emacs jarak jauh

    • Saya juga membuka issue (https://github.com/wez/wezterm/issues/4917), dan dia tidak hanya menjawab, tetapi juga menjawab pertanyaan sampingan, serta menggabungkan dua PR perbaikan yang saya buat dengan sangat cepat
    • Pengalaman saya tidak sepositif itu
      Memang saya berkomentar di issue yang sudah ditutup, tetapi bagaimanapun issue itu ditutup sebagai “won’t do” dan komentar saya diabaikan. Saya tidak ingin membuka issue baru untuk hal yang sama yang sudah ditolak
      https://github.com/wez/wezterm/issues/4706
    • Terkait Emacs jarak jauh, WezTerm bisa menangkap dan mendefinisikan ulang kombinasi tombol sepenuhnya
      Kombinasi seperti C-S-" tidak didukung oleh protokol terminal, jadi tidak ada cara yang bagus untuk mengirimnya. Karena itu saya membuat WezTerm mengirim " c s '" sebagai gantinya dan menambahkan binding tambahan di Emacs. Berkat trik F12 ini, saya bisa mengirim kombinasi yang cukup rumit yang tidak bisa didukung protokol terminal
  • Awalnya saya memasang WezTerm saat pindah dari Kubuntu ke Ubuntu karena ingin memakai sebagian fitur Konsole, misalnya scrollback tak terbatas dan pencarian scrollback, tanpa harus memasang Konsole
    Saya tahu Konsole juga bisa dipasang di Gnome, tetapi rasanya kurang pas. WezTerm langsung terasa cocok, tetapi setelah membaca tulisan ini saya jadi sadar bahwa soal kemungkinan konfigurasi, saya baru menyentuh permukaannya saja
    Satu-satunya keluhan saya adalah banyak fiturnya sulit ditemukan. Dokumentasinya benar-benar bagus dan penulisnya juga aktif serta ramah, tetapi misalnya saya pernah mencari cara memilih blok teks besar hanya dengan keyboard, mencobanya sekali, lalu berpikir “ini harus diingat!”, namun langsung lupa; sekarang saya kembali memilih dengan mouse seperti pemula total. Karena itu bukan hal yang sering saya lakukan, cara itu lebih cepat daripada meng-google lagi halaman dokumentasinya
    Sebagai referensi, halaman yang dimaksud adalah https://wezfurlong.org/wezterm/copymode.html, dan meski dari namanya tampak seperti yang dicari, itu bukan https://wezfurlong.org/wezterm/quickselect.html yang merupakan fitur yang sama sekali berbeda. Fitur itu juga sangat berguna dan idenya bagus, tetapi bukan yang saya cari

    • Saya menaruh konfigurasi WezTerm di repositori dotfiles, lalu menulis catatan seperti ini di README agar mudah ditemukan nanti
      https://github.com/bbkane/dotfiles/tree/master/wezterm
    • Mode QuickSelect benar-benar luar biasa
      Dalam kondisi bawaan saja sudah berguna, tetapi kekuatan sebenarnya ada pada kemampuan menyesuaikan regex yang akan dicocokkan. Saya menambahkan satu regex untuk menemukan semua nama file pada output eza --icons, dan \p{Co} cocok dengan ikon. Jadi setelah membuat alias ls ke eza, saya bisa langsung menekan shift+huruf QuickSelect untuk memasukkan nama file apa pun
    • Saya penasaran apakah maksudnya ada cara melakukan scrollback tak terbatas dan pencarian scrollback real-time di WezTerm seperti di Konsole
      Saya belum menemukan caranya, jadi saya sering tetap membuka sesi Konsole juga. Saat melakukan tail pada log real-time, dua fitur ini benar-benar kuat
    • Saya penasaran kenapa pindah dari Kubuntu. Saya bertanya karena sedang mempertimbangkan untuk memasangnya
  • Setelah mencoba Mac Terminal, iTerm2, Kitty, Warp, dan lainnya, akhirnya saya menetap di WezTerm
    Konfigurasinya mudah, cepat, dan tampilannya bagus. Saya juga membuat satu tema
    https://tiniri.vlad.studio/

    • Saya juga pernah mencoba terminal-terminal seperti ini, tetapi akhirnya bertahan di WezTerm, dan sekarang ini salah satu terminal favorit saya
      Saya kebetulan melihat situs ini saat ingin membandingkan beberapa terminal: https://terminaltrove.com/terminals/
      Kelihatannya cukup berguna bagi orang yang ingin membandingkan terminal
    • Tema ini sangat bagus. Saya penasaran apakah ada cara memakainya di editor JetBrains
    • Saya suka tema Vlad yang terang, jadi saya memasangnya
    • Tema-tema warnanya benar-benar bagus. Akan menyenangkan kalau ada juga untuk Konsole dan Sublime Text
  • Saya sudah memakai WezTerm sekitar 1 tahun dan mensponsori Wez di GitHub; ini terminal yang hebat dan dia pengembang yang baik
    Meski tulisan ini bilang tidak membahasnya, salah satu fitur favorit saya adalah Quick Copy dan mode salin lainnya. Saya benar-benar memakainya terus. Cukup tekan C-S-Space lalu ketik huruf yang ditampilkan di samping item yang ingin disalin
    Kasus penggunaan besar saya adalah memakai sesuatu yang mirip mosh+tmux dari laptop macOS ke mesin Linux kantor. Saya selalu membiarkan sesi tetap berjalan dan bisa bekerja di mesin kantor dari Mac. Ini menyediakan sesi yang bisa disambungkan ulang, lengkap dengan pane dan tab, sehingga saya tetap bisa bekerja meski sedang tidak di meja, dan kualitasnya sangat bagus

    • Salah satu fitur yang benar-benar keren dari mode Quick Copy adalah jika memasukkan huruf dalam versi huruf besar, nilainya otomatis ditempelkan kembali ke prompt terminal
    • Saya baru tahu tentang QuickSelect, dan sepertinya akan sering saya pakai ke depannya
  • Rasanya sulit membayangkan apa yang tidak disukai dari WezTerm
    Fitur yang paling saya sukai, tapi sering terlewatkan, adalah dukungan lintas-OS yang lengkap. Kalau lingkunganmu seperti saya, yang memakai Linux, macOS, dan Windows semuanya, cukup pelajari satu WezTerm dan selesai. Sebagian besar pengaturan terminal juga saya bagikan antar-sistem operasi

    • Satu hal yang tidak saya sukai dari WezTerm, sekaligus alasan saya berhenti memakainya, berkaitan dengan cara menyalin baris yang ter-wrap ke clipboard
      Mungkin ini hanya masalah saya atau karena cara saya memakai tmux, tetapi ketika menyalin baris dalam keadaan wrap, teks yang tersalin sepertinya ikut berisi line break. Sangat mengganggu, dan saya menganggapnya karena interaksi WezTerm dengan tmux
      Saya tidak punya cukup bukti untuk membuat laporan bug yang baik, dan karena WezTerm punya server multiplexing terminal sendiri, “ssh domains”, mungkin ini tidak cukup penting untuk diperbaiki. Namun saya tidak ingin memasang server multiplexing WezTerm di mana-mana, dan di tempat-tempat yang saya akses lewat SSH biasanya tmux sudah ada
      Selain itu, WezTerm luar biasa
    • Rasa sakit terbesar saat berpindah antara MacBook kantor dan mesin Linux pribadi adalah shortcut keyboard
      Opsi pengaturan macOS terbatas dan butuh banyak workaround; Linux juga bisa disesuaikan agar mirip macOS, tetapi saya sendiri tidak terlalu suka shortcut macOS. Akhirnya jadinya campuran yang aneh, dan setiap kali berpindah saya terus menekan tombol yang salah
      Penasaran apakah ada orang yang menemukan konfigurasi yang pas
    • Di lingkungan saya performanya tidak bagus, dan seiring waktu cenderung berhenti beberapa detik saat berpindah tab
      Saya tidak tahu alasannya dan tidak tahu cara mendiagnosisnya. Scrollback besar adalah satu-satunya dugaan saya, tetapi itu tidak bisa saya korbankan. Akhirnya saya pindah ke Kitty, dan walaupun Kitty punya masalahnya sendiri, setidaknya ia bekerja
    • Menurut saya pemilihan bahasa di sini benar-benar penting
      Bahasa konfigurasi Lua bersinar karena membuat perubahan per lingkungan cukup mudah. Saya juga merasa ada efek samping Rust yang sering diremehkan. Tooling Rust modern sering punya dukungan lintas-platform yang sangat baik, mungkin karena lapisan abstraksi antara bahasa dan sistem operasinya bagus
    • Fakta bahwa ia diuji dengan baik di ketiga sistem operasi juga besar artinya
      Sekitar 2019, hanya dengan membandingkan repo wez dengan yang lain dari sisi GitHub Actions, issue, dan dokumentasi sudah cukup meyakinkan saya, dan sejak itu saya tidak pernah kembali. Fitur tab bahkan didukung secara default
      Ini terminal pertama yang benar-benar menggantikan urxvt bagi saya dari sisi dukungan dan kecepatan. Sebelumnya saya memakai termite, sambil tetap menyimpan urxvt sebagai cadangan untuk berjaga-jaga jika termite memunculkan bug dalam situasi aneh
  • Alasan saya tetap bertahan di iTerm2 adalah Edit->Selection Respects Soft Boundaries
    Fitur ini berarti, “jika diaktifkan, garis vertikal dari karakter pipe | akan ditafsirkan seperti pemisah pane di vim atau emacs, dan area seleksi akan wrap di titik itu”
    Dalam kasus saya, ini diperlukan saat memilih teks di IRC
    https://github.com/wez/wezterm/issues/596

    • Ini pada dasarnya adalah masalah bloating ala Microsoft Word
      Tidak ada orang yang membutuhkan semua fitur, tetapi masing-masing punya 10 fitur niche yang mereka inginkan, dan 10 fitur itu tidak sama satu sama lain. Jadi untuk mendapatkan 10 fitur niche itu, orang akhirnya menerima bloating
    • Fitur ini terlihat luar biasa bagus. Penasaran apakah ada terminal di Linux yang mendukungnya
    • zellij mendukung ini secara default jika terminal mendukung fitur OSC yang sesuai. Terminal yang ada di thread ini seharusnya mendukungnya
      Edit: Maaf, tadi saya bicara agak kasar. Saya melewatkan bagian bahwa ini dipakai di IRC
    • Setelah melihatnya langsung, saya 100% setuju bahwa ini adalah fitur UI/UX yang luar biasa
    • Saya sudah memakai iTerm selama bertahun-tahun, tetapi sama sekali tidak tahu pengaturan ini. Untuk penggunaan Emacs saya, ini fitur yang menentukan
  • Saya adalah pengguna iTerm2 sejak pertama kali mulai memakai macOS hampir 10 tahun lalu
    Namun belakangan ini saya merasa ia benar-benar melambat, dan ketika harus menunggu lebih dari 1 detik sampai terminal muncul setelah berpindah dengan cmd-tab, saya mencapai batasnya
    Saya melihat beberapa alternatif, tetapi tidak ada yang benar-benar pas. Salah satu terminal perlu akun/login agar bisa berjalan, yang merupakan kekurangan besar, dan terminal lain ditulis dengan {Java,Type}Script sehingga karena sifat asinkron stream Node.js, perintah sederhana seperti yes pun rusak
    Sejauh ini saya sangat menyukai WezTerm. Cukup cepat, sangat bisa dikonfigurasi, dan tema yang biasa saya atur di iTerm2, OneDark(base16), sudah tersedia secara default
    Satu-satunya ketidaknyamanan awal yang saya alami adalah harus menambahkan sendiri konfigurasi cmd-left dan cmd-right ke konfigurasi Lua; rasanya akan lebih baik jika itu ada di default

    • Maksudnya yang perlu akun/login itu Warp, dan yang berbasis {Java,Type}Script itu salah satu dari Tabby atau extraterm?
  • Wez juga menerbitkan buku pemrograman sistem Rust
    https://leanpub.com/sysprog

  • Tulisan yang bagus, jadi mungkin saya akan mencoba WezTerm, tetapi saya baru saja pindah ke Kitty belakangan ini, jadi tidak ingin terlalu sering gonta-ganti
    Namun perlu ada koreksi terkait Kitty. Kitty tidak memakai YAML atau TOML; ia memakai DSL konfigurasi sederhana miliknya sendiri, dan selain itu bisa di-script sepenuhnya dengan Python

    • Saya juga mirip, jadi untuk sementara hanya saya bookmark