Son birkaç yıldır iş için günlük sürücüm olarak Mac kullanıyorum. Her ne kadar MacOS’ta sevdiğim özel bir şey olmasa da (aslında sevdiğim çok şey var) yapma gibi), dürüst olmak gerekirse beni ona bağlı tutan terminal ve altta yatan Unix tabanlı işletim sistemiydi. Homebrew ile komut satırı araçları sadece çalış. Python ve Node geliştirme ortamları sadece çalış. Ve iTerm2’yi oh-my-zsh ile kullanmak şimdiye kadar yaşadığım en iyi terminal deneyimi. Çoğu zaman Mac donanımının güvenilir ve yapılandırması kolay bir *Nix işletim sistemine sahip olması için para ödediğimi hissediyorum.
Ancak son zamanlarda Mac ekosisteminden çıkıp Windows 10’u X1 Carbon’umda günlük makinem olarak kullanmaya başlamayı gerçekten istiyordum. Linux için Windows Alt Sistemi (WSL) ile artık Windows 10 makinemde CLI acemiliğim için kullanabileceğim “yerel” bir Ubuntu komut satırına sahip olmak mümkün. Ancak beni engelleyen tek şey güzel bir terminal emülatörünün olmamasıydı (kuşkusuz sığım ve güzel şeyleri severim).
Bu işi kesmeyecekti:
Uzun uğraşlardan sonra, Windows’ta yaşayabileceğim en rahat terminal deneyimi olduğunu düşündüğüm şeye ulaştım. Sekmeleri, bölmeleri ve fare modunu destekler ve önyükleme için hoş bir renk şemasına sahiptir:
Bu yazıda, onu nasıl çalıştırdığımı ve yapılandırdığımı ve denediğim diğer seçeneklerden bazılarını hızlı bir şekilde açıklayacağım.
Gerçekten Windows’ta iTerm2’nin eşdeğerini istedim. WSL’yi (Cygwin’i değil) kullanmak istedim ve en azından ihtiyacım vardı:
- Güzel renkler ve yazı tipleri
- Sekmeler (pazarlık edilemez)
- Kaydırma ve Vim/Tmux için çalışan fare desteği
- Tmux desteği ve otomatik yeniden boyutlandırma
- Aklı başında kopyala/yapıştır
Sanırım bulabildiğim her büyük Windows terminal uygulamasını denedim. Her birinin kendine göre dezavantajları vardı ve sonunda pes ettim. Denediklerimden bazıları:
- Komutan
- Artıları: Sekme desteği. Taşınabilir. Cmd ve PS ile güzel çalışır
- Eksileri: Tmux’ta fare desteği yoktu; Windows’u yeniden boyutlandırmak çok eğlenceliydi
- ConEmu
- Cmder ile aynı – varsayılan olarak o kadar güzel değil
- Çok güzel
- Artıları: Pencereyi yeniden boyutlandırma ve fare harika çalıştı
- Eksileri: Sekme yok!
- Naneli
- Wsltty ile aynı, yalnızca başlangıçta yapılandırmak daha zor
- Hiper
- Artıları: Çevrimiçi ekran görüntüleri güzel görünmesini sağladı. Görünüşe göre güzel eklentiler var
- Eksileri: Fena halde buggy. Hiçbir zaman düzgün çalışamadım. NPM’ye dayalı eklentiler her zaman başarısız oldu
- Babun
- Artıları: Kutunun dışında birçok özellik
- Eksileri: WSL’ye değil Cygwin’e dayalı
- Xshell
- Artıları: ??
- Eksileri: WSL Bash’i desteklemiyordu. Ücretsiz değil
- MobaXTerm
- Artıları: Çok fazla. Uzak bağlantıları yönetmek için bu uygulamayı seviyorum (örn. RDP)
- Eksileri: Yerel mermiler için en iyisi değil. Fare/tmux desteği çalışmıyor
Bana en yakın olanı ve bir süredir kullandığım Cmder’dı:
Maalesef Tmux’u kullanmaya başladığımda sorun olmaya başladı. Fare modunu hiçbir zaman çalıştıramadım (bölmeleri kaydırmak veya seçmek) ve pencereleri yeniden boyutlandırmak sorunluydu. Bunun gibi ekranlarla çok karşılaşacağım:
Benim için kesmeyeceğim (yine de Windows cmd.exe’yi çalıştırmam gerektiğinde Cmder’ı düzenli olarak kullanıyorum)
Araştırmamda ve birden fazla denememde fark ettiğim şey tam da oradaydı değildi iyi bir Windows terminal emülatörü. Vazgeçmek üzereyken Reddit’te XFCE’nin WSL Bash üzerinde çalışmasını sağlayan birisi hakkında bir yazı gördüm. Bu, başarmak istediğim şey için çok fazlaydı, ancak yazıyı okurken Windows’ta çalışan bir X Sunucum olsaydı, GUI Linux terminal emülatörlerini Windows’ta “yerel olarak” kullanabileceğimi öğrendim/fark ettim! Bu bir sürü olasılığın önünü açtı ve en sevdiğim Linux terminallerinden biri olan Terminatör artık bir olasılıktı!
X Sunucusunun Kurulumu
Bir X Window uygulamasını çalıştırmak için Windows 10 makinemde bir X Sunucusunun kurulu ve çalışır durumda olması gerekiyordu. Araştırmadan sonra en popüler iki seçeneğin şunlar olduğu görüldü:
Daha aktif bir şekilde bakımı yapılıyormuş gibi göründüğü için VcXSrv’yi tercih ettim, ancak ikisini de denedim ve ikisi de aynı şekilde çalışıyor.
Kurulumdan sonra VcXsrv, aşağıdaki komut aracılığıyla sunucuyu çoklu pencere modunda başlatmak için bir masaüstü kısayolu oluşturur:
|
|
Bir görev çubuğu simgesi çalıştığını gösterir ve netstat’a bakarak bunu doğrulayabiliriz:
|
|
VcXsrv’nin tüm arayüzleri dinlediğini ve özel ağlar için genel bir güvenlik duvarı istisnası talep ettiğini unutmamak önemlidir. AFAIK, onu yalnızca localhost’tan gelen bağlantıları dinlemeye/kabul etmeye zorlamanın bir yolu yok, bu yüzden güvenlik duvarı istisna isteğine izin vermedim ve yalnızca gelen trafiğe izin verecek şekilde özel bir kural yapılandırdım 127.0.0.1
Terminatörü Yapılandırma
VcXsrv yüklendikten ve erişime izin verecek şekilde yapılandırıldıktan sonra 127.0.0.1
bir sonraki adım Terminator’ı WSL Bash’e kurmaktı:
|
|
Sonlandırıcıyı kullanmak istemediysem, Gnome Terminali (Terminatörün temelini oluşturduğu), Urxvt veya xterm dahil olmak üzere başka herhangi bir terminal emülatörünün çalışması gerekir.
Kurulduktan sonra geriye kalan tek şey, bağlanılacak X Display’i belirterek onu başlatmayı denemekti (:0
)
|
|
Ve güzel bir Terminatör penceresi açıldı 🙂
Zsh’yi yükleme
Yaptığım bir sonraki adım Zsh’yi oh-my-zsh ile kurmaktı. Kurulum basittir:
|
|
“Ys” temasını ayarladım .zshrc
Bash’i WSL’de kullanmanın tek “anlaşılan” yanı, her zaman Zsh yerine Bash’i çalıştırmasıdır. Bunu aşmak için bunu yazımın sonuna ekliyorum .bashrc
hangisini başlatacak zsh
bunun yerine başlatıldığında:
|
|
Terminatör Renk Şeması
Yapmayı seçtiğim bir sonraki şey, varsayılan Terminatör renk şemasını Solarized Dark olarak değiştirmekti. Bu IMO’yu yapmanın en kolay yolu harika düğüm paketi base16-builder’ı kullanmaktır
|
|
Dircolors
Şu ana kadar iyi görünüyordu ama direkt renkler hâlâ berbattı:
Github’da Solarized dircolors buldum ve bunları şu adrese indirdim: .dir_colors
|
|
Sonra son olarak şunu ekledim .zshrc
Başlangıçta Solarized dircolors’u değerlendirmek için:
|
|
Sonunda beğenime yetecek kadar güzel bir terminale sahip oldum. Hala iTerm2 yok, ancak IMO’ya oldukça yakın
Son engel, önce bir Bash penceresi açıp ardından yazmaya gerek kalmadan Terminatör’ü doğrudan başlatmanın bir yolunu bulmaktı. DISPLAY=:0 terminator &
Komut satırından bash’ı şununla başlatabilirim: -c
parametre ve işe yarayacaktır:
|
|
Ancak bu yine de bir komut penceresi açmamı gerektiriyordu. StackOverflow üzerinde birçok deneme yanılma ve araştırma yaptıktan sonra, VBS’deki WShell Nesnesini kullanarak gizli bir komut penceresinin nasıl başlatılacağını buldum. Kullandığım son komut dosyası burada:
Bu komut dosyasıyla, bir Masaüstü kısayolu oluşturabildim. wscript.exe
ve aşağıdaki komutla çalıştırın:
|
|
Son adım, kısayol için güzel bir Terminatör Simgesi dosyası bulmak ve onu hızlı başlatmak için görev çubuğuma eklemekti.
Son bir not “Başlangıç” seçeneğidir. Bu yol Windows tarafından “bilinmediği” için Termiator’ın Linux ana dizinimde bu yöntemle başlatılması imkansızdır. Bunu aşmak için şunu ekledim .zshrc
bu yüzden başlangıçta ana dizinime CD’ler:
|
|
Sahte, ama işe yarıyor.
Bir süredir WSL için Terminator kullanıyorum ve onu seviyorum. Şu ana kadar Windows’ta edinebildiğim en iyi terminal deneyimi. VcXsrv’yi çalıştırdığım sürece onu başlatma konusunda hiçbir sorun yaşamadım ve çok sorunsuz çalışıyor. Terminatör oldukça yapılandırılabilir ve bazı klavye kısayollarını beğenime göre yapılandırıp değiştirdim. Genel olarak bölmelere/bölmelere/sekmelere sahip olmayı seviyorum ve WSL aracılığıyla birden fazla kutuya SSH uyguladığımda bu harika. Artık iş akışım genellikle Windows’umda VS Code çalıştırıyor ve birden fazla Terminatör bölmesi açık /mnt/c/projects/whatever
ve laboratuvarımda SSH’ye dahil olmak. Onu seviyorum.
Umarım bu birine yardımcı olur! Farklı/daha iyi bir çözümünüz varsa bana bildirin!
-ropnop