Compare commits

...

19 Commits

Author SHA1 Message Date
Tuxliban Torvalds 324bab874a image_ss: Script para realizar capturas de pantalla utilizando ImageMagick 2022-11-28 02:57:11 -06:00
Tuxliban Torvalds ade142db47 docx2pdf: Script para convertir documentos de word a PDF usando pandoc 2022-11-28 02:54:54 -06:00
Tuxliban Torvalds 7679b1bde2 do_script: Script nuevo
Script para hacer scripts de Shell más rápido
2022-11-28 02:50:58 -06:00
Tuxliban Torvalds bc4134c6cb xpkglocal: Se añade descripción del script 2022-11-28 02:41:18 -06:00
Tuxliban Torvalds 2feadd5cb2 volume: actualización
Se reemplaza printf por echo; se añade descripción del script; se renombran variables para una mejor lectura
2022-11-28 02:36:40 -06:00
Tuxliban Torvalds 0556f4030f viewer: Se añade descripción del script 2022-11-28 02:31:24 -06:00
Tuxliban Torvalds c7e6a5764d updates-void: Se agrega descripción del script y función para comprobar dependencias 2022-11-28 02:21:26 -06:00
Tuxliban Torvalds 38fb93a982 sync_cloud: actualizado a 1.2 2022-11-28 02:04:21 -06:00
Tuxliban Torvalds 16cc2148d9 startdwm: limpieza de código 2022-11-28 01:57:43 -06:00
Tuxliban Torvalds 710f95ea4b ss_void: actualizado a 1.3 2022-11-28 01:56:50 -06:00
Tuxliban Torvalds 9f84c3f4bd Se agrega descripción del script 2022-11-28 01:52:31 -06:00
Tuxliban Torvalds 5df4d1215d net: Se agrega descripción del script y función para verificar dependencias 2022-11-28 01:49:43 -06:00
Tuxliban Torvalds 49d87a7b05 net_static: script nuevo 2022-11-28 01:40:25 -06:00
Tuxliban Torvalds b720250831 menu-apagar: Se añade descripción y dependencias de uso 2022-11-28 00:57:42 -06:00
Tuxliban Torvalds e10eeb674e keyboard: Se añade descripción y dependencia 2022-11-28 00:56:13 -06:00
Tuxliban Torvalds e9b9beec1d hosts: actualizado a 3.1 2022-11-28 00:52:11 -06:00
Tuxliban Torvalds de55532d39 Scripts diversos de C 2022-11-28 00:49:38 -06:00
Tuxliban Torvalds b2c4a8b35e get_song: Se añade descripción del script 2022-11-28 00:40:36 -06:00
Tuxliban Torvalds 75e6686929 escript: Actualización
Se reemplaza printf por echo y se agrega descripción de uso
2022-11-28 00:38:52 -06:00
23 changed files with 532 additions and 151 deletions

BIN
varios/C/gcc_test Normal file

Binary file not shown.

33
varios/C/getvol.c Normal file
View File

@ -0,0 +1,33 @@
#include <alsa/asoundlib.h>
int main() {
snd_mixer_t *mixer;
if (snd_mixer_open(&mixer, 1) ||
snd_mixer_attach(mixer, "default") ||
snd_mixer_selem_register(mixer, NULL, NULL) ||
snd_mixer_load(mixer)) exit(42);
snd_mixer_selem_id_t *id;
snd_mixer_selem_id_alloca(&id);
snd_mixer_selem_id_set_index(id, 0);
snd_mixer_selem_id_set_name(id, "Master");
snd_mixer_elem_t *elem = snd_mixer_find_selem(mixer, id);
if (!elem) {
exit(5);
}
long min, max, vol;
snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
snd_mixer_selem_get_playback_volume(elem,
SND_MIXER_SCHN_FRONT_LEFT, &vol);
printf("%li%%", ((vol - min)*100 + (max - min)/2) / (max - min));
snd_mixer_close(mixer);
}

BIN
varios/glibc → varios/C/glibc Executable file → Normal file

