mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-10-10 12:13:04 +08:00
feat(ui): make summary box width adaptive and center title
This commit is contained in:
@@ -4,6 +4,7 @@ set -euo pipefail
|
||||
Server_Dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=scripts/ui.sh
|
||||
. "$Server_Dir/scripts/ui.sh"
|
||||
|
||||
Install_Dir="${CLASH_INSTALL_DIR:-$Server_Dir}"
|
||||
|
||||
Service_Name="clash-for-linux"
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# Clash shell helpers
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
CLASH_INSTALL_DIR="${CLASH_INSTALL_DIR:-/root/clash-for-linux}"
|
||||
ENV_FILE="${CLASH_INSTALL_DIR}/.env"
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
# 作用:
|
||||
# - 将订阅内容转换为 Clash Meta / Mihomo 可用的完整 YAML 配置
|
||||
# - 默认使用 subconverter HTTP /sub 接口(最稳:使用 -G + --data-urlencode)
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
trim_value() {
|
||||
local value="$1"
|
||||
echo "$value" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
||||
|
||||
@@ -3,4 +3,11 @@ set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
exec "$PROJECT_DIR/clashctl" doctor "$@"
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
RUNTIME_DIR="$PROJECT_DIR/runtime"
|
||||
CONFIG_DIR="$PROJECT_DIR/config"
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#!/bin/bash
|
||||
# 作用:获取当前 Linux 系统的 CPU 架构信息,并输出到标准输出
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
if ! command -v ui_info >/dev/null 2>&1; then
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$SCRIPT_DIR/ui.sh"
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
exitWithError() {
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
SERVICE_NAME="clash-for-linux"
|
||||
UNIT_PATH="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
|
||||
@@ -3,4 +3,11 @@ set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
exec "$PROJECT_DIR/clashctl" logs "$@"
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PORT_CHECK_WARNED=${PORT_CHECK_WARNED:-0}
|
||||
|
||||
# =========================
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
resolve_clash_arch() {
|
||||
local raw_arch="$1"
|
||||
case "$raw_arch" in
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
|
||||
# 作用:
|
||||
# - 根据 OS/ARCH 选择 tools/subconverter/<platform>/subconverter
|
||||
# - 生成稳定入口 tools/subconverter/subconverter(优先软链接,失败则复制)
|
||||
@@ -34,9 +42,6 @@ PREF_EXAMPLE_INI="$SC_DIR/pref.example.ini"
|
||||
|
||||
PID_FILE="$Temp_Dir/subconverter.pid"
|
||||
|
||||
log() { echo "[subc] $*"; }
|
||||
warn() { echo "[subc][警告] $*" >&2; }
|
||||
|
||||
detect_os() {
|
||||
local u
|
||||
u="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
@@ -111,7 +116,7 @@ main() {
|
||||
arch="$(detect_arch)"
|
||||
|
||||
if [ "$os" = "unsupported" ]; then
|
||||
warn "不支持的操作系统: $(uname -s),跳过 subconverter"
|
||||
ui_warn "不支持的操作系统: $(uname -s),跳过 subconverter"
|
||||
Subconverter_Ready=false
|
||||
export Subconverter_Bin Subconverter_Ready SUBCONVERTER_BIN SUBCONVERTER_READY SUBCONVERTER_URL
|
||||
true
|
||||
@@ -119,7 +124,7 @@ main() {
|
||||
fi
|
||||
|
||||
if [ "$arch" = "unknown" ]; then
|
||||
warn "不支持的架构: $(uname -m),跳过 subconverter"
|
||||
ui_warn "不支持的架构: $(uname -m),跳过 subconverter"
|
||||
Subconverter_Ready=false
|
||||
export Subconverter_Bin Subconverter_Ready SUBCONVERTER_BIN SUBCONVERTER_READY SUBCONVERTER_URL
|
||||
true
|
||||
@@ -128,7 +133,7 @@ main() {
|
||||
|
||||
platform_bin="$(pick_platform_bin "$os" "$arch")"
|
||||
if [ -z "$platform_bin" ]; then
|
||||
warn "未找到 subconverter 二进制: $SC_DIR/${os}-${arch}/subconverter"
|
||||
ui_warn "未找到 subconverter 二进制: $SC_DIR/${os}-${arch}/subconverter"
|
||||
Subconverter_Ready=false
|
||||
export Subconverter_Bin Subconverter_Ready SUBCONVERTER_BIN SUBCONVERTER_READY SUBCONVERTER_URL
|
||||
true
|
||||
@@ -137,7 +142,7 @@ main() {
|
||||
|
||||
# 2) 创建稳定入口
|
||||
if ! make_stable_link_or_copy "$platform_bin"; then
|
||||
warn "创建稳定入口失败: $SC_LINK"
|
||||
ui_warn "创建稳定入口失败: $SC_LINK"
|
||||
Subconverter_Ready=false
|
||||
export Subconverter_Bin Subconverter_Ready SUBCONVERTER_BIN SUBCONVERTER_READY SUBCONVERTER_URL
|
||||
true
|
||||
@@ -146,7 +151,7 @@ main() {
|
||||
|
||||
Subconverter_Bin="$SC_LINK"
|
||||
Subconverter_Ready=true
|
||||
log "已解析平台二进制: ${os}-${arch} -> $Subconverter_Bin"
|
||||
ui_info "已解析平台二进制: ${os}-${arch} -> $Subconverter_Bin"
|
||||
|
||||
# 3) 生成 pref.ini(仅 daemon 模式)
|
||||
if [ "$Subconverter_Ready" = "true" ] && [ "$SUBCONVERTER_MODE" = "daemon" ]; then
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
RUNTIME_DIR="$PROJECT_DIR/runtime"
|
||||
LOG_DIR="$PROJECT_DIR/logs"
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
RUNTIME_DIR="$PROJECT_DIR/runtime"
|
||||
PID_FILE="$RUNTIME_DIR/clash.pid"
|
||||
|
||||
@@ -3,4 +3,11 @@ set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
exec "$PROJECT_DIR/clashctl" status "$@"
|
||||
@@ -3,4 +3,11 @@ set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
if ! declare -f ui_info >/dev/null 2>&1; then
|
||||
# shellcheck source=scripts/ui.sh
|
||||
source "$PROJECT_DIR/scripts/ui.sh"
|
||||
fi
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
exec "$PROJECT_DIR/clashctl" stop "$@"
|
||||
@@ -1,6 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
Server_Dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=scripts/ui.sh
|
||||
. "$Server_Dir/scripts/ui.sh"
|
||||
|
||||
SERVICE_NAME="clash-for-linux"
|
||||
UNIT_PATH="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
INSTALL_DIR="${CLASH_INSTALL_DIR:-$(cd "$(dirname "$0")" && pwd)}"
|
||||
|
||||
Reference in New Issue
Block a user