fish + starship
fish(friendly interactive shell)はユーザフレンドリーなコマンドラインシェルです。シェルをfishに切り替えてみました。
またプロンプトを装飾するためにStarshipを使ってみました。
情報
- fish
https://fishshell.com/ - awsm.fish
https://github.com/jorgebucaran/awsm.fish - Starship
https://starship.rs/ja-JP/
環境
- OS / Shell / プロンプト
- Arch Linux / fish /starship
- Ubuntu / fish / starship
- Windows - WSL - Ubuntu / fish / starship
- Windows / CMD / starship
- Windows / PowerShell / starship
- ターミナルソフト
- GNOME Termnal
- Windows Terminal
- フォント
- HackGen Console NF
fish構築
- インストール
- Arch Linuxの場合
sudo pacman -S fish
- Ubuntuの場合
sudo apt install fish
- 起動設定
- Arch Linux, Ubuntuの場合
fish をインタラクティブシェルとして設定する~/.bashrc if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=''
exec fish $LOGIN_OPTION
fi
fishの設定
fish_config
[Enter]キーで終了
グリーティングを無効化
set -U fish_greeting
環境設定ファイル
~/.config/fish/config.fish
fishプラグイン
プラグイン管理 fisher
https://github.com/jorgebucaran/fishercurl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
base16-fish-shell
シェルのデフォルトの ANSI カラーを変更するfisher install FabioAntunes/base16-fish-shell
テーマの一覧(
base16-
から始まる)
https://github.com/FabioAntunes/base16-fish-shell/tree/main/functions
テーマのプレビュー
https://dt.iki.fi/base16-previews
https://glitchbone.github.io/vscode-base16-term/#/summerfruit-dark
現在の設定set | grep fish_color
個別設定の例
set fish_color_command brwhite
bass
fishでbashスクリプトを実行fisher install edc/bass
fzf
Ctrl+Rでコマンド履歴検索sudo pacman -S fzf
fisher install PatrickF1/fzf.fishz
ディレクトリ名を指定して直接移動fisher install jethrokuan/z
Starship構築
Starshipはクロスプラットフォーム対応のシェルプロンプト
https://github.com/starship/starship/blob/master/docs/ja-JP/guide/README.md
Arch Linux
Nerd Fontのインストール
paru -S ttf-hackgen
ターミナルソフトのフォントを
HackGen Console NF
に設定する。Starshipのインストール
sudo pacman -S starship
Starshipの有効化
~/.config/fish/config.fish starship init fish | source
テーマの適用
starship preset tokyo-night -o ~/.config/starship.toml
Ubuntu
Nerd Fontのインストール
https://github.com/yuru7/HackGen/releases
HackGen_NF_v2.9.0.zipをダウンロードして展開したttfファイルを~/.fonts/
フォルダに格納
ターミナルソフトのフォントをHackGen Console NF
に設定する。Starshipのインストール
- WSLの場合
標準のrustcが古いのでRustupからインストールするcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env" # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish" # For fishsource "$HOME/.cargo/env.fish"
cargo install starship --locked - WSLではない場合
sudo apt install cargo build-essential cmake
source "$HOME/.cargo/env.fish"
cargo install starship --locked
- WSLの場合
Starshipの有効化
~/.config/fish/config.fish starship init fish | source
テーマの適用
starship preset tokyo-night -o ~/.config/starship.toml
Windows
Nerd Fontのインストール
以下からインストール
https://github.com/yuru7/HackGen/releasesStarshipのインストール
winget install clink starship
clink autorun install -- --quietStarshipの有効化
- Windows / CMDの場合
%LocalAppData%\clink\starship.lua load(io.popen('starship init cmd'):read("*a"))()
- Windows / PowerShellの場合
$PROFILE Invoke-Expression (&starship init powershell)
- テーマの適用
mkdir %USERPROFILE%\.config
starship preset tokyo-night -o %USERPROFILE%\.config\starship.toml
Starshipカスタマイズ
スクリーンショット
- Arch Linux
- Ubuntu (WSL)
- Windows / CMD
- Windows / PowerShell
テーマのカスタマイズ
- tokyo-nightテーマがベース
- OSアイコンとユーザ名を表示
- ホスト名は表示しない
- CMDとPowerShellを区別するためにPowerShellはPSと表示
- sudoキャッシュが有効な期間は工具箱アイコン🧰を表示
~/.config/starship.toml format = """
[░▒▓](#a3aed2)\
[ $os$username$sudo](bg:#a3aed2 fg:#090c0c)\
[](bg:#769ff0 fg:#a3aed2)\
$directory\
[](fg:#769ff0 bg:#394260)\
$git_branch\
$git_status\
[](fg:#394260 bg:#212736)\
$nodejs\
$rust\
$golang\
$php\
[](fg:#212736 bg:#1d2230)\
$time\
[ ](fg:#1d2230)\
\n$shell$character"""
[directory]
style = "fg:#e3e5e5 bg:#769ff0"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[git_branch]
symbol = ""
style = "bg:#394260"
format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)'
[git_status]
style = "bg:#394260"
format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)'
[nodejs]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[rust]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[golang]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[php]
symbol = ""
style = "bg:#212736"
format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "bg:#1d2230"
format = '[[ $time ](fg:#a0a9cb bg:#1d2230)]($style)'
[username]
show_always = true
style_user = "bg:#a3aed2 fg:#090c0c"
style_root = "bg:color_orange fg:color_fg0"
format = '[ $user ]($style)'
[os]
disabled = false
style = "bg:#a3aed2 fg:#090c0c"
[os.symbols]
Windows = ""
Ubuntu = ""
SUSE = ""
Raspbian = ""
Mint = ""
Macos = ""
Manjaro = ""
Linux = ""
Gentoo = ""
Fedora = ""
Alpine = ""
Amazon = ""
Android = ""
Arch = ""
Artix = ""
EndeavourOS = ""
CentOS = ""
Debian = ""
Redhat = ""
RedHatEnterprise = ""
[shell]
fish_indicator = ''
powershell_indicator = 'PS'
cmd_indicator = ''
unknown_indicator = ''
style = 'cyan bold'
disabled = false
[sudo]
format = '$symbol'
style = 'bg:#a3aed2 fg:#090c0c'
symbol = '🧰'
allow_windows = true
disabled = false