Compare commits

...

15 Commits

Author SHA1 Message Date
Tuxliban Torvalds cd8e8016e4 sync_cloud: Script que sincroniza nube remota 2022-05-11 03:10:15 -05:00
Tuxliban Torvalds 0750c9cbc9 keyboard: Desactiva teclado interno en portátiles 2022-05-11 03:06:08 -05:00
Tuxliban Torvalds aa303fe66e escript: Edita rápidamente otros scripts que estén en el path 2022-05-11 03:04:58 -05:00
Tuxliban Torvalds ee5ff0d970 xpkglocal: Se reemplaza herbe por dzen2 para notificaciones y se corrige sintaxis en las pruebas test 2022-05-11 03:00:17 -05:00
Tuxliban Torvalds 31b0d24cbb wifi: se reemplaza herbe por dzen2 para notificaciones 2022-05-11 02:58:07 -05:00
Tuxliban Torvalds a83da95b24 Se reemplaza herbe por dzen2 para notificaciones, se corrige sintaxis de prueba test y se añaden funciones para instalar dependencias del script 2022-05-11 02:56:32 -05:00
Tuxliban Torvalds fb800267e1 updates-void: Se reemplaza herbe por dzen2 para notificaciones 2022-05-11 02:50:48 -05:00
Tuxliban Torvalds 05427ea824 statusbar: Se añade función para monitorear estado de bateria 2022-05-11 02:46:52 -05:00
Tuxliban Torvalds 01515d2720 ss_void: Se reemplaza herbe por dzen2 para notificaciones y se corrige prueba test de dependencias 2022-05-11 02:45:00 -05:00
Tuxliban Torvalds eebc072333 pasta: Se corrige redacción de instrucciones 2022-05-11 02:37:40 -05:00
Tuxliban Torvalds b4b8e67f67 musl-static-nnn-build: Se modifican directorios de construcción de librerías y se especifican dependencias básicas de construcción 2022-05-11 02:36:37 -05:00
Tuxliban Torvalds ad3a3cc445 menu-apagar: Se eliminan glifos del menu 2022-05-11 02:32:56 -05:00
Tuxliban Torvalds b30f1d242b hosts: Se reemplaza herbe por dzen2 para las notificaciones y se corrige sintaxis de printf 2022-05-11 02:31:08 -05:00
Tuxliban Torvalds 6a961aa08e getvol: se reemplaza echo por printf 2022-05-11 02:29:09 -05:00
Tuxliban Torvalds 1e7495f748 feed-void: Se añade descripción del script y se añaden modificaciones en la prueba test 2022-05-11 02:28:18 -05:00
15 changed files with 327 additions and 151 deletions

14
varios/escript Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
# Script para editar rápidamente otros script sin necesidad de especificar su respectiva ubicación.
# Este script sólo buscará ejecutables que se encuentren en el PATH del sistema y el que el usuario
# haya definido
FILE_PATH=$(command -v "$1" 2>/dev/null)
if [ -z "$FILE_PATH" ]; then
printf "%s\n" "Error: $1 no encontrado"
exit 1
fi
$EDITOR "$FILE_PATH"

View File

@ -1,6 +1,8 @@
#!/bin/sh
# Script que muestra notificaciones de paquetes nuevos en el repositorio remoto,
# actualizaciones remotas y actualizaciones disponibles para el sistema
if [ -f /usr/bin/rsstail ]; then
if command -v rsstail; then
rsstail -1 -u https://github.com/void-linux/void-packages/commits/master.atom > /tmp/feed
updatedpkgs="$(grep -E "Update|update" /tmp/feed | wc -l)"
@ -28,10 +30,7 @@ printf "\n"
# En caso de existir errores
elif [ ! -f /usr/bin/rsstail ];then
elif ! command -v rsstail; then
printf "\033[31;5m[ERROR] Este script requiere del paquete: 'rsstail'\033[0m\n"
exit 0;
else
printf "\033[33;5m\033[33;1mAlgo salió mal: verificar /usr/bin/rsstail\033[0m\033[0m\n"
exit 0;
fi

