- lsix,
ls gibi geçerli dizindeki veya belirtilen dosya listesindeki görüntüleri terminal içinde küçük resimler olarak gösteren bir Bash betiğidir; çıktıda Sixel grafikleri kullanır
- ImageMagick kullanarak birçok görüntü biçimini işler; komut satırında GIF veya birden çok görüntü içeren dosyalar belirtilirse kareleri açıp montaj olarak gösterir
- Terminalin Sixel desteğini, ön plan ve arka plan rengini, renk yazmaçlarının genişletilebilir olup olmadığını ve pencere genişliğini algılayarak küçük resim kalitesini ve yerleşimini ayarlar
- Kurulum için
lsix dosyasını PATH içindeki bir konuma koyup ImageMagick’i hazır etmek yeterlidir; macOS’te brew install lsix ile ImageMagick de birlikte kurulabilir
- XTerm’de Sixel modu varsayılan olarak kapalıdır ve bazı terminaller uyumlu değildir; bu yüzden gerçek kullanım öncesinde terminalin Sixel uyumlu olup olmadığı kontrol edilmelidir
ls gibi kullanılan terminal görüntü listeleme aracı
- lsix, görüntüler için
lse yakın bir araçtır; terminalde dosya küçük resimlerini satır içinde gösterir
- Temel kullanım biçimi basittir
- Yalnızca
lsix yazarsanız geçerli çalışma dizinindeki görüntüleri gösterir
lsix [ FILES ... ] biçiminde dosya adları belirtebilirsiniz
- Kabuk joker karakterleri kullanılabildiği için
lsix *jpg * png gibi çalıştırmak mümkündür
- Çıktıda Sixel grafikleri kullanılır
ImageMagick tabanlı biçim işleme ve gösterim yöntemi
- ImageMagick kullandığı için çok çeşitli görüntü biçimlerini destekler
- PDF gibi render edilmesi yavaş olabilecek biçimler açıkça istenmedikçe gösterilmez
- Belirli bir biçimi zorla listelemek için dosya adını doğrudan belirtin veya
*.pdf gibi joker karakter kullanın
- Komut satırında GIF veya birden çok görüntü içeren bir dosya belirtilirse tüm kareler açılıp montaj olarak gösterilir
- GIF’ler bazı karelerde yalnızca önceki kareye göre değişen pikselleri saklayabilir
- Bitmap olmayan grafikler de çalışabilir
- Örn:
.svg, .eps, .pdf, .xcf
Terminal ortamını algılama özellikleri
- lsix, kontrol dizileri kullanarak terminalin Sixel grafiklerini satır içinde gösterip gösteremediğini algılar
- PNG ve SVG’nin alfa kanalları terminal arka plan rengine göre işlenir
- lsix, terminal kaçış dizileriyle ön plan ve arka plan rengini öğrenmeye çalışır
- Ön plan rengi metin dolgu rengi için kullanılır
- xterm gibi renk yazmacı sayısını artırabilen terminalleri algılarsa görüntü kalitesini yükseltmek için bunu otomatik olarak genişletir
- dtterm WindowOps destekleyen terminallerde pencere genişliğine göre bir satırdaki karo sayısını ayarlar
- Dizinde çok sayıda görüntü olduğunda tüm montajın oluşturulmasını bekletmeyecek şekilde işlem yapar
- Görüntü sayısı 21’den fazlaysa satır satır gösterir
- Dosya adı çok uzunsa ImageMagick
montagee geçirmeden önce metni satırlara böler
- lsix olmadan
montage kullanılırsa uzun dosya adları birbirinin üzerine binebilir
- Unicode dosya adları, kullanılan yazı tipinde glif varsa çalışır
Kurulum ve yapılandırma yöntemi
- Kurulum için
lsix dosyasını /usr/local/bin gibi bir yola koyup çalıştırmak yeterlidir
- lsix bir Bash kabuk betiğidir
- Gerekli tek yazılım ImageMagick’tir
- Örn:
apt-get install imagemagick
- macOS kullanıcıları
brew install lsix kullanabilir
- Gerekirse ImageMagick de birlikte kurulur
- Mevcut tasarım çok basittir
- Komut satırı bayrağı yok
- Yapılandırma dosyası yok
- Ayar düğmesi yok
- Karo genişliği, yazı tipi ailesi, punto boyutu gibi değerler dosyanın üst kısmındaki değişkenler düzenlenerek değiştirilebilir
- Kurulu yazı tiplerinin listesi
convert -list font ile görülebilir
Sixel destekli terminal gereksinimi
- Terminalin Sixel grafiklerini desteklemesi gerekir
- Tek bir görüntüyü Sixel olarak çıktılayıp terminali test edebilirsiniz
convert foo.jpg -geometry 800x480 sixel:-
- Geliştirme için xterm’in vt340 emülasyon modu kullanılmıştır
- XTerm’de Sixel modu varsayılan olarak açık değildir
- Çalıştırırken
xterm -ti vt340 kullanılabilir
- Ya da
.Xresources dosyasına xterm*decTerminalID : vt340 ekleyip xrdb -merge .Xresources çalıştırılabilir
- Fedora gibi bazı dağıtımlar
xtermi Sixel desteği olmadan derleyebilir
- Bu durumda
foot veya mlterm gibi alternatif terminaller denenebilir
Uyumlu ve uyumsuz terminaller
- Sixel uyumlu olduğu doğrulanan veya bildirilenler
- XTerm, MLterm, foot, Wezterm, Contour, Apple MacOS için iTerm2, Yaft test edilmiştir
- Konsole, yakuake, Microsoft Windows için WSLtty, Cygwin için MinTTY, özel derlenmiş VTE, sixel-tmux, ttyd bildirilmiştir
- Sixel uyumlu olmayan terminaller
- MacOS Terminal, kitty
- Standart libvte tabanlı terminaller
- gnome-terminal
- terminator
- lxterm
- Alacritty, yama uygulanırsa çalışabilir
Bilinen hatalar ve kısıtlar
- XTerm’in reverse video modu olan
xterm -rv, ön plan ve arka plan renklerini açıkça belirtmekle aynı değildir
- Açık belirtimi algılamanın yolu vardır; ancak reverseVideo kaynağı algılanamadığı için arka plan rengi yanlış olabilir
- XTerm’in ekran genişliği şu anda 1000px ile sınırlıdır
- xterm 1000x1000’den büyük görüntüleri işleyebilir hale geldiğinde bu sınır kaldırılacaktır
- Son test XTerm(344) temel alınarak yapılmıştır
@ ile başlayan dosya adları ImageMagick’te özel olarak ele alınır
lsix ./@foo.png gibi başına dizin eklemek gerekir
- Bu lsix değil, ImageMagick hatasıdır
- Dosya adı olarak boş dize
"" belirtilirse ImageMagick takılır
- ImageMagick hatası veya hatalı davranış gibi görünmektedir
- Uzun dosya adlarını satırlara bölme çalışır ama akıllı değildir
- Boşluk, tire, alt çizgi, nokta temelinde satır bölme henüz uygulanmamıştır
- Komut satırında dizin belirtilirse kullanıcı o dizine
cd yapmış gibi işlenir
- Özyinelemeli işleme zor değildir; ancak basit bir betiğe komut satırı bayrakları eklemekten kaçınılmaktadır
lsix foo.avi çalıştırmak sorunlara yol açabilir
Sixel standardı ve uygulama sınırlamaları
- Sixel standardında grafik ekran boyutunu sorgulamanın bir yolu yok gibi görünmektedir
- VT340 belgelerine göre programın render hedef aygıtının çözünürlüğünü önceden biliyor olması gerekir
- XTerm 344, bu sorunu çözen
CSI ? Pi ; Pa ; Pv S kontrol dizisini eklemiştir
mlterm gibi bazı terminaller bunu henüz uygulamamıştır
- dtterm WindowOps uzantısıyla pencere boyutunu okuma alternatifi vardır
- Sixel grafik ekranının geometrisi ile pencere boyutu mutlaka aynı olmadığı için bu tam bir çözüm değildir
- Örneğin xterm, pencere daha büyük olsa bile grafik geometrisini 1000x1000 ile sınırlar
- İki yöntem de başarısız olursa lsix VT340 ortamı varsayar
- Çözünürlük 800x480
- Bir satıra yalnızca 6 karo sığacağını kabul eder
- Sixel standardı kullanılabilir renk yazmacı sayısını sorgulamanın bir yolunu da sunmaz
- lsix xterm uzantısını kullanır
- Terminal yanıt vermezse özgün VT340 varsayılır ve yalnızca 16 renk yazmacı kullanılır
libsixel kullanmama nedeni
- libsixel, optimize edilmiş Sixel grafik komutları çıktılayan bir projedir
- lsix, libsixel yerine Bash ve ImageMagick kullanır
- Bash ve ImageMagick’in yaygın bulunması sayesinde her yerde kolayca çalışmasını hedefleyen bir tercihtir
- Betiği basit tutarak kullanıcıların kolayca değiştirmesine ve genişletmesine olanak verir
- ImageMagick, libsixel’in
img2sixel aracının kullandığı stb_imageden daha fazla giriş biçimini okuyabilir
- Örn: xpm, svg, 16-bit png, sixel dosyaları
- ImageMagick girdiyi okuyup Sixel çıktısını doğrudan yazabilir
- libsixel daha hızlı olabilir; ancak basit bir dizin listesi gösterimi için ImageMagick de yeterince hızlıdır
Kaynaklar
1 yorum
Hacker News yorumları
Benim gibi tmux olmadan terminal kullanmakta zorlanıyorsanız, deneysel Sixel dalı yaklaşık 10 ay önce nihayet birleştirildi
Artık ana hat tmux’u
--enable-sixelile derleyip tmux içindelsixgibi araçları kullanabilirsinizSevdiğiniz terminalin ya da terminal çoklayıcının Sixel’i destekleyip desteklemediğini merak ediyorsanız "Are We Sixel Yet" sitesine bakabilirsiniz
https://github.com/tmux/tmux/commit/dfbc6b1888c110cf0ade66f2...
https://www.arewesixelyet.com
İş akışınızda değişiklik yapmak istiyorsanız, varsayılan hâliyle tmux’tan çok daha iyi bir deneyim olduğunu düşünüyorum
Normalde harici eklentiler ve karmaşık yapılandırma betikleriyle ekleyeceğiniz özellikler varsayılan olarak geliyor; kararlılık ve performans da çok daha iyiydi
https://zellij.dev/
Neden iş akışında vazgeçilmez bir araç hâline geldiğini, benim işlerim için de neden vazgeçilmez olabileceğini açıklayabilir misiniz?
Mevcut döşeme düzenine kıyasla tmux’a yığın tabanlı bir pencere yöneticisi getirmek gibi bir değişim mi bu? Yoksa sadece terminal grafikleri mi iyileşiyor? Tamamen yanlış mı anladım?
Eğer sadece grafiklerin iyileşmesiyse, tmux’un bunu neden desteklemesi gerektiğini pek anlamıyorum; Gnome Terminal gibi terminal emülatörü tarafı daha önemli gibi geliyor. İkisi de gerekebilir ama tmux’un sadece geçirmesi yeterli diye düşünmüştüm
brewile kurunca Sixel etkin oluyor mu, bilen var mı?Bu depoda en sevdiğim özellik
README.md.ddiziniOldukça iyi bir fikir; bence
.mdkısmı olmasa da olurO zaman sadece
cat READMEyapmak bile görüntüleri olduğu gibi gösterebilir"\e[c"kullanarak Sixel desteğini otomatik algılıyorhttps://github.com/hackerb9/lsix/blob/3a431793a747df3f934051...
"\e[c", "send device attributes" anlamına geliyorhttps://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-F...
Fikir harika ama PuTTY/KiTTY üzerinde çalışmıyor
$ lsixçalıştırınca terminalin Sixel grafik desteği bildirmediğini söyleyen bir hata veriyor;xterm -ti vt340gibi Sixel destekli bir terminal kullanmayı ya da terminal geliştiricisinden destek istemeyi öneriyorTek bir görüntüyü
convert foo.jpg -geometry 800x480 sixel:-ile test edebileceğinizi, gerçekten destekleyen bir terminalse hatayı http://github.com/hackerb9/lsix/issues adresine bildirmenizi söylüyorAygıt öznitelik kodu
^[[?6colarak görünüyorYazık. Oldukça hoş olurdu. Sixel destekleyen açık kaynak bir Windows terminali var mı? Çoğu Cygwin ya da WSL tarafında görünüyor; saf Windows için pek görünmüyor
Çapraz platform ve Sixel grafiklerini destekliyor
https://github.com/wez/wezterm
Benzer çizgide timg de var: https://github.com/hzeller/timg
MacOS için iTerm2’de benzer bir özellik yerleşik olarak var ve sunucu tarafındaki yük daha düşük
Sunucuda görüntüyü birçok görüntü kitaplığıyla Sixel’e render etmek yerine, tüm görüntüyü base64 olarak kodlayıp istemciye gönderiyor; istemci de görüntü biçimini belirleyip terminalde yerel olarak render ediyor
https://iterm2.com/documentation-images.html
Linux’ta değiştirilmemiş
imgcatbetiğini olduğu gibi kullanıyorumImageMagick ile dönüştürmekten elbette çok daha hızlı; yine de
lsixi debindizinine ekledimGüvenilmeyen dizinlerde çalıştırırken dikkatli olmak gerekiyor
Özellikle PDF gibi görüntü ayrıştıran şeyler, diğer araçlarda olduğu gibi riskli olabilir; ImageMagick kullanırken daha da dikkatli olmak gerekir
Güvenilmeyen indirmeler klasörünü Gnome Files ile açtığımda içindeki görüntüleri gösteriyor ve dolayısıyla ayrıştırıyorsa, bu önemsemem gereken bir güvenlik meselesi mi?
PDF içindeki JavaScript gibi şeylerin sorun olabileceğini düşünüyordum ama basit önizlemenin bile tehlikeli olabileceğini düşünmemiştim
Kullandığınız terminalin Sixel grafikleri desteklemesi gerekiyor
https://github.com/dheera/python-termgraphics
Bu kitaplığı değiştirip alternatif yol olarak desteklemesini sağlamak ilginç olabilir
TERM=xterm256-colorgibi değerler ayarlayan her şey uyumlu olmalı… değil mi? öksürük gnome-terminal öksürükfzf, 0.44.0’dan itibaren önizleme penceresinde deneysel Sixel görüntü desteği sunuyor
Windows’ta kullanılamıyor
https://github.com/junegunn/fzf/releases/tag/0.44.0
fzf --preview='fzf-preview.sh {}'fzf --preview 'convert {} -geometry 800x480 sixel:-'kullanabilirsinizBunun için de ImageMagick kurulu olması gerekiyor