From 6563ae107efd04080bb582e350d285d032a81a8b Mon Sep 17 00:00:00 2001 From: Li Junhao Date: Sat, 10 Jan 2026 03:28:19 +0800 Subject: [PATCH] Introducing x-cmd plugin for ohmyzsh --- plugins/x-cmd/README.md | 36 ++++++++++++++++++++++++++++ plugins/x-cmd/x-cmd.plugin.zsh | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 plugins/x-cmd/README.md create mode 100644 plugins/x-cmd/x-cmd.plugin.zsh diff --git a/plugins/x-cmd/README.md b/plugins/x-cmd/README.md new file mode 100644 index 000000000..9368ec679 --- /dev/null +++ b/plugins/x-cmd/README.md @@ -0,0 +1,36 @@ +# X-CMD + +To start using it, add the `x-cmd` plugin to your `plugins` array in `~/.zshrc`: + +```zsh +plugins=(... x-cmd) +``` + +## Functions + +### `x` + +```zsh +x yq # Using yq command to interract with YML. If yq is not avaiable in the machine. X-CMD will download and directly execute the binary on demand without installation. X-CMD try to avoid influence the environment and folder and always find the solution with least impact. + +x fjo # Posix shell CLI to interactve with forgejo. +x cb # Posix shell CLI to interactve with codeberg. + +x nihao # For more information about using gpt, gemini, etc in terminal. +``` + +### `m` + +m for `machine`. + +In mac, it is [`x mac`](https://x-cmd.com/mod/mac). +In termux, it is [`x termux`](https://x-cmd.com/mod/termux). + +```bash +m ss # Info about systemsetup +m app # List application status +m wifi proxy enable :2023 # Set +``` + + + diff --git a/plugins/x-cmd/x-cmd.plugin.zsh b/plugins/x-cmd/x-cmd.plugin.zsh new file mode 100644 index 000000000..d4a6d84fb --- /dev/null +++ b/plugins/x-cmd/x-cmd.plugin.zsh @@ -0,0 +1,44 @@ + +x(){( + @info(){ + printf "%s\n" "$@" + } + + if [ -e "$HOME/.x-cmd.root/X" ]; then + . "$HOME/.x-cmd.root/X" + return $? + fi + + local cmdstr="" + if command -v curl 2>/dev/null; then + cmdstr='eval "$(curl -s https://get.x-cmd.com)"' + elif command -v wget 2>/dev/null; then + cmdstr='eval "$(wget -O- https://get.x-cmd.com)"' + fi + + @info "X-CMD is not installed. Do you want to install x-cmd ?" + @info "Command using is -> $cmdstr" + + local answer="" + read -q "Please press y for yes, n for no. Ctrl-C will also abort the setup." answer || { + @info "Received intrrupt. Exit with error code 130." + return 130 + } + + case "$answer" in + n|N|no) + @info "Received $answer. Exit the setup immediately." + return 0 + ;; + y|Y|yes) + @info "Received $answer. Setup is going now." + eval "$cmdstr" + return 0 + ;; + *) + @info "Received unknown $answer." + return 1 + ;; + esac +)} +