脚本 #!/data/data/com.termux/files/usr/bin/bash set -euo pipefail readonly SCRIPT_NAME="$(basename "$0")" readonly MIMO_PACKAGE_NAME="@mimo-ai/cli" readonly MIMO_PACKAGE_VERSION="${MIMO_CODE_VERSION:-${MIMOCODE_VERSION:-latest}}" readonly PREFIX_DIR="${PREFIX:-/data/data/com.termux/files/usr}" readonly HOST_MIMO_PATH="$PREFIX_DIR/bin/mimo" readonly MIMO_CLI_PKG_DIR="$PREFIX_DIR/lib/node_modules/@mimo-ai/cli" readonly MIMO_ARCH_PKG_NAME="@mimo-ai/mimocode-linux-arm64" readonly MIMO_ARCH_PKG_DIR="$PREFIX_DIR/lib/node_modules/$MIMO_ARCH_PKG_NAME" readonly TMP_ROOT="$HOME/tmp" readonly BACKUP_DIR="$TMP_ROOT/mimocode-backups" readonly WRAPPER_MARKER="# mimocode-termux-glibc-wrapper" # Resolved by install_mimo_package() after locating the real glibc ELF. MIMO_BINARY_PATH="" MIMO_RESOLVED_VERSION="" readonly C_BOLD_BLUE="\033[1;34m" readonly C_BOLD_GREEN="\033[1;32m" readonly C_BOLD_YELLOW="\033[1;33m" readonly C_BOLD_RED="\033[1;31m" readonly C_RESET="\033[0m" info() { printf '%b[INFO]%b %s\n' "$C_BOLD_BLUE" "$C_RESET" "$*"; } success() { printf '%b[ OK ]%b %s\n' "$C_BOLD_GREEN" "$C_RESET" "$*"; } warn() { printf '%b[WARN]%b %s\n' "$C_BOLD_YELLOW" "$C_RESET" "$*" >&2; } die() { printf '%b[ERR ]%b %s\n' "$C_BOLD_RED" "$C_RESET" "$*" >&2; exit 1; } usage() { cat <<EOF Usage: bash $SCRIPT_NAME What it does (glibc-runner mode, no proot): 1. Installs glibc-repo, refreshes apt metadata, installs glibc-runner. 2. Installs nodejs-lts + npm in Termux (if missing). 3. npm installs ${MIMO_PACKAGE_NAME} globally, then force-installs the ${MIMO_ARCH_PKG_NAME} native linux-arm64 package. 4. Skips MiMoCode's postinstall script because Termux Node reports process.platform='android' and the upstream script looks for a non-existent @mimo-ai/mimocode-android-arm64 package. 5. Replaces \$PREFIX/bin/mimo with a grun wrapper that runs the glibc ELF directly on Termux. Environment overrides: MIMO_CODE_VERSION npm package version/tag, default: ${MIMO_PACKAGE_VERSION} examples: latest, preview, 0.1.0, v0.1.0 MIMOCODE_VERSION alias for MIMO_CODE_VERSION Notes: - Official MiMoCode install docs: https://github.com/XiaomiMiMo/MiMo-Code - glibc-runner injects glibc via LD_LIBRARY_PATH; kernel calls are native. EOF } command_exists() { command -v "$1" >/dev/null 2>&1; } # ELF magic = 7f 45 4c 46; e_machine at offset 18 = 0xb7 for EM_AARCH64. is_valid_aarch64_elf() { local f="$1" [ -f "$f" ] || return 1 local magic machine magic=$(od -An -tx1 -N4 "$f" 2>/dev/null | tr -d ' \n') [ "$magic" = "7f454c46" ] || return 1 machine=$(od -An -tx1 -j18 -N1 "$f" 2>/dev/null | tr -d ' \n') [ "$machine" = "b7" ] } find_arch_binary() { local candidate for candidate in \ "$MIMO_ARCH_PKG_DIR/bin/mimo" \ "$MIMO_CLI_PKG_DIR/bin/.mimocode"; do if is_valid_aarch64_elf "$candidate"; then MIMO_BINARY_PATH="$candidate" return 0 fi done while IFS= read -r candidate; do if is_valid_aarch64_elf "$candidate"; then MIMO_BINARY_PATH="$candidate" return 0 fi done < <(find "$MIMO_ARCH_PKG_DIR" "$MIMO_CLI_PKG_DIR" -type f -size +10M 2>/dev/null) return 1 } ensure_tmp_root() { mkdir -p "$TMP_ROOT" [ -w "$TMP_ROOT" ] || die "Temp directory is not writable: $TMP_ROOT" export TMPDIR="$TMP_ROOT" } require_termux() { [ -d "$PREFIX_DIR" ] || die "This script must run in Termux." command_exists pkg || die "pkg not found. This script must run in Termux." if [ -r /proc/1/status ] && grep -q 'TracerPid:.*[1-9]' /proc/1/status 2>/dev/null; then warn "Detected non-zero TracerPid on PID 1 -- looks like a proot session." warn "Run this script from a plain Termux shell, not from inside proot-distro." fi } ensure_termux_package() { local package_name="$1" if dpkg -s "$package_name" >/dev/null 2>&1; then success "Termux package already installed: $package_name" return 0 fi info "Installing Termux package: $package_name" pkg install -y "$package_name" success "Installed Termux package: $package_name" } ensure_glibc_runner() { ensure_termux_package "glibc-repo" if ! apt-cache show glibc-runner >/dev/null 2>&1; then info "Refreshing apt metadata so glibc-repo becomes visible" pkg update -y || apt-get update -y || true fi ensure_termux_package "glibc-runner" command_exists grun || die "grun not found after installing glibc-runner." } ensure_nodejs() { if command_exists node && command_exists npm; then success "Termux node present: $(node --version), npm $(npm --version)" return 0 fi if dpkg -s nodejs >/dev/null 2>&1; then success "nodejs already installed" else ensure_termux_package "nodejs-lts" fi command_exists node && command_exists npm || die "node/npm not found after installing nodejs." } resolve_mimo_version() { local requested="$MIMO_PACKAGE_VERSION" if [ "$requested" != "latest" ]; then requested="${requested#v}" fi local pkg_spec="$MIMO_PACKAGE_NAME" if [ "$requested" != "latest" ]; then pkg_spec="${MIMO_PACKAGE_NAME}@${requested}" fi info "Resolving version for ${pkg_spec}" local resolved resolved=$(npm view "$pkg_spec" version 2>/dev/null | tail -n1) \ || die "Failed to resolve version for ${pkg_spec} via npm view" [[ "$resolved" =~ ^[0-9]+\.[0-9]+ ]] \ || die "npm view returned a bogus version: '$resolved'" MIMO_RESOLVED_VERSION="$resolved" } backup_existing_launcher() { mkdir -p "$BACKUP_DIR" [ -e "$HOST_MIMO_PATH" ] || return 0 if grep -Fq "$WRAPPER_MARKER" "$HOST_MIMO_PATH" 2>/dev/null; then success "glibc-runner wrapper already in place" return 0 fi local backup_path="$BACKUP_DIR/mimo.host-backup.$(date +%Y%m%d_%H%M%S)" cp -P "$HOST_MIMO_PATH" "$backup_path" success "Backed up existing launcher to $backup_path" } install_mimo_package() { resolve_mimo_version local main_version="$MIMO_RESOLVED_VERSION" local pinned_main="${MIMO_PACKAGE_NAME}@${main_version}" local arch_spec="${MIMO_ARCH_PKG_NAME}@${main_version}" info "Installing ${pinned_main} without upstream optional platform packages" npm install -g --force --ignore-scripts --omit=optional "$pinned_main" info "Installing ${arch_spec} for Termux via glibc-runner" npm install -g --force --ignore-scripts --os=linux --cpu=arm64 "$arch_spec" find_arch_binary || die "No valid aarch64 ELF found under $MIMO_ARCH_PKG_DIR. \ The arch package may not have unpacked correctly; inspect with: \ ls -la $MIMO_ARCH_PKG_DIR" success "MiMoCode native binary: $MIMO_BINARY_PATH ($(stat -c %s "$MIMO_BINARY_PATH" 2>/dev/null || echo '?') bytes)" } install_host_wrapper() { local tmp_wrapper tmp_wrapper="$(mktemp "$TMP_ROOT/mimo-grun.XXXXXX")" cat >"$tmp_wrapper" <<EOF #!/data/data/com.termux/files/usr/bin/sh $WRAPPER_MARKER mkdir -p "\$HOME/tmp" 2>/dev/null || true export TMPDIR="\${TMPDIR:-\$HOME/tmp}" exec grun "$MIMO_BINARY_PATH" "\$@" EOF chmod 755 "$tmp_wrapper" rm -f "$HOST_MIMO_PATH" mv "$tmp_wrapper" "$HOST_MIMO_PATH" chmod 755 "$HOST_MIMO_PATH" success "Installed Termux launcher: $HOST_MIMO_PATH" } verify_install() { info "Verifying binary via grun" grun "$MIMO_BINARY_PATH" --version info "Verifying Termux launcher" "$HOST_MIMO_PATH" --version local path_mimo="" path_mimo="$(command -v mimo 2>/dev/null || true)" if [ -n "$path_mimo" ] && [ "$path_mimo" != "$HOST_MIMO_PATH" ]; then warn "Your PATH resolves 'mimo' to $path_mimo, not $HOST_MIMO_PATH." warn "Move $PREFIX_DIR/bin earlier in PATH or remove the older launcher." fi success "MiMoCode setup completed (glibc-runner mode)" } main() { if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then usage exit 0 fi ensure_tmp_root require_termux ensure_glibc_runner ensure_nodejs backup_existing_launcher install_mimo_package install_host_wrapper verify_install cat <<EOF Run MiMoCode with: mimo Configuration: mode: glibc-runner (no proot) binary: $MIMO_BINARY_PATH launcher: $HOST_MIMO_PATH temp: $TMP_ROOT If the official installer previously added ~/.mimocode/bin before $PREFIX_DIR/bin, that older launcher may shadow this Termux wrapper. Troubleshooting: - If npm cannot resolve a preview version, install with: MIMO_CODE_VERSION=preview bash $SCRIPT_NAME - If subprocess errors mention libc/ld.so, the binary is loading Termux bionic libs via inherited LD_LIBRARY_PATH. Check glibc-runner docs. EOF } main "$@" 1 个帖子 - 1 位参与者 阅读完整话题
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
不喜欢红点的朋友们可以安装起来 BetaProfiles 上 6 月 4 日发布了最新的 Block OTA Profile https://betaprofiles.com/
开源一个自己在用的小工具:SFS ( SmallFileSync )。 用于同步配置文件、dotfiles 、IDE 设置等小文件,基于 WebDAV 存储(支持坚果云等服务)。 相比网盘同步整个目录,SFS 按文件管理和同步,没有后台守护进程,支持自动同步、冲突检测、MD5 校验,并提供终端 TUI 和 Web UI 两种使用方式。 适合有多台电脑,需要保持开发环境配置一致的开发者。 GitHub: https://github.com/vst93/sfs
开源一个自己在用的小工具:SFS ( SmallFileSync )。 用于同步配置文件、dotfiles 、IDE 设置等小文件,基于 WebDAV 存储(支持坚果云等服务)。 相比网盘同步整个目录,SFS 按文件管理和同步,没有后台守护进程,支持自动同步、冲突检测、MD5 校验,并提供终端 TUI 和 Web UI 两种使用方式。 适合有多台电脑,需要保持开发环境配置一致的开发者。 GitHub: https://github.com/vst93/sfs
开源一个自己在用的小工具:SFS ( SmallFileSync )。 用于同步配置文件、dotfiles 、IDE 设置等小文件,基于 WebDAV 存储(支持坚果云等服务)。 相比网盘同步整个目录,SFS 按文件管理和同步,没有后台守护进程,支持自动同步、冲突检测、MD5 校验,并提供终端 TUI 和 Web UI 两种使用方式。 适合有多台电脑,需要保持开发环境配置一致的开发者。 GitHub: https://github.com/vst93/sfs
files.md 是一个极简的 Markdown 编辑器,在线工具,浏览器打开即可使用。@Appinn 今天看到这个: 觉得有点意思,试试看。 这是一个在线 md 编辑器,不需要下载,不需要安装,打开直接用,支持电脑,手机: 可以打开本地 .md 文件,也可以直接保存在浏览器中。 聊天模式 它有一个
最近抽空把自己用了一段时间的 macOS dotfiles 整理了一下。 一开始只是想把终端、状态栏、Tmux 、提示符这些东西配得顺眼一点,结果越折腾越多,最后干脆做成了一套可以直接初始化的新配置。 这套东西目前最主要的点就是主题系统: 我把 SketchyBar 、Tmux 、Ghostty 、Starship 的配色尽量统一了,切换主题的时候不用一个个文件去改。 https://slashspace.github.io/dotfiles/ 现在支持的主题 目前做了 10 套: catppuccin-mocha dracula gruvbox kanagawa-dragon matrix monokai-pro nord one-dark solarized-dark everforest 切换方式也比较直接: bash dotfiles theme 会弹一个选择器,当前正在用的主题会标出来,选完之后相关配置会一起更新。 这套配置里有什么 目前大概是这些东西: AeroSpace:窗口管理 SketchyBar:状态栏 Ghostty:终端 Neovim + LazyVim:编辑器 Tmux:终端复用 Starship:提示符 Sheldon:插件管理 我自己平时主要就是写代码、开很多终端、来回切项目,所以这套配置的目标不是“炫技”,而是尽量让整个开发环境保持一致,少一点重复配置的麻烦。 目录结构 我现在大致是这么分的: text dotfiles/ ├── core/ # git / zsh / nvim / tmux 这些跨平台配置 ├── modules/ # macOS 专属配置 └── system/ # 安装脚本 + 主题相关逻辑 链接管理用的是 GNU Stow 。 好处是新机器上初始化比较省事,不用手动一项项拷配置文件。 初始化方式 第一次装的时候基本是这样: bash git clone <repo-url> ~/dotfiles cd ~/dotfiles dotfiles bootstrap exec zsh 如果只是想体验主题切换,可以直接: bash dotfiles theme 做的时候踩的一些坑 这次整理下来,主要费时间的其实不是“写配置”,而是“把各种工具统一起来”。 几个比较明显的问题: 每个工具的主题变量都不太一样,统一配色挺烦的。 有些配置改完会影响启动速度,所以我尽量拆得清楚一点。 SketchyBar 、AeroSpace 、Ghostty 这些工具之间有联动,配置顺序得理顺,不然容易出各种小问题。 如果终端、状态栏、Tmux 、Starship 风格不一致,整体观感会特别乱。 所以最后效果看起来好像挺整齐,其实中间改了不少次。 目前状态 这套配置还比较偏个人使用,很多地方也是按我自己的工作流在整理。 如果你也在折腾 macOS 开发环境,应该能从里面找到一些可以参考的结构,尤其是主题统一和配置拆分这块。 后面我还会继续补一些零散的东西,比如: 更细的主题适配 各个模块的拆分整理 新机器初始化的稳定性 一些常用开发工具的联动 链接 GitHub: https://github.com/slashspace/dotfiles 欢迎交流,尤其是如果你也在折腾 macOS + 终端环境这套东西。
最近抽空把自己用了一段时间的 macOS dotfiles 整理了一下。 一开始只是想把终端、状态栏、Tmux 、提示符这些东西配得顺眼一点,结果越折腾越多,最后干脆做成了一套可以直接初始化的新配置。 这套东西目前最主要的点就是主题系统: 我把 SketchyBar 、Tmux 、Ghostty 、Starship 的配色尽量统一了,切换主题的时候不用一个个文件去改。 https://slashspace.github.io/dotfiles/ 现在支持的主题 目前做了 10 套: catppuccin-mocha dracula gruvbox kanagawa-dragon matrix monokai-pro nord one-dark solarized-dark everforest 切换方式也比较直接: bash dotfiles theme 会弹一个选择器,当前正在用的主题会标出来,选完之后相关配置会一起更新。 这套配置里有什么 目前大概是这些东西: AeroSpace:窗口管理 SketchyBar:状态栏 Ghostty:终端 Neovim + LazyVim:编辑器 Tmux:终端复用 Starship:提示符 Sheldon:插件管理 我自己平时主要就是写代码、开很多终端、来回切项目,所以这套配置的目标不是“炫技”,而是尽量让整个开发环境保持一致,少一点重复配置的麻烦。 目录结构 我现在大致是这么分的: text dotfiles/ ├── core/ # git / zsh / nvim / tmux 这些跨平台配置 ├── modules/ # macOS 专属配置 └── system/ # 安装脚本 + 主题相关逻辑 链接管理用的是 GNU Stow 。 好处是新机器上初始化比较省事,不用手动一项项拷配置文件。 初始化方式 第一次装的时候基本是这样: bash git clone <repo-url> ~/dotfiles cd ~/dotfiles dotfiles bootstrap exec zsh 如果只是想体验主题切换,可以直接: bash dotfiles theme 做的时候踩的一些坑 这次整理下来,主要费时间的其实不是“写配置”,而是“把各种工具统一起来”。 几个比较明显的问题: 每个工具的主题变量都不太一样,统一配色挺烦的。 有些配置改完会影响启动速度,所以我尽量拆得清楚一点。 SketchyBar 、AeroSpace 、Ghostty 这些工具之间有联动,配置顺序得理顺,不然容易出各种小问题。 如果终端、状态栏、Tmux 、Starship 风格不一致,整体观感会特别乱。 所以最后效果看起来好像挺整齐,其实中间改了不少次。 目前状态 这套配置还比较偏个人使用,很多地方也是按我自己的工作流在整理。 如果你也在折腾 macOS 开发环境,应该能从里面找到一些可以参考的结构,尤其是主题统一和配置拆分这块。 后面我还会继续补一些零散的东西,比如: 更细的主题适配 各个模块的拆分整理 新机器初始化的稳定性 一些常用开发工具的联动 链接 GitHub: https://github.com/slashspace/dotfiles 欢迎交流,尤其是如果你也在折腾 macOS + 终端环境这套东西。
最近抽空把自己用了一段时间的 macOS dotfiles 整理了一下。 一开始只是想把终端、状态栏、Tmux 、提示符这些东西配得顺眼一点,结果越折腾越多,最后干脆做成了一套可以直接初始化的新配置。 这套东西目前最主要的点就是主题系统: 我把 SketchyBar 、Tmux 、Ghostty 、Starship 的配色尽量统一了,切换主题的时候不用一个个文件去改。 https://slashspace.github.io/dotfiles/ 现在支持的主题 目前做了 10 套: catppuccin-mocha dracula gruvbox kanagawa-dragon matrix monokai-pro nord one-dark solarized-dark everforest 切换方式也比较直接: bash dotfiles theme 会弹一个选择器,当前正在用的主题会标出来,选完之后相关配置会一起更新。 这套配置里有什么 目前大概是这些东西: AeroSpace:窗口管理 SketchyBar:状态栏 Ghostty:终端 Neovim + LazyVim:编辑器 Tmux:终端复用 Starship:提示符 Sheldon:插件管理 我自己平时主要就是写代码、开很多终端、来回切项目,所以这套配置的目标不是“炫技”,而是尽量让整个开发环境保持一致,少一点重复配置的麻烦。 目录结构 我现在大致是这么分的: text dotfiles/ ├── core/ # git / zsh / nvim / tmux 这些跨平台配置 ├── modules/ # macOS 专属配置 └── system/ # 安装脚本 + 主题相关逻辑 链接管理用的是 GNU Stow 。 好处是新机器上初始化比较省事,不用手动一项项拷配置文件。 初始化方式 第一次装的时候基本是这样: bash git clone <repo-url> ~/dotfiles cd ~/dotfiles dotfiles bootstrap exec zsh 如果只是想体验主题切换,可以直接: bash dotfiles theme 做的时候踩的一些坑 这次整理下来,主要费时间的其实不是“写配置”,而是“把各种工具统一起来”。 几个比较明显的问题: 每个工具的主题变量都不太一样,统一配色挺烦的。 有些配置改完会影响启动速度,所以我尽量拆得清楚一点。 SketchyBar 、AeroSpace 、Ghostty 这些工具之间有联动,配置顺序得理顺,不然容易出各种小问题。 如果终端、状态栏、Tmux 、Starship 风格不一致,整体观感会特别乱。 所以最后效果看起来好像挺整齐,其实中间改了不少次。 目前状态 这套配置还比较偏个人使用,很多地方也是按我自己的工作流在整理。 如果你也在折腾 macOS 开发环境,应该能从里面找到一些可以参考的结构,尤其是主题统一和配置拆分这块。 后面我还会继续补一些零散的东西,比如: 更细的主题适配 各个模块的拆分整理 新机器初始化的稳定性 一些常用开发工具的联动 链接 GitHub: https://github.com/slashspace/dotfiles 欢迎交流,尤其是如果你也在折腾 macOS + 终端环境这套东西。
折腾了一套 macOS dotfiles ,核心亮点是 主题系统 —— 一条命令切换 10 种配色,SketchyBar 、Tmux 、Ghostty 、Starship 全部同步更新。 效果预览 支持的主题: catppuccin-mocha / dracula / gruvbox kanagawa-dragon / matrix / monokai-pro nord / one-dark / solarized-dark / everforest 切换命令: dotfiles theme # fzf 选择器,当前主题标记 ● 工具链 用途 工具 窗口管理 AeroSpace ( i3 风格) 状态栏 SketchyBar (底部,显示工作区/应用/状态) 终端 Ghostty ( GPU 渲染,快) 编辑器 Neovim + LazyVim 终端复用 Tmux 提示符 Starship 插件管理 Sheldon (替代 oh-my-zsh ) 架构设计 dotfiles/ ├── core/ # 跨平台配置( git/zsh/nvim/tmux ) ├── modules/ # macOS 专属( aerospace/sketchybar/ghostty ) └── system/ # 共享工具 + 主题引擎 用 GNU Stow 管理符号链接, dotfiles bootstrap 一键初始化所有依赖。 快速体验 git clone <repo-url> ~/dotfiles cd ~/dotfiles && dotfiles bootstrap exec zsh 链接 🌐 在线预览 : https://slashspace.github.io/dotfiles/ 📦 GitHub : https://github.com/slashspace/dotfiles 欢迎 star ,有问题评论区交流。
https://gofile.io/uploadFiles https://www.sendgb.com/ https://www.file.io/ https://www.transfernow.net/en https://ufile.io/ https://www.filemail.com/ https://file.pizza/ https://justbeamit.com/