Split the binaries into two files
This commit is contained in:
parent
e7952e0c89
commit
d7db2c747f
111
dotfiles/binaries-private.org
Normal file
111
dotfiles/binaries-private.org
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#+TITLE: My own specific binaries
|
||||||
|
:DRAWER:
|
||||||
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+LANGUAGE: en
|
||||||
|
#+EMAIL: dehaeze.thomas@gmail.com
|
||||||
|
#+AUTHOR: Dehaeze Thomas
|
||||||
|
|
||||||
|
#+HTML_LINK_HOME: ./index.html
|
||||||
|
#+HTML_LINK_UP: ./index.html
|
||||||
|
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||||
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||||
|
#+HTML_HEAD: <script type="text/javascript" src="./js/readtheorg.js"></script>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:bash :comments both :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:bash+ :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* =remote-desktop= - Remote Desktop Connect
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/remote-desktop
|
||||||
|
computer=$(echo -e 'RNICE\nPCMEL1\nPCNASS1\nPCMEG01' | dmenu -p 'Computer:' -l 20);
|
||||||
|
|
||||||
|
case $computer in
|
||||||
|
PCMEL1)
|
||||||
|
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\OPPEL" -p $(pass esrf/PCMEL1/OPPEL | sed -n 1p) pcmel1
|
||||||
|
;;
|
||||||
|
PCMEG01)
|
||||||
|
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcmeg01
|
||||||
|
;;
|
||||||
|
PCNASS1)
|
||||||
|
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcnass1
|
||||||
|
;;
|
||||||
|
RNICE)
|
||||||
|
echo "Not yet implemented"
|
||||||
|
;;
|
||||||
|
,*)
|
||||||
|
echo "Not existing"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =print-rnice= - Print on Rnice
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/print-rnice
|
||||||
|
nbpage=$(echo -e '1\n2\n4' | dmenu -p 'Number of pages per sheet' -l 20);
|
||||||
|
sides=$(echo -e 'one-sided\ntwo-sided-long-edge\ntwo-sided-short-edge' | dmenu -p 'Two Sided:' -l 20);
|
||||||
|
|
||||||
|
# First copy the file to Rnice
|
||||||
|
if sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" scp $1 dehaeze@rnice:~/Downloads/; then
|
||||||
|
# Then print on Rnice
|
||||||
|
sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" ssh dehaeze@rnice "lpr -o media=A4 -o sides=$sides -o number-up=$nbpage -P ctb110c1u ~/Downloads/$1";
|
||||||
|
# Finally, delete the file
|
||||||
|
else
|
||||||
|
echo "Command Failed"
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =tmp14= - Mount/Umount tmp_14_days folder
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/tmp_14_days
|
||||||
|
if [ $1 == "mount" ]; then
|
||||||
|
if sshfs -o allow_other,default_permissions -p 5022 dehaeze@firewall.esrf.fr:/tmp_14_days/ ~/mnt/ESRF; then
|
||||||
|
dunstify --replace=58249 'ESRF TMP ' 'Successfully mounted'
|
||||||
|
else
|
||||||
|
dunstify --replace=58249 --urgency=critical 'ESRF TMP ' 'Error while mounted'
|
||||||
|
fi
|
||||||
|
elif [ $1 == "umount" ]; then
|
||||||
|
if umount /home/thomas/mnt/ESRF/; then
|
||||||
|
dunstify --replace=58249 'ESRF TMP ' 'Successfully unmounted'
|
||||||
|
else
|
||||||
|
dunstify --replace=58249 --urgency=critical 'ESRF TMP ' 'Error while unmounted'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
* =nas= - Interact with the NAS
|
||||||
|
|
||||||
|
As an alternative, =sshfs= can be used:
|
||||||
|
#+begin_src bash :tangle no
|
||||||
|
sshfs -o allow_other,default_permissions nas:/Data ~/mnt/NAS
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/nas
|
||||||
|
if [ $1 == "mount" ]; then
|
||||||
|
if mount /home/thomas/mnt/NAS/; then
|
||||||
|
dunstify --replace=58249 'NAS ' 'Successfully mounted'
|
||||||
|
else
|
||||||
|
dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while mounted'
|
||||||
|
fi
|
||||||
|
elif [ $1 == "umount" ]; then
|
||||||
|
if umount /home/thomas/mnt/NAS/; then
|
||||||
|
dunstify --replace=58249 'NAS ' 'Successfully unmounted'
|
||||||
|
else
|
||||||
|
dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while unmounted'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =torrent-add= - Download Torrent
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/torrent-add
|
||||||
|
transmission-remote 82.64.103.2:9091 --auth tdehaeze:$(pass nas/transmission | sed -n 1p) -a $1 && \
|
||||||
|
dunstify 'Torrent' 'Successfully added' || \
|
||||||
|
dunstify 'Torrent' 'Error'
|
||||||
|
|
||||||
|
#+end_src
|
@ -92,24 +92,6 @@ Script taken from Luke Smith.
|
|||||||
pgrep -x dunst >/dev/null && killall dunst && setsid dunst & # Restart dunst to ensure proper location on screen
|
pgrep -x dunst >/dev/null && killall dunst && setsid dunst & # Restart dunst to ensure proper location on screen
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* TODO =getbib=
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/getbib
|
|
||||||
[ -z "$1" ] && echo "Give either a pdf file or a DOI as an argument." && exit
|
|
||||||
|
|
||||||
if [ -f "$1" ]; then
|
|
||||||
# Try to get DOI from pdfinfo or pdftotext output.
|
|
||||||
doi=$(pdfinfo "$1" | grep -io "doi:.*") ||
|
|
||||||
doi=$(pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1) ||
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
doi="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check crossref.org for the bib citation.
|
|
||||||
curl -s "http://api.crossref.org/works/$doi/transform/application/x-bibtex" -w "\\n"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =vpntoggle= - Connect to VPN using NordVPN
|
* =vpntoggle= - Connect to VPN using NordVPN
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/vpntoggle
|
#+begin_src bash :tangle ~/.local/bin/vpntoggle
|
||||||
@ -460,53 +442,39 @@ mode=bookmarks main
|
|||||||
* =i3exit= - Manage lock, suspend, reboot, ...
|
* =i3exit= - Manage lock, suspend, reboot, ...
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/i3exit
|
#+begin_src bash :tangle ~/.local/bin/i3exit
|
||||||
# with openrc use loginctl
|
option=$(echo -e "Lock\nExit\nLogout\nSuspend\nHibernate\nReboot\nShutdown" | rofi -i -dmenu)
|
||||||
case "$1" in
|
|
||||||
lock)
|
case "$option" in
|
||||||
|
"Lock")
|
||||||
~/.local/bin/lockscreen
|
~/.local/bin/lockscreen
|
||||||
;;
|
;;
|
||||||
logout)
|
"Exit")
|
||||||
loginctl terminate-session `loginctl session-status | head -n 1 | awk '{print $1}'`
|
|
||||||
;;
|
|
||||||
switch_user)
|
|
||||||
dm-tool switch-to-greeter
|
dm-tool switch-to-greeter
|
||||||
;;
|
;;
|
||||||
suspend)
|
"Logout")
|
||||||
|
loginctl terminate-session `loginctl session-status | head -n 1 | awk '{print $1}'`
|
||||||
|
;;
|
||||||
|
"Suspend")
|
||||||
systemctl suspend && ~/.local/bin/lockscreen
|
systemctl suspend && ~/.local/bin/lockscreen
|
||||||
;;
|
;;
|
||||||
hibernate)
|
"Hibernate")
|
||||||
systemctl hibernate && ~/.local/bin/lockscreen
|
systemctl hibernate && ~/.local/bin/lockscreen
|
||||||
;;
|
;;
|
||||||
reboot)
|
"Reboot")
|
||||||
systemctl reboot
|
systemctl reboot
|
||||||
;;
|
;;
|
||||||
shutdown)
|
"Shutdown")
|
||||||
systemctl poweroff
|
systemctl poweroff
|
||||||
;;
|
;;
|
||||||
,*)
|
,*)
|
||||||
echo "== ! i3exit: missing or invalid argument ! =="
|
echo "== ! i3exit: missing or invalid argument ! =="
|
||||||
echo "Try again with: lock | logout | switch_user | suspend | hibernate | reboot | shutdown"
|
|
||||||
exit 2
|
exit 2
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =readbib= - Open Bibliography File
|
* =askpass-rofi= - GUI prompt for passwords
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/readbib
|
|
||||||
cd ~/Cloud/thesis/ressources/pdfs/ && ls | rofi -dmenu -lines 20 | xargs -I {} zathura {}
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =readnotes= - Open Note File
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/readnotes
|
|
||||||
cd ~/Cloud/thesis/ressources/notes/pdfs/ && ls *.pdf | rofi -dmenu -lines 20 | xargs -I {} zathura {}
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* TODO =askpass-rofi= - askpass
|
|
||||||
- [ ] Should be a script
|
|
||||||
|
|
||||||
Take password prompt from STDIN, print password to STDOUT.
|
Take password prompt from STDIN, print password to STDOUT.
|
||||||
The sed piece just removes the colon from the provided prompt: =rofi -p= already gives us a colon
|
The sed piece just removes the colon from the provided prompt: =rofi -p= already gives us a colon
|
||||||
#+BEGIN_SRC bash :tangle ~/.local/bin/askpass-rofi
|
#+BEGIN_SRC bash :tangle ~/.local/bin/askpass-rofi
|
||||||
@ -547,30 +515,6 @@ The sed piece just removes the colon from the provided prompt: =rofi -p= already
|
|||||||
esac
|
esac
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =remote-desktop= - Remote Desktop Connect
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/remote-desktop
|
|
||||||
computer=$(echo -e 'RNICE\nPCMEL1\nPCNASS1\nPCMEG01' | dmenu -p 'Computer:' -l 20);
|
|
||||||
|
|
||||||
case $computer in
|
|
||||||
PCMEL1)
|
|
||||||
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\OPPEL" -p $(pass esrf/PCMEL1/OPPEL | sed -n 1p) pcmel1
|
|
||||||
;;
|
|
||||||
PCMEG01)
|
|
||||||
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcmeg01
|
|
||||||
;;
|
|
||||||
PCNASS1)
|
|
||||||
rdesktop -a 16 -P -z -x m -r sound:off -g "80%" -u "ESRF\DEHAEZE" -p $(pass ssl.esrf.fr/dehaeze | sed -n 1p) pcnass1
|
|
||||||
;;
|
|
||||||
RNICE)
|
|
||||||
echo "Not yet implemented"
|
|
||||||
;;
|
|
||||||
,*)
|
|
||||||
echo "Not existing"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =network-toggle= - Toggle Network
|
* =network-toggle= - Toggle Network
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/network-toggle
|
#+begin_src bash :tangle ~/.local/bin/network-toggle
|
||||||
@ -586,32 +530,7 @@ The sed piece just removes the colon from the provided prompt: =rofi -p= already
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =print-rnice= - Print on Rnice
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/print-rnice
|
|
||||||
nbpage=$(echo -e '1\n2\n4' | dmenu -p 'Number of pages per sheet' -l 20);
|
|
||||||
sides=$(echo -e 'one-sided\ntwo-sided-long-edge\ntwo-sided-short-edge' | dmenu -p 'Two Sided:' -l 20);
|
|
||||||
|
|
||||||
# First copy the file to Rnice
|
|
||||||
if sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" scp $1 dehaeze@rnice:~/Downloads/; then
|
|
||||||
# Then print on Rnice
|
|
||||||
sshpass -p "$(pass ssl.esrf.fr/dehaeze | sed -n 1p)" ssh dehaeze@rnice "lpr -o media=A4 -o sides=$sides -o number-up=$nbpage -P ctb110c1u ~/Downloads/$1";
|
|
||||||
# Finally, delete the file
|
|
||||||
else
|
|
||||||
echo "Command Failed"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* TODO =mnt_tmp_14_days= - Mount TMP14DAYS
|
|
||||||
- [ ] Put that as a script?
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/mnt_tmp_14_days
|
|
||||||
sudo -A mkdir ~/tmp_14_days;
|
|
||||||
sudo -A mount -o rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=160.103.232.103,mountvers=3,mountport=597,mountproto=tcp,local_lock=none,addr=160.103.232.103 rnice:/hz/tmp_14_days ~/tmp_14_days;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =make-gif= - Make GIF
|
* =make-gif= - Make GIF
|
||||||
http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/make-gif
|
#+begin_src bash :tangle ~/.local/bin/make-gif
|
||||||
palette="/tmp/palette.png"
|
palette="/tmp/palette.png"
|
||||||
@ -621,6 +540,7 @@ http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
|
|||||||
ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
|
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
|
ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =yt-audio= - Download-Audio from youtube
|
* =yt-audio= - Download-Audio from youtube
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/yt-audio
|
#+begin_src bash :tangle ~/.local/bin/yt-audio
|
||||||
@ -642,77 +562,6 @@ else
|
|||||||
setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
|
setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
* =pdf-shrink= Pdf Shrink
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf-shrink
|
|
||||||
shrink ()
|
|
||||||
{
|
|
||||||
gs \
|
|
||||||
-q -dNOPAUSE -dBATCH -dSAFER \
|
|
||||||
-sDEVICE=pdfwrite \
|
|
||||||
-dCompatibilityLevel=1.3 \
|
|
||||||
-dPDFSETTINGS=/screen \
|
|
||||||
-dEmbedAllFonts=true \
|
|
||||||
-dSubsetFonts=true \
|
|
||||||
-dAutoRotatePages=/None \
|
|
||||||
-dColorImageDownsampleType=/Bicubic \
|
|
||||||
-dColorImageResolution=$3 \
|
|
||||||
-dGrayImageDownsampleType=/Bicubic \
|
|
||||||
-dGrayImageResolution=$3 \
|
|
||||||
-dMonoImageDownsampleType=/Subsample \
|
|
||||||
-dMonoImageResolution=$3 \
|
|
||||||
-sOutputFile="$2" \
|
|
||||||
"$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_smaller ()
|
|
||||||
{
|
|
||||||
# If $1 and $2 are regular files, we can compare file sizes to
|
|
||||||
# see if we succeeded in shrinking. If not, we copy $1 over $2:
|
|
||||||
if [ ! -f "$1" -o ! -f "$2" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
|
|
||||||
OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
|
|
||||||
if [ "$ISIZE" -lt "$OSIZE" ]; then
|
|
||||||
echo "Input smaller than output, doing straight copy" >&2
|
|
||||||
cp "$1" "$2"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
usage ()
|
|
||||||
{
|
|
||||||
echo "Reduces PDF filesize by lossy recompressing with Ghostscript."
|
|
||||||
echo "Not guaranteed to succeed, but usually works."
|
|
||||||
echo " Usage: $1 infile [outfile] [resolution_in_dpi]"
|
|
||||||
}
|
|
||||||
|
|
||||||
IFILE="$1"
|
|
||||||
|
|
||||||
# Need an input file:
|
|
||||||
if [ -z "$IFILE" ]; then
|
|
||||||
usage "$0"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output filename defaults to "-" (stdout) unless given:
|
|
||||||
if [ ! -z "$2" ]; then
|
|
||||||
OFILE="$2"
|
|
||||||
else
|
|
||||||
OFILE="-"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output resolution defaults to 72 unless given:
|
|
||||||
if [ ! -z "$3" ]; then
|
|
||||||
res="$3"
|
|
||||||
else
|
|
||||||
res="90"
|
|
||||||
fi
|
|
||||||
|
|
||||||
shrink "$IFILE" "$OFILE" "$res" || exit $?
|
|
||||||
|
|
||||||
check_smaller "$IFILE" "$OFILE"
|
|
||||||
#+end_src
|
|
||||||
* =setbg= - Set Background
|
* =setbg= - Set Background
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/setbg
|
#+begin_src bash :tangle ~/.local/bin/setbg
|
||||||
@ -730,7 +579,7 @@ fi
|
|||||||
# Must have xclip installed to even show menu.
|
# Must have xclip installed to even show menu.
|
||||||
xclip -h 2>/dev/null || exit 1
|
xclip -h 2>/dev/null || exit 1
|
||||||
|
|
||||||
chosen=$(cut -d ';' -f1 ~/.local/data/emoji | rofi -dmenu -i -l 20 | sed "s/ .*//")
|
chosen=$(cut -d ';' -f1 ~/.local/data/emojis | rofi -dmenu -i -l 20 | sed "s/ .*//")
|
||||||
|
|
||||||
[ "$chosen" != "" ] || exit
|
[ "$chosen" != "" ] || exit
|
||||||
|
|
||||||
@ -762,29 +611,6 @@ fi
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =nas= - Interact with the NAS
|
|
||||||
|
|
||||||
As an alternative, =sshfs= can be used:
|
|
||||||
#+begin_src bash :tangle no
|
|
||||||
sshfs -o allow_other,default_permissions nas:/Data ~/mnt/NAS
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/nas
|
|
||||||
if [ $1 == "mount" ]; then
|
|
||||||
if mount /home/thomas/mnt/NAS/; then
|
|
||||||
dunstify --replace=58249 'NAS ' 'Successfully mounted'
|
|
||||||
else
|
|
||||||
dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while mounted'
|
|
||||||
fi
|
|
||||||
elif [ $1 == "umount" ]; then
|
|
||||||
if umount /home/thomas/mnt/NAS/; then
|
|
||||||
dunstify --replace=58249 'NAS ' 'Successfully unmounted'
|
|
||||||
else
|
|
||||||
dunstify --replace=58249 --urgency=critical 'NAS ' 'Error while unmounted'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =linkhandler= - Open with Default application
|
* =linkhandler= - Open with Default application
|
||||||
Inspired from =linkhandler= https://github.com/LukeSmithxyz/voidrice/
|
Inspired from =linkhandler= https://github.com/LukeSmithxyz/voidrice/
|
||||||
This is used in =newsboat= to handle links
|
This is used in =newsboat= to handle links
|
||||||
@ -871,40 +697,6 @@ Finally, lock the screen using =i3lock=.
|
|||||||
revert
|
revert
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* TODO =quit= - Lock / Exit / Suspend / ...
|
|
||||||
- [ ] Seems duplicated with [[file:binaries.org::*=i3exit= - Manage lock, suspend, reboot, ...][=i3exit= - Manage lock, suspend, reboot, ...]]
|
|
||||||
- [ ] Also change the binary name
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/quit
|
|
||||||
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
|
|
||||||
|
|
||||||
* =torrent-add= - Download Torrent
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/torrent-add
|
|
||||||
transmission-remote 82.64.103.2:9091 --auth tdehaeze:$(pass nas/transmission | sed -n 1p) -a $1 && \
|
|
||||||
dunstify 'Torrent' 'Successfully added' || \
|
|
||||||
dunstify 'Torrent' 'Error'
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =mopidy-restart= - Restart Mopidy
|
* =mopidy-restart= - Restart Mopidy
|
||||||
#+begin_src bash :tangle ~/.local/bin/mopidy-restart
|
#+begin_src bash :tangle ~/.local/bin/mopidy-restart
|
||||||
pids=( $(pgrep -f mopidy) )
|
pids=( $(pgrep -f mopidy) )
|
||||||
@ -920,3 +712,182 @@ Finally, lock the screen using =i3lock=.
|
|||||||
mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
|
mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
|
||||||
echo "Done"
|
echo "Done"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* =upload= - Upload Script
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/upload
|
||||||
|
if [ $TMUX ]; then
|
||||||
|
tmux split -v -l 1 "curl --progress-bar -F\"file=@$1\" https://0x0.st | xsel -ib;" && tmux select-pane -U
|
||||||
|
else
|
||||||
|
curl --progress-bar -F"file=@$1" https://0x0.st | xsel -ib && \
|
||||||
|
dunstify 'Upload' 'Successful' || \
|
||||||
|
dunstify --urgency=critical 'Upload' 'Failed'
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =weather= - Display Weather in terminal
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/weather
|
||||||
|
if [ -n "$*" ]; then
|
||||||
|
address="wttr.in/"
|
||||||
|
address+=$*
|
||||||
|
else
|
||||||
|
address="wttr.in/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if type sxiv > /dev/null 2>&1; then
|
||||||
|
address+=".png"
|
||||||
|
|
||||||
|
wget -qO- "$address" > /tmp/weather.png && \
|
||||||
|
sxiv -b /tmp/weather.png
|
||||||
|
elif type feh > /dev/null 2>&1; then
|
||||||
|
address+=".png"
|
||||||
|
|
||||||
|
wget -qO- "$address" | feh -
|
||||||
|
else
|
||||||
|
curl "$address"
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
* =readbib= - Open Bibliography File
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/readbib
|
||||||
|
cd ~/Cloud/pdfs/ && ls | rofi -dmenu -lines 20 | xargs -I {} zathura {}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =readnotes= - Open Note File
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/readnotes
|
||||||
|
cd ~/Cloud/thesis/ressources/notes/pdfs/ && ls *.pdf | rofi -dmenu -lines 20 | xargs -I {} zathura {}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =pdf2bib= - Extract bibtex entry from PDF file
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/pdf2bib
|
||||||
|
pdf2doi () {
|
||||||
|
pdfinfo "$1" | grep -io "doi:.*" | grep -Poi "10.\d+/[^\s]+" || \
|
||||||
|
pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1 | grep -Poi "10.\d+/[^\s]+" || \
|
||||||
|
pdftotext "$1" 2>/dev/null - | grep -Poi "10.\d+/[^\s]+"
|
||||||
|
}
|
||||||
|
|
||||||
|
doi2bib () {
|
||||||
|
# curl -LHs "Accept: application/x-bibtex" http://dx.doi.org/$1 -w "\\n"
|
||||||
|
curl -s "http://api.crossref.org/works/$1/transform/application/x-bibtex" -w "\\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If a file is specified, try to extract DOI from the file
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
doi=$(pdf2doi "$1")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if hash rofi 2>/dev/null; then
|
||||||
|
doi=$(echo "$doi" | rofi -i -dmenu -p "DOI")
|
||||||
|
else
|
||||||
|
doi=$(echo "$doi" | dmenu -i -p "DOI")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
doi2bib $doi | xsel -ib && \
|
||||||
|
dunstify 'BibTeX' 'Copied to Clipboard' || \
|
||||||
|
dunstify --urgency=critical 'BibTeX' 'Failed'
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =pdf2png= - Convert a PDF to PNG
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/pdf2png
|
||||||
|
if [[ -f $1 && $1 == *.pdf ]]; then
|
||||||
|
pdftoppm -png $1 > $(echo $1 | cut -f 1 -d '.' | sed 's/$/.png/')
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
* =pdf-shrink= - Pdf Shrink
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/pdf-shrink
|
||||||
|
shrink ()
|
||||||
|
{
|
||||||
|
gs \
|
||||||
|
-q -dNOPAUSE -dBATCH -dSAFER \
|
||||||
|
-sDEVICE=pdfwrite \
|
||||||
|
-dCompatibilityLevel=1.3 \
|
||||||
|
-dPDFSETTINGS=/screen \
|
||||||
|
-dEmbedAllFonts=true \
|
||||||
|
-dSubsetFonts=true \
|
||||||
|
-dAutoRotatePages=/None \
|
||||||
|
-dColorImageDownsampleType=/Bicubic \
|
||||||
|
-dColorImageResolution=$3 \
|
||||||
|
-dGrayImageDownsampleType=/Bicubic \
|
||||||
|
-dGrayImageResolution=$3 \
|
||||||
|
-dMonoImageDownsampleType=/Subsample \
|
||||||
|
-dMonoImageResolution=$3 \
|
||||||
|
-sOutputFile="$2" \
|
||||||
|
"$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_smaller ()
|
||||||
|
{
|
||||||
|
# If $1 and $2 are regular files, we can compare file sizes to
|
||||||
|
# see if we succeeded in shrinking. If not, we copy $1 over $2:
|
||||||
|
if [ ! -f "$1" -o ! -f "$2" ]; then
|
||||||
|
return 0;
|
||||||
|
fi
|
||||||
|
ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
|
||||||
|
OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
|
||||||
|
if [ "$ISIZE" -lt "$OSIZE" ]; then
|
||||||
|
echo "Input smaller than output, doing straight copy" >&2
|
||||||
|
cp "$1" "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
usage ()
|
||||||
|
{
|
||||||
|
echo "Reduces PDF filesize by lossy recompressing with Ghostscript."
|
||||||
|
echo "Not guaranteed to succeed, but usually works."
|
||||||
|
echo " Usage: $1 infile [outfile] [resolution_in_dpi]"
|
||||||
|
}
|
||||||
|
|
||||||
|
IFILE="$1"
|
||||||
|
|
||||||
|
# Need an input file:
|
||||||
|
if [ -z "$IFILE" ]; then
|
||||||
|
usage "$0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output filename defaults to "-" (stdout) unless given:
|
||||||
|
if [ ! -z "$2" ]; then
|
||||||
|
OFILE="$2"
|
||||||
|
else
|
||||||
|
OFILE="-"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output resolution defaults to 72 unless given:
|
||||||
|
if [ ! -z "$3" ]; then
|
||||||
|
res="$3"
|
||||||
|
else
|
||||||
|
res="90"
|
||||||
|
fi
|
||||||
|
|
||||||
|
shrink "$IFILE" "$OFILE" "$res" || exit $?
|
||||||
|
|
||||||
|
check_smaller "$IFILE" "$OFILE"
|
||||||
|
#+end_src
|
||||||
|
* =pdf-delete-annotations= - Delete Annotations from PDFs
|
||||||
|
From: https://gist.github.com/stefanschmidt/5248592
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/pdf-delete-annotations
|
||||||
|
pdftk $1 output /tmp/uncompressed.pdf uncompress
|
||||||
|
LANG=C sed -n '/^\/Annots/!p' /tmp/uncompressed.pdf > /tmp/stripped.pdf
|
||||||
|
pdftk /tmp/stripped.pdf output $1 compress
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* =pdf-delete-first-page= - Delete first page of PDF
|
||||||
|
The requirement is to have =pdftk= or =stapler= installed.
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/pdf-delete-first-page
|
||||||
|
if [[ -f $1 && $1 == *.pdf ]]; then
|
||||||
|
# Argument if a file
|
||||||
|
if type stapler > /dev/null 2>&1; then
|
||||||
|
stapler del "$1" 1 /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
|
||||||
|
elif type pdftk > /dev/null 2>&1; then
|
||||||
|
pdftk "$1" cat 2-end output /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
|
||||||
|
else
|
||||||
|
echo "Neither pdftk nor stapler are installed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user