View File

@ -1,8 +1,9 @@
#!/bin/sh
vol_on=$(amixer get Master | tail -n 1 | cut -d ' ' -f 8)
vol=$(amixer get Master | awk -F'[][]' 'END{ print $2 }')
if [ "$vol_on" = '[on]' ]; then
echo " $vol";
printf '%s\n' " $vol";
else
printf " \n";
fi;
printf '%s\n' "mute ﱝ \n";
fi

View File

@ -1,27 +1,31 @@
#!/bin/sh
# V0.2.1
# V0.3.0
# Script para descargar una lista personalizada con direcciones para bloquearlas
# a través del fichero hosts
# Para automatizar este proceso se recomienda crear una tarea (crontab) y ajustarla a las necesidades del usuario (diario, semanal
# a través del fichero hosts. Para automatizar este proceso se recomienda crear
# una tarea (crontab) y ajustarla a las necesidades del usuario (diario, semanal
# mensual, etc)
msg() {
dzen2 -p '10' -fn 'JetBrains Mono:size=8:style=bold' -ta '5' \
-w '260' -x '1100' -y '25'
}
# Realizar copia de seguridad del fichero hosts en caso de no existir
if [ ! -f /etc/hosts.bak ]; then
printf "\033[32;1mCreando copia de seguridad del fichero hosts...\033[0m\n";
printf '%b' "\033[32;1mCreando copia de seguridad del fichero hosts...\033[0m\n";
doas cp /etc/hosts /etc/hosts.bak && sleep 1s; printf "\033[33;1mCopia finalizada\033[0m\n"
else
printf "\033[35;5mYa existe copia de seguridad del fichero hosts\033[0m\n"
printf '%b' "\033[35;5mYa existe copia de seguridad del fichero hosts\033[0m\n"
fi
# Descargar actualizaciones mas reciente del repositorio y copiarlo al fichero hosts
if [ ! -w /etc/hosts ]; then
doas chmod o+w /etc/hosts && sleep 1s;
printf "\033[32;1mDescargando y copiando lista actualizada para fichero hosts...\033[0m\n" &&
printf '%b' "\033[32;1mDescargando y copiando lista actualizada para fichero hosts...\033[0m\n" &&
wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts && sleep 1s;
else
printf "\033[32;1mDescargando y copiando lista actualizada para fichero hosts...\033[0m\n" &&
printf '%b' "\033[32;1mDescargando y copiando lista actualizada para fichero hosts...\033[0m\n" &&
wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn/hosts && sleep 1s;
fi
@ -30,10 +34,10 @@ fi
#cat /home/skynet/Datos/Git/archivos_diversos/parche >> /etc/hosts; sleep 2;
#printf "\033[33;1mParche aplicado\033[0m\n";
~/.local/bin/dunst_sound &
"$HOME"/.local/bin/dunst_sound &
# Notificacion de actualizacion del fichero
printf "\033[36;1mFichero hosts actualizado.\nTarea finalizada.\033[0m\n";
printf '%b' "\033[36;1mFichero hosts actualizado.\033[0m\n";
#notify-send -t 5000 -i /home/skynet/.icons/status/hosts_update.png "Tarea finalizada" 'Fichero hosts actualizado'
#printf 'IMG:/home/skynet/Datos/Git_Hub/Void_Linux/otros/icons/status/hosts_update.png\tTarea finalizada\tFichero hosts actualizado\n' > $XNOTIFY_FIFO
herbe "Lista de fichero hosts actualizado"
printf '%s\n' "Lista de fichero hosts actualizado" | msg

