12.03.2023

oh-my-posh yeni sürüm

Bu oh-my-posh'un derdi ne? Sürekli değişen bir yapı. Önce powershell gallery ile dağıtım, sonra winget ile, sonra Microsoft Store ile, sonra tekrar winget ile. Daha önce powershell terminali özelleştirmek ile ilgili yazıdğım yazıları güncellemektense yeni durumu yazmak istedim.

En son sürüm winget'te. Hatta winget'te de iki farklı sürüm var, bugün itibariyle.

PS> winget

Name       Id                        Version Match                Source

------------------------------------------------------------------------------------------

oh-my-posh XP8K0HKJFRXGCK            Unknown                      msstore

Oh My Posh JanDeDobbeleer.OhMyPosh   14.12.1 Moniker: oh-my-posh  winget

Sanıyorum en güncel sürüm, alttaki satırda görünen winget kaynağından gelen sürüm numarası 14.12.1 olan. Artık powershell modülü olarak gelmediğinden profil dosyasında Install-Module gibi bir işleme gerek yok. Artık $env:LOCALAPPDATA klasörünün altında kuruluyor ve ana bileşen oh-my-posh.exe adında bir exe dosyası. Bir kez oh-my-posh.exe2yi çalıştırdıktan sonra hala Get-PoshThemes komutunu çalıştırarak ya da ohmyposh.dev/docs/themes sitesinden hangi seçeneklerimiz var görebiliyoruz. Hatta Get-PoshThemes'i çalıştırdıktan sonra artık nasıl promptumuzu düzenlememiz gerektiği de belirtiliyor. Profil dosyamızı istediğimiz metin editörü ile (Notepad, VS Code gibi) ile açıp içine şöyle bir satır eklememiz yeterli:

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/bubbles.omp.json" | Invoke-Expression

Bir sürü tema ve segment var. Segment'ler, prompt'ta gözüken bilgi bölümleri; bulunduğumuz klasör, saat, tarih gibi. Diyelim bir temayı seçtik ama küçük bazı değişiklikler yapmak istiyoruz. Bu durumda $env:POSH_THEMES_PATH/ klasöründeki *.omp.json dosyasının bir kopyasını alarak bu kopyayı düzenleyerek devam edebiliriz. Bu dosyaların yapızı şu şekilde:

{
    "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
    "blocks": [

        {
            "alignment": "left",
            "segments": [
                {
                ...
                } ,
                ...
             ],
             "type": "prompt"
        },
        {
            "alignment": "right",
            "segments": [
                {
                ...
                } ,
                ...
            ],
            "type": "prompt
        }
    ],
    "final_space": true,
    "version": 2
}
"blocks" bölümünün içine birden fazla virgülle ayrılmış ve küme parantezi içine alınmış alt block öğeleri gelebiliyor. Bu block öğelerini terminalin sağına veya soluna hizalayabiliyoruz. Her block öğesinin içinde birden fazla segment olabiliyor. Segmentler de virgülle ayrılmış ve küme parantezi içine alınmış olacak. Segment'lerin listesi ve kullanımı ile ilgili bütün ayrıntılar için yine ohmyposh.dev sitesinde segments bölüne bakabiliriz. Örneğin içinde bulunulan klasörü yazmak için path segmentine bakalım. Her segment'in olduğu gibi path'in de bir style verisi var. Sadece klasör ağacındaki son altklasörün adını yazmak için "folder", tam yolu yazmak için "full" kullanılabilir. Eğer seçtiğimiz temanın segmentlerini yeterli bulmadıysak veya konumları hoşumuza gitmediyse yerlerini bu kurallara göre değiştirebiliriz.

Her temanın segmentlerinin nasıl görüntüleneceğini belirleyen birkaç küçük özellik var; yazı rengi (foreground), fon rengi (background), öncü (leading_diamond) ve artçı (trailing_diamon) karakterler gibi. Öncü ve artçı karakterler köşeli veya yumuşak hatlara sahip açılış ve kapanış öğeleri olabilir.


Hiç yorum yok: