diff --git a/scripts.org b/scripts.org index abc6bf5..c122f28 100644 --- a/scripts.org +++ b/scripts.org @@ -1,8 +1,44 @@ #+PROPERTY: header-args :mkdirp yes #+title:General-Use Scripts + +# Define interpreter paths +#+name: fish-shebang +#+begin_src emacs-lisp :results value raw :exports none +(format "%s" + (if (eq system-type 'darwin) + "#!/usr/local/bin/fish" + "#!/run/current-system/sw/bin/fish")) +#+end_src + +#+RESULTS: fish-shebang +#!/run/current-system/sw/bin/fish + + +#+name: python-shebang +#+begin_src emacs-lisp :results raw :exports none +(if (eq system-type 'darwin) + "#!/usr/local/bin/python3" + "#!/run/current-system/sw/bin/python3") +#+end_src + +#+name: bash-shebang +#+begin_src emacs-lisp :results raw :exports none +(if (eq system-type 'darwin) + "#!/usr/local/bin/bash" + "#!/run/current-system/sw/bin/bash") +#+end_src + +#+name: sh-shebang +#+begin_src emacs-lisp :results raw :exports none + (if (eq system-type 'darwin) + "#!/usr/local/bin/sh" + "#!/run/current-system/sw/bin/sh") +#+end_src + * Purpose This repo contains scripts that I like to have available from my $PATH #+TOC: headlines 2 + * GUI-ish - Glue scripts for sxhkd / bspwm / polybar ** Dmenu_run_top @@ -11,24 +47,17 @@ This repo contains scripts that I like to have available from my $PATH - test monospace instead of bitstream - remove flavours placeholder (once flavours is ready) - consider moving this to an alias -#+begin_src sh :tangle ~/usr/local/bin/dmenu_run_top -#!/bin/sh +#+begin_src sh :tangle /sudo::/usr/local/bin/dmenu_run_top :noweb yes :tangle-mode o755 + <> -# start flavours -norm_fg="#C0C5CE" -norm_bg="#1B2B34" -sel_fg="#1B2B34" -sel_bg="#99C794" -# end flavours - -dmenu_run \ - -i \ - -fn BitstreamVeraSansMono:size=11 \ - -l 15 \ - -nf "$norm_fg" \ - -nb "$norm_bg" \ - -sf "$sel_fg" \ - -sb "$sel_bg" + dmenu_run \ + -i \ + -fn BitstreamVeraSansMono:size=11 \ + -l 15 \ + -nf "$norm_fg" \ + -nb "$norm_bg" \ + -sf "$sel_fg" \ + -sb "$sel_bg" #+end_src ** Dmenuunicode @@ -36,8 +65,8 @@ dmenu_run \ *** TODO - make work on mac - recreate the emojis file and test -#+begin_src sh :tangle ~/usr/local/bin/dmenuunicode - #!/bin/sh +#+begin_src sh :tangle /sudo::/usr/local/bin/dmenuunicode :noweb yes :tangle-mode o755 + <> # Get user selection via dmenu from emoji file. chosen=$(cut -d ';' -f1 ~/.local/share/emoji | dmenu -i -l 30 | sed "s/ .*//") @@ -60,14 +89,14 @@ dmenu_run \ - Better handled through polybar probably *** TODO - Add support for 3+ languages -#+begin_src fish :tangle ~/usr/local/bin/languagecycle -#!/usr/bin/fish +#+begin_src fish :tangle /sudo::/usr/local/bin/languagecycle :noweb yes :tangle-mode o755 + <> -if [ (xkblayout-state print "%n") = "Russian" ] - setxkbmap -layout us - else - setxkbmap -layout ru - end + if [ (xkblayout-state print "%n") = "Russian" ] + setxkbmap -layout us + else + setxkbmap -layout ru + end #+end_src ** Layoutcycle @@ -75,93 +104,68 @@ if [ (xkblayout-state print "%n") = "Russian" ] *** TODO - Currently this adds layouts to an endless list of layouts which can cause lag - This should be fixed but I'm not sure if I even like using alternate layouts -#+begin_src fish :tangle ~/usr/local/bin/layoutcycle -#!/usr/bin/fish +#+begin_src fish :tangle /sudo::/usr/local/bin/layoutcycle :noweb yes :tangle-mode o755 + <> -bsp-layout next --layouts tall,grid,rgrid,tiled + bsp-layout next --layouts tall,grid,rgrid,tiled -set layout (bsp-layout get) - -if ps -aux | grep layoutcycle | grep -v grep - exit -else if [ $layout = "tall" ] - notify-send -t 1000 "Layout: Tall" (echo \ - " ______________ \n" \ - " | |____| \n" \ - " | |____| \n" \ - " | |____| \n" \ - " |________|____| " ) -else if [ $layout = "grid" ] - notify-send -t 1000 "Layout: hGrid" (echo \ - " ____________ \n" \ - " | | | | \n" \ - " |___|___|___| \n" \ - " | | | | \n" \ - " |___|___|___| " ) -else if [ $layout = "rgrid" ] - vgrid - notify-send -t 1000 "Layout: vGrid" (echo \ - " ____________ \n" \ - " |_____|_____| \n" \ - " |_____|_____| \n" \ - " |_____|_____| " ) -else if [ $layout = "tiled" ] - notify-send -t 1000 "Layout: Tiled" (echo \ - " ______________ \n" \ - " | | | \n" \ - " | |____| \n" \ - " | | | | \n" \ - " |________|__|_| " ) -end + set layout (bsp-layout get) + if ps -aux | grep layoutcycle | grep -v grep + exit + else if [ $layout = "tall" ] + notify-send -t 1000 "Layout: Tall" (echo \ + " ______________ \n" \ + " | |____| \n" \ + " | |____| \n" \ + " | |____| \n" \ + " |________|____| " ) + else if [ $layout = "grid" ] + notify-send -t 1000 "Layout: hGrid" (echo \ + " ____________ \n" \ + " | | | | \n" \ + " |___|___|___| \n" \ + " | | | | \n" \ + " |___|___|___| " ) + else if [ $layout = "rgrid" ] + vgrid + notify-send -t 1000 "Layout: vGrid" (echo \ + " ____________ \n" \ + " |_____|_____| \n" \ + " |_____|_____| \n" \ + " |_____|_____| " ) + else if [ $layout = "tiled" ] + notify-send -t 1000 "Layout: Tiled" (echo \ + " ______________ \n" \ + " | | | \n" \ + " | |____| \n" \ + " | | | | \n" \ + " |________|__|_| " ) + end #+end_src * Appearance ** Colors > Taken from https://stackoverflow.com/questions/69138165/how-to-get-the-rgb-values-of-a-256-color-palette-terminal-color - Returns a representation of your currently set color scheme -#+begin_src sh :tangle ~/usr/local/bin/colors -#!/bin/sh +#+begin_src sh :tangle /sudo::/usr/local/bin/colors :noweb yes :tangle-mode o755 + <> -xdef="$HOME/.Xresources" + xdef="$HOME/.Xresources" -colors=( $( sed -re '/^!/d; /^$/d; /^#/d; s/(\*color)([0-9]):/\10\2:/g;' $xdef | grep 'color[01][0-9]:' | sort | sed 's/^.*: *//g' ) -) + colors=( $( sed -re '/^!/d; /^$/d; /^#/d; s/(\*color)([0-9]):/\10\2:/g;' $xdef | grep 'color[01][0-9]:' | sort | sed 's/^.*: *//g' ) ) -echo -for i in {0..7}; do echo -en "\e[$((30+$i))m ${colors[i]} \u2588\u2588 \e[0m\n"; done -echo -for i in {8..15}; do echo -en "\e[1;$((22+$i))m ${colors[i]} \u2588\u2588 \e[0m\n"; done -echo -e "\n" -#+end_src - -** Gapcycle -- Cycle between 3 window gap sizes I find aesthetic -*** TODO -- This is broken -#+begin_src fish :tangle ~/usr/local/bin/gapcycle - #!/usr/bin/fish - - set gap (bspc config window_gap) - - if [ $gap = 40 ] - set new_gap 18 - else if [ $gap = 18 ] - set new_gap 12 - else if [ $gap = 12 ] - set new_gap 0 - else if [ $gap = 0 ] - set new_gap 40 - end - - bspc config window_gap $new_gap + echo + for i in {0..7}; do echo -en "\e[$((30+$i))m ${colors[i]} \u2588\u2588 \e[0m\n"; done + echo + for i in {8..15}; do echo -en "\e[1;$((22+$i))m ${colors[i]} \u2588\u2588 \e[0m\n"; done + echo -e "\n" #+end_src ** Themepick - Broken in nix until I find an equivalent base16 theme setter and / or setup flavours -#+begin_src fish :tangle ~/usr/local/bin/themepick - #!/usr/bin/fish - +#+begin_src fish :tangle /sudo::/usr/local/bin/themepick :noweb yes :tangle-mode o755 + <> set theme (flavours list | tr ' ' '\n' | dmenu) flavours apply $theme && @@ -171,16 +175,17 @@ echo -e "\n" ** Opaque-windows *** TODO - Handle this through lemonbar instead -#+begin_src fish :tangle ~/usr/local/bin/opaque-windows - #!/usr/bin/fish +#+begin_src fish :tangle /sudo::/usr/local/bin/opaque-windows :noweb yes :tangle-mode o755 + <> if ps -aux | grep picom | grep -v grep pkill picom end #+end_src ** Transparent-windows -#+begin_src fish :tangle ~/usr/local/bin/transparent-windows - #!/usr/bin/fish +#+begin_src fish :tangle /sudo::/usr/local/bin/transparent-windows :noweb yes :tangle-mode o755 + <> + if ps -aux | grep picom | grep -v grep pkill picom end @@ -188,7 +193,7 @@ echo -e "\n" sleep 0.2 picom \ --conf /dev/null \ - -i 0.8 \ + -i 0. \ --active-opacity 1.0 \ --focus-exclude "x = 0 && y = 0 && override_redirect = true" & #+end_src @@ -200,14 +205,15 @@ echo -e "\n" - I prefer this for passwords I might have to type manually occasionally *** TODO - This may be better as an alias -#+begin_src bash :tangle ~/usr/local/bin/generate-passphrase - #!/bin/bash +#+begin_src bash :tangle /sudo::/usr/local/bin/generate-passphrase :noweb yes :tangle-mode o755 + <> shuf -n3 /usr/share/dict/words | tr -d '\n' #+end_src + ** Passphrase - This more specifically inserts the generated passphrase into gnu pass -#+begin_src fish :tangle ~/usr/local/bin/passphrase - #!/usr/bin/fish +#+begin_src fish :tangle /sudo::/usr/local/bin/passphrase :noweb yes :tangle-mode o755 + <> generate-passphrase | pass insert -e $argv #+end_src @@ -215,9 +221,9 @@ echo -e "\n" ** Prune_local_branches *** TODO - Don't do this. Use a git alias. -#+begin_src bash :tangle ~/usr/local/bin/passphrase -#!/bin/bash -git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs -r -n 1 git branch -D +#+begin_src bash :tangle /sudo::/usr/local/bin/prune_local_branches :noweb yes :tangle-mode o755 + <> + git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs -r -n 1 git branch -D #+end_src * APIs @@ -227,8 +233,9 @@ git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs *** TODO - Remove lemobar, test with polybar - Handle API endpoint as a secret -#+begin_src python :tangle ~/usr/local/bin/sugar - #!/usr/bin/python3 +#+begin_src python :tangle /sudo::/usr/local/bin/sugar :noweb yes :tangle-mode o755 + <> + import sys import requests import json @@ -253,7 +260,6 @@ git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs sugar = res.json()[0] - delta = sugar['delta'] sgv = sugar['sgv'] direction = sugar['direction'] @@ -298,10 +304,111 @@ git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs ** Jbrowse *** TODO - Probably handle these as aliases -#+begin_src sh :tangle ~/usr/local/bin - /Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser "https://everblue.atlassian.net/browse/"$1 & +#+begin_src sh :tangle /sudo::/usr/local/bin/jbrowse :noweb yes :tangle-mode o755 +/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser "https://everblue.atlassian.net/browse/"$1 & #+end_src + ** NotifyMe -#+begin_src sh :tangle ~/usr/local/bin - osascript -e 'display notification "done!" with title "Notification"' +#+begin_src sh :tangle /sudo::/usr/local/bin/notifyme :noweb yes :tangle-mode o755 +osascript -e 'display notification "done!" with title "Notification"' #+end_src +#!/bin/sh + +#+begin_src sh :tangle /sudo::/usr/local/bin/demnu_run :noweb yes :tangle-mode o755 + <> + + dmenu_run \ + -i \ + -fn BitstreamVeraSansMono:size=11 \ + -l 15 \ + -nf "$norm_fg" \ + -nb "$norm_bg" \ + -sf "$sel_fg" \ + -sb "$sel_bg" +#+end_src + +** Dmenuunicode +- Get emojis from dmenu +*** TODO +- make work on mac +- recreate the emojis file and test +#+begin_src sh :tangle /sudo::usr/local/bin/dmenuunicode :noweb yes :tangle-mode o755 + <> + + # Get user selection via dmenu from emoji file. + chosen=$(cut -d ';' -f1 ~/.local/share/emoji | dmenu -i -l 30 | sed "s/ .*//") + + # Exit if none chosen. + [ -z "$chosen" ] && exit + + # If you run this command with an argument, it will automatically insert the + # character. Otherwise, show a message that the emoji has been copied. + if [ -n "$1" ]; then + xdotool type "$chosen" + else + printf "$chosen" | xclip -selection clipboard + notify-send "'$chosen' copied to clipboard." & + fi +#+end_src + +** Languagecycle +- Cycle between a couple languages +- Better handled through polybar probably +*** TODO +- Add support for 3+ languages +#+begin_src fish :tangle /sudo::usr/local/bin/languagecycle :noweb yes :tangle-mode o755 + <> + + if [ (xkblayout-state print "%n") = "Russian" ] + setxkbmap -layout us + else + setxkbmap -layout ru + end +#+end_src + +** Layoutcycle +- Cycle windows between different layouts +*** TODO +- Currently this adds layouts to an endless list of layouts which can cause lag +- This should be fixed but I'm not sure if I even like using alternate layouts +#+begin_src fish :tangle /sudo::usr/local/bin/layoutcycle :noweb yes :tangle-mode o755 + <> + + bsp-layout next --layouts tall,grid,rgrid,tiled + + set layout (bsp-layout get) + + if ps -aux | grep layoutcycle | grep -v grep + exit + else if [ $layout = "tall" ] + notify-send -t 1000 "Layout: Tall" (echo \ + " ______________ \n" \ + " | |____| \n" \ + " | |____| \n" \ + " | |____| \n" \ + " |________|____| " ) + else if [ $layout = "grid" ] + notify-send -t 1000 "Layout: hGrid" (echo \ + " ____________ \n" \ + " | | | | \n" \ + " |___|___|___| \n" \ + " | | | | \n" \ + " |___|___|___| " ) + else if [ $layout = "rgrid" ] + vgrid + notify-send -t 1000 "Layout: vGrid" (echo \ + " ____________ \n" \ + " |_____|_____| \n" \ + " |_____|_____| \n" \ + " |_____|_____| " ) + else if [ $layout = "tiled" ] + notify-send -t 1000 "Layout: Tiled" (echo \ + " ______________ \n" \ + " | | | \n" \ + " | |____| \n" \ + " | | | | \n" \ + " |________|__|_| " ) + end + +#+end_src +