intro image

My Software Configuration

Yorukot

My Hardware and Software Configuration

This article is mainly about my current software configuration. Since there are way too many software configurations, I might not be able to cover everything - I’ll add more as I think of them, or you can ask in the comments.

This is actually two articles - one about software, one about hardware. This one is about software, and you can click here to go to the hardware one.

If you think any of the setups are cool, feel free to copy them directly~

First, let me show you what my Terminal looks like in the end:

Terminal

Terminal Emulator - Ghostty

I’ve been using this terminal emulator (I’ll just call it terminal from now on) for a while. The main feature of this terminal is that it’s written in Zig, supposedly very fast and can use GPU rendering, but honestly I can’t feel any difference.

This terminal started as an idea in 2020, mainly hoping to write a terminal built for modern times. The reviews online are pretty good, and I feel really good using it too.

It also supports quite a few terminal protocols like the Kitty graphics protocol.

Below is my config file. I honestly haven’t done too much configuration because I don’t really need to, but it seems to have quite a few great settings you can check out in the documentation.

theme = catppuccin-mocha

font-family = "JetBrains Mono NL"

Shell - Zsh

For shell, I use Zsh. From when I used Linux to MacOS, I’ve always used it. I haven’t seriously tried other shells, but I’m used to it anyway, and I don’t plan to change for now.

Below are my Zsh-related settings. Remember to install the plugins - you can Google how to install them.

# ===============================
# Path to your Oh My Zsh install
# ===============================
export ZSH="$HOME/.oh-my-zsh"

# ===============================
# Plugins (Oh My Zsh will load them)
# ===============================
plugins=(
  git
  zsh-autosuggestions
  zsh-syntax-highlighting
  sudo
  extract
  zsh-bat
)

# Load Oh My Zsh
source $ZSH/oh-my-zsh.sh

# ===============================
# Starship prompt (must come AFTER Oh My Zsh)
# ===============================
eval "$(starship init zsh)"

# ===============================
# Custom environment variables (optional)
# ===============================
[ -f "$HOME/.local/bin/env" ] && source "$HOME/.local/bin/env"

# ===============================
# Podman & Docker compatibility
# ===============================
# Add Podman to PATH
export PATH="/opt/podman/bin:$PATH"
# Alias Docker command to use Podman
alias docker=podman

# ===============================
# Conda initialization (auto-generated)
# ===============================
__conda_setup="$('/Users/yorukot/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
elif [ -f "/Users/yorukot/miniconda3/etc/profile.d/conda.sh" ]; then
    source "/Users/yorukot/miniconda3/etc/profile.d/conda.sh"
else
    export PATH="/Users/yorukot/miniconda3/bin:$PATH"
fi
unset __conda_setup

# ===============================
# FZF initialization
# ===============================
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

# ===============================
# vim alias
# ===============================
alias vim=nvim

# ===============================
# Golang
# ===============================
export PATH="$HOME/go/bin:$PATH"

# ===============================
# git
# ===============================
export VISUAL=nvim
export EDITOR=nvim

# ===============================
# Rust
# ===============================
. "$HOME/.cargo/env"

# ===============================
# Zoxide
# ===============================
eval "$(zoxide init zsh)"

# ===============================
# exa (eza)
# ===============================
alias ls='eza --icons -lh --no-user'

# ===============================
# bun
# ===============================
[ -s "/Users/yorukot/.bun/_bun" ] && source "/Users/yorukot/.bun/_bun"

export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"

# ===============================
# Bat with tail
# ===============================
logs() {
  if [[ -z "$1" ]]; then
    echo "error: Please specify a log file."
    return 1
  fi

  tail -f "$1" | bat --paging=never -l log
}

Complex Function Configuration Explanation

Let me mainly talk about my more complex function configurations:

  • logs - This is mainly about turning tail into a bat-formatted effect, which looks more comfortable. You can see the difference in the image below (right side is logs, left side is regular tail)

Normal tail vs. tail with bat

Terminal Prompt - Starship

If you carefully read my configuration in the Shell section above, you should have noticed that I use Starship for terminal prompt.

Starship is a very fast terminal prompt. So what is a terminal prompt? Simply put, it’s the thing that makes your terminal display stuff like what you see below.

