deleted clutter
This commit is contained in:
parent
63ea163fff
commit
93df183c90
18 changed files with 0 additions and 660 deletions
|
@ -1,88 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Based from Bugswriter's (https://github.com/Bugswriter)
|
|
||||||
# music-fairy (https://github.com/Bugswriter/music_fairy)
|
|
||||||
#
|
|
||||||
# Generate a string of text based on 4s of listening through default input.
|
|
||||||
# The first word of the string will dictate which function to execute.
|
|
||||||
|
|
||||||
# Configuration
|
|
||||||
# Speech recognition engine
|
|
||||||
VOSK="$HOME/.local/pipx/venvs/vosk/bin/vosk-transcriber"
|
|
||||||
VOSK_MODEL="$HOME/.local/share/vosk-models/vosk-model-small-en-us-0.15/"
|
|
||||||
TIME=4 # Time in seconds for ffmpeg to record $SPEECH
|
|
||||||
# Cache
|
|
||||||
CACHE="$HOME/.local/cache/assistant"
|
|
||||||
# Multimedia
|
|
||||||
INVIDIOUS_INSTANCE="https://vid.puffyan.us"
|
|
||||||
|
|
||||||
# Read SPEECH
|
|
||||||
mkdir -p $CACHE
|
|
||||||
notify-send -t 4000 " Listening..."
|
|
||||||
ffmpeg -y \
|
|
||||||
-f alsa \
|
|
||||||
-i default \
|
|
||||||
-acodec pcm_s16le \
|
|
||||||
-ac 1 -ar 44100 \
|
|
||||||
-t $TIME \
|
|
||||||
-f wav \
|
|
||||||
$CACHE/input.wav
|
|
||||||
|
|
||||||
# Analyze with vosk-transcriber
|
|
||||||
$VOSK -m $VOSK_MODEL -i $CACHE/input.wav -o $CACHE/output.txt
|
|
||||||
read SPEECH < $CACHE/output.txt # Save $SPEECH variable
|
|
||||||
rm -rf $CACHE/input.wav # Remove
|
|
||||||
rm -rf $CACHE/output.txt # cached files
|
|
||||||
|
|
||||||
play() { # Play a song
|
|
||||||
killall mpv
|
|
||||||
notify-send " Playing" "${SPEECH##*play}"
|
|
||||||
QUERY="song audio ${SPEECH##*play}"
|
|
||||||
mpv "$( \
|
|
||||||
yt-dlp ytsearch:"$QUERY" -f bestaudio --get-url |
|
|
||||||
grep -v manifest | tail -n 1 \
|
|
||||||
)"
|
|
||||||
}
|
|
||||||
|
|
||||||
watch() { # Watch a video
|
|
||||||
killall mpv
|
|
||||||
notify-send " Loading" "${SPEECH##*watch}"
|
|
||||||
QUERY="$(echo ${SPEECH##*watch} | tr ' ' '+')"
|
|
||||||
mpv "https://youtube.com/$( \
|
|
||||||
curl -s "$INVIDIOUS_INSTANCE/search?q=$QUERY" |
|
|
||||||
grep -Eo "watch\?v=.{11}" | head -n 1 \
|
|
||||||
)"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main Menu
|
|
||||||
CMD=$(echo "$SPEECH" | cut -d ' ' -f 1)
|
|
||||||
case "$CMD" in
|
|
||||||
"play") play ;;
|
|
||||||
"watch") watch ;;
|
|
||||||
"stop") killall mpv ;;
|
|
||||||
*) notify-send "Assistant:" "I couldn't understand!" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Alternative to watch function,
|
|
||||||
# without invidious instance (slower).
|
|
||||||
#
|
|
||||||
# watch() { # Watch a video
|
|
||||||
# killall mpv
|
|
||||||
# notify-send " Loading" "${SPEECH##*watch}"
|
|
||||||
# QUERY="${SPEECH##*watch}"
|
|
||||||
# mpv "https://youtube.com/watch\?v=$( \
|
|
||||||
# yt-dlp ytsearch:"$QUERY" --get-id
|
|
||||||
# )"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# Alternative to play function,
|
|
||||||
# with INVIDIOUS instance (slower).
|
|
||||||
#
|
|
||||||
# play() { # Play a song
|
|
||||||
# killall mpv
|
|
||||||
# notify-send " Playing" "${SPEECH##*play}"
|
|
||||||
# QUERY="song audio ${SPEECH##*play}"
|
|
||||||
# mpv "https://youtube.com/$( \
|
|
||||||
# curl -s "$INVIDIOUS_INSTANCE/search?q=$QUERY" |
|
|
||||||
# grep -Eo "watch\?v=.{11}" | head -n 1 \
|
|
||||||
# )"
|
|
||||||
# }
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
HCOL="\x1b[44m"
|
|
||||||
TODAY="$(date '+%d' | sed 's/^0//')"
|
|
||||||
/bin/cal "$@" | sed "s, $TODAY ,$HCOL $TODAY\x1b[0m ,"
|
|
61
scripts/envm
61
scripts/envm
|
@ -1,61 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Automate temporary shell envs
|
|
||||||
|
|
||||||
OPT="$1"
|
|
||||||
ENVDIR="/tmp/env"
|
|
||||||
ENVSHELL="/bin/bash"
|
|
||||||
|
|
||||||
print_title() {
|
|
||||||
printf "\033[2m%s\033[0m\n" "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_dialogue() {
|
|
||||||
printf "\033[2m%s:\033[0m " "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_warning() {
|
|
||||||
printf "\033[31mWarning:\033[0m \033[2m%s\033[0m\n" "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
help() {
|
|
||||||
printf "\033[2mUsage:\033[0m envm [list|create|login|delete]\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
list() {
|
|
||||||
print_title "Current users:"
|
|
||||||
sed '/^env-.*::\/tmp\/env\/.*:\/bin\/bash$/!d;s/^env-//g;s/:.*::/ -> /g;s/:/ -> /g' /etc/passwd
|
|
||||||
}
|
|
||||||
|
|
||||||
create() {
|
|
||||||
print_warning 'super user privileges are needed for user and home creation'
|
|
||||||
print_dialogue 'Create user' && read -r ENVUSER
|
|
||||||
ENVNAME="env-$ENVUSER"
|
|
||||||
sudo mkdir -p "$ENVDIR"
|
|
||||||
sudo useradd -m -d $ENVDIR/$ENVUSER -s $ENVSHELL $ENVNAME
|
|
||||||
}
|
|
||||||
|
|
||||||
login() {
|
|
||||||
list && echo
|
|
||||||
print_warning 'super user privileges are needed for login'
|
|
||||||
print_dialogue 'Login as' && read -r ENVUSER
|
|
||||||
[ -z "$ENVUSER" ] && print_warning 'Empty user' && return 0
|
|
||||||
ENVNAME="env-$ENVUSER"
|
|
||||||
sudo su - "$ENVNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
delete() {
|
|
||||||
list && echo
|
|
||||||
print_warning 'super user privileges are needed for user and home deletion'
|
|
||||||
print_dialogue 'Delete user' && read -r ENVUSER
|
|
||||||
[ -z "$ENVUSER" ] && print_warning 'Empty user' && return 0
|
|
||||||
ENVNAME="env-$ENVUSER"
|
|
||||||
sudo rm -rfv $ENVDIR/$ENVUSER
|
|
||||||
sudo userdel $ENVNAME
|
|
||||||
}
|
|
||||||
|
|
||||||
[ "$OPT" = "" ] && help && list
|
|
||||||
[ "$OPT" = "help" ] && help
|
|
||||||
[ "$OPT" = "list" ] && list
|
|
||||||
[ "$OPT" = "create" ] && create
|
|
||||||
[ "$OPT" = "login" ] && login
|
|
||||||
[ "$OPT" = "delete" ] && delete
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
PASSWORD_STORE_DIR="$HOME/.local/share/password-store"
|
|
||||||
FIRMADOR="$HOME/.local/share/firmador/firmador.jar"
|
|
||||||
DOCUMENTOS="$@"
|
|
||||||
|
|
||||||
firmar() {
|
|
||||||
DOC="$1"
|
|
||||||
NOM="${DOC%.*}"
|
|
||||||
EXT="${DOC##*.}"
|
|
||||||
|
|
||||||
PIN="$(pass personal/firma-digital | head -n 1)"
|
|
||||||
[ -z "$PIN" ] && exit 1
|
|
||||||
|
|
||||||
echo "$PIN" | java -jar "$FIRMADOR" \
|
|
||||||
-dargs "$DOC" "$NOM-firmado.$EXT"
|
|
||||||
|
|
||||||
PIN=""
|
|
||||||
}
|
|
||||||
|
|
||||||
for DOC in $DOCUMENTOS ; do
|
|
||||||
firmar "$DOC"
|
|
||||||
done
|
|
||||||
|
|
||||||
PIN=""
|
|
||||||
rm -rf "$HOME/.pdfbox.cache" "$HOME/.ase"
|
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
FIRMADOR="$HOME/.local/share/firmador/firmador.jar"
|
|
||||||
|
|
||||||
java -jar "$FIRMADOR"
|
|
||||||
|
|
||||||
rm -rf "$HOME/.pdfbox.cache" "$HOME/.ase"
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Get current ISO for
|
|
||||||
# various linux distros
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
debian) wget -c "https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso" ;;
|
|
||||||
ubuntu) links "https://ubuntu.com/download/desktop/" ;;
|
|
||||||
arch) links "https://geo.mirror.pkgbuild.com/iso/" ;;
|
|
||||||
mint) links "https://mirrors.edge.kernel.org/linuxmint/stable/" ;;
|
|
||||||
void) links "https://repo-default.voidlinux.org/live/current/" ;;
|
|
||||||
*) echo "Usage: wget-iso <arch/mint/void...>" ;;
|
|
||||||
esac
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Get branch info
|
|
||||||
echo "Branch name: " && read -r branch
|
|
||||||
[ -z "$branch" ] && echo "No branch name specified" && exit
|
|
||||||
echo "Branch origin (blank for 'origin'): " && read -r origin
|
|
||||||
|
|
||||||
# Create branch and switch to it
|
|
||||||
git checkout -b "$branch"
|
|
||||||
|
|
||||||
# Push changes from origin
|
|
||||||
[ -z "$origin" ] && origin="origin"
|
|
||||||
git push --set-upstream "$origin" "$branch"
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
HOST="$1"
|
|
||||||
|
|
||||||
print_yes() {
|
|
||||||
#printf '\033[2m%s:\033[0m \033[1m\033[32mYES\033[0m\n' "$1"
|
|
||||||
printf '%s: YES\n' "$1"
|
|
||||||
}
|
|
||||||
print_no() {
|
|
||||||
#printf '\033[2m%s:\033[0m \033[1m\033[31mNO\033[0m\n' "$1"
|
|
||||||
printf '%s: NO\n' "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! ping -c 1 "$HOST" > /dev/null 2>&1; then
|
|
||||||
print_no DNS
|
|
||||||
print_no WEB
|
|
||||||
else
|
|
||||||
print_yes DNS
|
|
||||||
curl --silent --fail "$HOST" > /dev/null 2>&1 &&
|
|
||||||
print_yes WEB || print_no WEB
|
|
||||||
fi
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Get URL from clipboard
|
|
||||||
# and save as a bookmark
|
|
||||||
|
|
||||||
bookmark="$(xsel -ob)"
|
|
||||||
|
|
||||||
if grep -q "$bookmark" "$HOME/Documents/bookmarks" ; then
|
|
||||||
notify-send " Bookmarks" "Already bookmarked"
|
|
||||||
exit
|
|
||||||
else
|
|
||||||
name="$(menu "Bookmark name:" empty)"
|
|
||||||
[ -z "$name" ] && exit
|
|
||||||
entry="$name-$bookmark"
|
|
||||||
echo "$entry" >> "$HOME/Documents/bookmarks"
|
|
||||||
notify-send " Bookmarks" "Added '$entry'"
|
|
||||||
fi
|
|
128
scripts/mgr
128
scripts/mgr
|
@ -1,128 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
TASKS="$@"
|
|
||||||
|
|
||||||
PACMAN_UPDATE='yay -Sy && yay -Sy archlinux-keyring --needed --noconfirm'
|
|
||||||
PACMAN_UPGRADE='yay -Syu --noconfirm'
|
|
||||||
FLATPAK_UPDATE='/usr/bin/flatpak update -y --noninteractive'
|
|
||||||
DISTROBOX_UPDATE='/usr/bin/distrobox-upgrade -a'
|
|
||||||
PIP_UPDATE='/usr/bin/pipx upgrade-all'
|
|
||||||
PASSMGR_UPDATE='/usr/bin/pass git pull'
|
|
||||||
|
|
||||||
success() {
|
|
||||||
PROMPT="$1"
|
|
||||||
notify-send " $PROMPT"
|
|
||||||
printf "\033[32m %s\033[0m\n" "$PROMPT"
|
|
||||||
}
|
|
||||||
|
|
||||||
warn() {
|
|
||||||
PROMPT="$1"
|
|
||||||
printf "\033[33mWarning: %s\033[0m\n" "$PROMPT"
|
|
||||||
}
|
|
||||||
|
|
||||||
error() {
|
|
||||||
PROMPT="$1"
|
|
||||||
notify-send "Error: $PROMPT"
|
|
||||||
printf "\033[31mError: %s\033[0m\n" "$PROMPT"
|
|
||||||
}
|
|
||||||
|
|
||||||
pacman_update() {
|
|
||||||
if [ -d "/var/lib/pacman" ] ; then
|
|
||||||
$PACMAN_UPDATE && success "Updated pacman package index" && return 0
|
|
||||||
error "Could not update pacman index"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
warn "pacman not installed"
|
|
||||||
}
|
|
||||||
|
|
||||||
apt_update() {
|
|
||||||
[ -z "$sudopass" ] && sudopass="$(< /dev/null | menu "sudo:" pass)"
|
|
||||||
if [ -d "/var/lib/dpkg" ] && [ -e "/usr/bin/apt-get" ] ; then
|
|
||||||
printf '%s' "$sudopass" | sudo -S apt update && status="success"
|
|
||||||
[ "$status" != "success" ] && error "Could not update apt index" && return 1
|
|
||||||
upgradable="$(apt list --upgradable)"
|
|
||||||
[ "$upgradable" != "Listing..." ] && success "Updates available"
|
|
||||||
success "Updated apt package index" && return 0
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
warn "apt not installed"
|
|
||||||
}
|
|
||||||
|
|
||||||
pacman_upgrade() {
|
|
||||||
pacman_update
|
|
||||||
if [ -d "/var/lib/pacman" ] ; then
|
|
||||||
$PACMAN_UPGRADE && success "Updated pacman packages" && return 0
|
|
||||||
error "Could not update pacman packages"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
apt_upgrade() {
|
|
||||||
[ -z "$sudopass" ] && sudopass="$(< /dev/null | menu "sudo:" pass)"
|
|
||||||
apt_update
|
|
||||||
if [ -d "/var/lib/dpkg" ] && [ -e "/usr/bin/apt-get" ] ; then
|
|
||||||
mkdir -p /tmp/apt-updater
|
|
||||||
dpkg-query -l --no-pager | gzip > /tmp/apt-updater/previous
|
|
||||||
printf '%s' "$sudopass" | sudo apt upgrade -y || status="$(echo 'error')"
|
|
||||||
[ "$status" = "error" ] && error "Could not update apt packages"
|
|
||||||
dpkg-query -l --no-pager | gzip > /tmp/apt-updater/current
|
|
||||||
if [ -z "$(diff /tmp/apt-updater/current /tmp/apt-updater/previous)" ] ; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
success "Updated apt packages"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
rm -rf /tmp/apt-updater
|
|
||||||
error "Could not update apt packages"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
flatpak_update() {
|
|
||||||
if [ -e "/usr/bin/flatpak" ] ; then
|
|
||||||
$FLATPAK_UPDATE
|
|
||||||
success "Updated flatpak packages"
|
|
||||||
else
|
|
||||||
warn "flatpak not installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
distrobox_update() {
|
|
||||||
if [ -e "/usr/bin/distrobox" ] ; then
|
|
||||||
$DISTROBOX_UPDATE
|
|
||||||
success "Updated distrobox containers"
|
|
||||||
else
|
|
||||||
warn "distrobox not installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pip_update() {
|
|
||||||
if [ -e "/usr/bin/pipx" ] ; then
|
|
||||||
status="$($PIP_UPDATE)"
|
|
||||||
[ "$status" = "Versions did not change after running 'pipx upgrade' for each package 😴" ] && return 0
|
|
||||||
success "Updated pipx packages"
|
|
||||||
else
|
|
||||||
warn "pipx not installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
configs() {
|
|
||||||
for homecfg in /home/*/.config ; do
|
|
||||||
status="$(/usr/bin/git -C $homecfg pull || echo 'error')"
|
|
||||||
[ "$status" = "error" ] && error "Updating configs failed" && return 1
|
|
||||||
if [ "$status" != "Already up to date." ] ; then
|
|
||||||
success "Updated configs"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
passmgr() {
|
|
||||||
if [ -e "/usr/bin/pass" ] ; then
|
|
||||||
status="$($PASSMGR_UPDATE || echo 'error')"
|
|
||||||
[ "$status" = "error" ] && error "Updating passwords failed" && return 1
|
|
||||||
if [ "$status" != "Already up to date." ] ; then success "Updated passwords" ; fi
|
|
||||||
else
|
|
||||||
warn "pass not installed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
for TASK in $TASKS ; do $TASK ; done
|
|
||||||
|
|
||||||
sudopass=""
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Play from clipboard on mpv
|
|
||||||
|
|
||||||
notify-send "mpv" "Attempting to play from URL..."
|
|
||||||
mpv "$(xsel -ob)" || notify-send "mpv" "Error: Couldn't open URL"
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
WEEK=$(date '+%U')
|
|
||||||
|
|
||||||
[ -e "/home/$USER/Documents/personal/sched-$WEEK" ] && sched.py print ~/Documents/personal/sched-$WEEK && exit
|
|
||||||
|
|
||||||
echo "No sched-$WEEK found in ~/Documents/personal/"
|
|
195
scripts/sched.py
195
scripts/sched.py
|
@ -1,195 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
help="Usage: sched.py [OPTION] [FILE]\nOptions: new, print, edit."
|
|
||||||
import sys # arguments (if given file, just output it with formatting)
|
|
||||||
import os # clear console for easier readability
|
|
||||||
|
|
||||||
# schedule layout & formatting
|
|
||||||
weekdays = [
|
|
||||||
"sun",
|
|
||||||
"mon",
|
|
||||||
"tue",
|
|
||||||
"wed",
|
|
||||||
"thu",
|
|
||||||
"fri",
|
|
||||||
"sat",
|
|
||||||
]
|
|
||||||
hours = [
|
|
||||||
"05:00",
|
|
||||||
"06:00",
|
|
||||||
"07:00",
|
|
||||||
"08:00",
|
|
||||||
"09:00",
|
|
||||||
"10:00",
|
|
||||||
"11:00",
|
|
||||||
"12:00",
|
|
||||||
"13:00",
|
|
||||||
"14:00",
|
|
||||||
"15:00",
|
|
||||||
"16:00",
|
|
||||||
"17:00",
|
|
||||||
"18:00",
|
|
||||||
"19:00",
|
|
||||||
"20:00",
|
|
||||||
]
|
|
||||||
colors = [
|
|
||||||
'\033[0m', # 0 - normal
|
|
||||||
'\033[90m', # 1 - grey
|
|
||||||
'\033[91m', # 2 - red
|
|
||||||
'\033[92m', # 3 - green
|
|
||||||
'\033[93m', # 4 - yellow
|
|
||||||
'\033[94m', # 5 - purple
|
|
||||||
'\033[95m', # 6 - magenta
|
|
||||||
'\033[96m', # 7 - cyan
|
|
||||||
]
|
|
||||||
styles = [
|
|
||||||
'\033[0m', # 0 - normal
|
|
||||||
'\033[1m', # 1 - bold
|
|
||||||
'\033[4m', # 2 - underline
|
|
||||||
]
|
|
||||||
header_align = "center" # center, left, right
|
|
||||||
entry_align = "left" # center, left, right
|
|
||||||
cell_width = 13
|
|
||||||
header_color = 1
|
|
||||||
header_style = 0
|
|
||||||
|
|
||||||
# generate from previous values (utf8 encoded)
|
|
||||||
def gen_layout():
|
|
||||||
# create matrix to fit layout
|
|
||||||
placeholder = formatting("~", 1, 0, "center")
|
|
||||||
w, h = len(weekdays)+1, len(hours)+1
|
|
||||||
schedule = [[placeholder.encode("utf8") for x in range(w)] for y in range(h)]
|
|
||||||
# set days & hours in var schedule
|
|
||||||
for i in range(1, len(weekdays)+1):
|
|
||||||
day=formatting(weekdays[i-1], header_color, header_style, header_align)
|
|
||||||
schedule[0][i]=day.encode("utf8")
|
|
||||||
for i in range(len(hours)+1):
|
|
||||||
hour=colors[1]+"|"+formatting(hours[i-1], header_color, header_style, header_align)
|
|
||||||
schedule[i][0]=hour.encode("utf8")
|
|
||||||
index=colors[1]+cell_width*" "+" |"+colors[0]
|
|
||||||
schedule[0][0] = index.encode("utf8")
|
|
||||||
return(schedule)
|
|
||||||
|
|
||||||
# formatting
|
|
||||||
def formatting(entry, color, style, align):
|
|
||||||
if align == "left":
|
|
||||||
spaces = cell_width-len(entry)-1
|
|
||||||
entry = styles[style]+colors[color]+" "+entry+spaces*" "
|
|
||||||
if align == "center":
|
|
||||||
entry = entry.center(cell_width)
|
|
||||||
entry = styles[style]+colors[color]+entry
|
|
||||||
if align == "right":
|
|
||||||
spaces = cell_width-len(entry)-1
|
|
||||||
entry = styles[style]+colors[color]+spaces*" "+entry+" "
|
|
||||||
return(entry+styles[0]+colors[1]+"|"+colors[0])
|
|
||||||
|
|
||||||
# print schedule (decode)
|
|
||||||
def print_sched(schedule):
|
|
||||||
os.system('cls' if os.name == 'nt' else 'clear')
|
|
||||||
decoded_sched = []
|
|
||||||
for i in range(len(schedule)):
|
|
||||||
decoded_line = []
|
|
||||||
for j in range(len(schedule[i])):
|
|
||||||
decoded_line.append(schedule[i][j].decode("utf8"))
|
|
||||||
decoded_sched.append(decoded_line)
|
|
||||||
for row in decoded_sched:
|
|
||||||
print(''.join(map(str,row)))
|
|
||||||
|
|
||||||
# read saved .csv schedule (utf8 encoded)
|
|
||||||
def read_sched(file):
|
|
||||||
file = open(file, "rb")
|
|
||||||
schedule = []
|
|
||||||
for line in file:
|
|
||||||
i = []
|
|
||||||
entries = (line.replace(("\n").encode("utf8"), ("").encode("utf8"))).split((",").encode("utf8"))
|
|
||||||
for j in entries:
|
|
||||||
i.append(bytes(j))
|
|
||||||
schedule.append(i)
|
|
||||||
file.close()
|
|
||||||
return(schedule)
|
|
||||||
|
|
||||||
# save function (utf8 encoded)
|
|
||||||
def save(schedule, file):
|
|
||||||
with open(file, "wb") as f:
|
|
||||||
for row in schedule:
|
|
||||||
for entry in row:
|
|
||||||
f.write(entry + (",").encode("utf"))
|
|
||||||
f.write(("\n").encode("utf8"))
|
|
||||||
|
|
||||||
# add/edit entry in schedule
|
|
||||||
def edit(schedule):
|
|
||||||
if len(weekdays)+1 != len(schedule[0]) or len(hours)+1 != len(schedule):
|
|
||||||
print("Imported and configured layouts don't match! Can't edit, only print.")
|
|
||||||
return 0
|
|
||||||
day = menu(weekdays, schedule, 0)
|
|
||||||
hour = menu(hours, schedule, 0)
|
|
||||||
print_sched(schedule)
|
|
||||||
print(styles[1]+"\nType what the activity should be:"+styles[0])
|
|
||||||
entry = input("-> ")
|
|
||||||
if len(entry) > cell_width-2:
|
|
||||||
print("Entry is too long for cell_width!")
|
|
||||||
return 0
|
|
||||||
color = menu(colors, schedule, 1)
|
|
||||||
style = menu(styles, schedule, 1)
|
|
||||||
entry = formatting(entry, color, style, entry_align)
|
|
||||||
schedule[hour+1][day+1] = entry.encode("utf8")
|
|
||||||
|
|
||||||
# menu function for opt-lists
|
|
||||||
def menu(array, schedule, nopt):
|
|
||||||
while True:
|
|
||||||
print_sched(schedule)
|
|
||||||
print(styles[1]+"\nChoose an option:"+styles[0])
|
|
||||||
if nopt == 1:
|
|
||||||
for i in range(len(array)):
|
|
||||||
print(array[i]+str(i)+array[0])
|
|
||||||
|
|
||||||
elif nopt == 0:
|
|
||||||
for i in range(len(array)):
|
|
||||||
print(styles[1]+str(i)+styles[0]+" - "+array[i])
|
|
||||||
try:
|
|
||||||
opt = int(input("-> "))
|
|
||||||
if 0 <= opt <= len(array):
|
|
||||||
return(opt)
|
|
||||||
else:
|
|
||||||
print("\nOut of range!")
|
|
||||||
input("Try again...")
|
|
||||||
except:
|
|
||||||
print("\nInvalid input! Should be integer.")
|
|
||||||
input("Try again...")
|
|
||||||
|
|
||||||
# read arguments
|
|
||||||
if (len(sys.argv)) < 2:
|
|
||||||
print(help)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
# main execution
|
|
||||||
mode = sys.argv[1]
|
|
||||||
if mode == "new" or mode == "edit":
|
|
||||||
if mode == "new":
|
|
||||||
schedule = gen_layout()
|
|
||||||
print_sched(schedule)
|
|
||||||
elif mode == "edit":
|
|
||||||
try:
|
|
||||||
schedule = read_sched(sys.argv[2])
|
|
||||||
except:
|
|
||||||
print("Invalid input file!")
|
|
||||||
opts = ["print", "edit", "save", "exit"]
|
|
||||||
while True:
|
|
||||||
print_sched(schedule)
|
|
||||||
opt = menu(opts, schedule, 0)
|
|
||||||
if opt == 0: # print
|
|
||||||
print_sched(schedule)
|
|
||||||
elif opt == 1: # edit
|
|
||||||
print_sched(schedule)
|
|
||||||
edit(schedule)
|
|
||||||
elif opt == 2: # save
|
|
||||||
print("Type the name of the schedule file (recommended .txt extension):")
|
|
||||||
file = input("-> ")
|
|
||||||
save(schedule, file)
|
|
||||||
elif opt == 3: # exit
|
|
||||||
break
|
|
||||||
elif mode == "print":
|
|
||||||
try:
|
|
||||||
schedule = read_sched(sys.argv[2])
|
|
||||||
except:
|
|
||||||
print("Invalid input file!")
|
|
||||||
print_sched(schedule)
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Look for ifconfig
|
|
||||||
[ -e "/sbin/ifconfig" ] && CMD="/sbin/ifconfig"
|
|
||||||
[ -e "$(which ifconfig)" ] && CMD="ifconfig"
|
|
||||||
[ -n "$CMD" ] || error "ifconfig not found"
|
|
||||||
|
|
||||||
# Use ifconfig to get ip address
|
|
||||||
ADDR="$($CMD | grep -o '192\.168\.[0-9]*\.[0-9]*' | head -n 1)"
|
|
||||||
|
|
||||||
php -S "$ADDR":8000 -t .
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Look for ifconfig
|
|
||||||
[ -e "/sbin/ifconfig" ] && CMD="/sbin/ifconfig"
|
|
||||||
[ -e "$(which ifconfig)" ] && CMD="ifconfig"
|
|
||||||
[ -n "$CMD" ] || error "ifconfig not found"
|
|
||||||
|
|
||||||
# Use ifconfig to get ip address
|
|
||||||
ADDR="$($CMD | grep -o '192\.168\.[0-9]*\.[0-9]*' | head -n 1)"
|
|
||||||
|
|
||||||
python -m http.server -b "$ADDR"
|
|
24
scripts/snip
24
scripts/snip
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Snippets directory
|
|
||||||
snippets=~/Documents/snippets
|
|
||||||
|
|
||||||
# Navigate using fzf
|
|
||||||
fzf_nav() {
|
|
||||||
[ -d "$1" ] && cd "$1"
|
|
||||||
while true ; do
|
|
||||||
opt=$(/usr/bin/ls -AF1 --group-directories-first)
|
|
||||||
opt=$(printf "../\n$opt" | fzf --cycle --reverse --padding 2% --preview 'batcat --decorations never --color always {}')
|
|
||||||
[ -d "$opt" ] && cd "$opt" > /dev/null 2>&1 || break
|
|
||||||
done
|
|
||||||
[ -n "$opt" ] && echo "$opt"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Select using menu
|
|
||||||
snippet=$(fzf_nav "$snippets")
|
|
||||||
# Exit if empty
|
|
||||||
[ -z "$snippet" ] && exit
|
|
||||||
|
|
||||||
# Copy to clipboard and notify
|
|
||||||
cat "$snippets"/"$snippet" | xsel -ib && notify-send "Snippet" "'$snippet' copied to clipboard!"
|
|
||||||
|
|
||||||
"$EDITOR" "$snippets"/"$snippet"
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# Depends on sxiv, dmenu and hsetroot
|
|
||||||
# Will display background chooser
|
|
||||||
# and set it using hsetroot
|
|
||||||
|
|
||||||
img=$(find ~/Pictures/Backgrounds/* | shuf | sxiv -itoq | tail -1)
|
|
||||||
|
|
||||||
# Exit if none chosen
|
|
||||||
[ -z "$img" ] && exit
|
|
||||||
|
|
||||||
# Find previous startup background command
|
|
||||||
prev=$(grep hsetroot "$XINITRC")
|
|
||||||
|
|
||||||
# Define wether or not hsetroot should
|
|
||||||
# set per monitor or treat multiple monitors as one
|
|
||||||
option=$(printf "Set per monitor\nTreat multiple monitors as one" | dmenu -i -p "Layout:")
|
|
||||||
case "$option" in
|
|
||||||
"Set per monitor") new="hsetroot -cover $img" ;;
|
|
||||||
"Treat multiple monitors as one") new="hsetroot -root -cover $img" ;;
|
|
||||||
*) exit 1 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Set background and change
|
|
||||||
# startup configuration with new one
|
|
||||||
$new && sed -i "s|$prev|$new|g" "$XINITRC"
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
sitedir=$(pwd)
|
|
||||||
cd $sitedir
|
|
||||||
git pull
|
|
||||||
rm -rf $sitedir/public
|
|
||||||
hugo -D
|
|
||||||
rsync -uvrP --delete-after $sitedir/public ceo@216.238.79.235:
|
|
Loading…
Reference in a new issue