소스 검색

feat(app): 添加 Zellij 安装脚本

- 新增 install_zellij.sh 脚本文件,实现 Zellij 的自动安装和配置
- 检查 wget 依赖并提供错误提示
- 下载、解压并安装 Zellij 二进制文件
- 根据当前 shell 类型自动配置 zin 函数
-避免重复追加配置到 shell rc 文件
tianyun 3 달 전
부모
커밋
6d5f3c1d1f
1개의 변경된 파일60개의 추가작업 그리고 0개의 파일을 삭제
  1. 60 0
      app/install_zellij.sh

+ 60 - 0
app/install_zellij.sh

@@ -0,0 +1,60 @@
+# /bin/bash
+function install_zellij() {
+    set -e  # 启用错误检查
+
+    # 检查依赖项
+    if ! command -v wget &> /dev/null; then
+        echo "Error: wget is required. Please install it first."
+        exit 1
+    fi
+
+
+    # 安装 Zellij
+    if [ ! -f /usr/local/bin/zellij ]; then
+        echo "Downloading Zellij..."
+        temp_dir=$(mktemp -d)
+        trap "rm -rf $temp_dir" EXIT  # 退出时清理临时目录
+
+        if ! wget -qO "$temp_dir/zellij.tar.gz" "https://fs.n1.tianyunperfect.cn:10086/2025/zellij-x86_64-unknown-linux-musl.tar.gz"; then
+            echo "Download failed. Exiting."
+            exit 1
+        fi
+
+        tar -zxvf "$temp_dir/zellij.tar.gz" -C "$temp_dir"
+        sudo mv "$temp_dir/zellij" /usr/local/bin/
+    fi
+
+    # 配置 Shell
+    local shell_rc
+    if [ -n "$ZSH_VERSION" ]; then
+        shell_rc=~/.zshrc
+    elif [ -n "$BASH_VERSION" ]; then
+        shell_rc=~/.bashrc
+    else
+        echo "Unsupported shell. Manual configuration required."
+        exit 1
+    fi
+
+    # 避免重复追加
+    if ! grep -q "zin()" "$shell_rc"; then
+        cat <<'EOF' >>"$shell_rc"
+function zin() {
+    export ZELLIJ_AUTO_ATTACH=true
+    eval "$(zellij setup --generate-auto-start $(basename $SHELL))"
+}
+zin2() {
+    local active_session=$(zellij list-sessions --no-formatting | awk '!/EXITED/ {print $1; exit}')
+    if [ -n "$active_session" ]; then
+        zellij options --disable-mouse-mode attach "$active_session"
+    else
+        echo "No active session found."
+    fi
+}
+EOF
+    fi
+
+    source "$shell_rc"
+    echo "Installation complete. Run 'zin' to start Zellij."
+}
+
+install_zellij