28
varios/keyboard Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
## Script para desactivar teclado interno en portátiles mientras se está en
## el servidor gráfico
ayuda(){
cat << EOF
Uso: $(basename "$0") [arg]
Ejemplo: $(basename "$0") on --> Activa teclado interno
Ejemplo: $(basename "$0") off --> Desactiva teclado interno
Ejemplo: $(basename "$0") --help, -h --> muestra este mensaje de ayuda
EOF
}
# Salir si existe un error
set -e
ID=$(xinput --list | awk '/Translated/ {print $7}' | cut -d '=' -f 2)
case "$1" in
on)
xinput set-int-prop "$ID" "Device Enabled" 8 1
;;
off)
xinput set-int-prop "$ID" "Device Enabled" 8 0
;;
--help|-h|*)
ayuda
esac

View File

@ -1,29 +1,29 @@
#!/bin/sh
RET=$(printf "Apagar\nReiniciar\nBloquear\nSuspender\nHibernar\nlogout\nCancelar" | dmenu -l 7 -p " Menu")
RET=$(printf "Apagar\nReiniciar\nBloquear\nSuspender\nHibernar\nlogout\nCancelar" | dmenu -l 7 -p " Menu")
#RET=$(echo "" Apagar"\n" Reiniciar"\n" Bloquear"\n" Suspender"\n" logout"\ncancel" | dmenu -l 7 -p " Logout")
case $RET in
"Apagar")
"Apagar")
#st -T "warning" -g "42x8+480+300" -f "Liberation Mono:size=12" -e su - root -c 'shutdown -h now'
urxvtc -T 'warning' -geometry '42x8-540-320' -imfont 'liberationmono:bold:pixelsize=12' -e su - root -c 'shutdown -h now'
;;
"Reiniciar")
"Reiniciar")
#st -T "warning" -g "42x8+480+300" -f "Liberation Mono:size=12" -e su - root -c 'shutdown -r now'
urxvtc -T 'warning' -geometry '42x8-540-320' -imfont 'liberationmono:bold:pixelsize=12' -e su - root -c 'shutdown -r now'
;;
"Bloquear")
"Bloquear")
slock
;;
"Suspender")
"Suspender")
#st -T 'warning' -g '42x8+480+300' -f 'Liberation Mono:size=12' -e su - root -c zzz && slock
urxvtc -T 'warning' -geometry '42x8-540-320' -imfont 'liberationmono:bold:pixelsize=12' -e su - root -c 'zzz && slock'
;;
"Hibernar")
"Hibernar")
#st -T "warning" -g "42x8+480+300" -f "Liberation Mono:size=12" -e su - root -c ZZZ && slock
urxvtc -T 'warning' -geometry '42x8-540-320' -imfont 'liberationmono:bold:pixelsize=12' -e su - root -c 'ZZZ && slock'
;;
"logout")
"logout")
pkill startdwm && xdotool key "super+shift+q"
;;
*) ;;

View File

