feat: panel de control GTK3 estilo Mullvad
- INSTALLER/panel.py: ventana compacta 390x610 con 3 pestanas (OASIS / ECOIN / SISTEMA), status cards con indicador de punto coloreado, botones naranja/verde al estilo Solar Net Hub, log de actividad en tiempo real y polling de estado cada 3s. - start_panel.sh: lanzador que verifica/instala python3-gi, copia la fuente Dune Rise y arranca panel.py. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0c7e4866d3
commit
ae79e45c19
2 changed files with 772 additions and 0 deletions
77
start_panel.sh
Executable file
77
start_panel.sh
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env bash
|
||||
# =============================================================
|
||||
# SOLAR NET HUB — Panel de control (lanzador)
|
||||
# Lanza panel.py si python3-gi está disponible;
|
||||
# si no, lo instala y reintenta.
|
||||
# =============================================================
|
||||
set -euo pipefail
|
||||
|
||||
REPO_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||
PANEL_PY="$REPO_DIR/INSTALLER/panel.py"
|
||||
INSTALLER_SH="$REPO_DIR/INSTALLER/installer.sh"
|
||||
|
||||
C_RESET='\033[0m'
|
||||
C_OK='\033[1;32m'
|
||||
C_FAIL='\033[1;31m'
|
||||
C_WARN='\033[1;33m'
|
||||
C_INFO='\033[1;36m'
|
||||
|
||||
have(){ command -v "$1" >/dev/null 2>&1; }
|
||||
|
||||
# ── Instalar fuente Dune Rise (usuario, sin root) ─────────────────────────
|
||||
install_font(){
|
||||
local src="$REPO_DIR/INSTALLER/Dune_Rise.otf"
|
||||
local dst="$HOME/.local/share/fonts/Dune_Rise.otf"
|
||||
if [ -f "$src" ] && [ ! -f "$dst" ]; then
|
||||
mkdir -p "$HOME/.local/share/fonts"
|
||||
cp -f "$src" "$dst"
|
||||
fc-cache -f >/dev/null 2>&1 || true
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Verificar / instalar python3-gi ──────────────────────────────────────
|
||||
check_gi(){
|
||||
python3 -c "import gi; gi.require_version('Gtk','3.0'); from gi.repository import Gtk" \
|
||||
>/dev/null 2>&1
|
||||
}
|
||||
|
||||
install_gi(){
|
||||
echo -e "${C_WARN}⚠ python3-gi no encontrado. Instalando…${C_RESET}"
|
||||
if have apt-get; then sudo apt-get install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0
|
||||
elif have pacman; then sudo pacman -Sy --noconfirm python-gobject
|
||||
elif have dnf; then sudo dnf install -y python3-gobject gtk3
|
||||
elif have zypper; then sudo zypper --non-interactive install python3-gobject gtk3
|
||||
else
|
||||
echo -e "${C_FAIL}✘ Gestor de paquetes no soportado.${C_RESET}"
|
||||
echo " Instala manualmente: python3-gi / python-gobject"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Verificar DISPLAY / Wayland ───────────────────────────────────────────
|
||||
check_display(){
|
||||
if [ -z "${DISPLAY:-}" ] && [ -z "${WAYLAND_DISPLAY:-}" ]; then
|
||||
echo -e "${C_FAIL}✘ No hay sesión gráfica (DISPLAY/WAYLAND_DISPLAY vacíos).${C_RESET}"
|
||||
echo " Ejecuta este script desde tu escritorio o una terminal gráfica."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Main ─────────────────────────────────────────────────────────────────
|
||||
echo -e "${C_INFO}== SOLAR NET HUB :: Panel de Control ==${C_RESET}"
|
||||
|
||||
check_display
|
||||
|
||||
install_font 2>/dev/null || true
|
||||
|
||||
if ! check_gi; then
|
||||
install_gi
|
||||
if ! check_gi; then
|
||||
echo -e "${C_FAIL}✘ No se pudo cargar python3-gi tras la instalación.${C_RESET}"
|
||||
echo " Intenta cerrar sesión y volver a entrar, o instala python3-gi manualmente."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${C_OK}✔ python3-gi listo. Lanzando panel…${C_RESET}"
|
||||
exec python3 "$PANEL_PY" "$@"
|
||||
Loading…
Add table
Add a link
Reference in a new issue