Initial commit

This commit is contained in:
Artyom Titov 2026-09-09 20:05:09 +03:00
commit 96f78957d1

115
nstart.zsh Executable file
View file

@ -0,0 +1,115 @@
#!/bin/zsh
spinner() {
local pid=$1
local text=$2
local -a frames=( '⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏' )
local i=1
while kill -0 "$pid" 2>/dev/null; do
printf "\r%s %s" "${frames[$i]}" "$text"
(( i = i % $#frames + 1 ))
sleep 0.08
done
}
print_numbered_list() {
local i
local -a items=( "${(@P)1}" )
for (( i=1; i <= ${#items}; i++ )); do
items[$i]="%B[$i]%b$items[$i]"
done
print -P -C 4 "${items[@]}"
}
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
fi
connections=( ${(f)"$(nmcli --terse --fields NAME connection show)"} )
typeset -T DEFAULT_CONNECTIONS_NM default_con
if [[ "$default_con" == "" ]]; then
#if you can't export zsh array to environment, replace this fallback values
default_con=(home wg0 work wifi iPhone)
fi
for (( i=$#default_con; i>=1; i-- )); do
local flag=false
for con in $connections; do
if [[ "$default_con[$i]" == "$con" ]]; then
flag=true
break
fi
done
if [[ "$flag" == "false" ]]; then
default_con[$i]=()
fi
done
print -n "Found"
for (( i=1; i <= $#default_con; i++ )); do
print -nP " %B[$i]%b$default_con[$i]"
done
print " from default connections"
connection_number=0
connection_promt=" Connect to [1]? Otherwise enter connection's number (1-$#default_con)
or 'n' for choosing from all connections [1/n]: "
read -r "connection_number?${connection_promt}"
connection_to_run="None"
if [[ -z "$connection_number" ]]; then
connection_to_run=$default_con[1]
elif (( connection_number )); then
connection_to_run=$default_con[$connection_number]
elif [[ "$connection_number" == "n" ]]; then
print "Select connections from below:"
print_numbered_list connections
read -r "connection_number_?
Enter a number: "
connection_to_run=$connections[$connection_number_]
else
connection_to_run=$connection_number
fi
nmcli c u "$connection_to_run" 1> /dev/null 2>&1 &
nmcli_pid=$!
spinner "$nmcli_pid" "Connecting to '$connection_to_run'..."
if wait "$nmcli_pid"; then
print -P "\r%E%F{green}✔%f Connected to '$connection_to_run'"
else
print -P "\r%F{red}✘%fFailed to connect to '$connection_to_run'"
fi
## Starting xray proxy
#checking if xray running
if pgrep xray 1>/dev/null; then
print "Xray is running already. No need in duplication."
exit 0
fi
#
if [[ -n "$XRAY_CONFIG_FILE" ]]; then
print "\$XRAY_CONFIG_FILE is defined. Using this."
else
print "\$XRAY_CONFIG_FILE is not defined. Write path to xray's config file:"
read -t 60 XRAY_CONFIG_FILE
if [[ ! -n "$XRAY_CONFIG_FILE" ]]; then
print -P "Timeout for promting XRAY_CONFIG_FILE.\nScript exiting."
exit 1
fi
fi
print -n "Starting quietly xray with config '$XRAY_CONFIG_FILE'..."
xray run -c $XRAY_CONFIG_FILE 1>/dev/null 2>/dev/null &
print -P "\r%E%B%F{green}✔%f%b xray has started"
exit 0