Binary file not shown.

View File

@ -11,12 +11,13 @@
int main(int argc, const char const *argv[]) {
const char const *shell[] = { "/bin/sh", NULL };
// move glibc stuff in place
/* move glibc stuff in place */
e("unshare",unshare(CLONE_NEWNS));
e("mount",mount(SRC "/usr", "/usr", NULL, MS_BIND, NULL));
e("mount",mount(SRC "/opt", "/opt", NULL, MS_BIND, NULL));
e("mount",mount(SRC "/var/db/xbps", "/var/db/xbps", NULL, MS_BIND, NULL));
// drop the rights suid gave us
/* drop the rights suid gave us */
e("setuid",setreuid(getuid(),getuid()));
e("setgid",setregid(getgid(),getgid()));

BIN
varios/C/tcc_test Normal file

Binary file not shown.

40
varios/do_script Executable file
View File

@ -0,0 +1,40 @@
#!/bin/sh
# Script para hacer scripts de Shell más rápido.
# Al guardar los cambios del script y cerrarlo, se asignan los permisos de ejecución e # inmediatamente se
# ejecuta el script para verificar que funcione. Si fuera necesario continuar editando basta con presionar la
# tecla ENTER para regresar al editor; si por el contrario ya no se continuará editando el script, basta con
# presionar la combinación de teclas de Ctrl C para finalizar el proceso.
#
# Modo de empleo:
# do_script filepath
#
# Dependencia: vi | vis | vim | nano
#
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
set -e # Si hay un error, salir inmediatamente
which_editor() {
if command -v vis >/dev/null; then
echo vis
elif command -v vim >/dev/null; then
echo vim
elif command -v nano >/dev/null; then
echo nano
else
echo vi
fi
}
_EDITOR=$(which_editor)
if [ ! -f "$1" ]; then
echo "#!/bin/sh" > "$1"
fi
while true; do
"$_EDITOR" "$1"
chmod u+x "$1"
./"$1"
read -r dummy
done

51
varios/docx2pdf Executable file
View File

@ -0,0 +1,51 @@
#!/bin/sh
# Script para convertir documentos de word a PDF usando pandoc
#
# Dependencias xelatex, pandoc
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
# Revisar que las dependencias estén instaladas
if ! command -v xelatex > /dev/null; then
echo "Dependencia xelatex no encontrada en el sistema, instalándola..."
doas xbps-install -Sy texlive-XeTeX
elif ! command -v pandoc > /dev/null; then
echo "Dependencia pandoc no encontrada en el sistema, instalándola..."
doas xbps-install -Sy pandoc
fi
ayuda() {
cat << !
Convierte documentos docx a formato PDF.
Uso: $(basename "$0") <arg> <directorio o archivo>
Ejemplo:
$(basename "$0") --conv /path/foo.docx Convierte archivo especificado
$(basename "$0") -c /path/ Convierte archivos compatibles del directorio especificado
!
}
case $1 in
--conv|-c)
if [ -f "$2" ]; then
echo "Convirtiendo $(basename "$2") a formato PDF..."
pandoc "$2" -V geometry:"top=2cm, bottom=1.5cm, left=2.4cm, right=2.4cm" \
--pdf-engine=xelatex -o "$(basename "$2" | cut -d "." -f 1).pdf"
elif [ -d "$2" ]; then
for file in "$2"/*.docx; do
[ -f "$file" ] || continue
echo "Convirtiendo $(basename "$file") a formato PDF..."
pandoc "$file" -V geometry:"top=2cm, bottom=1.5cm, left=2.4cm, right=2.4cm" \
--pdf-engine=xelatex -o "$(basename "$file" | cut -d "." -f 1).pdf"
done
else
echo "ERROR: El fichero o directorio no existe"
fi
;;
--help|-h|*)
ayuda
esac
exit 0

View File

@ -1,14 +1,18 @@
#!/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
# Este script sólo buscará ejecutables que se encuentren en el PATH del sistema o aquellos que el usuario
# haya definido
#
# Modo de uso:
# escript filepath
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
FILE_PATH=$(command -v "$1" 2>/dev/null)
if [ -z "$FILE_PATH" ]; then
printf "%s\n" "Error: $1 no encontrado"
exit 1
echo "Error: $1 no existe en el PATH de ejecutables"
else
"$EDITOR" "$FILE_PATH"
fi
$EDITOR "$FILE_PATH"

View File

@ -1,4 +1,10 @@
#!/bin/sh
# Script que muestra información sobre la canción en curso
#
# Dependencias: moc
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
if [ "$(mocp -Q %state)" != "STOP" ];then
SONG=$(mocp -Q %song)

View File

@ -1,43 +1,47 @@
#!/bin/sh
# V0.3.0
# V0.3.1
# 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
# mensual, etc)
#
# Dependencias: dzen2, wget
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
msg() {
dzen2 -p '10' -fn 'JetBrains Mono:size=8:style=bold' -ta '5' \
-w '260' -x '1100' -y '25'
dzen2 -p '10' -fn 'JetBrains Mono:size=8:style=bold' -ta '5' \
-w '260' -x '1100' -y '25'
}
which_sudo() {
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
}
SUDO=$(which_sudo)
# Realizar copia de seguridad del fichero hosts en caso de no existir
if [ ! -f /etc/hosts.bak ]; then
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"
$SUDO cp /etc/hosts /etc/hosts.bak && sleep 1s; printf "\033[33;1mCopia finalizada\033[0m\n"
else
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 '%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 '%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
# Agregar lista personalizada de páginas al fichero hosts
#printf "\033[32;1mAgregando parche de la lista personalizada al fichero hosts...\033[0m\n";
#cat /home/skynet/Datos/Git/archivos_diversos/parche >> /etc/hosts; sleep 2;
#printf "\033[33;1mParche aplicado\033[0m\n";
"$HOME"/.local/bin/dunst_sound &
# Descargar actualización más reciente del fichero hosts
printf '%b' "\033[32;1mDescargando y copiando lista actualizada para fichero hosts...\033[0m\n" &&
wget -O /tmp/hosts http://sbc.io/hosts/alternates/fakenews-gambling-porn/hosts && "$HOME"/.local/bin/custom_sites
$SUDO mv /tmp/hosts /etc/hosts && "$HOME"/.local/bin/dunst_sound &
# Notificacion de actualizacion del fichero
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
printf '%s\n' "Lista de fichero hosts actualizado" | msg
printf '%s\n' "Lista de fichero hosts actualizado" | msg &

92
varios/image_ss Executable file
View File

@ -0,0 +1,92 @@
#!/bin/sh
# v0.2
# Dependencias:ImageMagick, xclip, dzen2, xdotool
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
DIR="$HOME"/Datos/Capturas
DATE="$(date +%Y%m%d-%H%M%S)"
admin() {
if 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
fi
}
SUDO=$(admin)
if ! command -v import > /dev/null; then
printf '%b' "\033[31;5m[ERROR] Dependencias no satisfecha. Instalando ImageMagick...\033[0m\n"
"$SUDO" xbps-install -y ImageMagick
elif ! command -v xclip > /dev/null; then
printf '%b' "\033[31;5m[ERROR] Dependencias no satisfecha. Instalando xclip...\033[0m\n"
"$SUDO" xbps-install -y xclip
elif ! command -v dzen2 > /dev/null; then
printf '%b' "\033[31;5m[ERROR] Dependencias no satisfecha. Instalando dzen2...\033[0m\n"
"$SUDO" xbps-install -y dzen2
elif ! command -v xdotool > /dev/null; then
printf '%b' "\033[31;5m[ERROR] Dependencias no satisfecha. Instalando xdotool...\033[0m\n"
"$SUDO" xbps-install -y xdotool
fi
ayuda() {
cat << EOF
Script para realizar capturas de pantalla utilizando ImageMagick.
Modo de uso:
$(basename "$0") [-PsfgSFh]
-P Guardar captura de pantalla completa en el portapapeles
-s Guardar área seleccionada en el portapapeles
-f Guardar captura de pantalla de ventana activa en el portapapeles
-g Guardar captura de pantalla completa en el disco duro
-S Guardar área seleccionada en el disco duro
-F Guardar captura de pantalla de ventana activa en el disco duro
--help | -h Mostrar este mensaje de ayuda
EOF
}
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
}
case "$1" in
-p)
import -window root png:- | xclip -t 'image/png' -selection 'clipboard' -i
;;
-s)
sleep 1 && import png:- | xclip -t 'image/png' -selection 'clipboard' -i
;;
-f)
import -window "$(xdotool getwindowfocus)" png:- | xclip -t 'image/png' -selection 'clipboard' -i
;;
-g)
if [ ! -d "$DIR" ]; then
mkdir "$DIR"
fi
import -format png -window root "$DIR/$DATE.png"
"$HOME"/.local/bin/dunst_sound
printf '%s\n' "CAPTURA DE PANTALLA" "Guardando en: ~/Datos/Capturas" | msg
;;
-S)
if [ ! -d "$DIR/Select" ]; then
mkdir -p "$DIR/Select"
fi
sleep 1 && import -format png "$DIR/Select/select-$DATE.png"
"$HOME"/.local/bin/dunst_sound
printf '%s\n' "ÁREA SELECCIONADA" "Guardando en: ~/Datos/Capturas/select" | msg
;;
-F)
if [ ! -d "$DIR/Select" ]; then
mkdir -p "$DIR/Select"
fi
import -window "$(xdotool getwindowfocus)" -format png "$DIR/Select/window-$DATE.png"
;;
--help|-h|*)
ayuda
esac

View File

@ -1,13 +1,19 @@
#!/bin/sh
## Script para desactivar teclado interno en portátiles mientras se está en
## el servidor gráfico
# Dependencias: xinput
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
ayuda(){
cat << EOF
Script para desactivar teclado interno en portátiles mientras se está en el servidor gráfico.
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
Ejemplo:
$(basename "$0") on Activa teclado interno
$(basename "$0") off Desactiva teclado interno
$(basename "$0") --help, -h Muestra este mensaje de ayuda
EOF
}

View File

@ -1,30 +1,29 @@
#!/bin/sh
# Script que muestra un menú con opciones en la terminal para poder apagar o reiniciar el sistema
#
# Dependencias: dmenu, xdotool
#
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
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")
#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")
#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")
slock
;;
"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")
#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")
pkill startdwm && xdotool key "super+shift+q"
;;
*) ;;
esac

View File

@ -1,18 +1,31 @@
#!/bin/sh
# Dependencias sdhcp, wpa_supplicant, dzen2, sudo, doas (opcional)
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
## Script para asignar ip dinámicamente usando sdhcp para establecer conexión a internet
## Dependencias sdhcp, wpa_supplicant, dzen2
if ! command -v sdhcp wpa_supplicant dzen2; then
printf '%b\n' "Dependencias no satisfechas. Dependencias necesarias:\n\tsdhcp, wpa_supplicant, dzen2"
fi
deps() {
if ! command -v sdhcp; then
printf '%b\n' "Dependencias no satisfecha:\n\tsdhcp\n"
exit 1
elif ! command wpa_supplicant; then
printf '%b' "Dependencia no satisfecha:\n\twpa_supplicant\n"
exit 1
elif ! command -v dzen2; then
printf '%b' "Dependencia no satisfecha:\n\tdzen2\n"
exit 1
fi
}
ayuda(){
cat << EOF
Script para asignar ip dinámicamente usando sdhcp para establecer conexión a internet.
Uso: $(basename "$0") [interface]
Ejemplo: $(basename "$0") eth0
Ejemplo: $(basename "$0") wlan0
Ejemplo:
$(basename "$0") eth0
$(basename "$0") wlan0
EOF
}
@ -33,34 +46,34 @@ msg() {
SUDO=$(admin)
deps
case $1 in
eth0)
read -r state < /sys/class/net/"$1"/operstate
if [ "$state" = "down" ]; then
"$SUDO" ip link set "$1" up
"$SUDO" sdhcp "$1"
printf '%s\n' "Ethernet activado" | msg
printf '%s\n' "Ethernet activado" | msg &
elif [ "$state" = "up" ]; then
"$SUDO" kill "$(pgrep --list-full sdhcp | awk '/eth0/ {print $1}')"
"$SUDO" ip link set eth0 down
printf '%s\n' "Ethernet desactivado" | msg
printf '%s\n' "Ethernet desactivado" | msg &
fi
;;
wlan0)
wlan0|wlan1)
read -r state < /sys/class/net/"$1"/operstate
if [ "$(pgrep wpa_supplicant)" ]; then
"$SUDO" pkill -f wpa_supplicant
"$SUDO" ip link set wlan0 down
"$SUDO" kill "$(pgrep --list-full sdhcp | awk '/wlan0/ {print $1}')"
printf '%s\n' "Wifi desactivado" | msg
"$SUDO" ip link set "$1" down
"$SUDO" kill "$(pgrep --list-full sdhcp | awk '/wlan/ {print $1}')"
printf '%s\n' "Wifi desactivado" | msg &
elif [ "$state" = "down" ]; then
echo Activando interfaz
"$SUDO" ip link set "$1" up
echo Iniciando wpa_supplicant...
"$SUDO" wpa_supplicant -B -D wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i "$1"
# "$SUDO" wpa_supplicant -B -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i "$1"
"$SUDO" wpa_supplicant -B -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i "$1"
echo Asignando ip dinámica...
printf '%s\n' "Activando wifi..." | msg
printf '%s\n' "Activando wifi..." | msg &
"$SUDO" sdhcp "$1"
fi
;;

91
varios/net_static Executable file
View File

@ -0,0 +1,91 @@
#!/bin/sh
# Dependencias iproute, wpa_supplicant, dzen2, sudo, doas (opcional)
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
deps() {
if ! command -v wpa_supplicant; then
printf '%b' "Dependencia no satisfecha:\n\twpa_supplicant\n"
exit 1
elif ! command -v dzen2; then
printf '%b' "Dependencia no satisfecha:\n\tdzen2\n"
exit 1
fi
}
ayuda(){
cat << EOF
Script para establecer conexión a internet usando una dirección ip estática.
Uso: $(basename "$0") [interface]
Ejemplo:
$(basename "$0") eth0
$(basename "$0") wlan0
EOF
}
admin() {
if 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
elif [ "$(id -u)" != 0 ]; then
echo su
fi
}
msg() {
dzen2 -p 5 -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-w 260 -x 1100 -y 25
}
SUDO=$(admin)
deps
case $1 in
eth0)
read -r state < /sys/class/net/"$1"/operstate
if "$(pgrep wpa_supplicant)"; then
"$SUDO" pkill -f wpa_supplicant
if [ "$state" = "down" ]; then
"$SUDO" ip link set "$1" up
"$SUDO" ip a add 192.168.1.250/24 dev "$1"
"$SUDO" ip route add default via 192.168.1.254 dev "$1"
printf '%s\n' "Ethernet activado" | msg &
fi
elif [ "$state" = "down" ]; then
"$SUDO" ip link set "$1" up
"$SUDO" ip a add 192.168.1.250/24 dev "$1"
"$SUDO" ip route add default via 192.168.1.254 dev "$1"
printf '%s\n' "Ethernet activado" | msg &
elif [ "$state" = "up" ]; then
"$SUDO" ip link set eth0 down
printf '%s\n' "Ethernet desactivado" | msg &
fi
;;
wlan0)
read -r state < /sys/class/net/"$1"/operstate
read -r ethernet < /sys/class/net/eth0/operstate
if [ "$ethernet" = "up" ]; then
"$SUDO" ip link set eth0 down
"$SUDO" ip a add 192.168.1.245/24 dev "$1"
"$SUDO" ip route add default via 192.168.1.254 dev "$1"
"$SUDO" wpa_supplicant -B -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i "$1"
printf '%s\n' "Wifi activado" | msg &
elif [ "$state" = "down" ]; then
"$SUDO" ip link set "$1" up
"$SUDO" ip a add 192.168.1.245/24 dev "$1"
"$SUDO" ip route add default via 192.168.1.254 dev "$1"
"$SUDO" wpa_supplicant -B -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf -i "$1"
printf '%s\n' "Wifi activado" | msg &
elif [ "$(pgrep wpa_supplicant)" ]; then
"$SUDO" pkill -f wpa_supplicant
"$SUDO" ip link set wlan0 down
printf '%s\n' "Wifi desactivado" | msg &
fi
;;
--help|-h|*)
ayuda
esac

View File

@ -1,5 +1,9 @@
#!/bin/sh
# Dependencias: ImageMagick
## Script que aleatoriza wallpaper
## Dependencias: ImageMagick
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
deps() {
if ! command -v magick >/dev/null; then

View File

@ -1,20 +1,22 @@
#!/bin/sh
# v2.0
# v1.3
# Script para realizar capturas de pantalla
# Dependencias: scrot, xclip, dzen2
#
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
ayuda() {
cat << EOF
ss_void.sh v1.0 (4/10/2020)
Script para realizar capturas de pantalla.
Modo de uso:
ss_void [-PSgsh]
ss_void [-PSgsh]
Opciones:
-P: Guardar captura de pantalla en portapapeles
-S: Guardar captura de pantalla del área seleccionada en el portapapeles
-g: Guardar captura de pantalla en disco duro
-s: Guardar captura de pantalla de área seleccionada en disco duro
-h: Mostrar ayuda
-P: Guardar captura de pantalla en portapapeles
-S: Guardar captura de pantalla del área seleccionada en el portapapeles
-g: Guardar captura de pantalla en disco duro
-s: Guardar captura de pantalla de área seleccionada en disco duro
-h: Mostrar ayuda
EOF
}

View File

@ -5,19 +5,3 @@ do
# Log stderror al fichero
dwm 2> "$HOME/.dwm.log"
done
#csum=""
#new_csum=$(sha1sum $(which dwm))
#while true
#do
# if [ "$csum" != "$new_csum" ]
# then
# csum=$new_csum
# dwm 2> ~/.dwm.log
# else
# exit 0
# fi
# new_csum=$(sha1sum $(which dwm))
# sleep 0.5
#done

View File

@ -1,21 +1,35 @@
#!/bin/sh
## Script para sincronizar nube remota de dropbpox
# v1.2
# Script para sincronizar nube remota de dropbpox
# Dependencias: rclone, rclonesync, dzen2
#
# Lista de códigos de salida
# 0 - éxito
# 1 - error de dependencia
# 2 - operación exitosa, pero no se transfirieron archivos
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
set -e # salir del script inmediatamente cuando un comando falle
set -u # salir si una variable no ha sido declarada
########## 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
deps() {
if ! command -v rclone; then
printf '%b' "\033[31;5m[ERROR] Instale el paquete 'rclone'\033[0m\n"
return 1
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"
return 1
fi
}
@ -41,23 +55,25 @@ 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
find "$HOME/Datos/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
return 2
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
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
--multi-thread-streams=14 --transfers=14 >> "$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
--filters-file "$HOME"/.config/rclone/Filtro.txt --rclone-args --copy-links \
--multi-thread-streams=14 --transfers=14 >> "$HOME"/.config/rclone/log 2>&1
}
msg() {
@ -66,23 +82,23 @@ msg() {
}
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
if deps; then
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
fi
fi
exit 0

View File

@ -1,4 +1,11 @@
#!/bin/sh
# Script que revisa si existen actualizaciones disponibles para el sistema
# Dependencas: dzen2
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
set -u
TMP_UPDATES=/tmp/updates_void
[ -d "${TMP_UPDATES}" ] || mkdir "${TMP_UPDATES}"
@ -7,19 +14,27 @@ xbps-install -nuM 1>"${TMP_UPDATES}"/updates 2>"${TMP_UPDATES}"/error
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)"
msg() {
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta '5' \
-w '260' -x '1100' -y '25' -l '10'
deps() {
if ! command -v dzen2; then
printf '%b\n' "Dependencia no satisfecha:\n\tInstale dzen2\n"
exit 1
fi
}
if [ "$BROKEN" = 0 ] && [ "$UPDATES" -ge 1 ]; then
"$HOME"/Dropbox/Gitea/scripts/varios/dunst_sound
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
msg() {
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-w 260 -x 1100 -y 25 -l 10
}
if deps; then
if [ "$BROKEN" = 0 ] && [ "$UPDATES" -ge 1 ]; then
"$HOME"/Dropbox/Gitea/scripts/varios/dunst_sound
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
fi
exit 0

View File

@ -1,4 +1,9 @@
#!/bin/sh
# Script que busca formatos compatibles *.gif *.jpeg *.jpg *.png y los muestra en la pantalla
# Dependencias: sxiv o nsxiv
# Buscar formatos compatibles *.gif *.jpeg *.jpg *.png
sxiv -pa "$@" 2>/dev/null
if command -v sxiv; then
sxiv -pa "$@" 2>/dev/null &
elif command -v nsxiv; then
nsxiv -pa "$@" 2>/dev/null &
fi

View File

@ -1,9 +1,14 @@
#!/bin/sh
a=$(amixer sget Master | tail -n1 | sed -r "s/.*\[(.*)\]/\1/")
b=$(amixer get Master | tail -n1 | sed -r "s/.*\[(.*)%\].*/\1/")
# Script que muestra el porcentaje activo del volumen del sistema
# Dependencias: alsa-utils
#
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
if [ "$a" = 'on' ]; then
printf " $b%%"
STATUS=$(amixer sget Master | tail -n1 | sed -r "s/.*\[(.*)\]/\1/")
LEVEL=$(amixer get Master | tail -n1 | sed -r "s/.*\[(.*)%\].*/\1/")
if [ "$STATUS" = 'on' ]; then
echo "VOL $LEVEL%%"
else
printf "";
echo "VOL mute";
fi

