8 poin oleh GN⁺ 2025-06-25 | 2 komentar | Bagikan ke WhatsApp
  • Starship adalah proyek prompt open source yang ringan, berperforma tinggi, dan fleksibel untuk digunakan di berbagai lingkungan shell
  • Menyediakan kompatibilitas luas dengan mendukung sebagian besar shell utama seperti Bash, Zsh, Fish, Powershell, dan Tcsh
  • Dapat dikonfigurasi dan diterapkan dengan mudah hanya dengan menambahkan skrip inisialisasi untuk masing-masing shell
  • Ditulis dengan Rust untuk menjamin kecepatan dan keamanan, serta didistribusikan sebagai satu binary tunggal
  • Dapat dikustomisasi hingga ke detail terkecil
  • Mendukung konfigurasi lingkungan yang konsisten di berbagai platform seperti Android, BSD, Linux, macOS, dan Windows, sehingga meningkatkan produktivitas dan kemudahan penggunaan

Proyek open source Starship

  • Starship adalah alat prompt yang mendukung performa dan kustomisasi sekaligus, sehingga bisa digunakan di berbagai sistem operasi dan shell
  • Dibandingkan prompt tradisional yang berat, Starship menonjol dengan respons yang cepat dan penggunaan resource yang rendah, serta membantu meningkatkan produktivitas pengembang berkat tingkat kustomisasi yang tinggi

Cara konfigurasi di setiap lingkungan shell

  • Bash:
    • Tambahkan kode eval "$(starship init bash)" di akhir file ~/.bashrc
  • Fish:
    • Tambahkan starship init fish | source di akhir file ~/.config/fish/config.fish
  • Zsh:
    • Tambahkan kode eval "$(starship init zsh)" di akhir file ~/.zshrc
  • Powershell:
    • Tambahkan Invoke-Expression (&starship init powershell) ke file Microsoft.PowerShell_profile.ps1
    • Lokasi file profil PowerShell dapat diperiksa melalui variabel $PROFILE
  • Ion:
    • Masukkan kode eval $(starship init ion) ke file ~/.config/ion/initrc
  • Elvish:
    • Hanya mendukung versi v0.18 ke atas
    • Tambahkan kode eval (starship init elvish) ke file ~/.elvish/rc.elv
  • Tcsh:
    • Masukkan kode eval \starship init tcsh`` ke file ~/.tcshrc
  • Nushell:
    • Hanya mendukung v0.96 ke atas, dan metode konfigurasi dapat berubah di masa mendatang
    • Jalur file konfigurasi dapat diperiksa dengan perintah $nu.config-path
    • Terapkan pada jalur tersebut dengan kode starship init nu | save -f ...
  • Xonsh:
    • Masukkan kode execx($(starship init xonsh)) di akhir file ~/.xonshrc
  • Cmd (memerlukan Clink):
    • Memerlukan Clink v1.2.30 atau lebih baru
    • Buat file starship.lua lalu simpan di direktori skrip Clink
    • Di dalamnya, tambahkan kode load(io.popen('starship init cmd'):read("*a"))()

2 komentar

 
tujuc 2025-06-25

