Zgen, ZSH Plugin Manager
Prakata
Sejak menggunakan macOS (dulunya OSX), saya sudah mengenal ZSH shell dalam keseharian menggunakan Terminal. Saat itu kira-kira sekitar tahun 2014. Namun, baru sekarang saya sadari ternyata ZSH juga memiliki plugin manger.
Berawal dari keinginan saya untuk menggunakan ZSH theme yang simpel, kemudian Nanda Okitavera mengenalkan ZSH theme bernama subnixr/minimal. Proses instalasi ZSH theme ini menggunakan Zgen atau Antigen. Dari sinilah awal perkenalan saya dengan Zgen – A lightweight plugin manager for Zsh inspired by Antigen.
Alasan Menggunakan Zgen
Seperti namanya, plugin manager, tentunya berguna untuk memanajemen plugin. Mungkin teman-teman yang menggunakan Vim text editor akan langsung memahami, bahwa keberadaan plugin manager sangat memudahkan kita membongkar-pasang Vim plugin yang ingin atau tidak kita gunakan. Semudah memanajemen plugins/extensions pada text editor GUI seperti VSCode.
Penjelasan mengenai Apa itu Zgen? dapat dibaca sendiri pada halaman GitHub dari Zgen, di sini.
Instalasi
Instalasi Zgen
-
Backup
.zshrc
.$ cp ~/.zshrc ~/.zshrc.old
Atau bisa gunakan nama apa saja.
.bak
,.backup
, dll. -
Cloning repository Zgen.
$ git clone https://github.com/tarjoilija/zgen.git "${HOME}/.zgen"
Hasil cloning di atas akan berada pada direktori
~/.zgen/
. -
Tambahkan bari di bawah ini pada file
~/.zshrc
.1# load zgen2source "${HOME}/.zgen/zgen.zsh"34# ...5# ...Letakkan saja pada posisi paling atas dari
.zshrc
.Saran saya, hapus saja semua konfigurasi
oh-my-zsh
yang ada di dalam file.zshrc
.Selesai. Proses pemasangan dan konfigurasi Zgen hanya seperti ini saja.
Sangat mudah bukan?
Selanjutnya, pemasangan
oh-my-zsh
sebagai plugin.
Instalasi OH-MY-ZSH
-
Tambahkan di bagian bawah atau setelah baris kode
# load zgen
di atas.1# if the init scipt doesn't exist2if ! zgen saved; then3 echo "Creating a zgen save"45 zgen oh-my-zsh67 # plugins OH-MY-ZSH8 zgen oh-my-zsh plugins/git9 zgen oh-my-zsh plugins/sudo10 zgen oh-my-zsh plugins/gem11 zgen oh-my-zsh plugins/python12 zgen oh-my-zsh plugins/systemd13 zgen oh-my-zsh plugins/tmux14 zgen oh-my-zsh plugins/archlinux15 zgen oh-my-zsh plugins/command-not-found1617 # theme18 zgen oh-my-zsh themes/avit1920 # save all to init script21 zgen save22fiSelesai. Hanya seperti ini saja cara pemasangannya.
-
Kemudian untuk penambahakn plugin lain seperti zsh-usrs/zsh-completions, tingal menambahkan saja di bagian dalam dari
if ... fi
.1 # ...2 # ...34 # completions5 zgen load zsh-users/zsh-completions src67 # ...8 # ... -
Satu contoh plugin lagi, misalnya plugin untuk theme, seperti subnixr/minimal.
1 # ...2 # ...34 # minimal themes5 zgen load subnixr/minimal67 # ...8 # ...Kemudian, tambahkan konfigurasi untuk minimal theme ini di bagian luar dari blok plugin.
1MNML_OK_COLOR=72MNML_ERR_COLOR=13MNML_USER_CHAR='$'4MNML_INSERT_CHAR=''5MNML_NORMAL_CHAR=''67# Components on the left prompt8MNML_PROMPT=(mnml_ssh mnml_status mnml_keymap)910# Components on the right prompt11MNML_RPROMPT=('mnml_cwd 2 0' mnml_git)1213# Components shown on info line14MNML_INFOLN=(mnml_err mnml_jobs mnml_uhp mnml_files)1516# An additional array is used to configure magic enter's behavior:17MNML_MAGICENTER=(mnml_me_dirs mnml_me_ls mnml_me_git)
Hasilnya
Secara keseluruhan, isi dari kesemua komponan di atas yang ada di dalam file ~/.zshrc
saya akan seperti ini.
1# -----------------------------------------------------------------ZGEN CONFIG2# load zgen3source "${HOME}/.zgen/zgen.zsh"45# if the init scipt doesn't exist6if ! zgen saved; then7 echo "Creating a zgen save"89 zgen oh-my-zsh1011 # plugins12 zgen oh-my-zsh plugins/git13 zgen oh-my-zsh plugins/sudo14 zgen oh-my-zsh plugins/gem15 zgen oh-my-zsh plugins/python16 zgen oh-my-zsh plugins/systemd17 zgen oh-my-zsh plugins/tmux18 zgen oh-my-zsh plugins/archlinux19 zgen oh-my-zsh plugins/command-not-found2021 # completions22 zgen load zsh-users/zsh-completions src2324 # theme25 zgen oh-my-zsh themes/avit2627 # minimal themes28 zgen load subnixr/minimal2930 # save all to init script31 zgen save32fi33# -------------------------------------------------------------END ZGEN CONFIG343536# ---------------------------------------------------------------------MINIMAL37MNML_OK_COLOR=7 # default: 238MNML_ERR_COLOR=1 # default: 139MNML_USER_CHAR='$' # default: λ40MNML_INSERT_CHAR='' # default: ›41MNML_NORMAL_CHAR='' # default: ·424344# Components on the left prompt45MNML_PROMPT=(mnml_ssh mnml_pyenv mnml_status mnml_keymap)4647# Components on the right prompt48MNML_RPROMPT=('mnml_cwd 2 0' mnml_git)4950# Components shown on info line51MNML_INFOLN=(mnml_err mnml_jobs mnml_uhp mnml_files)5253# An additional array is used to configure magic enter's behavior:54MNML_MAGICENTER=(mnml_me_dirs mnml_me_ls mnml_me_git)55# -----------------------------------------------------------------END MINIMAL
Untuk melihat isi dari ~/.zshrc
lebih lengkap, silahkan melihat pada repositori dotfiles milik saya, di sini.
PERTANYAAN?
Mengapa saya menggunakan dua buah teheme?
Saya menggunakan oh-my-zsh theme yang bernama avit sebagai fallback apabila minimal theme yang saya gunakan mengalami kendala.
Ini juga hanya asumsi saya saja. Untuk mengantisipasi. Pada kenyataannya juga belum teruji. Karena selama ini, belum pernah menemui kendala dengan minimal theme.
Reset Konfigurasi
Setelah menambahkan atau menghapus plugin, jangan lupa untuk melakukan perintah reset.
$ zgen reset
-- zgen: Deleting `/home/bandithijo/.zgen/init.zsh` ...
Lalu exit dan buka kembali Terminal emulator kita.
Maka akan keluar output seperti di bawah.
Creating a zgen save
-- zgen: Creating `/home/bandithijo/.zgen/init.zsh` ...
-- zgen: Initializing completions ...
Selesai.
Troubleshoting
Perintah Terulang pada Output
Maret 16, 2019
Sebenarnya, sudah pernah mengalami hal ini, namun karena lupa melakukan pencatatan, dan ternyata mengalami untuk kedua kali, malah jadi kebingungan.
Dapat dilihat pada ilustrasi di atas, apapun perintah (command) yang saya tulisakan, akan ditampilkan kembali pada baris output.
Saya mengalami permasalah ini pada terminal URxvt dan Termite, namun tidak pada ST terminal yang sehari-hari saya pergunakan.
Namun, pada ST terminal, saat saya menggunakan :terminal
di dalam Vim text editor, permasalahan yang sama mulai terlihat.
Untung saja ada group BGLI (Belajar GNU/Linux Indonesia), jadi bisa menanyakan di sana.
Terkadang perlu “sudut pandang” orang lain dalam menemukan “kata kunci” yang tepat untuk mencari solusi dari sebuah masalah.
Gambar 3. URL: ZSH repeats command in output
Dari jawaban yang diberikan pada tautan di atas. Kita perlu menambahkan variabel milik OH-MY-ZSH, yaitu:
DISABLE_AUTO_TITLE="true"
Karena, saya belum memasukkan variabel-variabel milik OH-MY-ZSH pada file ~/.zshrc
milik saya.
Apabila ingin ditambahkan variabel-variabel milik OH-MY-ZSH secara komplit, kira-kira seperti ini.
1# -------------------------------------------------------------------OH-MY-ZSH2# Set to this to use case-sensitive completion3# CASE_SENSITIVE="true"45# Comment this out to disable bi-weekly auto-update checks6# DISABLE_AUTO_UPDATE="true"78# Uncomment to change how often before auto-updates occur? (in days)9# export UPDATE_ZSH_DAYS=131011# Uncomment following line if you want to disable colors in ls12# DISABLE_LS_COLORS="true"1314# Uncomment following line if you want to disable autosetting terminal title.15DISABLE_AUTO_TITLE="true"1617# Uncomment following line if you want to disable command autocorrection18# DISABLE_CORRECTION="true"1920# Uncomment following line if you want red dots to be displayed while waiting for completion21# COMPLETION_WAITING_DOTS="true"2223# Uncomment following line if you want to disable marking untracked files under24# VCS as dirty. This makes repository status check for large repositories much,25# much faster.26# DISABLE_UNTRACKED_FILES_DIRTY="true"27# ---------------------------------------------------------------END OH-MY-ZSH
Dengan begini permasalahan “Perintah Terulang pada Output” tidak terjadi lagi.
Terima kasih untuk Karen Kishou @snowsu.
Pesan Penulis
Tulisan ini bukan merupakan tulisan tandingan dari dokumentasi resmi yang ditulis oleh developer dari Zgen, melainkan hanya sebagai ulasan mengenai bagaimana saya dalam menggunakan dan mengkonfigurasi Zgen ke dalam sistem yang saya miliki.
Apabila terdapat kekeliruan atau untuk penjelasan lebih detail, silahkan merujuk pada sumber-sumber referensi yang sudah saya sertakan di bawah.
Sepertinya ini saja. Mudah-mudahan dapat bermanfaat untuk teman-teman.
Referensi
-
github.com/tarjoilija/zgen
Diakses tanggal: 2019/02/18 -
github.com/subnixr/minimal
Diakses tanggal: 2019/02/18