From fc88950bb5ee98276d79840371f20548c8312cb3 Mon Sep 17 00:00:00 2001 From: Aritra Sarkar Date: Wed, 12 May 2021 11:41:23 +0530 Subject: [PATCH] Add scripts --- dotfiles/.scripts/change_wall | 51 +++++++++++++++++ dotfiles/.scripts/dwm_status | 86 ++++++++++++++++++++++++++++ dotfiles/.scripts/mosh_master_man.sh | 73 +++++++++++++++++++++++ dotfiles/.scripts/query_twitch.py | 58 +++++++++++++++++++ dotfiles/.scripts/reflector.sh | 2 + dotfiles/.scripts/screenshot | 2 + stage.sh | 6 ++ 7 files changed, 278 insertions(+) create mode 100755 dotfiles/.scripts/change_wall create mode 100755 dotfiles/.scripts/dwm_status create mode 100755 dotfiles/.scripts/mosh_master_man.sh create mode 100755 dotfiles/.scripts/query_twitch.py create mode 100755 dotfiles/.scripts/reflector.sh create mode 100755 dotfiles/.scripts/screenshot diff --git a/dotfiles/.scripts/change_wall b/dotfiles/.scripts/change_wall new file mode 100755 index 0000000..3740d48 --- /dev/null +++ b/dotfiles/.scripts/change_wall @@ -0,0 +1,51 @@ +#!/usr/bin/sh + +PICTURES_DIR="$HOME/pictures" +FEMININE_WALLPAPER_DIR="$PICTURES_DIR/feminine_wallpapers" +NORMAL_WALLPAPER_DIR="$PICTURES_DIR/wallpapers" +WALLPAPER_PREFIX="wallpaper_" +SETROOT_FLAGS="--zoom" + +get_random_wallpaper() { + # first argument is the wallpaper directory + wallpaper=$(find "$1"/${WALLPAPER_PREFIX}* -type f | shuf -n 1) +} + +set_wallpaper() { + # first argument is path to wallpaper + setroot $SETROOT_FLAGS "$1" +} + +get_and_set_random_wallpaper() { + # first argument is the wallpaper directory + get_random_wallpaper "$1" + set_wallpaper "$wallpaper" +} + +reset_subject() { + [ -e "$TOGGLE" ] && rm "$TOGGLE" +} + +change_wallpaper() { + if [ -e "$TOGGLE" ]; then + get_and_set_random_wallpaper "$FEMININE_WALLPAPER_DIR" + else + get_and_set_random_wallpaper "$NORMAL_WALLPAPER_DIR" + fi +} + +change_subject() { + if [ ! -e "$TOGGLE" ]; then + touch "$TOGGLE" + else + rm "$TOGGLE" + fi +} + +if [ "$1" = "init" ]; then + reset_subject +elif [ "$1" = "toggle" ]; then + change_subject +fi + +change_wallpaper diff --git a/dotfiles/.scripts/dwm_status b/dotfiles/.scripts/dwm_status new file mode 100755 index 0000000..6216c2f --- /dev/null +++ b/dotfiles/.scripts/dwm_status @@ -0,0 +1,86 @@ +#!/usr/bin/sh + +PADDING=" " +#SEP="|" +#DSEP=" ‖ " +SEP=" " +DSEP=" :: " + +get_percentage_used() { + percentage="$(df -h | grep "$1" | awk '{ print $5 }')" +} + +get_storage_status() { + get_percentage_used "/dev/sda1" + storage_status="/ $percentage${SEP}" + get_percentage_used "/dev/sda2" + storage_status="${storage_status}~ $percentage" +} + +get_mem_usage() { + #https://www.linuxquestions.org/questions/linux-general-1/awk-to-convert-bytes-to-human-number-909214/ + mem_usage=" $(free | awk 'FNR==2{ + split( "K M G" , v ); + p=( $3 * 100 / $2 ); + s=1; + while ( $3>=1024 ) { + $3 /= 1024; + s++; + } + if ( s>2 ) { + printf "%.1f%c (%.0f%%)", $3, v[s], p + } else { + printf "%.0f%c (%.0f%%)", $3, v[s], p + } + }')" +} + +get_temp_core() { + temperature="$(sensors | grep "Core $1" | awk '{ print $3 }')" +} + +get_temperature_status() { + get_temp_core "0" + temperature_status="󰍛 $temperature${SEP}" + get_temp_core "1" + temperature_status="${temperature_status}󰍛 $temperature" +} + +get_volume() { + if pamixer --get-mute >> /dev/null; then + volume_icon="󰝟" + elif [ "$(pamixer --get-volume)" -le "50" ]; then + volume_icon="" + else + volume_icon="" + fi + + volume_status="$volume_icon $(pamixer --get-volume-human)" +} + +get_status_line() { + # storage + get_storage_status + status_line="${PADDING}${storage_status}" + + # memory + get_mem_usage + status_line="${status_line}${DSEP}${mem_usage}" + + # temperature + get_temperature_status + status_line="${status_line}${DSEP}${temperature_status}" + + # volume + get_volume + status_line="${status_line}${DSEP}${volume_status}" + + # date + status_line="${status_line}${DSEP} $(date '+%a, %b %d')" + + # time + status_line="${status_line}${DSEP} $(date +%H:%M)${PADDING}" +} + +get_status_line +xsetroot -name "$status_line" diff --git a/dotfiles/.scripts/mosh_master_man.sh b/dotfiles/.scripts/mosh_master_man.sh new file mode 100755 index 0000000..fa8b0c4 --- /dev/null +++ b/dotfiles/.scripts/mosh_master_man.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# +# Edited and abbreviated version of "ANSI code generator" +# +# © Copyright 2015 Tyler Akins +# Licensed under the MIT license with an additional non-advertising clause +# See http://github.com/fidian/ansi + +color-table() { + local FNB_LOWER FNB_UPPER PADDED + + FNB_LOWER="$(colorize 2 22 f)n$(colorize 1 22 b)" + FNB_UPPER="$(colorize 2 22 F)N$(colorize 1 22 B)" + echo -n "bold $(colorize 1 22 Sample) " + echo -n "faint $(colorize 2 22 Sample) " + echo "italic $(colorize 3 23 Sample)" + echo -n "underline $(colorize 4 24 Sample) " + echo -n "blink $(colorize 5 25 Sample) " + echo "inverse $(colorize 7 27 Sample)" + echo "invisible $(colorize 8 28 Sample)" + echo -n "strike $(colorize 9 29 Sample) " + echo -n "fraktur $(colorize 20 23 Sample) " + echo "double-underline $(colorize 21 24 Sample)" + echo -n "frame $(colorize 51 54 Sample) " + echo -n "encircle $(colorize 52 54 Sample) " + echo "overline $(colorize 53 55 Sample)" + echo "" + echo " black red green yellow blue magenta cyan white" + for BG in 40:black 41:red 42:green 43:yellow 44:blue 45:magenta 46:cyan 47:white; do + PADDED="bg-${BG:3} " + PADDED="${PADDED:0:13}" + echo -n "$PADDED" + for FG in 30 31 32 33 34 35 36 37; do + echo -n "$CSI${BG:0:2};${FG}m" + echo -n "$FNB_LOWER" + echo -n "$CSI$(( $FG + 60 ))m" + echo -n "$FNB_UPPER" + echo -n "${CSI}0m " + done + echo "" + echo -n " +intense " + for FG in 30 31 32 33 34 35 36 37; do + echo -n "$CSI$(( ${BG:0:2} + 60 ));${FG}m" + echo -n "$FNB_LOWER" + echo -n "$CSI$(( $FG + 60 ))m" + echo -n "$FNB_UPPER" + echo -n "${CSI}0m " + done + echo "" + done + echo "" + echo "Legend:" + echo " Normal color: f = faint, n = normal, b = bold." + echo " Intense color: F = faint, N = normal, B = bold." +} + +colorize() { + echo -n "$CSI${1}m$3$CSI${2}m" +} + +# Handle long options until we hit an unrecognized thing +CONTINUE=true +RESTORE=true +NEWLINE=false +ESCAPE=false +ESC="$(echo -e '\033')" +CSI="${ESC}[" +OSC="${ESC}]" +ST="${ESC}\\" +OUTPUT="" +SUFFIX="" + +color-table diff --git a/dotfiles/.scripts/query_twitch.py b/dotfiles/.scripts/query_twitch.py new file mode 100755 index 0000000..5cf094b --- /dev/null +++ b/dotfiles/.scripts/query_twitch.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +import requests +import re +import json +import time + +users = [ + "tsoding", + "lastmiles", + "enceladosaurus", + "rwxrob", + "beginbot", + "baldengineer", + "juliestrator", +] + +s = requests.session() + +homepage = s.get("https://www.twitch.tv").text +client_id = re.search('"Client-ID" ?: ?"(.*?)"', homepage).group(1) + +payload = [] + +for username in users: + gql_query = 'query{user(login:"USERNAME"){login stream{type}}}' + payload.append({"query": gql_query.replace("USERNAME", username)}) + +resp = s.post( + "https://gql.twitch.tv/gql", + data=json.dumps(payload), + headers={"Client-ID": client_id}, +).json() +ts = int(time.time()) + +i = 0 # User index + +for stream in resp: + if not stream["data"]["user"]: + print(f"{ts} \033[31;7mError : \033[31;1;7m" + users[i] + "\033[0;31;7m was not found!\033[0m") + i += 1 + continue + + username = stream["data"]["user"]["login"] + online = stream["data"]["user"]["stream"] is not None + + if online: + ts_hl = '\033[33m' + username_hl = '\033[31;1m' + status_hl = '\033[32;1;7m' + end_hl = '\033[0m' + else: + ts_hl = '' + username_hl = '' + status_hl = '' + end_hl = '' + + print(f"{ts_hl}{ts} {username_hl}{username} {status_hl}{online}{end_hl}") + i += 1 diff --git a/dotfiles/.scripts/reflector.sh b/dotfiles/.scripts/reflector.sh new file mode 100755 index 0000000..dcaacc8 --- /dev/null +++ b/dotfiles/.scripts/reflector.sh @@ -0,0 +1,2 @@ +#!/usr/bin/sh +sudo reflector --verbose --latest 6 --age 24 --protocol https --protocol http --sort rate --save /etc/pacman.d/mirrorlist diff --git a/dotfiles/.scripts/screenshot b/dotfiles/.scripts/screenshot new file mode 100755 index 0000000..c2e37d4 --- /dev/null +++ b/dotfiles/.scripts/screenshot @@ -0,0 +1,2 @@ +#!/usr/bin/sh +scrot "/home/ray/pictures/screenshots/%s_%H%M_%d.%m.%Y_\$wx\$h.png" --quality 100 diff --git a/stage.sh b/stage.sh index b010a54..e5db5d3 100755 --- a/stage.sh +++ b/stage.sh @@ -36,3 +36,9 @@ NVIM_INIT_VIM="init.vim" mkdir -p "$DOTFILES_CONFIG_DIR/$NVIM_INIT_VIM_DIR" cp "$XDG_CONFIG_HOME/$NVIM_INIT_VIM_DIR/$NVIM_INIT_VIM" \ "$DOTFILES_CONFIG_DIR/$NVIM_INIT_VIM_DIR/$NVIM_INIT_VIM" + +# Scripts +SCRIPTS_DIR=".scripts" +mkdir -p "$DOTFILES_HOME_DIR/$SCRIPTS_DIR" +cp "$HOME/$SCRIPTS_DIR"/* \ + "$DOTFILES_HOME_DIR/$SCRIPTS_DIR" -- 2.45.2