Rasanya segar juga melihat sesuatu yang sudah saya pakai dengan baik selama bertahun-tahun ini muncul di sini :)
Saya sudah memakainya sejak masih tersedia sebagai tema Zsh... hahaha

 
GN⁺ 2025-06-25
Komentar Hacker News
  • Saya pengguna yang suka prompt maksimalis, dan sering memakai Shell Bling Ubuntu berbasis Starship saat menyiapkan mesin development
    Namun, gaya seperti ini memang tidak cocok untuk semua orang
    Jika hanya ingin menambahkan informasi yang paling padat, saya menyarankan prompt hanya menampilkan waktu saat prompt muncul dan durasi eksekusi perintah terakhir
    Dengan dua informasi ini saja, kita bisa dengan mudah memahami apa yang terjadi dan kapan, dan ini sangat membantu untuk debugging atau pencatatan di kemudian hari
    Cara ini adalah tip yang saya dapat dari buku Michael W. Lucas, 『Networking for System Administrators』, dan saya juga sering merekomendasikan buku itu kepada developer yang ingin mempelajari dasar-dasar jaringan
    Kalau ingin dapat poin nerd tambahan, tampilkan waktu dalam detik berdasarkan UNIX epoch
    Keuntungannya, perhitungan delta waktu jadi sangat mudah
    Lihat repo Shell Bling Ubuntu

    • Di nushell, informasi seperti ini tersedia secara bawaan
      Di riwayat eksekusi (history), kita bisa melihat detail seperti timestamp mulai perintah, waktu eksekusi, direktori saat ini, status keluar, dan lain-lain
      Sangat praktis karena bukan hanya menunjukkan selisih waktu antar-eksekusi, tetapi juga langsung menampilkan durasi eksekusi perintah itu sendiri

    • Saya hampir tidak pernah melakukan kustomisasi prompt
      Kalau memakai emacs, semua informasi yang saya inginkan sudah bisa dilihat di editor
      Saya hanya menyiapkan Starship saat harus memperlihatkan sesuatu ke orang lain, misalnya saat pair programming, dan saya membuka aplikasi terminal terpisah supaya tidak perlu memperlihatkan setup pribadi saya

    • Exit code dari perintah sebelumnya juga sangat berguna, dengan alasan yang mirip seperti di atas

    • Menampilkan waktu saat ini dalam format yang mudah dibaca manusia juga cukup membantu
      Dan jika status keluar perintah sebelumnya bukan 0 (gagal), akan membantu debugging kalau itu juga ditampilkan

    • Bagi saya, informasi direktori saat ini saja sudah cukup
      Cukup ubah warna prompt berdasarkan status sukses/gagal dari perintah terakhir
      Informasi tambahan bisa dicek terpisah saat memang diperlukan

  • Saya jadi penasaran seperti apa distribusi usia pengguna Starship
    Saya sendiri makin lama makin tidak terlalu tertarik dengan kustomisasi prompt
    Saya sampai pada kesimpulan bahwa, seberapa pun rumit prompt dihias, 90% informasi yang ditampilkan tidak diperlukan selama 90% waktu
    Terlalu banyak informasi justru terasa seperti noise visual, sehingga otak akhirnya mengabaikannya dan kita bahkan lupa bahwa informasi itu ada
    Informasi yang benar-benar penting juga punya keterbatasan jika hanya ditaruh di prompt; misalnya, hanya melihat ada perubahan pada branch Git tidak memberi tahu file mana yang berubah, jadi tetap perlu menjalankan perintah tambahan

    • Saya punya pengalaman lebih dari 20 tahun sebagai developer
      Saya merasa sangat terbantu dengan adanya informasi Git di prompt
      Memang tidak sampai memberi detail lengkap, tetapi setidaknya mengingatkan kalau ada perubahan yang belum di-commit atau stash yang terlupa
      Starship terlihat menarik sehingga saya langsung mencobanya, tetapi bagian seperti penampilan versi tool terasa terlalu berisik, dan akhirnya saya uninstall
      Opsi seperti timing perintah atau status sukses/gagal memang bagus, tetapi hasilnya tidak sebanding dengan repotnya mengelola konfigurasi kustom yang kompleks

    • Dari sudut pandang senior dengan pengalaman lebih dari 25 tahun di industri, saya cenderung tidak banyak memakai tool modern yang mencolok
      Dulu saya memakai PS1 yang sangat sederhana, seperti <pre><code>export PS1="[\033[1;32m][\t \u@\h \w]\$[\033[0m]"</code></pre>, yang hanya menampilkan waktu, akun saya, host yang sedang diakses, dan path saat ini
      Saya sudah beberapa kali mencoba prompt lain yang lebih canggih, tetapi hampir tidak membantu
      Sekarang justru saya sudah beberapa tahun nyaman memakai Starship
      Saya kustomisasi agar hanya menampilkan informasi minimum yang saya butuhkan, dan hasilnya sangat cepat serta nyaman dipakai

    • Salah satu bagian paling berguna dari kustomisasi prompt saya adalah tampilan exit status dari perintah sebelumnya
      Kadang ada perintah yang gagal tanpa pesan error apa pun, jadi indikator gagal seperti ini sangat kuat sebagai sinyal
      Namun, supaya tidak jadi noise, saya hanya menampilkannya saat gagal
      Contoh: <pre><code>» true » false (last command returned 1.)</code></pre>
      Jika proses berakhir karena signal, itu juga saya tampilkan dalam bentuk terjemahan seperti "last command exited on SIGSEGV"
      Sebaliknya, ini juga berguna saat ada program yang mengeluarkan pesan error tetapi tetap selesai dengan kode sukses

    • Sebagai pengguna "very senior" dengan pengalaman UNIX puluhan tahun, saya suka mode minimal Starship karena rapi
      Dulu saya sempat bersusah payah bertahun-tahun dengan berbagai setup zsh, tetapi sekarang hampir tidak ada repotnya
      Kalau ada yang menduga semua pengguna Starship adalah generasi baru yang menjejalkan emoji dari JavaScript, saya ingin bilang bahwa pengguna seperti saya juga ada

    • Kalau dilihat lebih luas, ini fenomena yang berlaku untuk seluruh lingkungan komputasi
      Waktu muda, saya sibuk membuat OS sendiri dengan Gentoo, mengutak-atik flag optimasi CPU, window manager, alias dan fungsi di bashrc, sampai prompt
      Pekerjaan optimasi seperti ini sendiri sebenarnya pengalaman yang cukup membantu dalam proses berkembang
      Kalau dianalogikan dengan pertukangan kayu, saat masih pemula kita menghabiskan sebagian besar waktu membuat dan menyempurnakan tool atau trik-trik kecil, tetapi pada suatu titik fokus bergeser ke pekerjaan nyata
      Saya masih suka Linux sampai sekarang, tetapi di tengah kesibukan hidup, saya memprioritaskan “pekerjaan” daripada mengejar efisiensi atau kesempurnaan, jadi saya cukup memakai lingkungan default Debian dan KDE

  • Saya tidak suka dekorasi yang tidak perlu atau informasi berlebihan, jadi saya lebih suka lingkungan terminal yang minimalis
    Namun, Starship cukup bagus dalam menampilkan konteks yang relevan saat diperlukan, dan bisa dikustomisasi dengan sangat rinci
    Prompt default saya hanya menampilkan direktori saat ini, waktu, dan satu tanda %
    Jika variabel lingkungan tertentu ditetapkan (KUBECONFIG, OS_CLOUD, dll.), maka informasi terkait juga ikut ditampilkan
    Versi bahasa seperti Go dan Python juga otomatis muncul sesuai konteks pemakaian
    Starship membuat setup seperti ini jadi sangat mudah, dan semua itu berjalan dengan overhead minimum tanpa perlu konfigurasi plugin zsh yang rumit
    Terutama jika dipakai bersama evalcache, kecepatan inisialisasinya juga sangat tinggi

  • Sebagai penggemar Starship, ada beberapa komentar
    Fakta bahwa ia dikembangkan dengan Rust yang aman dan cepat, serta berupa binary terkompilasi, membuat performanya jauh lebih baik daripada powerline berbasis Python, ohmybash berbasis shell script, ohmyzsh berbasis zshell, atau spaceship
    Sudah tentu mendukung zsh, bash, sh, fish, dan juga MS Windows CMD serta Powershell
    Memiliki satu file config tunggal untuk mengelola prompt di semua sistem adalah sesuatu yang hampir unik
    Kalau informasinya terasa terlalu banyak, itu bisa dengan mudah disederhanakan, dan ikon juga bisa dinonaktifkan
    Dengan sekitar 100 modul, batas kustomisasinya nyaris tidak ada

  • Saya tidak mengerti kenapa Starship dipasarkan sebagai sesuatu yang “minimal”
    Kenyataannya, fiturnya sangat banyak, dan dari cara orang memakainya juga sering terlihat sebagai prompt raksasa penuh dekorasi
    Saya sendiri memakainya sesederhana ini

    <pre><code>: ▶</code></pre>

    Kalau benar-benar ingin minimal, sebenarnya tidak perlu framework kustomisasi seperti ini

    • Dibandingkan shell dan prompt lain, file konfigurasi Starship punya kelebihan karena tetap cukup intuitif meski kompleksitasnya meningkat

    • Semua fitur bisa dinonaktifkan
      Saat ini saya memakai konfigurasi minimal yang kurang lebih seperti ini

      <pre><code>format = """ $username\ $hostname\ $shlvl\ $directory\ $git_branch\ $git_commit\ $git_state\ $git_metrics\ $git_status\ $package\ $python\ $rust\ $env_var\ $custom\ $cmd_duration\ $jobs\ $time\ $status\ $shell\ $character"""</code></pre>
    • Starship pada akhirnya memang bisa dipakai secara minimal, tetapi pada dasarnya ia adalah prompt maksimalis yang dirancang untuk memuat sebanyak mungkin informasi dan konten
      Rasanya akan baik kalau hal ini diakui saja

    • Saya memakai panah yang bahkan lebih tipis dari itu

      <pre><code>PROMPT='%{%F{red}%}%~ %{%F{yellow}%}% › %{%F{reset_color}%}%'</code></pre>

      Bersih, simpel, dan minimal

  • Saya heran melihat respons yang mencampuradukkan sifat bisa dikustomisasi dengan maksimalisme
    Default-nya memang agak berlebihan, tetapi itu bisa dipangkas sebanyak yang diinginkan
    Saya bekerja di berbagai lingkungan AWS dan beragam runtime, jadi informasi konteks di prompt benar-benar sangat membantu
    Secara pribadi, saya sudah lama terus memakai kombinasi Starship + Nushell

  • Saya suka karena cukup instal sekali lalu tidak perlu disentuh lagi
    Saya ingin langsung bisa melihat apakah shell sedang memakai node 20 atau 22, dan apakah rust yang aktif adalah stable atau nightly
    Karena semua itu langsung ditampilkan tanpa pekerjaan tambahan, saya puas

  • Terlepas dari Starship, ada hal yang mengganggu pada prompt zsh: saat menekan Enter, kursor sesaat bergerak ke awal baris dan terjadi “flash”
    Pada prompt yang ultra-fast hal ini tidak terlalu terlihat, tetapi jika prompt melakukan sesuatu sekecil apa pun, gejala ini sangat jelas
    Saya mengamati hal yang sama di berbagai terminal (gnome-terminal, wezterm, kitty, alacritty, xterm)
    Satu-satunya terminal yang tidak mengalami masalah ini adalah urxvt
    Lihat rekaman reproduksi
    Saya penasaran apa penyebab fenomena flash ini dan bagaimana cara menghindarinya

  • Jika prompt memeriksa informasi tak berguna seperti git status setiap kali dirender, misalnya tiap 100ms, itu akan menimbulkan penurunan produktivitas yang tidak terlihat
    Terminal seharusnya menjadi alat memori responsif, dan sebaiknya tidak berubah menjadi dekorasi yang tidak perlu
    Masalahnya, kita memperhatikan optimasi kecepatan eksekusi kode, tetapi terlalu permisif terhadap latency saat mengetik sendiri

    • Starship benar-benar cepat
      Mengumpulkan data yang diperlukan hanya butuh beberapa ms saja, dan kita bisa dengan mudah mengontrol informasi apa yang akan diambil
      Di tool lain yang pernah saya coba, delay yang terasa panjang selalu mengganggu, tetapi saat memakai Starship, perbedaannya sangat terasa secara subjektif

    • 100ms yang dirasakan manusia dan 100ms dalam optimasi CPU adalah dua hal yang sama sekali berbeda
      Menurut saya, kalau prompt butuh 100ms untuk menampilkan branch atau status git, itu memunculkan pertanyaan: mana yang lebih penting untuk dioptimalkan, gangguan terhadap flow kerja atau waktu yang memang saya habiskan untuk mengetik perintah?
      Beberapa ms yang dipakai untuk fitur kenyamanan yang wajar masih sangat layak ditoleransi
      Pada akhirnya, kita hanya mencari titik seimbang antara kenyamanan dan minimalisme
      Minimalisme ekstrem maupun dekorasi berlebihan sama-sama bisa berujung pada inefisiensi

    • Karena terganggu oleh delay seperti ini, saya mem-patch terminal kitty agar prompt Starship dipindahkan ke status bar bawah seperti modeline di vim atau emacs
      Modeline diperbarui secara asinkron, sehingga respons prompt menjadi sangat cepat
      Kelemahannya, saya harus mem-patch kitty sendiri, dan saya belum sempat mengujinya di luar lingkungan Linux pribadi saya
      Lihat proyek patch terkait

    • Saya penasaran apakah tool prompt bisa bekerja seperti TUI, yaitu memodifikasi area prompt secara asinkron setelah output prompt selesai dikembalikan sepenuhnya (misalnya kubectl, git, aws cli menambahkan informasi lagi setelah 200ms)
      Dengan begitu, pengguna bisa langsung mengetik perintah berikutnya tanpa menunggu, sementara informasi tambahan muncul belakangan secara alami

    • Saya jadi berpikir, dibanding optimasi eksekusi kode, mungkin justru makin banyaknya layer yang digunakan membuat optimasi latency input pada prompt jadi lebih sulit dalam praktik

  • Saat membuka situs resminya, saya merasa kurang ada penjelasan yang jelas tentang kenapa orang perlu memakai Starship
    Kustomisasi prompt saya belakangan ini menampilkan informasi berikut dalam sekali lihat

    <pre><code>- hasil perintah terakhir (warna: hijau, merah, ungu)
  • user@host:currentDirectory
  • (jika di dalam repo) branch saat ini dan ringkasan git status, background job</code></pre>
    Jika perintah terakhir berhasil, tampil hijau; jika gagal, merah; jika dihentikan, ungu
    Saya mungkin termasuk target user mereka, tetapi dari homepage-nya saya tidak mendapatkan penjelasan yang jelas tentang "mengapa" harus memakainya dan peningkatan apa yang ditawarkan