@ -1,14 +1,14 @@
#!/bin/sh
BIN=nnn-static
BIN=nnn.static-musl
# Instalar paquetes básicos de desarrollo
doas xbps-install -Sy base-devel
doas xbps-install -Sy pkgconf gcc libtool automake
# Crear directorio donde se gurdarán las bibliotecas estáticas para compilar nnn
if [ ! -d "/opt/nnn-libs" ]; then
doas mkdir /opt/nnn-libs
if [ ! -d "./nnn-libs" ]; then
mkdir nnn-libs
else
doas rm -vf /opt/nnn-libs/*
rm -vf nnn-libs/*
fi
# Obtener netbsd-curses y compilar bibliotecas estáticas
@ -16,7 +16,8 @@ fi
cd netbsd-curses || exit
git checkout v0.3.2
make CC=gcc CFLAGS="-O3 -fPIC" LDFLAGS=-static all-static -j$(($(nproc)+1))
doas busybox.static cp libcurses/libcurses.a libterminfo/libterminfo.a /opt/nnn-libs/
cp libcurses/libcurses.a libterminfo/libterminfo.a ../nnn-libs/
make clean
cd ..
# Compilar la biblioteca estática de musl-fts
@ -25,15 +26,16 @@ cd musl-fts || exit
./bootstrap.sh
./configure
make CC=gcc CFLAGS=-O3 LDFLAGS=-static -j$(($(nproc)+1))
doas busybox.static cp .libs/libfts.a /opt/nnn-libs/
cp .libs/libfts.a ../nnn-libs/
cd ..
# Compilar nnn estáticamente
[ -e "./netbsd-curses" ] || rm "$BIN"
gcc -O3 -DNORL -DNOMOUSE -std=c11 -Wall -Wextra -Wshadow -I./netbsd-curses/libcurses -I./musl-fts -o "$BIN" \
src/nnn.c -Wl,-Bsymbolic-functions -lpthread -L/opt/nnn-libs -lcurses -lterminfo -lfts -static
src/nnn.c -Wl,-Bsymbolic-functions -lpthread -L./nnn-libs -lcurses -lterminfo -lfts -static
# Despojar binario de símbolos de depuración
strip nnn-static
doas xbps-remove -Ry base-devel
doas xbps-remove -Ry pkgconf gcc libtool automake
doas rm -r netbsd-curses musl-fts

View File

@ -1,6 +1,6 @@
#/usr/bin/env perl -w
# Modo de uso: Pon la siguiente línea en tu fichero .Xresources/.Xdefaults
# Modo de uso: Poner la siguiente línea en el fichero .Xresources/.Xdefaults
# URxvt.perl-ext-common :selection-to-clipboard,pasta
# URxvt.keysym.Control-Shift-V :perl:pasta:paste

View File

@ -1,9 +1,9 @@
#!/bin/sh
# v1.0
# Dependencias: scrot, xclip, herbe
# v2.0
# Dependencias: scrot, xclip, dzen2
ayuda(){
cat << EOF
ayuda() {
cat << EOF
ss_void.sh v1.0 (4/10/2020)
Modo de uso:
@ -19,71 +19,58 @@ Opciones:
EOF
}
while :;
do
case $1 in
-P)
# Guardar captura de pantalla en el portapapeles
scrot /tmp/'%F_%T.png' -e 'xclip -selection c -t image/png < $f'
break
;;
-S)
# Guardar captura de pantalla de área seleccionada en el portapapeles
sleep 1
scrot --line style=dash,width=1,color="red" -s /tmp/'%F_%T.png' -e 'xclip -selection c -t image/png < $f'
break
;;
-g)
# Guardar captura de pantalla
scrot -q 100 '%F_%H%M%S_$wx$h.png' -e 'mv $f /home/skynet/Datos/Capturas/'
sleep 1
# Notificación
$HOME/.local/bin/dunst_sound
herbe "CAPTURA DE PANTALLA" "Guardando en: ~/Datos/Capturas"
break
;;
-s)
# Guardar captura de pantalla de área seleccionada
sleep 1
scrot --line style=dash,width=1,color="red" -s -q 50 'Select_%F_%H%M%S_$wx$h.png' -e 'mv $f /home/skynet/Datos/Capturas/select'
msg() {
dzen2 -p 8 -e 'onstart=uncollapse' -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-sa c -w 260 -x 1100 -y 25 -l 1
}
# Notificación
~/Datos/Git/scripts/varios/dunst_sound.sh
herbe "CAPTURA DE PANTALLA" "Guardando en: ~/Datos/Capturas/select"
break
;;
-h)
ayuda
break
;;
*)
printf "\033[31;5mOpción inválida\033[0m\n\n"
printf "\033[37;2m Opciones disponibles:\033[0m\n"
printf "\033[32;1m -P: \033[36;2mGuardar captura de pantalla en portapapeles\033[0m\\033[0m\n"
printf "\033[32;1m -S: \033[36;2mGuardar captura de pantalla del área seleccionada en el portapapeles\033[0m\\033[0m\n"
printf "\033[32;1m -g: \033[36;2mGuardar captura de pantalla en disco duro\033[0m\\033[0m\n"
printf "\033[32;1m -s: \033[36;2mGuardar captura de pantalla de área seleccionada en disco duro\033[0m\\033[0m\n\n"
return
;;
esac
done
case $1 in
-P)
scrot /tmp/'%F_%T.png' -e 'xclip -selection c -t image/png < $f'
;;
-S)
sleep 1
scrot --line style=dash,width=1,color="red" -s /tmp/'%F_%T.png' -e 'xclip -selection c -t image/png < $f'
;;
-g)
scrot -q 100 '%F_%H%M%S_$wx$h.png' -e 'mv $f /home/skynet/Datos/Capturas/'
sleep 1
# Notificación
"$HOME"/.local/bin/dunst_sound
printf '%s\n' "CAPTURA DE PANTALLA" "Guardando en: ~/Datos/Capturas" | msg
;;
-s)
# Guardar captura de pantalla de área seleccionada
sleep 1
scrot --line style=dash,width=1,color="red" -s -q 50 'Select_%F_%H%M%S_$wx$h.png' -e 'mv $f /home/skynet/Datos/Capturas/select'
# Notificación
"$HOME"/.local/bin/dunst_sound
printf '%s\n' "CAPTURA DE PANTALLA" "Guardando en: ~/Datos/Capturas/select" | msg
;;
-h|--help)
ayuda
;;
*)
printf "\033[31;5mOpción inválida\033[0m\n\n"
printf "\033[37;2m Opciones disponibles:\033[0m\n"
printf "\033[32;1m -P: \033[36;2mGuardar captura de pantalla en portapapeles\033[0m\\033[0m\n"
printf "\033[32;1m -S: \033[36;2mGuardar captura de pantalla del área seleccionada en el portapapeles\033[0m\\033[0m\n"
printf "\033[32;1m -g: \033[36;2mGuardar captura de pantalla en disco duro\033[0m\\033[0m\n"
printf "\033[32;1m -s: \033[36;2mGuardar captura de pantalla de área seleccionada en disco duro\033[0m\\033[0m\n\n"
return
esac
# Si no existe el binario scrot
if [ ! -f /usr/bin/scrot ]; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'scrot'\033[0m\n"
exit 0;
if ! command -v scrot; then
printf "\033[31;5m[ERROR] No se encontró instalado el paquete 'scrot'\033[0m\n"
# Si no existe el binario xclip
elif [ ! -f /usr/bin/xclip ]; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'xclip'\033[0m\n"
exit 0;
elif ! command -v xclip; then
printf "\033[31;5m[ERROR] No se encontró instalado el paquete 'xclip'\033[0m\n"
# Si no existe el binario herbe
elif [ ! -f /usr/bin/herbe ]; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'herbe'\033[0m\n"
exit 0;
else
exit 0;
# Si no existe el binario dzen2
elif ! command -v dzen2; then
printf "\033[31;5m[ERROR] No se encontró instalado el paquete 'dzen2'\033[0m\n"
fi

View File

@ -30,6 +30,13 @@ SONG() {
echo ""
fi
}
xsetroot -name "$(SONG) CPU $CPU | MEM $MEM | TEMP $TEMP | $(VOL) | $DATE"
BAT() {
bat_dir=/sys/class/power_supply/BAT1
read -r capacity < "$bat_dir/capacity"
read -r status < "$bat_dir/status"
printf '%s%% [%s]\n' "$capacity" "$status"
}
xsetroot -name "$(SONG) CPU $CPU | MEM $MEM | TEMP $TEMP | $(VOL) | $DATE | $BAT"
sleep 1
done

88
varios/sync_cloud Executable file
View File

@ -0,0 +1,88 @@
#!/bin/sh
## Script para sincronizar nube remota de dropbpox
# Dependencias: rclone, rclonesync, dzen2
set -e # salir del script inmediatamente cuando un comando falle
########## Verificar que las dependencias estén instaladas ##########
if ! command -v rclone; then
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
elif ! command -v rclonesync; then
git -C /tmp clone https://github.com/cjnaz/rclonesync-V2.git --depth 1
[ -d "$HOME/.local/bin" ] || mkdir -p "$HOME/.local/bin"
cp /tmp/rclonesync-V2/rclonesync "$HOME"/.local/bin
elif ! command -v dzen2; then
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'dzen2'\033[0m\n"
fi
########## Directorio para base de datos ##########
WORKDIR="$HOME"/.config/rclone
TMPDIR=/tmp
if [ ! -f "$WORKDIR/dropbox.txt" ]; then
find "$HOME/Dropbox" -type f -exec md5sum {} \; > "$WORKDIR"/dropbox.txt
fi
########## Eliminar algún archivo residual que pudiera haber quedado ##########
for file in "$TMPDIR"/dropbox*; do
[ -f "$file" ] || continue
rm "$file"
done
########## Sincronizar nube remota ##########
check_diff() {
find "$HOME/Dropbox" -type f -exec md5sum {} \; > /tmp/"dropbox-$(od -N4 -tu /dev/random | awk 'NR==1 {print $2} {}')".tmp
DIFF=$(diff -q "$WORKDIR/dropbox.txt" "$TMPDIR"/dropbox-*.tmp | awk '{print $5}')
if [ "$DIFF" = "differ" ]; then
return 0
else
return 1
fi
}
sync() {
rclonesync "$HOME"/Dropbox MiDropbox: --check-access --check-filename=RCLONE_TEST \
--filters-file "$HOME"/.config/rclone/Filtro.txt >> "$HOME"/.config/rclone/log 2>&1
}
first_sync() {
rclonesync "$HOME"/Dropbox MiDropbox: --first-sync --check-access --check-filename=RCLONE_TEST \
--filters-file "$HOME"/.config/rclone/Filtro.txt
}
msg() {
dzen2 -p 8 -e 'onstart=uncollapse' -fn 'JetBrains Mono:size=8:style=bold' -ta c \
-sa c -w 260 -x 1100 -y 25 -l 1
}
if check_diff; then
if doas ping -c 3 -q 1.1.1.1; then
if sync; then
printf '%s\n' "Dropbox sincronizado" | msg
mv "$TMPDIR"/dropbox-*.tmp "$WORKDIR/dropbox.txt"
else
first_sync
printf '%s\n' "Dropbox sincronizado" | msg
fi
else
printf '%s\n' "No se pudo sincronizar Dropbox" "Sin conexión a internet" | msg
rm "$TMPDIR"/dropbox-*.tmp
fi
else
rm "$TMPDIR"/dropbox-*.tmp
return 0
fi
exit 0

View File

@ -3,23 +3,23 @@
TMP_UPDATES=/tmp/updates_void
[ -d "${TMP_UPDATES}" ] || mkdir "${TMP_UPDATES}"
#/usr/bin/xbps-install.static -nuM 1>/tmp/updates 2>/tmp/error
xbps-install -nuM 1>"${TMP_UPDATES}"/updates 2>"${TMP_UPDATES}"/error
updates="$(wc -l < "${TMP_UPDATES}"/updates)"
broken="$(grep -c broken "${TMP_UPDATES}"/error)"
pkgs="$(awk '{print $1" ---> " $2}' "${TMP_UPDATES}"/updates)"
xx=$(printf "========================================")
UPDATES="$(awk 'END {print NR}' "${TMP_UPDATES}"/updates)"
BROKEN="$(grep -c broken "${TMP_UPDATES}"/error)"
#PKGS="$(awk '{print $1" ---> " $2}' "${TMP_UPDATES}"/updates)"
PKGS="$(awk '{print $1"\t"$2}' "${TMP_UPDATES}"/updates | column -t)"
if [ "$broken" = 0 ] && [ "$updates" -ge 1 ]; then
msg() {
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta '5' \
-w '260' -x '1100' -y '25' -l '10'
}
if [ "$BROKEN" = 0 ] && [ "$UPDATES" -ge 1 ]; then
"$HOME"/Dropbox/Gitea/scripts/varios/dunst_sound
herbe "ACTUALIZACIONES DISPONIBLES: $updates" "$xx" "$pkgs"
else
echo ""
fi
if [ "$broken" -ge 1 ]; then
herbe "HAY PAQUETES ROTOS:" "$xx" "$(cut -d " " -f 1,5 "${TMP_UPDATES}"/error)"
printf '%s\n' "ACTUALIZACIONES DISPONIBLES: $UPDATES" "$PKGS" | msg
elif [ "$BROKEN" -ge 1 ]; then
printf '%s\n' "HAY PAQUETES ROTOS" "$(cut -d " " -f 1,5 "${TMP_UPDATES}"/error)" | msg
fi
exit 0

View File

@ -1,16 +1,16 @@
#!/bin/sh
# Dependencias: udevil
# Dependencias: udevil, dzen2
ayuda() {
cat << EOF
usb.sh v1.0 (21/12/2020)
usb v2.0 (28/04/2022)
Modo de uso:
usb.sh [-muUh]
usb [-muUh]
Script para montar y desmontar dispositivos a través de devmon y udevil.
Script para montar y desmontar dispositivos a través de devmon
Opciones:
-m Montar dispositivo extraible
@ -22,26 +22,63 @@ Opciones:
EOF
}
admin(){
if [ "$(id -u)" = "0" ]; then
return
elif command -v sudo >/dev/null && sudo -l | grep -q -e ' ALL$' -e xbps-install; then
echo sudo
elif command -v doas >/dev/null && [ -f /etc/doas.conf ]; then
echo doas
else
echo su
fi
}
do_install() {
if [ "$SUDO" = su ]; then
su root -c 'xbps-install "$@"' -- sh "$@"
else
$SUDO xbps-install "$@"
fi
}
SUDO=$(admin)
if ! command -v udevil; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'udevil'\033[0m\n"
printf '%b' "\033[31;1mPreparándose para instalar el paquete 'udevil'...\033[0m\n"
do_install -Sy udevil
elif ! command -v dzen2; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'udevil'\033[0m\n"
printf '%b' "\033[31;1mPreparándose para instalar el paquete 'udevil'...\033[0m\n"
do_install -Sy dzen2
fi
msg() {
dzen2 -p 8 -e 'onstart=uncollapse' -fn 'JetBrains Mono:size=8:style=bold' -ta c \
-sa c -w 260 -x 1100 -y 25 -l 1
}
while :;
do
case $1 in
-m)
# Montar dispositivo extraible
devmon --sync --exec-on-drive "herbe 'DISPOSITIVO USB' 'Listo para utilizarse'" &
devmon --sync --exec-on-drive "printf '%s\n' 'DISPOSITIVO USB' 'Listo para utilizarse'" | msg
break
;;
-u)
# Desmontar dispositivo
devmon --unmount /media/"$USER"/* && pkill -9 udevil
sleep 2; herbe "DISPOSITIVO USB" "Puede retirarlo con seguridad"
devmon --unmount /media/"$USER"/* && pkill -9 devmon
sleep 2; printf '%s\n' "DISPOSITIVO USB" "Puede retirarlo con seguridad" | msg
break
;;
-U)
# Desmontar último pendrive insertado
devmon --unmount-recent && sleep 2; herbe "DISPOSITIVO USB" "Puede retirarlo con seguridad"
devmon --unmount-recent && sleep 2; printf '%s\n' "DISPOSITIVO USB" "Puede retirarlo con seguridad" | msg
break
;;
-h)
-h|--help)
ayuda
break
;;
@ -53,13 +90,6 @@ do
printf '%b' "\033[32;1m-U: \033[36;2mDesmontar último pendrive insertado\033[0m\\033[0m\n"
printf '%b' "\033[32;1m-h: \033[36;2mMostrar ayuda\033[0m\\033[0m\n\n"
return
;;
esac
done
if [ ! -f /usr/bin/udevil ]; then
printf '%b' "\033[31;5m[ERROR] No se encontró instalado el paquete 'udevil'\033[0m\n"
exit 0;
else
exit 0;
fi
exit 0;

View File

@ -5,24 +5,29 @@
read -r state < /sys/class/net/wlan0/operstate
msg() {
dzen2 -p 8 -e -fn 'JetBrains Mono:size=8:style=bold' -ta c \
-w 260 -x 1100 -y 25
}
case "$1" in
--toggle)
if [ "$(pgrep wpa_supplicant)" ]; then
doas pkill -f wpa_supplicant
herbe "Wifi desactivado"
printf '%s\n' "Wifi desactivado" | msg
else
if [ "$state" = "down" ]; then
doas wpa_supplicant -B -D wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i wlan1
sleep 2; herbe "Activando wifi..."
#doas wpa_supplicant -B -D wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i wlan1
doas wpa_supplicant -B -D wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i wlan0
sleep 2; printf '%s\n' "Activando wifi..." | msg
fi
fi
;;
*)
if [ "$(pgrep wpa_supplicant)" ]; then
herbe "Wifi activado"
printf '%s\n' "Wifi activado" | msg
else
herbe "Wifi desactivado"
printf '%s\n' "Wifi desactivado" | msg
fi
;;
esac

View File

@ -2,7 +2,7 @@
# Script para consultar el sitio de origen del paquete
# (upstream) en busca de nuevas versiones.
# Se recomienda añadir este script en una tarea de crontab
# Dependencias: xbps-src, xtools
# Dependencias: xbps-src, xtools, dzen2
TMP_DIR=/tmp/xpkglocal
mkdir "${TMP_DIR}"
@ -25,14 +25,24 @@ do_install() {
fi
}
msg(){
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-w 260 -x 1100 -y 25 -l 20
}
# Verificar que las dependencias estén instaladas
if [ ! -f /usr/bin/xpkg ] && printf "Instalando paquete xtools"; then
SUDO=$(which_sudo)
do_install -Sy "$@"
if ! command -v xpkg >/dev/null; then
printf '%s\n' "Instalando paquete xtools"
SUDO=$(which_sudo)
do_install -Sy xtools
elif ! command -v dzen2 > /dev/null; then
printf '%s\n' "Instalando paquete dzen2"
SUDO=$(which_sudo)
do_install -Sy dzen2
fi
if [ ! -f "$HOME/void-packages/xbps-src" ]; then
printf "No se encontró repositorio git de Void Linux. Clonadolo..."
printf '%s\n' "No se encontró repositorio git de Void Linux. Clonadolo..."
git -C "$HOME" clone --depth=1 https://github.com/void-linux/void-packages.git
cd "$HOME"/void-packages || exit
./xbps-src binary-bootstrap
@ -40,17 +50,18 @@ if [ ! -f "$HOME/void-packages/xbps-src" ]; then
fi
cd "$HOME"/void-packages || exit
touch "${TMP_DIR}"/upstream_releases
touch "${TMP_DIR}"/releases
#for i in $(xbps-query -m | xargs -n1 xbps-uhelper getpkgname); do
for i in $(xpkg -L); do
./xbps-src update-check "$i" | tail -n 1 | tee -a "${TMP_DIR}"/upstream_releases > /dev/null
for i in $(xpkg -m); do
./xbps-src update-check "$i" | tail -n 1 | tee -a "${TMP_DIR}"/releases > /dev/null
sort "${TMP_DIR}"/releases | uniq > "${TMP_DIR}"/upstream_releases
done
updates="$(wc -l < "${TMP_DIR}"/upstream_releases)"
releases="$(cat "${TMP_DIR}"/upstream_releases)"
xx="$(printf ========================================)"
if [ "$updates" -gt 0 ]; then
herbe "ACTUALIZACIONES EN UPSTREAM: $xx $releases"
UPDATES="$(wc -l < "${TMP_DIR}"/upstream_releases)"
RELEASES="$(awk '{print $1"\t"$3}' "${TMP_DIR}"/upstream_releases | column -t)"
if [ "$UPDATES" -gt 0 ]; then
printf '%s\n' "ACTUALIZACIONES EN UPSTREAM: $UPDATES" "$RELEASES" | msg
fi
rm -r "$TMP_DIR"