View File

@ -1,8 +1,14 @@
#!/bin/sh
# Script para consultar el sitio de origen del paquete
# (upstream) en busca de nuevas versiones.
# 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, dzen2
#
# Shell: POSIX compliant
# Autor: Tuxliban Torvalds <o-sanchez@linuxmail.org>
set -u
set -x
unset POSIXLY_CORRECT
TMP_DIR=/tmp/xpkglocal
mkdir "${TMP_DIR}"
@ -26,19 +32,19 @@ do_install() {
}
msg(){
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-w 260 -x 1100 -y 25 -l 20
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 ! command -v xpkg >/dev/null; then
printf '%s\n' "Instalando paquete xtools"
SUDO=$(which_sudo)
do_install -Sy xtools
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
printf '%s\n' "Instalando paquete dzen2"
SUDO=$(which_sudo)
do_install -Sy dzen2
fi
if [ ! -f "$HOME/void-packages/xbps-src" ]; then
@ -49,19 +55,23 @@ if [ ! -f "$HOME/void-packages/xbps-src" ]; then
echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
fi
cd "$HOME"/void-packages || exit
# Crear lista de actualizaciones disponibles
touch "${TMP_DIR}"/releases
#for i in $(xbps-query -m | xargs -n1 xbps-uhelper getpkgname); do
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
cd "$HOME"/void-packages || exit
for package in $(xpkg -m); do
./xbps-src update-check "$package" | tail -n 1 | tee -a "${TMP_DIR}"/releases > /dev/null
done
uniq "${TMP_DIR}"/releases > "${TMP_DIR}"/upstream_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
printf '%s\n' "$RELEASES"
printf '%s\n' "ACTUALIZACIONES EN UPSTREAM: $UPDATES" "$RELEASES" | msg &
fi
rm -r "$TMP_DIR"