Wezterm A Beautiful Modern Terminal
Config file Linux inside $HOME/.config/wezterm/wezterm.lua and for windowsUSERPROFILE%/.wezterm.lua
local wezterm = require("wezterm") return { -- FONT (fix bold issue) font = wezterm.font_with_fallback({ { family = "JetBrains Mono", weight = "Regular" }, "FiraCode Nerd Font", "Noto Sans Bengali", }), font_size = 15, line_height = 1.15, font_rules = { { intensity = "Bold", font = wezterm.font("FiraCode Nerd Font", { weight = "Medium" }), }, }, -- THEME (Tokyo Night) color_scheme = "Tokyo Night Storm", -- WINDOW LOOK (clean like kitty) enable_tab_bar = true, hide_tab_bar_if_only_one_tab = true, use_fancy_tab_bar = false, window_decorations = "NONE | RESIZE", window_background_opacity = 0.92, window_padding = { left = 12, right = 12, top = 12, bottom = 12, }, -- PERFORMANCE / UX scrollback_lines = 20000, scroll_to_bottom_on_input = true, audible_bell = "Disabled", term = "xterm-256color", -- KEYS (tmux-like control) keys = { -- panes { key = "h", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Left") }, { key = "l", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Right") }, { key = "k", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Up") }, { key = "j", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Down") }, { key = "|", mods = "ALT|SHIFT", action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, { key = "-", mods = "ALT", action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }) }, -- font zoom { key = "+", mods = "CTRL", action = wezterm.action.IncreaseFontSize }, { key = "-", mods = "CTRL", action = wezterm.action.DecreaseFontSize }, { key = "0", mods = "CTRL", action = wezterm.action.ResetFontSize }, -- copy/paste { key = "c", mods = "CTRL|SHIFT", action = wezterm.action.CopyTo("Clipboard") }, { key = "v", mods = "CTRL|SHIFT", action = wezterm.action.PasteFrom("Clipboard") }, -- quick select links { key = "o", mods = "CTRL|SHIFT", action = wezterm.action.QuickSelect }, }, } And terminal cmd line ## Your rest .bashrc config # Function: Trim path to max 16 chars (shows last 2 segments if long) get_trimmed_path() { local p="${PWD/#$HOME/~}" if [ ${#p} -gt 16 ]; then # Grab last 2 directory segments (e.g., ...share/chezmoi) echo "...$(echo "$p" | rev | cut -d'/' -f1,2 | rev)" | cut -c1-16 else echo "$p" fi } # Function: Get Git Branch and Status get_git_info() { if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then local branch=$(git branch --show-current) local status=$(git status --porcelain | wc -l) local icon="✔" # If there are changes, show count and ✗ [ "$status" -ne 0 ] && icon="✗:$status" echo " [ $branch $icon ]" fi } # The Main Prompt Function prompt_command() { local EXIT="$?" local SYMBOL="❯" # Color coding local G="\[\e[1;32m\]" # Green (User@Host) local B="\[\e[1;34m\]" # Blue (Path) local Y="\[\e[1;33m\]" # Yellow (Git) local P="\[\e[1;35m\]" # Purple (Arrow) local R="\[\e[1;31m\]" # Red (Error) local W="\[\e[0m\]" # White/Reset # Turn arrow red if last command failed [ $EXIT != 0 ] && SYMBOL="$R$SYMBOL" || SYMBOL="$P$SYMBOL" # Line 1: user@host:path [git branch status] # Line 2: The Input Arrow PS1="\n$G\u@\h$W:$B\$(get_trimmed_path)$Y\$(get_git_info)$W\n$SYMBOL $W" } # Set the prompt PROMPT_COMMAND=prompt_command Make sure to soruce .bashrc or reopen the terminal
...