diff --git a/dotfiles/binaries-private.org b/dotfiles/binaries-private.org
new file mode 100644
index 0000000..d61d08d
--- /dev/null
+++ b/dotfiles/binaries-private.org
@@ -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:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+
+#+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
diff --git a/dotfiles/binaries.org b/dotfiles/binaries.org
index 3a51292..72792bc 100644
--- a/dotfiles/binaries.org
+++ b/dotfiles/binaries.org
@@ -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
#+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
#+begin_src bash :tangle ~/.local/bin/vpntoggle
@@ -125,388 +107,374 @@ Script taken from Luke Smith.
* =bukurun= - Open link from Buku
#+begin_src bash :tangle ~/.local/bin/bukurun
-_rofi () {
- rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
-}
+ _rofi () {
+ rofi -dmenu -i -no-levenshtein-sort -width 1000 "$@"
+ }
-# display settings
-display_type=1
-max_str_width=80
+ # display settings
+ display_type=1
+ max_str_width=80
-# keybindings
-switch_view="Alt+Tab"
-new_bookmark="Alt+n"
-actions="Alt+a"
-edit="Alt+e"
-delete="Alt+d"
+ # keybindings
+ switch_view="Alt+Tab"
+ new_bookmark="Alt+n"
+ actions="Alt+a"
+ edit="Alt+e"
+ delete="Alt+d"
-# colors
-help_color="#334433"
+ # colors
+ help_color="#334433"
-# source global config
-if [[ -f /etc/buku_run.config ]]
-then
- source /etc/buku_run.config
-fi
-
-# source local config:
-if [[ -z $XDG_CONFIG_DIR ]]
-then
- if [[ -f $HOME/.config/buku_run/config ]]
+ # source global config
+ if [[ -f /etc/buku_run.config ]]
then
- source $HOME/.config/buku_run/config
- else
- echo "User config file \'~/.config/buku_run/config\' not found. using global config"
+ source /etc/buku_run.config
fi
-else
- if [[ -f "${XDG_CONFIG_DIR}/buku_run/config" ]]
+
+ # source local config:
+ if [[ -z $XDG_CONFIG_DIR ]]
then
- source "${XDG_CONFIG_DIR}/buku_run/config"
- else
- echo "User config file \'~/.config/buku_run/config\' not found. using global config"
- fi
-fi
-
-
-main () {
- HELP="Welcome to Buku. Use ${new_bookmark} to add a new Bookmark
-Use ${switch_view} to switch View. ${actions} for actions"
- if [[ $mode == "bookmarks" ]]; then
- content=$(parseBuku)
- menu=$(echo "${content}" | _rofi -p '> ' -filter "${filter}" -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
- elif [[ $mode == "tags" ]]; then
- menu=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
- fi
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 12 ]]; then
- optionsMenu
- elif [[ $val -eq 10 ]]; then
- addMark
- elif [[ $val -eq 14 ]]; then
- deleteMenu
- elif [[ $val -eq 13 ]]; then
- editMenu
- elif [[ $val -eq 11 ]]; then
- if [[ $mode == "bookmarks" ]]; then
- export mode="tags"
- mode=tags main
- elif [[ $mode == "tags" ]]; then
- export mode="bookmarks"
- mode=bookmarks main
- fi
- elif [[ $val -eq 0 ]]; then
- if [[ $mode == "bookmarks" ]]; then
- id=$(getId "$content" "$menu")
- for bm in ${id}; do
- buku -o "${bm}"
- done
- elif [[ $mode == "tags" ]]; then
- filter="${menu}" mode="bookmarks" main
- fi
- fi
-}
-
-optionsMenu () {
- if [[ $mode == "bookmarks" ]]; then
- askmenu=$(echo -e "< Return\n---\n1. Edit\n2. Delete" | _rofi -p '> ' -mesg "Choose Action for bookmark")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $askmenu == "< Return" ]]; then
- export mode=bookmarks
- main
- elif [[ $askmenu == "1. Edit" ]]; then
- editMenu
- elif [[ $askmenu == "2. Delete" ]]; then
- deleteMenu
- fi
- fi
- elif [[ $mode == "tags" ]]; then
- askmenu=$(echo -e "< Return\n---\n1. Replace Tag\n2. Delete Tag" | _rofi -p '> ' -mesg "Choose Action for tag \"${menu}\"")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $askmenu == "< Return" ]]; then
- export mode=tags
- main
- elif [[ $askmenu == "1. Replace Tag" ]]; then
- newtag=$(echo | _rofi -p '> ' -mesg "Enter new tag name for tag \"${menu}\"")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $newtag == "" ]]; then
- mode=tags main
- else
- buku -r "${menu}" "${newtag}"
- mode=tags main
- fi
- fi
- elif [[ $askmenu == "2. Delete Tag" ]]; then
- delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete tag?")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $delask == "1. Yes" ]]; then
- buku -r "${menu}"
- mode=tags main
- elif [[ $delask == "2. No" ]]; then
- mode=tags main
- fi
- fi
- fi
- fi
- fi
-}
-
-deleteMenu () {
- id=$(getId "$content" "$menu")
- delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete bookmark?")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $delask == "1. Yes" ]]; then
- buku -d ${id} --tacit
- mode=bookmarks main
- elif [[ $delask == "2. No" ]]; then
- optionsMenu
- fi
- fi
-}
-
-editMenu () {
- id=$(getId "$content" "$menu")
- title="$(getTitleFromId $id)"
- bookmark="$(getUrlFromId $id)"
- tags="$(getTagsFromId $id)"
- content=$(echo -e "1. title: $title\n2. url: $bookmark\n3. tags: $tags")
- editmenu=$(echo -e "< Return\n---\n${content}" | _rofi -p '> ')
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $editmenu == "< Return" ]]; then
- main
- elif [[ $editmenu == "tags: NOTAG" ]]; then
- addTags --update
- elif [[ $editmenu =~ tags:* ]]; then
- tags="${tags}" editTags
- elif [[ $editmenu =~ url:* ]]; then
- editBookmark
- elif [[ $editmenu =~ title:* ]]; then
- editTitle
- fi
- fi
-}
-
-editTags () {
- edittagsmenu=$(echo | _rofi -filter "${tags}" -p '> ' -mesg "Edit Tags and hit Enter")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- buku -u ${id} --tag "${edittagsmenu}"
- fi
- mode=bookmarks main
-}
-
-editBookmark () {
- bmarkmenu=$(echo "" | _rofi -p "> " -filter "${bookmark}" -mesg "Edit Bookmark and hit Enter")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $bmarkmenu == "http"* ]]; then
- buku -u "${id}" --url "${bmarkmenu}"
- else
- echo "" | rofi -e "Not a valid URI, Make sure URLs start with http"
- editBookmark
- fi
- fi
- mode=bookmarks main
-}
-
-editTitle () {
- titlemenu=$(echo "" | _rofi -p "> " -filter "${title}" -mesg "Edit Title and hit Enter")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- buku -u "${id}" --title "${titlemenu}"
- fi
- mode=bookmarks main
-}
-
-addMark () {
- inserturl=$(echo -e "$(xclip -o)" | _rofi -p '> ' -mesg "Use URL below or type manually")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- addTags
- fi
-}
-
-addTags () {
- inserttags=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "Add some tags. Separate tags with ', '")
- val=$?
- if [[ $val -eq 1 ]]; then
- exit
- elif [[ $val -eq 0 ]]; then
- if [[ $(echo "${inserttags}" | wc -l) -gt 1 ]]; then
- taglist=$(echo "${inserttags}" | tr '\n' ',')
- tags=()
- for tag in $taglist; do
- tags+=("$tag")
- done
- else
- tags=${inserttags}
- fi
- if [[ $1 == "--update" ]]; then
- buku -u "${id}" --tag ${tags}
- else
- buku -a ${inserturl} ${tags}
- fi
- fi
-}
-
-parseBuku () {
- echo "$(buku --nc -p | gawk -v max="$max_str_width" -v type="$display_type" '
-BEGIN {
- RS=""
- FS="\n"
-}
-{
- if ($3 == "")
- $3 = " # NOTAG"
- id = gensub(/([0-9]+)\.(.*)/, "\\1", "g", $1)
- url = substr(gensub(/\s+> (.*)/, "\\1", "g", $2),0,max)
- tags = gensub(/\s+# (.*)/, "\\1", "g", $3)
- title = substr(gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1),0,max)
-
- if (type == 1)
- print id "\t" url "\t" tags
- else
- print id "\t" title "\t" tags
- if (type == 3)
- print " \t" url "\t "
- print ""
-}
-' | column -t -s $'\t')"
-}
-
-getId () {
- id=$(echo "${2%% *}")
- if [ -z "$id" ]; then
- prev=""
- IFS=$'\n'
- for line in $1; do
- if [ "$2" = "$line" ]; then
- id=$(echo "${prev%% *}")
- break
+ if [[ -f $HOME/.config/buku_run/config ]]
+ then
+ source $HOME/.config/buku_run/config
else
- prev="$line"
+ echo "User config file \'~/.config/buku_run/config\' not found. using global config"
+ fi
+ else
+ if [[ -f "${XDG_CONFIG_DIR}/buku_run/config" ]]
+ then
+ source "${XDG_CONFIG_DIR}/buku_run/config"
+ else
+ echo "User config file \'~/.config/buku_run/config\' not found. using global config"
fi
- done
fi
- echo $id
-}
-getTitleFromId () {
- echo "$(buku --nc -p $1 | gawk '
+
+ main () {
+ HELP="Welcome to Buku. Use ${new_bookmark} to add a new Bookmark
+ Use ${switch_view} to switch View. ${actions} for actions"
+ if [[ $mode == "bookmarks" ]]; then
+ content=$(parseBuku)
+ menu=$(echo "${content}" | _rofi -p '> ' -filter "${filter}" -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
+ elif [[ $mode == "tags" ]]; then
+ menu=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "${HELP}" -kb-custom-1 "${new_bookmark}" -kb-custom-2 "${switch_view}" -kb-custom-3 "${actions}" -kb-custom-4 "${edit}" -kb-custom-5 "${delete}")
+ fi
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 12 ]]; then
+ optionsMenu
+ elif [[ $val -eq 10 ]]; then
+ addMark
+ elif [[ $val -eq 14 ]]; then
+ deleteMenu
+ elif [[ $val -eq 13 ]]; then
+ editMenu
+ elif [[ $val -eq 11 ]]; then
+ if [[ $mode == "bookmarks" ]]; then
+ export mode="tags"
+ mode=tags main
+ elif [[ $mode == "tags" ]]; then
+ export mode="bookmarks"
+ mode=bookmarks main
+ fi
+ elif [[ $val -eq 0 ]]; then
+ if [[ $mode == "bookmarks" ]]; then
+ id=$(getId "$content" "$menu")
+ for bm in ${id}; do
+ buku -o "${bm}"
+ done
+ elif [[ $mode == "tags" ]]; then
+ filter="${menu}" mode="bookmarks" main
+ fi
+ fi
+ }
+
+ optionsMenu () {
+ if [[ $mode == "bookmarks" ]]; then
+ askmenu=$(echo -e "< Return\n---\n1. Edit\n2. Delete" | _rofi -p '> ' -mesg "Choose Action for bookmark")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $askmenu == "< Return" ]]; then
+ export mode=bookmarks
+ main
+ elif [[ $askmenu == "1. Edit" ]]; then
+ editMenu
+ elif [[ $askmenu == "2. Delete" ]]; then
+ deleteMenu
+ fi
+ fi
+ elif [[ $mode == "tags" ]]; then
+ askmenu=$(echo -e "< Return\n---\n1. Replace Tag\n2. Delete Tag" | _rofi -p '> ' -mesg "Choose Action for tag \"${menu}\"")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $askmenu == "< Return" ]]; then
+ export mode=tags
+ main
+ elif [[ $askmenu == "1. Replace Tag" ]]; then
+ newtag=$(echo | _rofi -p '> ' -mesg "Enter new tag name for tag \"${menu}\"")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $newtag == "" ]]; then
+ mode=tags main
+ else
+ buku -r "${menu}" "${newtag}"
+ mode=tags main
+ fi
+ fi
+ elif [[ $askmenu == "2. Delete Tag" ]]; then
+ delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete tag?")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $delask == "1. Yes" ]]; then
+ buku -r "${menu}"
+ mode=tags main
+ elif [[ $delask == "2. No" ]]; then
+ mode=tags main
+ fi
+ fi
+ fi
+ fi
+ fi
+ }
+
+ deleteMenu () {
+ id=$(getId "$content" "$menu")
+ delask=$(echo -e "1. Yes\n2. No" | _rofi -p '> ' -mesg "Really delete bookmark?")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $delask == "1. Yes" ]]; then
+ buku -d ${id} --tacit
+ mode=bookmarks main
+ elif [[ $delask == "2. No" ]]; then
+ optionsMenu
+ fi
+ fi
+ }
+
+ editMenu () {
+ id=$(getId "$content" "$menu")
+ title="$(getTitleFromId $id)"
+ bookmark="$(getUrlFromId $id)"
+ tags="$(getTagsFromId $id)"
+ content=$(echo -e "1. title: $title\n2. url: $bookmark\n3. tags: $tags")
+ editmenu=$(echo -e "< Return\n---\n${content}" | _rofi -p '> ')
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $editmenu == "< Return" ]]; then
+ main
+ elif [[ $editmenu == "tags: NOTAG" ]]; then
+ addTags --update
+ elif [[ $editmenu =~ tags:* ]]; then
+ tags="${tags}" editTags
+ elif [[ $editmenu =~ url:* ]]; then
+ editBookmark
+ elif [[ $editmenu =~ title:* ]]; then
+ editTitle
+ fi
+ fi
+ }
+
+ editTags () {
+ edittagsmenu=$(echo | _rofi -filter "${tags}" -p '> ' -mesg "Edit Tags and hit Enter")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ buku -u ${id} --tag "${edittagsmenu}"
+ fi
+ mode=bookmarks main
+ }
+
+ editBookmark () {
+ bmarkmenu=$(echo "" | _rofi -p "> " -filter "${bookmark}" -mesg "Edit Bookmark and hit Enter")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $bmarkmenu == "http"* ]]; then
+ buku -u "${id}" --url "${bmarkmenu}"
+ else
+ echo "" | rofi -e "Not a valid URI, Make sure URLs start with http"
+ editBookmark
+ fi
+ fi
+ mode=bookmarks main
+ }
+
+ editTitle () {
+ titlemenu=$(echo "" | _rofi -p "> " -filter "${title}" -mesg "Edit Title and hit Enter")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ buku -u "${id}" --title "${titlemenu}"
+ fi
+ mode=bookmarks main
+ }
+
+ addMark () {
+ inserturl=$(echo -e "$(xclip -o)" | _rofi -p '> ' -mesg "Use URL below or type manually")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ addTags
+ fi
+ }
+
+ addTags () {
+ inserttags=$(buku --np --st | awk '{$NF=""; print $0}' | cut -d ' ' -f2- | _rofi -p '> ' -mesg "Add some tags. Separate tags with ', '")
+ val=$?
+ if [[ $val -eq 1 ]]; then
+ exit
+ elif [[ $val -eq 0 ]]; then
+ if [[ $(echo "${inserttags}" | wc -l) -gt 1 ]]; then
+ taglist=$(echo "${inserttags}" | tr '\n' ',')
+ tags=()
+ for tag in $taglist; do
+ tags+=("$tag")
+ done
+ else
+ tags=${inserttags}
+ fi
+ if [[ $1 == "--update" ]]; then
+ buku -u "${id}" --tag ${tags}
+ else
+ buku -a ${inserturl} ${tags}
+ fi
+ fi
+ }
+
+ parseBuku () {
+ echo "$(buku --nc -p | gawk -v max="$max_str_width" -v type="$display_type" '
BEGIN {
RS=""
FS="\n"
}
{
- print gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1)
- }
- ')"
-}
+ if ($3 == "")
+ $3 = " # NOTAG"
+ id = gensub(/([0-9]+)\.(.*)/, "\\1", "g", $1)
+ url = substr(gensub(/\s+> (.*)/, "\\1", "g", $2),0,max)
+ tags = gensub(/\s+# (.*)/, "\\1", "g", $3)
+ title = substr(gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1),0,max)
-getUrlFromId () {
- echo "$(buku --nc -p $1 | gawk '
- BEGIN {
- RS=""
- FS="\n"
+ if (type == 1)
+ print id "\t" url "\t" tags
+ else
+ print id "\t" title "\t" tags
+ if (type == 3)
+ print " \t" url "\t "
+ print ""
}
- {
- print gensub(/\s+> (.*)/, "\\1", "g", $2)
+ ' | column -t -s $'\t')"
}
- ')"
-}
-getTagsFromId () {
- echo "$(buku --nc -p $1 | gawk '
- BEGIN {
- RS=""
- FS="\n"
+ getId () {
+ id=$(echo "${2%% *}")
+ if [ -z "$id" ]; then
+ prev=""
+ IFS=$'\n'
+ for line in $1; do
+ if [ "$2" = "$line" ]; then
+ id=$(echo "${prev%% *}")
+ break
+ else
+ prev="$line"
+ fi
+ done
+ fi
+ echo $id
}
- {
- print gensub(/\s+# (.*)/, "\\1", "g", $3)
- }
- ')"
-}
-mode=bookmarks main
+ getTitleFromId () {
+ echo "$(buku --nc -p $1 | gawk '
+ BEGIN {
+ RS=""
+ FS="\n"
+ }
+ {
+ print gensub(/[0-9]+\.\s*(.*)/, "\\1", "g", $1)
+ }
+ ')"
+ }
+
+ getUrlFromId () {
+ echo "$(buku --nc -p $1 | gawk '
+ BEGIN {
+ RS=""
+ FS="\n"
+ }
+ {
+ print gensub(/\s+> (.*)/, "\\1", "g", $2)
+ }
+ ')"
+ }
+
+ getTagsFromId () {
+ echo "$(buku --nc -p $1 | gawk '
+ BEGIN {
+ RS=""
+ FS="\n"
+ }
+ {
+ print gensub(/\s+# (.*)/, "\\1", "g", $3)
+ }
+ ')"
+ }
+
+ mode=bookmarks main
#+end_src
* =i3exit= - Manage lock, suspend, reboot, ...
#+begin_src bash :tangle ~/.local/bin/i3exit
- # with openrc use loginctl
- case "$1" in
- lock)
+ option=$(echo -e "Lock\nExit\nLogout\nSuspend\nHibernate\nReboot\nShutdown" | rofi -i -dmenu)
+
+ case "$option" in
+ "Lock")
~/.local/bin/lockscreen
;;
- logout)
- loginctl terminate-session `loginctl session-status | head -n 1 | awk '{print $1}'`
- ;;
- switch_user)
+ "Exit")
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
;;
- hibernate)
+ "Hibernate")
systemctl hibernate && ~/.local/bin/lockscreen
;;
- reboot)
+ "Reboot")
systemctl reboot
;;
- shutdown)
+ "Shutdown")
systemctl poweroff
;;
,*)
echo "== ! i3exit: missing or invalid argument ! =="
- echo "Try again with: lock | logout | switch_user | suspend | hibernate | reboot | shutdown"
exit 2
esac
exit 0
#+end_src
-* =readbib= - Open Bibliography File
-
-#+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
-
+* =askpass-rofi= - GUI prompt for passwords
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
#+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
#+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
#+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
#+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
-http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
#+begin_src bash :tangle ~/.local/bin/make-gif
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 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2
#+end_src
+
* =yt-audio= - Download-Audio from youtube
#+begin_src bash :tangle ~/.local/bin/yt-audio
@@ -642,77 +562,6 @@ else
setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
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
* =setbg= - Set Background
#+begin_src bash :tangle ~/.local/bin/setbg
@@ -730,7 +579,7 @@ fi
# Must have xclip installed to even show menu.
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
@@ -762,29 +611,6 @@ 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
-
* =linkhandler= - Open with Default application
Inspired from =linkhandler= https://github.com/LukeSmithxyz/voidrice/
This is used in =newsboat= to handle links
@@ -871,40 +697,6 @@ Finally, lock the screen using =i3lock=.
revert
#+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
#+begin_src bash :tangle ~/.local/bin/mopidy-restart
pids=( $(pgrep -f mopidy) )
@@ -920,3 +712,182 @@ Finally, lock the screen using =i3lock=.
mopidy --config ~/.config/mopidy/mopidy.conf >/dev/null 2>&1 &
echo "Done"
#+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
+