- लंबे समय तक iTerm 2 इस्तेमाल करने वाले एक उपयोगकर्ता ने text-based configuration और dotfiles साझा करने के लिए WezTerm को फिर से आज़माया, और Lua config API की मदद से appearance, keybinding, multiplexing और workspaces को बारीकी से customize किया
- configuration को
wezterm.lua में रखा जाता है और save करते ही यह तुरंत hot reload हो जाता है; CTRL + SHIFT + L debug overlay में logs और Lua REPL को सीधे देखा जा सकता है
- Lua configuration से 1,000 से अधिक built-in color schemes, system dark/light mode integration, fonts, macOS window decorations, और powerline style status bar को dynamically configure किया जा सकता है
- default keybindings को रखा भी जा सकता है या बंद भी किया जा सकता है, और
Option + Arrow word movement, CMD +, से settings खोलना, leader key और key table आधारित pane controls को सीधे define किया जा सकता है
- built-in multiplexing और workspaces tmux sessions की तरह project-specific window·pane·tab state को बनाए रखते हैं, और Lua से project selection UI और switching flow तक बनाया जा सकता है
iTerm 2 से WezTerm पर आने की वजह
- लगभग 10 साल तक iTerm 2 इस्तेमाल करने के बाद लेखक को ऐसा terminal चाहिए था जिसकी सारी settings text में manage की जा सकें, ताकि उन्हें dotfiles में रखकर work और personal machines के बीच साझा किया जा सके
- WezTerm की खास ताकत इसका powerful API और Lua config है, और दूसरी कोशिश में इससे ज़्यादा सुंदर और functional terminal setup बन पाया
- यहाँ जिन चीज़ों को कवर किया गया है वे हैं appearance, keybindings, multiplexing, workspace switching, status bar, और dynamic theme configuration
- इस लेख में कुछ features शामिल नहीं हैं
- custom hyperlink highlight rules
- searchable scrollback
- quick copy mode
- image support
- example configuration macOS के उपयोग अनुभव के हिसाब से बनाई गई है; दूसरे systems पर इसे test नहीं किया गया, लेकिन WezTerm खुद कई environments में चलता है
- अंतिम configuration example gist के रूप में दिया गया है
installation और Lua configuration की बुनियादी संरचना
- WezTerm को install करने के लिए official installation guide का पालन किया जा सकता है, और macOS पर इसे Homebrew से install किया जा सकता है
brew install wezterm
- configuration file को
$XDG_CONFIG_HOME/wezterm/wezterm.lua में रखने का तरीका इस्तेमाल किया गया है
- macOS सहित ज़्यादातर systems पर यह
~/.config/wezterm/wezterm.lua के रूप में resolve होता है
- सिर्फ
~/.wezterm.lua रखने के बजाय directory इस्तेमाल करने से configuration को कई files में बाँटना आसान होता है
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
return config
- WezTerm configuration Lua में लिखी जाती है, इसलिए YAML या TOML की तुलना में complex dynamic configuration बनाना आसान है
- Lua एक programming language है, इसलिए YAML/TOML की तुलना में सीखना थोड़ा कठिन हो सकता है, लेकिन Ruby, Python, JavaScript जैसी dynamic languages का अनुभव हो तो example code पढ़ना आसान रहता है
- Lua सीखने के लिए Getting Started guide देखी जा सकती है
hot reload और debug overlay
- WezTerm configuration file में बदलाव detect करके automatic reload कर देता है, इसलिए terminal restart किए बिना settings का असर तुरंत देखा जा सकता है
- अगर किसी गलत function name जैसी error वाली configuration save की जाए, तो तुरंत runtime error popup दिखाई देता है
wezterm.config_builderZ()
- logs को
wezterm.log_info() से लिखा जा सकता है
wezterm.log_info("hello world! my name is " .. wezterm.hostname())
CTRL + SHIFT + L से debug overlay खोलकर logs और Lua REPL देखे जा सकते हैं
1 + 1 जैसी Lua expressions चलाई जा सकती हैं
wezterm.home_dir जैसे wezterm module के values भी देखे जा सकते हैं
- hot reload और debug overlay को साथ इस्तेमाल करने पर configuration बदलने और verify करने का feedback loop बहुत छोटा हो जाता है
appearance settings: color, system theme, font, window style
-
color schemes और dynamic configuration
- WezTerm 1,000 से अधिक built-in color schemes देता है, और इन्हें
config.color_scheme से चुना जाता है
config.color_scheme = 'Tokyo Night'
- color scheme की सूची WezTerm colorschemes में देखी जा सकती है
window-config-reloaded event और wezterm.color.get_builtin_schemes() का उपयोग करके हर नई window पर random color scheme लगाने जैसी dynamic configuration भी संभव है
- अगर window-specific config override सेट करने के बाद static color scheme पर वापस जाएँ, तो hot reload तुरंत apply नहीं हो सकता
- debug terminal में
window:set_config_overrides({}) चलाकर या window बंद करके फिर से खोलकर override हटाया जा सकता है
-
system dark/light mode integration
- configuration को
appearance.lua module में अलग रखकर OS appearance के अनुसार color scheme बदली जा सकती है
wezterm.gui.get_appearance() में "Dark" string खोजकर dark mode का पता लगाया जाता है
- जहाँ
wezterm.gui उपलब्ध नहीं है, वहाँ default रूप से dark mode माना जाता है
if appearance.is_dark() then
config.color_scheme = 'Tokyo Night'
else
config.color_scheme = 'Tokyo Night Day'
end
-
font और window decorations
- WezTerm default रूप से JetBrains Mono और Nerd Font Symbols शामिल करता है
- example configuration में Berkeley Mono 13pt इस्तेमाल किया गया है
config.font = wezterm.font({ family = 'Berkeley Mono' })
config.font_size = 13
- macOS window style example में translucent background, blur, title bar हटाना, और tab bar font setting शामिल है
config.window_background_opacity = 0.9
config.macos_window_background_blur = 30
config.window_decorations = 'RESIZE'
status bar और WezTerm event API
update-status event callback के जरिए दाईं ओर के status bar में powerline style segments जोड़े जाते हैं
- शुरुआती example में current color scheme के background color, foreground color और
wezterm.hostname() का उपयोग करके hostname segment दिखाया जाता है
wezterm.on terminal events से callback जोड़ता है
update-status तब समय-समय पर trigger होता है जब status update के लिए तैयारी हो जाती है
- WezTerm एक समय में सिर्फ एक update चलने देता है, और अगर code बहुत देर ले तो handler रोक देता है
window:effective_config().resolved_palette से override लागू होने के बाद की current palette ली जा सकती है
wezterm.format का उपयोग strings पर color, bold, underline जैसी styling लागू करने के लिए किया जाता है
- बाद के examples में status bar segments और बढ़ाए जाते हैं
- current workspace
- date और time
- hostname
wezterm.color.parse, color:lighten, color:darken, wezterm.color.gradient से current theme के आधार पर gradient colors निकाले जाते हैं
keybindings: macOS word movement और configuration खोलना
- WezTerm default keybindings देता है, और example में इन्हें बनाए रखा गया है
- default keybindings बंद करने के लिए
config.disable_default_key_bindings = true इस्तेमाल किया जा सकता है
- macOS पर iTerm 2 और Terminal.app की तरह
Option + LeftArrow, Option + RightArrow से word-wise movement कराने के लिए ESC + b, ESC + f भेजे जाते हैं
{
key = 'LeftArrow',
mods = 'OPT',
action = wezterm.action.SendString '\x1bb',
}
CMD + , से WezTerm configuration file को नई tab में खोलने के लिए setup किया जा सकता है
- example में
nvim और wezterm.config_file का उपयोग किया गया है
- macOS Finder से WezTerm चलने पर
PATH में editor binary न होने से command fail हो सकती है
config.set_environment_variables से default environment variables को बढ़ाया जाए तो बाद की spawn commands में भी वही environment पास होता है
config.set_environment_variables = {
PATH = '/opt/homebrew/bin:' .. os.getenv('PATH')
}
built-in multiplexing और leader key
- WezTerm का built-in multiplexing tmux के विकल्प के रूप में इस्तेमाल किया जा सकता है
- built-in feature pane-wise scrollback buffer, बेहतर mouse control, आसान selection, और आम तौर पर तेज performance देता है
CTRL + SHIFT + P से command palette खोलकर “Shell: Split Horizontally”, “Shell: Split Vertically” जैसे commands चलाए जा सकते हैं
- default split shortcuts conflict से बचने के लिए थोड़े जटिल होते हैं, इसलिए leader key से आसान combinations बनाए जा सकते हैं
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
- example में tmux style में leader के बाद
" दबाकर horizontal split और % दबाकर vertical split किया जाता है
{
key = '"',
mods = 'LEADER',
action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' },
}
- जब
CTRL + A को खुद terminal में भेजना हो, तो LEADER|CTRL combination से फिर CTRL + A भेजने के लिए mapping की जाती है
pane movement, resize, और key table
- pane movement के लिए vim direction keys जैसे
h, j, k, l को leader combination पर map किया गया है
ActivatePaneDirection से Down, Up, Left, Right movement किया जाता है
- बार-बार दोहराए जाने वाले Lua tables को function से छोटा किया जा सकता है
local function move_pane(key, direction)
return {
key = key,
mods = 'LEADER',
action = wezterm.action.ActivatePaneDirection(direction),
}
end
- pane resize mouse से भी किया जा सकता है, लेकिन keyboard-centric flow के लिए example में key table इस्तेमाल की गई है
- key table किसी खास mode में जाकर उसी mode की keybindings उपयोग करने का तरीका है
- यह leader key जैसा है, लेकिन इसे एक action के बाद तुरंत disable न होने दिया जा सकता है
- resize जैसे कामों के लिए उपयुक्त है, जहाँ एक ही keys को बार-बार दबाना पड़ता है
- example में
LEADER + r से resize_panes key table activate होती है, और h/j/k/l से pane size 3 cells तक adjust किया जाता है
timeout_milliseconds = 1000 से 1 second बाद resize mode से बाहर निकलने की setting की गई है
- Neovim users WezTerm panes और vim panes के बीच movement आसान करने के लिए smart-splits.nvim देख सकते हैं
project-wise workspace setup
- जब कई projects साथ संभालने हों, तो हर project के लिए अलग multiplexer instance, window, pane, और tab state बनाए रखने की जरूरत महसूस होती है
- tmux session जैसा काम WezTerm में workspaces से किया जाता है
projects.lua बनाकर project selection function को main configuration से import करने वाली संरचना इस्तेमाल की गई है
- शुरुआती example में project paths को सीधे list किया जाता है, और
InputSelector से selection UI दिखाई जाती है
fuzzy = true से fuzzy search enable की जाती है
- शुरुआत में selection result सिर्फ debug overlay में log के रूप में print किया जाता है
LEADER + p project selection UI खोलता है, और LEADER + f existing workspace list को fuzzy search के साथ दिखाता है
action = wezterm.action.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
- project paths को manually maintain करने की असुविधा
wezterm.glob() से project folders की subdirectories अपने-आप collect करके कम की जा सकती है
- example में
~/Projects के नीचे की subdirectories को projects माना गया है, और home directory को भी project list में शामिल किया गया है
- project चुनने पर
SwitchToWorkspace चलाया जाता है
- अगर workspace मौजूद है, तो उसमें switch किया जाता है
- अगर नहीं है, तो नया बनाया जाता है
- workspace का नाम path के आखिरी segment से लिया जाता है
- नए terminal की current working directory चुने गए project path पर सेट की जाती है
आगे और क्या किया जा सकता है
- WezTerm में feature list में दिए गए और भी कई features हैं
- Lua configuration की संभावनाएँ WezTerm API docs में और देखी जा सकती हैं
- step-by-step बनाकर तैयार की गई configuration में से वास्तव में उपयोगी चीज़ें ही रखें, फिर उसे अपनी शैली में दोबारा लिखें और ज़रूरत के हिसाब से features जोड़ें
- अगर WezTerm पसंद आए, तो open source पर काम कर रहे Wez को sponsor भी किया जा सकता है
1 टिप्पणियां
Hacker News की राय
हाल ही में WezTerm पर शिफ्ट हुआ हूं और इससे बहुत संतुष्ट हूं
पहले kitty इस्तेमाल करता था, और iTerm2 से आते समय उसकी configuration और simplicity अच्छी लगी थी, लेकिन built-in features के मामले में WezTerm कहीं बेहतर है। terminal configuration भी इतनी छोटी है कि editor की एक स्क्रीन में समा जाती है, और उसके बाद terminal बस रास्ते में नहीं आता, इसलिए उस पर ध्यान देने की जरूरत नहीं पड़ती
kitty छोड़ने की निर्णायक वजह यह थी कि जब भी कोई समस्या आती या iTerm2 की किसी feature को दोहराने की कोशिश करता, maintainer के छोटे और कुछ हद तक dismissive जवाब देखने को मिलते
उदाहरण के लिए, “kitty में tmux कैसे configure करें?” जैसे सवाल पर मुझे याद है कि “मत करो, tmux बेवकूफ है” जैसा जवाब देकर issue बंद कर दिया गया था, इसलिए आखिरकार मैंने छोड़ दिया
बेशक यह उनका अपना project है और वे शानदार programmer हैं, लेकिन थोड़ी विनम्रता हो तो बुरा नहीं होगा
जो लोग परिचित नहीं हैं, उनके लिए: यह ऐसी window होती है जिसे किसी खास shortcut से show/hide किया जा सकता है, और दिखने पर यह सभी windows के ऊपर रहती है ताकि कहीं से भी terminal तुरंत इस्तेमाल किया जा सके। इसके बिना काम चल सकता है, लेकिन मैं इसे बेवजह छोड़ना नहीं चाहता; इसलिए WezTerm की बाकी features अच्छी हों, फिर भी अगर यह नहीं है तो मेरे लिए शुरुआत में ही बाहर हो जाता है
ऊपर से अक्सर product सबसे अच्छा दिखता है, लेकिन एक बार गहराई से इस्तेमाल शुरू कर दें तो आप उस व्यक्ति के choices में फंस जाते हैं और वापस जाने की जगह नहीं रहती
लेकिन इस साल की शुरुआत में जब WezTerm इस्तेमाल करना शुरू किया तो सच में हैरान रह गया। Wez की बहुत सारी लिखी बातें पढ़ीं, और हर बार tone बिल्कुल सही थी; सचमुच बेहतरीन लगा
यह बात प्रतीकात्मक है कि Linux का पुराना
make menuconfigUI तक ठीक से render नहीं कर पाता, और configuration से इसे ठीक भी नहीं किया जा सकता क्योंकि वह खुद configuration में विश्वास नहीं करता। issue tracker पढ़ते हुए न सिर्फ अपमानजनक महसूस होता है, बल्कि ऐसा भी लगने लगता है कि terminal इस्तेमाल करने के किसी random तरीके का मुझे भी उतनी ही आक्रामकता से “defend” करना चाहिए — यह स्वस्थ नहीं हैपक्का नहीं कह सकता, लेकिन भले ही terminal से जुड़ी हर बात पर मेरी उससे राय मिलती हो, फिर भी उसके terminal का उपयोग करने के बजाय मैं अपना terminal खुद बनाना पसंद करूंगा
मेरे अनुभव में Wez GitHub issues पर हैरान कर देने वाली तेजी से प्रतिक्रिया देते हैं, और अगर सच में कुछ गलत हो तो आम तौर पर एक-दो दिन में ठीक कर देते हैं
SSH के पार modifier keys से जुड़ी एक-दो छोटी शिकायतों को छोड़ दें तो features मेरी जरूरतों के लिए लगभग perfect हैं, और ऊपर से यह तेज भी है। पहले मैं Alacritty का बड़ा fan था, लेकिन remote Emacs में बेहतर modifier support चाहिए था
मैंने पहले से बंद issue पर comment तो किया था, लेकिन वह वैसे भी “won’t do” के रूप में बंद था और मेरा comment अनदेखा कर दिया गया। उसी पहले से reject हो चुकी बात पर नया issue खोलना नहीं चाहता था
https://github.com/wez/wezterm/issues/4706
C-S-"जैसी combination को terminal protocol support नहीं करता, इसलिए उसे भेजने का कोई अच्छा तरीका नहीं है। इसलिए मैंने WezTerm से इसके बदले" c s '"भेजवाया और Emacs में extra binding जोड़ दी। इस F12 trick की वजह से terminal protocol जो काफी complex combinations support नहीं कर पाता, वे भी भेज पाएअसल में मैंने WezTerm इसलिए इंस्टॉल किया था कि Kubuntu से Ubuntu पर शिफ्ट होते समय Konsole इंस्टॉल किए बिना ही Konsole की कुछ सुविधाएँ, जैसे infinite scrollback और scrollback search, इस्तेमाल कर सकूँ
मुझे पता है कि Gnome में भी Konsole इंस्टॉल किया जा सकता है, लेकिन वह कुछ ठीक-सा नहीं लगा। WezTerm मुझे तुरंत पसंद आ गया, लेकिन यह लेख देखकर समझ आया कि इसकी configurability के मामले में मैं अभी बस सतह ही खुरच पाया हूँ
मेरी एकमात्र शिकायत यह है कि कई features आसानी से discover नहीं होते। documentation सच में अच्छी है और author भी सक्रिय और मददगार हैं, लेकिन उदाहरण के लिए मैंने केवल keyboard से बड़े text block को select करने का तरीका ढूँढा, एक बार करके देखा और सोचा “यह तो याद रखना चाहिए!”—फिर तुरंत भूल गया, और अब फिर बिल्कुल beginner की तरह mouse से select कर रहा हूँ। क्योंकि यह काम वैसे भी अक्सर नहीं करता, इसलिए उस docs page को फिर से Google करने से यह तेज़ पड़ता है
संदर्भ के लिए, जिस page की बात कर रहा हूँ वह https://wezfurlong.org/wezterm/copymode.html है; नाम से लगता है कि वही खोज रहा था, लेकिन यह पूरी तरह अलग feature https://wezfurlong.org/wezterm/quickselect.html नहीं है। वह भी बहुत उपयोगी और अच्छा idea है, लेकिन मैं उसे नहीं ढूँढ रहा था
https://github.com/bbkane/dotfiles/tree/master/wezterm
default रूप में भी उपयोगी है, लेकिन इसकी असली ताकत यह है कि जिन regex से match करना है उन्हें customize किया जा सकता है। मैंने
eza --iconsoutput के सभी filenames ढूँढने वाला एक regex जोड़ा है, जहाँ\p{Co}icons से match करता है। इसलिएlsकोezaका alias बनाने के बाद मैं सीधे shift+QuickSelect अक्षर से कोई भी filename enter कर सकता हूँमुझे अभी तक वह तरीका नहीं मिला, इसलिए अक्सर Konsole session भी साथ में खुला रखता हूँ। live logs को tail करते समय ये दोनों features सच में बहुत powerful हैं
Mac Terminal, iTerm2, Kitty, Warp वगैरह आज़माने के बाद आखिरकार WezTerm पर ही टिक गया
configure करना आसान है, तेज़ है और दिखने में अच्छा है। मैंने एक theme भी बनाई है
https://tiniri.vlad.studio/
अलग-अलग terminals की तुलना करने के लिए यह site अचानक मिली थी: https://terminaltrove.com/terminals/
जो लोग terminals compare करना चाहते हैं, उनके लिए यह काफ़ी उपयोगी लगती है
मैं करीब 1 साल से WezTerm इस्तेमाल कर रहा हूँ और GitHub पर Wez को sponsor करता हूँ; यह शानदार terminal है और वे अच्छे developer हैं
कहा गया था कि इस लेख में इसे cover नहीं किया गया है, लेकिन मेरी पसंदीदा features में से एक Quick Copy और दूसरे copy modes हैं। मैं इन्हें सच में हमेशा इस्तेमाल करता हूँ।
C-S-Spaceदबाएँ और जिस item को copy करना है उसके पास दिखाए गए अक्षर को enter करेंबड़ा use case यह है कि macOS laptop से company की Linux machine पर mosh+tmux जैसी functionality इस्तेमाल करता हूँ। हमेशा एक session चालू रहता है और Mac से company machine पर काम कर सकता हूँ। reconnectable session के साथ pane और tab भी मिलते हैं, इसलिए desk से दूर होने पर भी काम कर सकता हूँ, और quality बहुत अच्छी है
WezTerm में नापसंद करने जैसा क्या है, ऐसा लगता है
मेरी सबसे पसंदीदा लेकिन अक्सर अनदेखी की जाने वाली खासियत पूरा cross-OS support है। Linux, macOS और Windows—तीनों इस्तेमाल करने वाले मेरे जैसे environment में WezTerm एक ही सीख लेना काफी है। terminal settings का बड़ा हिस्सा भी मैं operating systems के बीच share कर रहा हूँ
यह सिर्फ मेरी समस्या हो सकती है या tmux इस्तेमाल करने के तरीके की वजह से हो सकता है, लेकिन जब line wrapped होती है और copy करता हूँ, तो copied text में line breaks शामिल हो जाते थे। यह बहुत खटकता था और मुझे लगा कि यह WezTerm और tmux के interaction की वजह से है
अच्छा bug report बनाने लायक मेरे पास पर्याप्त सबूत नहीं हैं, और WezTerm के पास अपना terminal multiplexing server “ssh domains” है, इसलिए शायद इसे ठीक करना इतना महत्वपूर्ण न हो। लेकिन मैं WezTerm multiplexing server को हर जगह install नहीं करना चाहता, और जिन जगहों पर मैं SSH से जाता हूँ वहाँ आम तौर पर tmux पहले से होता है
बाकी मामलों में WezTerm शानदार है
macOS के settings options सीमित हैं और कई workarounds चाहिए होते हैं, और Linux को macOS जैसा बनाया जा सकता है, लेकिन मुझे macOS shortcuts खुद खास पसंद नहीं हैं। इसलिए एक अजीब mixed state बन जाती है, और हर बार switch करते समय मैं लगातार गलत keys दबा देता हूँ
जानना चाहूँगा कि क्या किसी ने ठीक से fit होने वाली setup ढूँढी है
वजह नहीं पता और diagnose कैसे करूँ यह भी नहीं पता। बड़ा scrollback ही एकमात्र अनुमान है, लेकिन उसे मैं छोड़ नहीं सकता। अंत में Kitty पर shift हो गया, और Kitty की भी अपनी समस्याएँ हैं, लेकिन कम से कम काम तो करता है
Lua configuration language environment-specific changes को काफी आसान बना देती है, इसलिए चमकती है। मुझे Rust का एक underrated side effect भी लगता है। modern Rust tools में language और operating system के बीच abstraction layer अच्छी होने की वजह से cross-platform support अक्सर बेहतरीन होता है
2019 के आसपास GitHub Actions, issues और documentation के लिहाज से wez repository की बाकी चीजों से एक बार तुलना करना ही मुझे convince करने के लिए काफी था, और उसके बाद वापस नहीं गया। default में tab feature तक support करता है
support और speed के मामले में urxvt को सच में replace करने वाला पहला terminal है। उससे पहले मैं termite इस्तेमाल करता था और अजीब हालात में termite में bugs आने की स्थिति के लिए urxvt को backup के रूप में रखा था
iTerm2 पर बने रहने की मेरी वजह
Edit->Selection Respects Soft Boundariesहैयह feature है कि “enable करने पर pipe character
|की vertical line को vim या emacs के pane separator की तरह interpret करता है, और selection उस point पर wrap हो जाती है”मेरे मामले में IRC में text select करते समय इसकी जरूरत पड़ती है
https://github.com/wez/wezterm/issues/596
हर किसी को सारे features की जरूरत नहीं होती, लेकिन हर व्यक्ति के पास अपनी चाही हुई 10 niche features होती हैं और वे 10 features एक-दूसरे जैसी नहीं होतीं। इसलिए 10 niche features पाने के लिए bloat स्वीकार करना पड़ता है
Edit: मैंने थोड़ा rough बोल दिया, sorry. IRC में इस्तेमाल करने वाली बात छूट गई थी
लगभग 10 साल पहले macOS पहली बार इस्तेमाल करना शुरू करने के बाद से iTerm2 user था
लेकिन हाल में यह सच में धीमा लगने लगा, और
cmd-tabसे switch करने पर terminal दिखाई देने तक 1 second से ज्यादा इंतजार करना पड़ने लगा, तब सीमा पार हो गईकुछ alternatives देखे, लेकिन कोई ठीक fit नहीं हुआ। किसी terminal को चलने के लिए account/login चाहिए था, जो बड़ा drawback था, और दूसरा terminal {Java,Type}Script में लिखा था, इसलिए Node.js streams की asynchronous nature के कारण
yesजैसे simple command को भी तोड़ देता थाअब तक WezTerm मुझे बहुत पसंद आ रहा है। काफी fast है, बहुत configurable है, और iTerm2 में जो theme सेट करता था OneDark(base16), वह default में शामिल है
शुरुआत में हुई एकमात्र असुविधा यह थी कि Lua configuration में
cmd-leftऔरcmd-rightconfiguration खुद जोड़नी पड़ी, काश यह default values में होतीWez Rust systems programming की book भी निकाल रहे हैं
https://leanpub.com/sysprog
अच्छा लेख है, इसलिए WezTerm एक बार try कर सकता हूँ, लेकिन हाल ही में अभी-अभी Kitty पर shift हुआ हूँ, इसलिए बहुत बार switch नहीं करना चाहता
हालांकि Kitty से जुड़ा correction चाहिए। Kitty YAML या TOML नहीं इस्तेमाल करता, बल्कि अपना simple configuration DSL इस्तेमाल करता है, और उसके अलावा Python से पूरी तरह scriptable है