目录
- [更换shell](终端美化.md#更换shell)
- [fish](终端美化.md#fish)
- [zsh](终端美化.md#zsh)
- [shell提示符美化-starship](终端美化.md#starship提示符美化)
- [Ghostty美化](终端美化.md#ghostty美化)
- [Konsole美化](终端美化.md#konsole美化)
- [Kitty美化](终端美化.md#kitty美化)
---
在美化之前先简单了解一下TTY、终端、Shell的区别
- TTY
全称 Teletypewriter,源自物理打字机,在 Arch 上指的是内核提供的虚拟控制台。按下 `Ctrl+Alt+F1~F6` 可以在 TTY 之间切换。你以后可能会遇到类似`systemctl enable ly@tty1`这样的命令,代表在 tty1 激活 Ly 登录界面。
- 终端
终端的意思有很多,但是在桌面 Linux 的语境下提到终端,通常指的是 Terminal Emulator 终端仿真器,是运行在图形界面,用来进行命令行交互的程序。
- Shell
命令解释器。负责接收你输入的命令,解析后调用相应的可执行文件,最后将结果返回给终端显示。Arch Linux 的默认 Shell 是 `bash`,行业标准,但是对于日用来说不太人性化。
以后你还可能会遇到一个词叫作 `POSIX 兼容`。POSIX 定义了一系列规范,其中就包含了“标准 Shell”。简单来说,只要操作系统兼容 POSIX,开发者按照这套规范写的脚本或程序就能在不需要修改源码的情况下跨平台运行。
我们要美化的是运行在图形界面的 Terminal Emulator,还可以更换 Shell 获得更舒适的终端交互体验。
## 更换shell
### fish
Fish 开箱即用的 Shell,提供了很多方便功能,如历史记录、自动补全、模糊检索等。Fish 不兼容 POSIX,所以仅作为交互 Shell 使用。不能用 `chsh` 命令把 Fish 改成系统的默认 Shell,这会导致很多问题。
1. 安装 Fish。
```bash
sudo pacman -S fish
```
2. 编辑配置文件去掉默认的启动文字。
```bash
vim ~/.config/fish/config.fish
```
写入:
```text
set fish_greeting ""
```
- 使用方法
各个终端程序的配置文件里都可以设置打开时的默认shell,例如:
- kitty
```
vim ~/.config/kitty/kitty.conf
```
```
shell fish
```
- ghostty
```
vim ~/.config/ghostty/config
```
```
command fish
```
### zsh
插件众多,高度可定制的 Shell,语法与 bash 高度兼容。兼容 POSIX,可以用 `chsh` 将其设为系统默认 Shell。
> MacOS 自 Catalina 起将 `zsh` 作为默认 Shell。
1. ```bash
sudo pacman -S zsh
```
2. ```bash
chsh -s /usr/bin/zsh
```
3. 语法检查、自动补全、Tab 选择、历史记录。
```bash
sudo pacman -S zsh-syntax-highlighting zsh-autosuggestions zsh-completions
```
```bash
vim ~/.zshrc
```
写入:
```bash
# 设置历史记录文件的路径
HISTFILE=~/.zsh_history
# 设置在会话(内存)中和历史文件中保存的条数,建议设置得大一些
HISTSIZE=1000
SAVEHIST=1000
# 忽略重复的命令,连续输入多次的相同命令只记一次
setopt HIST_IGNORE_DUPS
# 忽略以空格开头的命令(用于临时执行一些你不想保存的敏感命令)
setopt HIST_IGNORE_SPACE
# 在多个终端之间实时共享历史记录
# 这是实现多终端同步最关键的选项
setopt SHARE_HISTORY
# 让新的历史记录追加到文件,而不是覆盖
setopt APPEND_HISTORY
# 在历史记录中记录命令的执行开始时间和持续时间
setopt EXTENDED_HISTORY
# 自动补全
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
# 语法检查
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# 开启 tab 上下左右选择补全
zstyle ':completion:*' menu select
autoload -Uz compinit
compinit
```
4. 重启终端。
## starship提示符美化
> [Starship](https://starship.rs/)
1. 安装 Nerd 字体和 Starship。
```bash
sudo pacman -S ttf-jetbrains-mono-nerd starship
```
2. 编辑配置文件激活 Starship。
- Fish
```bash
vim ~/.config/fish/config.fish
```
```text
starship init fish | source
```
- Zsh
```bash
vim ~/.zshrc
```
```text
eval "$(starship init zsh)"
```
3.
到这个网站下载一个自己喜欢的预设主题,重命名为 `starship.toml`,放到 `~/.config`,或者你有兴趣的话也可以自己做一个。
4. 重启终端。
## Ghostty美化
1. 下载 [Catppuccin](https://github.com/catppuccin/ghostty?tab=readme-ov-file) 颜色配置,或者找一个你喜欢的,粘贴到 `~/.config/ghostty/themes/`。
2. 修改 `~/.config/ghostty/config` 配置文件,例如下载的是 frappe 的话:
```text
theme = catppuccin-frappe.conf
# 隐藏标题栏
window-decoration = none
# 设置透明度
background-opacity=0.8
# 设置字体和字体大小
font-family = "Adwaita Mono"
font-size = 15
# 设置左右边距
window-padding-x=10
# 设置上下边距
window-padding-y=10
```
3. 重启终端。
## Konsole美化
1. 菜单 > 设置 > 显示工具栏 > 去掉两个勾选。
2. 右键 > 菜单 > 设置 > 配置 Konsole。
常规页面里激活"移除窗口标题和框架"。
配置方案里新建一个配置方案;外观里点击"获取新方案":下载一个自己喜欢的,我使用 Catppuccin Frappe。选中喜欢的配色方案后点击编辑设置 20% 透明度;设置字体为 Adwaita Mono(一个你喜欢的 Mono 等宽字体),大小 15pt;"其他"页面里设置边距,取消激活调整大小后显示终端大小提示。
滚动里隐藏滚动条,取消激活高亮显示刚刚进入视图的行。确认。
选中刚刚创建的配置方案设置为默认。
确认。
重启终端。
## Kitty美化
网上下载自己喜欢的颜色配置文件
我以 Catppuccin Frappe 为例,下载 frappe.conf,复制到 `~/.config/kitty/themes` 目录下。
编辑 Kitty 的配置文件:
```bash
vim ~/.config/kitty/kitty.conf
```
```text
# 导入颜色文件
include themes/frappe.conf
# 设置左右边距
window_padding_width 5
# 隐藏标题栏
hide_window_decorations yes
# 背景透明度
background_opacity 0.8
# 字体
font_family Adwaita Mono
# 字体大小
font_size 15
# 不要记住窗口大小(yes no)
remember_window_size no
# 关闭窗口时不要询问是否关闭
confirm_os_window_close 0
# 设置默认的 shell 为 fish
shell /usr/bin/fish
```
下一节:[grub美化](grub美化.md)