Terminal prompt

Below is my Starship configuration. It’s actually just some basic stuff, nothing much to say. If you’re interested, you can check out the Starship documentation.

"$schema" = 'https://starship.rs/config-schema.json'

format = """
[](fg:nord10 bg:none)[  ](bg:nord10 fg:nord4)[](fg:nord10 bg:none)\
$conda\
$docker_context\
$directory\
$package\
$git_branch\
$git_status\
${custom.git_end}\
$cmd_duration\
$fill\
${custom.prog_ver_start}\
$python$nodejs$java$golang\
${custom.prog_ver_end}\
$line_break\
$character
"""

add_newline = false
palette = 'nord'

[custom.prog_ver_start]
style = "fg:nord9 bg:none"
symbol = ""
detect_files = ["pyproject.toml", ".python-version"]


[custom.prog_ver_end]
style = "fg:nord9 bg:none"
symbol = ""
detect_files = ["pyproject.toml", ".python-version"]

[cmd_duration]
style = "fg:nord9 bg:none"
format = "[]($style)[ $duration ](fg:nord0 bg:nord9)[]($style)"

[directory]
style = "fg:nord8 bg:none"
format = "[]($style)[ $path ](fg:nord0 bg:nord8)[]($style)"
truncation_length = 1
truncation_symbol = "…/"

# Here is how you can shorten some long paths by text replacement
# similar to mapped_locations in Oh My Posh:
[directory.substitutions]
"Documents" = "󱔘"
"Downloads" = " "
"Music" = " "
"Pictures" = " "
# Keep in mind that the order matters. For example:
# "Important Documents" = "  "
# will not be replaced, because "Documents" was already substituted before.
# So either put "Important Documents" before "Documents" or use the substituted version:
# "Important  " = "  "

[fill]
symbol = " "

[conda]
style = "fg:nord15 bg:none"
format = "[]($style)[ conda $environment ](fg:nord0 bg:nord15)[]($style)"

[docker_context]
style = "fg:nord15 bg:none"
format = "[]($style)[ docker $environment ](fg:nord0 bg:nord15)[]($style)"

[package]
style = "fg:nord9 bg:none"
format = "[]($style)[ $version ](fg:nord0 bg:nord9)[]($style)"

[git_branch]
symbol = ""
style = "fg:nord0 bg:nord7"
format = '[](fg:nord7 bg:none)[ $symbol $branch ]($style)'

[git_status]
style = "fg:nord0 bg:nord7"
format = '([\[$all_status$ahead_behind\]]($style))'

[custom.git_end]
style = "fg:nord7 bg:none"
symbol = ""
when = "git status 2>/dev/null; echo $?"
require_repo = true

[python]
symbol = ""
style = "fg:nord0 bg:nord9"
format = '[ [$symbol](fg:nord4 bg:nord9) $version ]($style)'

[golang]
symbol = ""
style = "fg:nord0 bg:nord9"
format = '[ $symbol $version ]($style)'

[nodejs]
symbol = ""
style = "fg:nord0 bg:nord9"
format = '[ $symbol $version ]($style)'

[palettes.nord]
nord0 = "#1E1E2E"  # base
nord1 = "#181825"  # mantle
nord2 = "#313244"  # surface0
nord3 = "#45475A"  # surface1
nord4 = "#CDD6F4"  # text
nord5 = "#F5E0DC"  # rosewater
nord6 = "#F2CDCD"  # flamingo
nord7 = "#94E2D5"  # teal
nord8 = "#89DCEB"  # sky
nord9 = "#74C7EC"  # sapphire
nord10 = "#89B4FA" # blue
nord11 = "#F38BA8" # red
nord12 = "#FAB387" # peach
nord13 = "#F9E2AF" # yellow
nord14 = "#A6E3A1" # green
nord15 = "#CBA6F7" # mauve

[container]
disabled = true

Actually, there’s still a lot more I could write, but I’ll stop here for now. I might add more stuff in the future.

Share this post on:
Suggest an Edit

Comments

Related Posts

intro image

My Hardware Configuration

life
intro image

My VPS Experience with Hetzner

cloud
intro image

Complete Guide to Markdown Syntax + Special Features on This Website

demo