diff --git a/add-projector b/add-projector deleted file mode 100755 index fc4c539..0000000 --- a/add-projector +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# In case you've ever needed to setup - -output=$(xrandr|grep ' connected'|awk '{print $1}' | \ - dmenu -i -p 'Device to attach') -[ -z "$output" ] && exit 0 - -# Now we pick out where this goes -side=$(printf 'left-of\nright-of\nabove\nbelow' | \ - dmenu -i -p 'Side') -[ -z "$side" ] && exit 0 - -# Just echo for demonstrative purposes -echo "xrandr --output $output --auto --$side eDP-1" diff --git a/bread b/bread index 0434987..466ccce 100755 --- a/bread +++ b/bread @@ -1,9 +1,6 @@ #!/bin/bash -book=$(ls $HOME/Books/ | dmenu -i -l 15) -if [ -z "$book" ] +book=`ls $HOME/Books/ | dmenu -i -l 15` +if [ ! -z "$book" ] then - exit 0 -else zathura "$HOME/Books/$book" fi -#zathura "$HOME/Books/$book" diff --git a/bright b/bright index 72ae7a2..11c1ea5 100755 --- a/bright +++ b/bright @@ -1,6 +1,23 @@ #!/bin/bash -# Script to siimply change the brightness -level=$(echo "$(seq 1 100)" | dmenu -i -p 'Brightnesss from 1-100') -percentage=$(echo "$level/100" | bc -l | head -c 4) -[ -z "$percentage" ] && exit 0 -xrandr --output eDP-1 --brightness $percentage +# this part is only used for startup scripts mainly +if [ ! -z "$1" ] +then + screens="`xrandr | grep ' connected' | awk '{print $1}'`" + for s in $screens; do + xrandr --output "$s" --brightness "0.7" + echo xrandr --output "$s" --brightness "0.7" + done + exit 0 +fi + +# Changes brightness through dmenu (because i like my eyes) +level=`seq 1 100 | dmenu -i -p 'Brightnesss from 1-100'` +if [ -z "$level" ]; then exit; fi + +percentage=`echo "scale=2;" "$level/100" | bc -l` +if [ -z "$percentage" ]; then exit; fi + +screens="`xrandr | grep ' connected' | awk '{print $1}'`" +for scr in $screens;do + xrandr --output "$scr" --brightness $percentage +done diff --git a/bruh b/bruh new file mode 100755 index 0000000..32ce003 --- /dev/null +++ b/bruh @@ -0,0 +1,8 @@ +#!/bin/sh +# This is only here because my xserver is rarted +# in other words i setup my own rice every login by hand :( +newbg +bright 60 +compton -b + + diff --git a/distro b/distro new file mode 100755 index 0000000..fa64336 --- /dev/null +++ b/distro @@ -0,0 +1,41 @@ +#!/bin/sh +# Wanna look cool in desktop threads? here you go + +red='\033[1;31m' +green='\033[0;32m' +white='\033[1;37m' +nc='\033[0m' +clear +echo ' ..ooo. + .888888888. + 88"P""T"T888 8o' +echo " o8o ${red}8.8\"8 88o.\"8o${nc} 8o" +echo " 88 . ${red}o88o8 8 88.\"8${nc} 88P\"o" +echo " 88 o8 ${red}88 oo.8 888 8${nc} 888 88" +echo " 88 88 ${red}88o888\" 88\"${nc} o888 88" +echo " 88.\"8o.${red}\"T88P.88\"${nc}. 88888 88" +echo " 888.\"888.${red}\"88P\"${nc}.o8 8888 888" +echo ' "888o"8888oo8888 o888 o8P" + "8888.""888P"P.888".88P + "88888ooo 888P".o888 + ""8P"".oooooo8888P + .oo888ooo. 8888NICK8P8 +o88888"888"88o. "8888"".88 .oo888oo.. + 8888" "88 88888. 88".o88888888"888. + "8888o.""o 88"88o. o8".888"888"88 "88P + T888C.oo. "8."8"8 o8"o888 o88" ".=888" + 88888888o "8 8 8 .8 .8"88 8"".o888o8P + "8888C.o8o 8 8 8" 8 o" ...o"""8888 + "88888888 " 8 .8 8 88888888888" + "8888888o .8o=" o8o..o(8oo88" + "888" 88" 888888888"" + o8P "888""" + ...oo88' + +# Now some diagnostic shit idk man +#echo "Packages installed: ${red}`dpkg --get-selections | grep -v deinstall | wc -l`${nc} +echo "Distro: ${green}`uname -v | awk '{print $3}'`${nc} +Kernel: ${white}`uname -o`${nc}" +echo "=|:^) Art: https://www.asciiart.eu/plants/flowers =|:^)" +sleep 1 + diff --git a/dwm-stat/.gitignore b/dwm-stat/.gitignore new file mode 100644 index 0000000..ecd951a --- /dev/null +++ b/dwm-stat/.gitignore @@ -0,0 +1 @@ +statline diff --git a/dwm-stat/Makefile b/dwm-stat/Makefile new file mode 100644 index 0000000..87d0b39 --- /dev/null +++ b/dwm-stat/Makefile @@ -0,0 +1,8 @@ +stat: + gcc -o statline status.c -O2 -s -lX11 + +clean: + rm -f statline + +install: + ln -s $(shell pwd)/statline /usr/bin/statline diff --git a/dwm-stat/status.c b/dwm-stat/status.c new file mode 100644 index 0000000..97cc212 --- /dev/null +++ b/dwm-stat/status.c @@ -0,0 +1,124 @@ +// statline by shockrah +// Inspired by barM +// barM is a great tool but formats information in a really ugly fashion +// This version mainly aims to ve a visual overhaul of both code and output over barM +// Dependancies: cat grep awk + +// Define these however you like +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BASIC_MSG "/comfy/ o clock | " +#define TIME_FORMAT "%I:%M%p - %d %b %Y" + +#define TIME_DELAY 5 +#define MAXSTR 1024 + +#define MEM_BREAD_SIZE 32 +#define STD_IO + +// `man date` should give you some more info on what the format specs do +// This format give the form ยป 05:13 PM - 20 Jul 2019 +static char* +date_time(void) +{ + static char date[MAXSTR]; + time_t now = time(0); + + strftime(date, sizeof(date), TIME_FORMAT, localtime(&now)); + return date; +} + +char* +ram_usage(void) +{ + struct sysinfo info; + sysinfo(&info); + static char buf[MAXSTR]; + long sum; + + // TODO: fix the Lazily reading through /proc/meminfo + FILE* res = popen("cat /proc/meminfo | grep -e ^Cached -e Buffers -e Slab | awk '{print $2}'", "r"); + if(res) { + sum = 0; + while(fgets(buf, sizeof(buf)-1, res) != NULL) { + sum += atoi(buf); + } + sum *= 1000; // KB to B + } + double used = (info.totalram - info.freeram - sum) / 1000000000.; + double total = info.totalram / 1000000000.; + + snprintf(buf, sizeof(buf), "%.2f G/ %.1f G", used, total); + pclose(res); + return buf; +} + +static char* +cpu_usage(void) +{ + return "CPU Usage Placeholder"; +} + +static void +XSetRoot(char* name) +{ + Display *display; + + if (( display = XOpenDisplay(0x0)) == NULL ) { + fprintf(stderr, "[barM] cannot open display!\n"); + exit(1); + } + + XStoreName(display, DefaultRootWindow(display), name); + XSync(display, 0); + + XCloseDisplay(display); +} + +int +main(void) +{ + // Here you can put the functions you create as they should be executed from here + static char* (*func_table[])(void) = { + ram_usage, + date_time, + }; + + char stat_output[MAXSTR]; + // First things that don't need updating like ever + int base_len = snprintf(stat_output, sizeof(stat_output), BASIC_MSG); + char* base_offset = stat_output + base_len; + + // Make sure we didn't go past the end of our buffer + if(base_offset >= sizeof(stat_output)+stat_output) { + XSetRoot(stat_output); + return 1; + } + // Now the regularly updated stuff like date/time cpu usage etc. + int len; + for(;;) { + int remainder = sizeof(stat_output) - base_len; // starting position for 'dynamic text' + char* tmp_base_ptr = base_offset; + for(int i = 0; i < sizeof(func_table)/sizeof(func_table[0]); ++i) { + if(tmp_base_ptr > (stat_output+MAXSTR)) { + break; + } + + int written = snprintf(tmp_base_ptr, remainder, "%s | ", func_table[i]()); + tmp_base_ptr += written; + remainder -= written; + } + + XSetRoot(stat_output); + sleep(TIME_DELAY); + } + return 0; +} diff --git a/newbga b/newbga new file mode 100755 index 0000000..110f8d9 --- /dev/null +++ b/newbga @@ -0,0 +1,43 @@ +#!/bin/sh +# Shoutout to mitchweaver on gitgub for the script as a useful base for this one +# Link to exact script: https://github.com/mitchweaver/bin/blob/master/mpv/mpvbg +# There's lots of good scripts in that repository so check them all out + +pkill -9 xwinwrap +cacheFile="${HOME}/.cache/mpvbg.pid" +base="/home/shockrah/Pictures/VPapes" + +# Pic two random video papes +pape1=`ls "${HOME}/Pictures/VPapes" | shuf | head -n 1` +pape2=`ls "${HOME}/Pictures/VPapes" | shuf | head -n 1` +while "$pape1" = "$pape2" +do + pape2=`ls "${HOME}/Pictures/VPapes" | shuf | head -n 1` +done + +mpv="mpv --wid WID --no-config --keepaspect=no --loop \ + --no-border --vd-lavc-fast --x11-bypass-compositor=no \ + --gapless-audio=yes --vo=x11 --hwdec=auto \ + --x11-name=mpvbg" + +# store our pid here so we can avoid killing our background later +# Example: $ kill $(pgrep mpv | grep -v $(pgrep -P $(cat ${HOME}/.cache/mpvbg.pid))) +# --- Here we are killing "all mpvs, except with THIS PID" +# --- This lets us kill a video we're watching, without stopping our desktop background! + + +# First monitor +xwinwrap -g 1920x1080 -ni -fdt -sh rectangle -un -b -nf -ov -- $mpv "$base/$pape1" & > /dev/null 2>&1 & +echo $! > ${HOME}/.cache/mpvbg.pid + +# Quick check if we even have a second monitor at all +c=`xrandr | grep ' connected' | wc -l` +if $c = "1" +then + exit +fi +# Second monitor +xwinwrap -g 1920x1080+1920+0 -ni -fdt -sh rectangle -un -b -nf -ov -- $mpv "$base/$pape2" & > /dev/null 2>&1 & +echo $! >> ${HOME}/.cache/mpvbg.pid + + diff --git a/power b/power new file mode 100755 index 0000000..9512bcb --- /dev/null +++ b/power @@ -0,0 +1,17 @@ +#!/bin/sh + +off() { + systemctl poweroff +} +reboot() { + systemctl reboot +} + +opt=`printf 'Off\nReboot' | dmenu -i -p 'Power option'` +if [ -z "$opt"]; then exit 0;fi +if [ "$opt" = "Off" ] +then + off +else + reboot +fi diff --git a/proj b/proj index 1fb0225..c614bc5 100755 --- a/proj +++ b/proj @@ -15,12 +15,17 @@ then dmenu -i -p 'Pick side'` if [ -z "$side" ]; then exit 0; fi - echo 'xrandr --output $out --auto $side eDP-1' - xrandr --output $out --auto --$side eDP-1 + echo "xrandr --output $out --auto $side eDP-1" + xrandr --output $out --auto --$side DVI-I-1 else + # Get the display we want to remove out=`xrandr | grep ' connected' | awk '{print $1}' | \ dmenu -i -p 'Device to dettach'` if [ -z "$out" ]; then exit 0; fi + + # Remove that device from xrandr + echo "xrandr --output $out --off" + xrandr --output $out --off exit 0 fi diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..45fc018 --- /dev/null +++ b/readme.md @@ -0,0 +1,22 @@ +# What is this? + +A collection of shell scripts that I use with dmenu to make my life easier. + +Right now most of them are filled with basisms but thats slowly changing overtime. + +## I have a cool script too can I contribute it here? + +Of course! [Submit a merge request](https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html) or just email the file/file to my email `alejandros714@protonmail.com`. + +## TODO + +Scale 0-5 + +* 0 = High priority +* 5 = Low priority + + +usbm 0 + +* Actually finishing the userland mount script +* Remove necessity for root diff --git a/sndt b/sndt index 73078b4..e693517 100755 --- a/sndt +++ b/sndt @@ -1,3 +1,3 @@ -#!/bin/bash -# Shut off all sounds coming from alsa +#!/bin/sh +# Shut off all sounds coming from alsa (called when locking from lock script" amixer -q -D pulse sset Master toggle diff --git a/usbm b/usbm deleted file mode 100755 index d2a40f0..0000000 --- a/usbm +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# Mounting script for usb drives for use in dmenu -mountable=$(lsblk -lp | grep "part $" | awk '{print $1, $4 }') -[ -z "$mountable" ] && exit 0 -usb=$(echo "$mountable" |\ - dmenu -i -l 5 -p "Which usb drive should we mount?" |\ - awk '{print $1}') -mkdir -p ~/.mntpts -mount $(basename $usb) ~/.mntpts/$(basename $usb) diff --git a/usm b/usm old mode 100644 new mode 100755 index 4101253..8066f69 --- a/usm +++ b/usm @@ -1,10 +1,27 @@ #!/bin/sh # pick out the drive but not sda because thats the main drive choice=`lsblk -lp | \ - grep 'disk $' | awk '{print $1, $4}' | grep -v 'sda' | \ - dmenu -i -p 'Drive to mount'` + grep 'disk ' | \ + awk '{print $1, $4}' | \ + dmenu -i -p 'Drive to (un)mount'` +if [ -z "$choice" ]; then exit; fi + +# Check if it's already mounted / something was even picked dev=`echo $choice | awk '{print $1}'` -if [ -z "$dev" ];then exit 0;fi -# Finally we can mount the thing -mkdir -p "/mnt/`basename $dev`" -mount "$dev" "$name" +name="`basename $dev`" +if [ -z "$dev" ]; then exit; fi +if grep -qs "$dev" /proc/mounts; +then + # unmount the drive + umount "~/.mounts/$name" + rm -d "~/.mounts/$name" + # check if we still need the .mounts directory or nah + if [ "`ls ~/.mounts/`" ] + then + rm -d ~/.mounts/ + fi +else + # Finally we can mount the thing + mkdir -p "~/.mounts/$name" + mount "$dev" "~/.mounts/$name" +fi diff --git a/wed b/wed index a3af57e..1cc2a70 100755 --- a/wed +++ b/wed @@ -1,4 +1,5 @@ #!/bin/bash -choice=$(printf "on\noff" | dmenu -i -p "Wifi $(nmcli r w)") -[ -z "$choice" ] && exit 0 +stat=`nmcli r w` +choice=`printf "on\noff" | dmenu -i -p "Wifi $stat"` +if [ -z "$choice" ]; then exit;fi nmcli r w $choice diff --git a/ytdl b/ytdl index e5de5da..2c28b82 100755 --- a/ytdl +++ b/ytdl @@ -1,8 +1,18 @@ -#!/bin/bash -dir=$(find ~/Music/ -maxdepth 1 -type d | dmenu -i -p "Pick a directory") -url="$(echo '' | dmenu -p 'Enter a url')" -[ -z "$url" ] && exit 0 -youtube-dl --extract-audio \ +#!/bin/sh +dir=`for d in ~/Music/*;do + if [ -d "$d" ] + then + basename "$d" + fi +done | dmenu -i -l 10 -p 'Pick a directory'` +echo ~/Music/$dir +if [ -z "$dir" ]; then exit; fi + +url=`echo '' | dmenu -p 'Enter a url'` +if [ -z "$url" ]; then exit; fi + +# youtube-dl constantly breaks so --verbose is here for your pleasure +youtube-dl --extract-audio --verbose \ --audio-format mp3 \ - -o "$dir/%(title)s.%(ext)s" \ - $url + -o "~/Music/$dir/%(title)s.%(ext)s" \ + "$url"