literate-dotfiles/dotfiles/scripts.org

310 lines
9.6 KiB
Org Mode
Raw Normal View History

2019-05-16 21:13:08 +02:00
#+TITLE: Scripts
* Wallpapers
:PROPERTIES:
:header-args: :tangle ~/scripts/wallpapers.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
while true; do
nitrogen --set-zoom-fill --random ".wallpapers"
sleep 10m
done
#+end_src
* TODO [#A] LockScreen
:PROPERTIES:
:header-args: :tangle ~/scripts/lockscreen.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
- [ ] Does not work well with multiple screen
First, turn off dunst
#+begin_src bash
killall -SIGUSR1 dunst && echo "off" > /tmp/dunststatus;
#+end_src
Then take a screenshot and process it.
2019-05-16 21:13:08 +02:00
#+begin_src bash
2019-06-22 17:33:42 +02:00
temp_file="/tmp/screen.png"
scrot $temp_file
convert $temp_file -scale 10% -scale 1000% $temp_file
#+end_src
2019-06-22 17:33:42 +02:00
Finally, lock the screen using =i3lock=.
#+begin_src bash
i3lock -e -n -i $temp_file && killall -SIGUSR2 dunst && echo "on" > /tmp/dunststatus
2019-06-22 17:33:42 +02:00
#+end_src
#+begin_src bash :tangle no
2019-05-16 21:13:08 +02:00
revert() {
xset dpms 0 0 0
}
trap revert HUP INT TERM
# turn off screen after 5 seconds
xset +dpms dpms 5 5 5
# Parameters
temp_file="/tmp/screen.png"
icon="$HOME/Pictures/Evil_Rick_Sprite.png"
width=1920
height=1080
blur_factor=6
lock_blur_factor=0
# Take the screen shot, blur the image and add the icon
ffmpeg -f x11grab -video_size "${width}x${height}" -y -i $DISPLAY -i $icon -filter_complex "boxblur=$blur_factor:$blur_factor,overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2,boxblur=$lock_blur_factor:$lock_blur_factor" -vframes 1 $temp_file
# Alternative
# scrot -d 1 $temp_file
# convert -blur 0x8 $temp_file $temp_file
# convert -composite $temp_file $icon -gravity South -geometry -20x1200 $temp_file
# Lock the screen with the image
i3lock --no-unlock-indicator --ignore-empty-password --show-failed-attempts --nofork --image=$temp_file
# Remove the screenshot
rm $temp_file
# Don't turn off screen when back from lock
revert
#+end_src
* Delete first page of PDF
:PROPERTIES:
:header-args: :tangle ~/scripts/pdf-delete-first-page.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
The requirement is to have =pdftk= installed.
#+begin_src bash
if [[ -f $1 && $1 == *.pdf ]]; then
# Argument if a file
pdftk "$1" cat 2-end output /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
fi
#+end_src
* Lock / Exit / Suspend / ...
:PROPERTIES:
:header-args: :tangle ~/scripts/quit.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
option=$(echo -e "Lock\nExit\nLogout\nSuspend\nHibernate\nReboot\nShutdown" | rofi -i -dmenu)
case "$option" in
"Lock")
i3exit lock ;;
"Exit")
i3exit switch_user ;;
"Logout")
i3exit logout ;;
"Suspend")
i3exit suspend ;;
"Hibernate")
i3exit hibernate ;;
"Reboot")
i3exit reboot ;;
"Shutdown")
i3exit shutdown ;;
esac
#+end_src
#+RESULTS:
* TODO [#C] Copy Figures
:PROPERTIES:
:header-args: :tangle ~/scripts/cp-figs.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
Things to do:
- [ ] Display all the figures at once and ask for confirmation to copy them all
- [ ] Display the not found figures
#+begin_src bash :results output
latexpath="$HOME/MEGA/These/LaTeX/ressources/Figures";
figures=`awk 'match($0, /(fig.*\.(png|svg|pdf))/, a) {print a[1];}' $1 \
| awk '{ print gensub(/\s*\]\]\s*\|\s*\[\[\s*\.?\/?/, "\n", "g") }'`;
for figure in $figures
do
figurename=`echo $figure | awk 'match($0, /(fig.*\/)(.*\.(png|svg|pdf))/, a) {print a[2];}'`;
if [ -f $latexpath/$figurename ]
then
figurepath=`echo $figure | awk 'match($0, /(fig.*)\/(.*\.(png|svg|pdf))/, a) {print a[1];}'`;
# echo $latexpath/$figurename
# echo $figurepath/$figurename
cp $latexpath/$figurename $figurepath/$figurename
# read -r -p "Are You Sure? [Y/n] " input
# case $input in
# [yY][eE][sS]|[yY])
# cp $latexpath/$figurename $figurepath/$figurename
# ;;
# [nN][oO]|[nN])
# exit 1
# ;;
# *)
# echo "Invalid input..."
# exit 1
# ;;
# esac
fi
done
#+end_src
#+RESULTS:
#+begin_example
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_alt.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_2dof_alt.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_sep.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_bis.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_control_names.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_plant_weights.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_control_Mdelta.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_stability.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/classical_feedback_meas.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/input_output_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/input_uncertainty_set.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/input_uncertainty_set_feedback.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/inverse_uncertainty_set.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_control_delta.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_control_Ndelta.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/general_control_Mdelta.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/additive_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/input_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/output_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/inv_additive_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/inv_input_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/inv_output_uncertainty.pdf
/home/tdehaeze/MEGA/These/LaTeX/ressources/Figures/input_uncertainty_set_feedback_weight.pdf
#+end_example
* NAS
** Mount
:PROPERTIES:
:header-args: :tangle ~/scripts/nas.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
if [ $1 == "mount" ]; then
if sudo -A mount 192.168.1.2:/volume1/Downloads/ /mnt/NAS/; then
dunstify --replace=58249 'NAS' 'Successfully mounted'
else
dunstify --replace=58249 'NAS' 'Error while mounted'
fi
elif [ $1 == "umount" ]; then
if sudo -A umount /mnt/NAS/; then
dunstify --replace=58249 'NAS' 'Successfully unmounted'
else
dunstify --replace=58249 'NAS' 'Error while unmounted'
fi
fi
#+end_src
* Buku Git Push
:PROPERTIES:
:header-args: :tangle ~/scripts/buku_git_push.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
cd ~/.local/share/buku/
if [[ ! -z $(git status -s bookmarks.db) ]]
then
git add bookmarks.db
git commit -m "Changed bookmarks - $(date +%F)"
git push
dunstify --replace=79248 "Buku Git" "Updated"
exit
fi
#+end_src
* Icons Unicode
:PROPERTIES:
:header-args: :tangle ~/scripts/icons.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
command -v xclip >/dev/null 2>&1 || { echo >&2 "I require xclip but it's not installed. Aborting."; exit 1; }
chosen=$(grep -v "#" ~/.config/emoji | dmenu -i -l 20)
[ "$chosen" != "" ] || exit
c=$(echo "$chosen" | sed "s/ .*//")
echo "$c" | tr -d '\n' | xclip -selection clipboard
dunstify --replace=05896 "'$c' copied to clipboard." &
#+end_src
* Make GIF
:PROPERTIES:
:header-args: :tangle ~/scripts/gifenc.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
#+begin_src bash
palette="/tmp/palette.png"
filters="fps=15,scale=320:-1:flags=lanczos"
ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
#+end_src
2019-05-16 21:13:08 +02:00
* Org-Capture
:PROPERTIES:
:header-args: :tangle ~/scripts/org-capture-selection.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
xclip -o -selection primary | xclip -o -selection clipboard -i
emacsclient -ne '(org-capture "" "Q")' && dunstify "Emacs" "Text Successfully Captured"
#+end_src
2019-05-30 16:22:37 +02:00
* Download-Audio
:PROPERTIES:
:header-args: :tangle ~/scripts/download-audio.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
if [ $TMUX ]; then
tmux split -v -l 1 "cd ~/Downloads/ && youtube-dl --add-metadata -xic -f bestaudio/best $1" && tmux select-pane -U
else
cd ~/Downloads/;
setsid nohup youtube-dl --add-metadata -xic -f bestaudio/best $1 &> /dev/null &
fi
#+end_src
* Download-Video
:PROPERTIES:
:header-args: :tangle ~/scripts/download-video.sh
:header-args+: :comments both :mkdirp yes
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
#+begin_src bash
if [ $TMUX ]; then
tmux split -v -l 1 "cd ~/Downloads/ && youtube-dl --add-metadata -ic $1" && tmux select-pane -U
else
cd ~/Downloads/;
setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
fi
#+end_src