aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rwxr-xr-xbattery-checknow6
-rwxr-xr-xclip31
-rwxr-xr-xconfig-backup16
-rwxr-xr-xcth2
-rwxr-xr-xdmenu-bookmarks2
-rwxr-xr-xdmenu-dwm-sessionmanager16
-rwxr-xr-xdmenu-filepicker13
-rwxr-xr-xdmenu-mail-aliases15
-rwxr-xr-xdmenu-screenshot18
-rwxr-xr-xdmenu-unmount17
-rwxr-xr-xdmenu-urlselect13
-rwxr-xr-xdmenu-websearch2
-rwxr-xr-xffmpeg-screenrecord2
-rwxr-xr-xmail-compose2
-rwxr-xr-xmergepdf12
-rwxr-xr-xnotify1
-rwxr-xr-xopen-file24
-rwxr-xr-xopen-stdin2
-rwxr-xr-xopen-url11
-rwxr-xr-xpopup-cal122
-rwxr-xr-xpopup-terminal2
-rwxr-xr-xsel37
-rwxr-xr-xsfeed-browser29
-rwxr-xr-xshare8
-rwxr-xr-xstatus8
-rwxr-xr-xterminal2
-rwxr-xr-xtranslate2
-rwxr-xr-xtrash19
-rwxr-xr-xvirename6
-rwxr-xr-xxedit2
-rwxr-xr-xxedit-filter2
-rwxr-xr-xxplumb10
-rwxr-xr-xxwallpaper-random-notify6
34 files changed, 229 insertions, 113 deletions
diff --git a/TODO b/TODO
index 09b756b..075c843 100644
--- a/TODO
+++ b/TODO
@@ -3,6 +3,8 @@
3* Refactor: review all scripts and adapt to common style 3* Refactor: review all scripts and adapt to common style
4 Configuration file (read only at "make" time) for default apps etc.. 4 Configuration file (read only at "make" time) for default apps etc..
5 5
6* Replace ls with find
7
6* Find a proper copy-left license 8* Find a proper copy-left license
7 9
8* add -- when dealing with files (sel, open-file, trash...) 10* add -- when dealing with files (sel, open-file, trash...)
diff --git a/battery-checknow b/battery-checknow
index bde1ae2..7d16346 100755
--- a/battery-checknow
+++ b/battery-checknow
@@ -12,10 +12,10 @@ new=$(battery-status)
12level=$(echo "$new" | sed 's/%.*//') 12level=$(echo "$new" | sed 's/%.*//')
13status=$(echo "$new" | awk '{print $2}') 13status=$(echo "$new" | awk '{print $2}')
14 14
15[ "$status" = "Discharging" ] && [ $level -le $low ] && status="Low" 15[ "$status" = "Discharging" ] && [ "$level" -le "$low" ] && status="Low"
16[ "$status" = "Discharging" ] && [ $level -le $crit ] && status="Critical" 16[ "$status" = "Discharging" ] && [ "$level" -le "$crit" ] && status="Critical"
17 17
18if [ "$status" != "$(cat $file)" ] || [ "$status" = "Critical" ]; then 18if [ "$status" != "$(cat "$file")" ] || [ "$status" = "Critical" ]; then
19 $notify "Battery" "$(battery-status)" 19 $notify "Battery" "$(battery-status)"
20fi 20fi
21 21
diff --git a/clip b/clip
index dbd3f33..9f039f8 100755
--- a/clip
+++ b/clip
@@ -13,40 +13,51 @@
13 13
14menu="dmenu -i -l 25" 14menu="dmenu -i -l 25"
15 15
16usage() {
17 echo "Usage: clip [-m MENU]"
18}
19
16while getopts "m:" opt; do 20while getopts "m:" opt; do
17 case "$opt" in 21 case "$opt" in
18 m) 22 m)
19 menu="$OPTARG" 23 menu="$OPTARG"
20 ;; 24 ;;
25 *)
26 usage
27 exit 1
28 ;;
21 esac 29 esac
22done 30done
23shift `expr $OPTIND - 1` 31shift "$((OPTIND - 1))"
24 32
25dir="/tmp/clipdir" 33dir="/tmp/clipdir"
26mkdir -p "$dir" 34mkdir -p "$dir"
27 35
28file1="$(mktemp -p $dir $(date +%s).XXXXX)" 36file1="$(mktemp -p "$dir" "$(date +%s)".XXXXX)"
29file2="$(mktemp -p $dir $(date +%s)b.XXXX)" 37file2="$(mktemp -p "$dir" "$(date +%s)"b.XXXX)"
38echo "created $file1"
39echo "created $file2"
30xsel > "$file1" 40xsel > "$file1"
31xsel -b > "$file2" 41xsel -b > "$file2"
32 42
33# Avoid duplicates 43# Avoid duplicates
34for f in $dir/*; do 44for f in "$dir"/*; do
35 [ "$f" != "$file1" ] && if diff "$f" "$file1"; then rm "$file1"; fi 45 [ "$f" != "$file1" ] && if diff "$f" "$file1"; then rm "$file1"; fi
36 [ "$f" != "$file2" ] && if diff "$f" "$file2"; then rm "$file2"; fi 46 [ "$f" != "$file2" ] && if diff "$f" "$file2"; then rm "$file2"; fi
37done 47done
38 48
39list="$(mktemp)" 49list="$(mktemp)"
40ls $dir > $list; 50ls "$dir" > "$list";
41 51
42lines="$(mktemp)" 52lines="$(mktemp)"
43for f in $dir/*; do 53for f in "$dir"/*; do
44 nlines=$(expr 1 + "$(wc -l $f | awk '{print $1}')") 54 nlines="$(wc -l "$f" | awk '{print $1}')"
45 fclean=$(echo $f | sed "s|$dir\/||") 55 fclean="$(echo "$f" | sed "s|$dir\/||")"
46 printf "$fclean ($nlines) | $(head -n 1 $f)\n" >> "$lines" 56 printf '%s (%s) | %s\n' \
57 "$fclean" "$((1+nlines))" "$(head -n 1 "$f")" >> "$lines"
47done 58done
48 59
49selected=$(sort -r $lines | $menu | awk '{print $1}') 60selected=$(sort -r "$lines" | $menu | awk '{print $1}')
50if [ -n "$selected" ]; then 61if [ -n "$selected" ]; then
51 xsel -ib < "$dir/$selected" 62 xsel -ib < "$dir/$selected"
52fi 63fi
diff --git a/config-backup b/config-backup
index 8d38791..ad82cae 100755
--- a/config-backup
+++ b/config-backup
@@ -9,19 +9,19 @@ config="colors fontconfig git imv msmtp zathura"
9src="dmenu dwm st st-lightbg" 9src="dmenu dwm st st-lightbg"
10share="gmni" 10share="gmni"
11 11
12mkdir -p $folder/config $folder/home $folder/share $folder/src 12mkdir -p "$folder"/config "$folder"/home "$folder"/share "$folder"/src
13 13
14# copy 14# copy
15 15
16for i in $dotfiles; do cp -Rf $HOME/$i $folder/home/; done 16for i in $dotfiles; do cp -Rf "$HOME"/"$i" "$folder"/home/; done
17for i in $config; do cp -Rf $HOME/.config/$i $folder/config/; done 17for i in $config; do cp -Rf "$HOME"/.config/"$i" "$folder"/config/; done
18for i in $src; do cp -Rf $HOME/.local/src/$i $folder/src/; done 18for i in $src; do cp -Rf "$HOME"/.local/src/"$i" "$folder"/src/; done
19for i in $share; do cp -Rf $HOME/.local/share/$i $folder/share/; done 19for i in $share; do cp -Rf "$HOME"/.local/share/"$i" "$folder"/share/; done
20 20
21# redact 21# redact
22 22
23rm $folder/config/git/credentials 23rm "$folder"/config/git/credentials
24 24
25sed 's/^password .*/password REDACTED/' \ 25sed 's/^password .*/password REDACTED/' \
26 < $folder/config/msmtp/config > $folder/config/msmtp/config.redacted 26 < "$folder"/config/msmtp/config > "$folder"/config/msmtp/config.redacted
27rm $folder/config/msmtp/config 27rm "$folder"/config/msmtp/config
diff --git a/cth b/cth
index 6eb5c0c..4fd109d 100755
--- a/cth
+++ b/cth
@@ -5,4 +5,4 @@
5 5
6name=$1 6name=$1
7shift 7shift
8sed -n "/^$name/,/^}/ p" $@ 8sed -n "/^$name/,/^}/ p" "$@"
diff --git a/dmenu-bookmarks b/dmenu-bookmarks
index 2566e43..4b85367 100755
--- a/dmenu-bookmarks
+++ b/dmenu-bookmarks
@@ -9,6 +9,6 @@
9dir=$HOME/box/bookmarks 9dir=$HOME/box/bookmarks
10picker="dmenu-filepicker" 10picker="dmenu-filepicker"
11 11
12echo "$($picker "$@" $dir)" | while read line; do 12$picker "$@" "$dir" | while read -r line; do
13 cat "$line" 13 cat "$line"
14done | xargs open-url 14done | xargs open-url
diff --git a/dmenu-dwm-sessionmanager b/dmenu-dwm-sessionmanager
index f423a09..dafe853 100755
--- a/dmenu-dwm-sessionmanager
+++ b/dmenu-dwm-sessionmanager
@@ -1,26 +1,36 @@
1#!/bin/sh 1#!/bin/sh
2 2
3# Prompts menu to shutdown/reboot/close dwm 3# Prompts menu to shutdown/reboot/close dwm
4# Usage: dmenu-dwm-sessionmanager [-m menu]
5# Requires: dmenu (or equivalent), dwm (optional) 4# Requires: dmenu (or equivalent), dwm (optional)
6 5
6# Usage: dmenu-dwm-sessionmanager [-m menu]
7
7menu="dmenu -i" 8menu="dmenu -i"
8prompt="Do you want to quit?" 9prompt="Do you want to quit?"
10
11usage() {
12 echo "Usage: dmenu-dwm-sessionmanager [-m MENU]"
13}
14
9while getopts "m:" opt; do 15while getopts "m:" opt; do
10 case "$opt" in 16 case "$opt" in
11 m) 17 m)
12 menu="$OPTARG" 18 menu="$OPTARG"
13 ;; 19 ;;
20 *)
21 usage
22 exit 1
23 ;;
14 esac 24 esac
15done 25done
16shift `expr $OPTIND - 1` 26shift $((OPTIND - 1))
17 27
18wmname="dwm" 28wmname="dwm"
19shutdown_cmd="sudo shutdown -h now" 29shutdown_cmd="sudo shutdown -h now"
20reboot_cmd="sudo reboot" 30reboot_cmd="sudo reboot"
21closewm_cmd="pkill $wmname" 31closewm_cmd="pkill $wmname"
22 32
23value=$(echo "Shutdown\nReboot\nQuit dwm" | $menu -p "$prompt") 33value=$(printf 'Shutdown\nReboot\nQuit dwm\n' | $menu -p "$prompt")
24 34
25if [ "$value" = "Shutdown" ]; then 35if [ "$value" = "Shutdown" ]; then
26 $shutdown_cmd 36 $shutdown_cmd
diff --git a/dmenu-filepicker b/dmenu-filepicker
index e2642b2..288cac9 100755
--- a/dmenu-filepicker
+++ b/dmenu-filepicker
@@ -2,20 +2,29 @@
2 2
3# A dmenu-based file picker (prints selected file to stdout) 3# A dmenu-based file picker (prints selected file to stdout)
4# Requires: dmenu (or similar) 4# Requires: dmenu (or similar)
5
5# Usage: dmenu-filepicker [-m menu] [path] 6# Usage: dmenu-filepicker [-m menu] [path]
6 7
7menu="dmenu -i -l 15" 8menu="dmenu -i -l 15"
8 9
10usage() {
11 echo "Usage: dmenu-filepicker [-m MENU] [PATH]"
12}
13
9while getopts "m:" opt; do 14while getopts "m:" opt; do
10 case "$opt" in 15 case "$opt" in
11 m) 16 m)
12 menu="$OPTARG" 17 menu="$OPTARG"
13 ;; 18 ;;
19 *)
20 usage
21 exit 1
22 ;;
14 esac 23 esac
15done 24done
16shift `expr $OPTIND - 1` 25shift $((OPTIND - 1))
17 26
18fullpath=$(realpath ${@:-"$(pwd)"}) 27fullpath=$(realpath "${@:-"$(pwd)"}")
19 28
20while true; do 29while true; do
21 if [ "$sel" = "." ]; then 30 if [ "$sel" = "." ]; then
diff --git a/dmenu-mail-aliases b/dmenu-mail-aliases
index 582f8e3..76999de 100755
--- a/dmenu-mail-aliases
+++ b/dmenu-mail-aliases
@@ -2,9 +2,14 @@
2 2
3# Select mail alias via dmenu 3# Select mail alias via dmenu
4# The email address must be the second word in a line of $aliasfile 4# The email address must be the second word in a line of $aliasfile
5# Usage: dmenu-mail-aliases [-m menu]
6# Requires: dmenu (or similar) 5# Requires: dmenu (or similar)
7 6
7# Usage: dmenu-mail-aliases [-m menu]
8
9usage() {
10 echo "Usage: dmenu-mail-aliases [-m MENU]"
11}
12
8menu="dmenu -l 20" 13menu="dmenu -l 20"
9aliasfile="$HOME/.mblaze/aliases" 14aliasfile="$HOME/.mblaze/aliases"
10 15
@@ -13,8 +18,12 @@ while getopts "m:" opt; do
13 m) 18 m)
14 menu="$OPTARG" 19 menu="$OPTARG"
15 ;; 20 ;;
21 *)
22 usage
23 exit 1
24 ;;
16 esac 25 esac
17done 26done
18shift `expr $OPTIND - 1` 27shift $((OPTIND - 1))
19 28
20$menu $menuopts <"$aliasfile" | awk '{print $NF}' 29$menu <"$aliasfile" | awk '{print $NF}'
diff --git a/dmenu-screenshot b/dmenu-screenshot
index 00d6c40..c899f1a 100755
--- a/dmenu-screenshot
+++ b/dmenu-screenshot
@@ -1,9 +1,14 @@
1#!/bin/sh 1#!/bin/sh
2 2
3# Screenshot utility 3# Screenshot utility
4# Usage: dmenu-screenshot [-m menu]
5# Requires: dmenu (or similar), imagemagick 4# Requires: dmenu (or similar), imagemagick
6 5
6# Usage: dmenu-screenshot [-m menu]
7
8usage() {
9 echo "Usage: dmenu-screenshot [-m MENU]"
10}
11
7menu="dmenu -i" 12menu="dmenu -i"
8prompt="Select type of screenshot:" 13prompt="Select type of screenshot:"
9 14
@@ -12,21 +17,24 @@ while getopts "m:" opt; do
12 m) 17 m)
13 menu="$OPTARG" 18 menu="$OPTARG"
14 ;; 19 ;;
20 *)
21 usage
22 exit 1
23 ;;
15 esac 24 esac
16done 25done
17shift `expr $OPTIND - 1` 26shift $((OPTIND - 1))
18 27
19folder="$HOME/pictures/screenshots" 28folder="$HOME/pictures/screenshots"
20filename="screenshot_$(date +%Y-%m-%d-%H%M%S).png" 29filename="screenshot_$(date +%Y-%m-%d-%H%M%S).png"
21filepath="${folder}/${filename}" 30filepath="${folder}/${filename}"
22 31
23t=$(echo "Full\nSelection" | $menu -p "$prompt") 32t=$(printf 'Full\nSelection\n' | $menu -p "$prompt")
24#op="" TODO: remove if not needed
25if [ "$t" = "Full" ]; then 33if [ "$t" = "Full" ]; then
26 op="-window root" 34 op="-window root"
27else 35else
28 pkill xbanish # otherwise I can't use mouse to select area 36 pkill xbanish # otherwise I can't use mouse to select area
29fi 37fi
30 38
31[ -n "$t" ] && sleep 0.1 && import $op $filepath 39[ -n "$t" ] && sleep 0.1 && import "$op" "$filepath"
32spawn xbanish # This can be removed if you don't use xbanish 40spawn xbanish # This can be removed if you don't use xbanish
diff --git a/dmenu-unmount b/dmenu-unmount
index 2771ecc..8f7a27f 100755
--- a/dmenu-unmount
+++ b/dmenu-unmount
@@ -1,14 +1,20 @@
1#!/bin/sh 1#!/bin/sh
2 2
3# Prompts selection for mounted devices and unmounts the selected one 3# Prompts selection for mounted devices and unmounts the selected one
4# Requires: udevil, dmenu (or similar), notify-send or similar (optional)
5
4# Usage: dmenu-unmount [-m menu] [-w writer] 6# Usage: dmenu-unmount [-m menu] [-w writer]
5# Example: dmenu-unmount -m slmenu -w echo 7# Example: dmenu-unmount -m slmenu -w echo
6# Requires: udevil, dmenu (or similar), notify-send or similar (optional)
7 8
8menu=dmenu 9menu=dmenu
9#writeout=notify-send 10#writeout=notify-send
10writeout="notify push" 11writeout="notify push"
11 12
13usage() {
14 echo "Usage: dmenu-unmount [-m MENU] [-w WRITER]"
15 echo "Example: dmenu-unmount -m slmenu -w echo"
16}
17
12while getopts "m:w:" opt; do 18while getopts "m:w:" opt; do
13 case "$opt" in 19 case "$opt" in
14 m) 20 m)
@@ -17,9 +23,13 @@ while getopts "m:w:" opt; do
17 w) 23 w)
18 writeout="$OPTARG" 24 writeout="$OPTARG"
19 ;; 25 ;;
26 *)
27 usage
28 exit 1
29 ;;
20 esac 30 esac
21done 31done
22shift `expr $OPTIND - 1` 32shift $((OPTIND - 1))
23 33
24listdev=$(grep "media" /proc/mounts | sed 's/\/media.*\///g' | \ 34listdev=$(grep "media" /proc/mounts | sed 's/\/media.*\///g' | \
25 awk '{print $1" ("$2")"}') 35 awk '{print $1" ("$2")"}')
@@ -31,11 +41,10 @@ else
31 if [ -n "$seldev" ]; then 41 if [ -n "$seldev" ]; then
32 udevil unmount "$seldev" 42 udevil unmount "$seldev"
33 failed=$(udevil info "$seldev" | grep mounted | awk '{print $3}') 43 failed=$(udevil info "$seldev" | grep mounted | awk '{print $3}')
34 if [ $failed -eq 1 ]; then 44 if [ "$failed" -eq 1 ]; then
35 $writeout "Unmount FAILED" "Device is still mounted!" 45 $writeout "Unmount FAILED" "Device is still mounted!"
36 else 46 else
37 $writeout "Device unmounted" 47 $writeout "Device unmounted"
38 fi 48 fi
39 fi 49 fi
40fi 50fi
41# notify-send "$(udisksctl unmount -b $seldev)"
diff --git a/dmenu-urlselect b/dmenu-urlselect
index d4e1f59..a988826 100755
--- a/dmenu-urlselect
+++ b/dmenu-urlselect
@@ -2,18 +2,27 @@
2 2
3# Finds all URLs in stdin and prompts a dmenu choice, then writes the selected 3# Finds all URLs in stdin and prompts a dmenu choice, then writes the selected
4# url to stdout. 4# url to stdout.
5# Usage: dmenu-urlselect [-m menu]
6# Requires: dmenu (or similar), urlgrep 5# Requires: dmenu (or similar), urlgrep
7 6
7# Usage: dmenu-urlselect [-m menu]
8
8menu="dmenu -i -l 20" 9menu="dmenu -i -l 20"
9 10
11usage() {
12 echo "Usage: dmenu-urlselect [-m MENU]"
13}
14
10while getopts "m:" opt; do 15while getopts "m:" opt; do
11 case "$opt" in 16 case "$opt" in
12 m) 17 m)
13 menu="$OPTARG" 18 menu="$OPTARG"
14 ;; 19 ;;
20 *)
21 usage
22 exit 1
23 ;;
15 esac 24 esac
16done 25done
17shift `expr $OPTIND - 1` 26shift $((OPTIND - 1))
18 27
19urlgrep | $menu 28urlgrep | $menu
diff --git a/dmenu-websearch b/dmenu-websearch
index d1af538..a8e6a50 100755
--- a/dmenu-websearch
+++ b/dmenu-websearch
@@ -5,4 +5,4 @@
5 5
6menu=${MENU:-dmenu} 6menu=${MENU:-dmenu}
7 7
8websearch $(echo "" | $menu -p "websearch:") 8websearch "$(echo "" | $menu -p "websearch:")"
diff --git a/ffmpeg-screenrecord b/ffmpeg-screenrecord
index cdca2dc..bef2167 100755
--- a/ffmpeg-screenrecord
+++ b/ffmpeg-screenrecord
@@ -5,4 +5,4 @@
5 5
6outfile=${1:-output.mkv} 6outfile=${1:-output.mkv}
7 7
8ffmpeg -f x11grab -i :0 -f pulse -i default $outfile 8ffmpeg -f x11grab -i :0 -f pulse -i default "$outfile"
diff --git a/mail-compose b/mail-compose
index 6e64eb8..c7002ce 100755
--- a/mail-compose
+++ b/mail-compose
@@ -3,4 +3,4 @@
3# Open a mail composer. 3# Open a mail composer.
4# Requires: mblaze, terminal 4# Requires: mblaze, terminal
5 5
6terminal mcom $@ 6terminal mcom "$@"
diff --git a/mergepdf b/mergepdf
index deb8e89..5de7e19 100755
--- a/mergepdf
+++ b/mergepdf
@@ -2,17 +2,25 @@
2 2
3# Merge multiple pdf files into one 3# Merge multiple pdf files into one
4# Requires: gs 4# Requires: gs
5
5# Usage: mergepdf [-o outname] file1.pdf file2.pdf ... 6# Usage: mergepdf [-o outname] file1.pdf file2.pdf ...
6 7
7outname=merged.pdf 8outname=merged.pdf
8 9
10usage() {
11 echo "Usage: mergepdf [-o OUTFILE] file1.pdf file2.pdf ..."
12}
13
9while getopts "o:" opt; do 14while getopts "o:" opt; do
10 case "$opt" in 15 case "$opt" in
11 o) 16 o)
12 outname="$OPTARG" 17 outname="$OPTARG"
13 ;; 18 ;;
19 *)
20 usage
21 ;;
14 esac 22 esac
15done 23done
16shift `expr $OPTIND - 1` 24shift $((OPTIND - 1))
17 25
18gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outname $@ 26gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$outname" "$@"
diff --git a/notify b/notify
index f3d996e..48b7eee 100755
--- a/notify
+++ b/notify
@@ -32,5 +32,6 @@ case "$1" in
32 ;; 32 ;;
33 *) 33 *)
34 usage 34 usage
35 exit 1
35 ;; 36 ;;
36esac 37esac
diff --git a/open-file b/open-file
index f2fd336..212ae40 100755
--- a/open-file
+++ b/open-file
@@ -2,9 +2,10 @@
2 2
3# Inspired by https://github.com/salman-abedin/launch.sh 3# Inspired by https://github.com/salman-abedin/launch.sh
4# Launches files based on their mimetypes 4# Launches files based on their mimetypes
5# Usage: open-file [-m menu] [-s launcher] [-t mimetype] [files...]
6# Requires: dmenu_path or similar (fallback), dmenu-filepicker 5# Requires: dmenu_path or similar (fallback), dmenu-filepicker
7 6
7# Usage: open-file [-m menu] [-s launcher] [-t mimetype] [files...]
8
8menu="dmenu -i -l 15" 9menu="dmenu -i -l 15"
9 10
10# Change default apps here 11# Change default apps here
@@ -17,8 +18,12 @@ sheet="libreoffice"
17html="firefox --new-window" 18html="firefox --new-window"
18xedit="xedit" 19xedit="xedit"
19 20
21usage() {
22 echo "Usage: open-file [-m MENU] [-s LAUNCHER] [-t MIMETYPE] [files...]"
23}
24
20openfile() { 25openfile() {
21 f="$@" 26 f="$*"
22 localmime="$mimetype" 27 localmime="$mimetype"
23 28
24 [ ! -f "$f" ] && echo "$f: bad argument" && exit 1 29 [ ! -f "$f" ] && echo "$f: bad argument" && exit 1
@@ -43,8 +48,9 @@ openfile() {
43 application/vnd.openxmlformats-officedocument.wordprocessingml.*) 48 application/vnd.openxmlformats-officedocument.wordprocessingml.*)
44 prog="$word" 49 prog="$word"
45 ;; 50 ;;
46 application/ms-excel | application/vnd.oasis.opendocument.spreadsheet | \ 51 application/ms-excel | \
47 text/rtf | application/vnd.openxmlformats-officedocument.spreadsheetml.*) 52 application/vnd.oasis.opendocument.spreadsheet | \
53 application/vnd.openxmlformats-officedocument.spreadsheetml.*)
48 prog="$sheet" 54 prog="$sheet"
49 ;; 55 ;;
50 text/html | text/enriched) 56 text/html | text/enriched)
@@ -78,7 +84,7 @@ openfile() {
78 esac 84 esac
79 85
80 if [ -n "$prog" ]; then 86 if [ -n "$prog" ]; then
81 $launcher $prog "$f" 87 $launcher "$prog" "$f"
82 else 88 else
83 exit 1 89 exit 1
84 fi 90 fi
@@ -95,10 +101,14 @@ while getopts "m:s:t:" opt; do
95 t) 101 t)
96 mimetype="$OPTARG" 102 mimetype="$OPTARG"
97 ;; 103 ;;
104 *)
105 usage
106 exit 1
107 ;;
98 esac 108 esac
99done 109done
100 110
101shift `expr $OPTIND - 1` 111shift $((OPTIND - 1))
102 112
103if [ -n "$1" ]; then 113if [ -n "$1" ]; then
104 while [ -n "$1" ]; do 114 while [ -n "$1" ]; do
@@ -106,7 +116,7 @@ if [ -n "$1" ]; then
106 shift 116 shift
107 done 117 done
108else 118else
109 dmenu-filepicker -m "$menu" | while read line; do 119 dmenu-filepicker -m "$menu" | while read -r line; do
110 openfile "$line" & 120 openfile "$line" &
111 done 121 done
112fi 122fi
diff --git a/open-stdin b/open-stdin
index 5c0ee1e..bad99cb 100755
--- a/open-stdin
+++ b/open-stdin
@@ -9,4 +9,4 @@ folder=${TMPDIR:-/tmp}
9 9
10tempfile=$(mktemp -p "$folder") 10tempfile=$(mktemp -p "$folder")
11 11
12cat > "$tempfile" && open-file $@ "$tempfile" 12cat > "$tempfile" && open-file "$@" "$tempfile"
diff --git a/open-url b/open-url
index 8681895..bd65a84 100755
--- a/open-url
+++ b/open-url
@@ -13,19 +13,16 @@ echo "$@" | xsel -ib
13 13
14case "$@" in 14case "$@" in
15 mailto:*) 15 mailto:*)
16 mail-compose $@ 16 mail-compose "$@"
17 ;; 17 ;;
18 *.jpg | *.jpeg | *.png) 18 *.jpg | *.jpeg | *.png)
19 spawn $imageviewer "$@" 19 spawn "$imageviewer" "$@"
20 ;; 20 ;;
21 *.gif) 21 *.gif)
22 spawn $imageviewer "$@" 22 spawn "$imageviewer" "$@"
23 ;; 23 ;;
24# https://www.youtube.com/watch\?v=*)
25# spawn $VIDEOPLAYER "$1"
26# ;;
27 *) 24 *)
28 spawn $browser "$@" 25 spawn "$browser" "$@"
29 ;; 26 ;;
30esac 27esac
31 28
diff --git a/popup-cal12 b/popup-cal12
index cbe089a..1c85b3d 100755
--- a/popup-cal12
+++ b/popup-cal12
@@ -3,4 +3,4 @@
3# Popup terminal displaying cal -3 3# Popup terminal displaying cal -3
4# Requires: st (suckless terminal) 4# Requires: st (suckless terminal)
5 5
6st -T "stfloat" -g 69x36+620+250 -e sh -c 'cal $(date +%Y); read x' 6st -T "stfloat" -g 69x36+620+250 -e sh -c "cal $(date +%Y); read x"
diff --git a/popup-terminal b/popup-terminal
index a9a20d1..5a9a931 100755
--- a/popup-terminal
+++ b/popup-terminal
@@ -2,4 +2,4 @@
2 2
3# TODO maybe I want to run e.g. tmux in this? 3# TODO maybe I want to run e.g. tmux in this?
4 4
5st -T "stfloat" -g 85x25+550+300 tmux new-session $@ 5st -T "stfloat" -g 85x25+550+300 tmux new-session "$@"
diff --git a/sel b/sel
index a2c5edc..6ecf4fe 100755
--- a/sel
+++ b/sel
@@ -1,6 +1,9 @@
1#!/bin/sh 1#!/bin/sh
2 2
3# Allow bulk operations on a list of selected files. 3# Allow bulk operations on a list of selected files.
4
5# Requires: dmenu (or similar), trash (optional), open-file (for open only)
6
4# Usage: sel [-m menu] [command] 7# Usage: sel [-m menu] [command]
5# If no command is specified, shows the list of selected files 8# If no command is specified, shows the list of selected files
6# Commands: 9# Commands:
@@ -13,8 +16,6 @@
13# open: open files using open-file 16# open: open files using open-file
14# rm: remove selected files and clear selection 17# rm: remove selected files and clear selection
15 18
16# Requires: dmenu (or similar), trash (optional), open-file (for open only)
17
18# TODO: The usage of paste(1) is a bit of a hack, and for example it does 19# TODO: The usage of paste(1) is a bit of a hack, and for example it does
19# not work if filenames contain tab characters. Fix this. 20# not work if filenames contain tab characters. Fix this.
20 21
@@ -26,14 +27,32 @@ menu="" # default uses dmenu-filepicker default
26editor=${EDITOR:-vi} 27editor=${EDITOR:-vi}
27rm="trash rm" # replace with rm -r if you don't use trash 28rm="trash rm" # replace with rm -r if you don't use trash
28 29
30usage() {
31 echo "Usage: sel [-m MENU] [COMMAND]"
32 echo "If no COMMAND is specified, shows the list of selected files"
33 echo "Possible commands:"
34 echo " add [files...]: add files to selection"
35 echo " addall: add all files in the current folder to selection"
36 echo " clear: clear selection"
37 echo " cp: copy to current dir, possbily after editing filenames"
38 echo " edit: open selection in editor"
39 echo " mv: move to current dir, possbily after editing filenames"
40 echo " open: open files using open-file"
41 echo " rm: remove selected files and clear selection"
42}
43
29while getopts "m:" opt; do 44while getopts "m:" opt; do
30 case "$opt" in 45 case "$opt" in
31 m) 46 m)
32 menu="$OPTARG" 47 menu="$OPTARG"
33 ;; 48 ;;
49 *)
50 usage
51 exit 1
52 ;;
34 esac 53 esac
35done 54done
36shift `expr $OPTIND - 1` 55shift $((OPTIND - 1))
37 56
38add() { 57add() {
39 shift 1 58 shift 1
@@ -57,12 +76,12 @@ cphere() {
57 file2=$(mktemp) 76 file2=$(mktemp)
58 sed 's/^.*\///' "$file" > "$file2" 77 sed 's/^.*\///' "$file" > "$file2"
59 $editor "$file2" 78 $editor "$file2"
60 if [ "$(wc -l $file | awk '{print $1}')" != \ 79 if [ "$(wc -l "$file" | awk '{print $1}')" != \
61 "$(wc -l $file2 | awk '{print $1}')" ]; then 80 "$(wc -l "$file2" | awk '{print $1}')" ]; then
62 echo "Error reading new file names" 81 echo "Error reading new file names"
63 return 1 82 return 1
64 else 83 else
65 paste "$file" "$file2" | while read f; do 84 paste "$file" "$file2" | while read -r f; do
66 fold=$(echo "$f" | sed 's/ .*//') 85 fold=$(echo "$f" | sed 's/ .*//')
67 fnew=$(echo "$f" | sed 's/.* //') 86 fnew=$(echo "$f" | sed 's/.* //')
68 cp -R "$fold" ./"$fnew" || return 1 87 cp -R "$fold" ./"$fnew" || return 1
@@ -71,13 +90,13 @@ cphere() {
71} 90}
72 91
73open() { 92open() {
74 while read f; do 93 while read -r f; do
75 open-file "$f" 94 open-file "$f"
76 done < "$file" 95 done < "$file"
77} 96}
78 97
79remove() { 98remove() {
80 while read f; do 99 while read -r f; do
81 $rm "$f" 100 $rm "$f"
82 done < "$file" 101 done < "$file"
83} 102}
@@ -90,7 +109,7 @@ case "$1" in
90 add "$@" 109 add "$@"
91 ;; 110 ;;
92 addall) 111 addall)
93 add * 112 add ./*
94 ;; 113 ;;
95 clear) 114 clear)
96 clear 115 clear
diff --git a/sfeed-browser b/sfeed-browser
index bccb3c5..774c808 100755
--- a/sfeed-browser
+++ b/sfeed-browser
@@ -11,20 +11,29 @@
11# them before displaying the choice of feeds. Contact me if you are interested 11# them before displaying the choice of feeds. Contact me if you are interested
12# in using it. 12# in using it.
13 13
14# Usage: sfeed-browser [-m menu]
15# Requires: sfeed, dmenu-file-picker (or similar), open-url (or similar) 14# Requires: sfeed, dmenu-file-picker (or similar), open-url (or similar)
16 15
16# Usage: sfeed-browser [-m menu]
17
17filepicker="dmenu-filepicker" # Try "nnn -p -" 18filepicker="dmenu-filepicker" # Try "nnn -p -"
18menu="dmenu -l 35 -i" 19menu="dmenu -l 35 -i"
19urlopener=open-url 20urlopener=open-url
20sfd="$HOME/box/sfeed" 21sfd="$HOME/box/sfeed"
21showlast=10 22showlast=10
22 23
24usage() {
25 echo "sfeed-browser [-m MENU]"
26}
27
23while getopts "m:" opt; do 28while getopts "m:" opt; do
24 case "$opt" in 29 case "$opt" in
25 m) 30 m)
26 menu="$OPTARG" 31 menu="$OPTARG"
27 ;; 32 ;;
33 *)
34 usage
35 exit 1
36 ;;
28 esac 37 esac
29done 38done
30 39
@@ -34,34 +43,34 @@ fixurl() {
34} 43}
35 44
36dirtofeedpaths() { 45dirtofeedpaths() {
37 while read line; do 46 while read -r line; do
38 find "$line" | while read fname; do 47 find "$line" | while read -r fname; do
39 [ -f "$fname" ] && echo "$fname" 48 [ -f "$fname" ] && echo "$fname"
40 done 49 done
41 done 50 done
42} 51}
43 52
44pathstosfeedrc() { 53pathstosfeedrc() {
45 printf "sfeedpath=\"$sfd/files\"\n\nfeeds() {\n" 54 printf 'sfeedpath="%s"\n\nfeeds() {\n' "$sfd/files"
46 while read line; do 55 while read -r line; do
47 feedname=$(echo "$line" | sed 's/.*\///') 56 feedname=$(echo "$line" | sed 's/.*\///')
48 read feedurl <"$line" 57 read -r feedurl <"$line"
49 printf "\tfeed \"$feedname\" \"$feedurl\"\n" 58 printf '\tfeed "%s" "%s"\n' "$feedname" "$feedurl"
50 done 59 done
51 printf "}\n" 60 printf "}\n"
52} 61}
53 62
54feedmenu() { 63feedmenu() {
55 while read line; do 64 while read -r line; do
56 feedname=$(echo "$line" | sed 's/.*\///') 65 feedname=$(echo "$line" | sed 's/.*\///')
57 sfeed_plain "$sfd/files/$feedname" | head -$showlast 66 sfeed_plain "$sfd/files/$feedname" | head -$showlast
58 done | $menu 67 done | $menu
59} 68}
60 69
61openfeeds() { 70openfeeds() {
62 while read line; do 71 while read -r line; do
63 url=$(echo "$line" | sed 's/.*[\t ]//' | fixurl) 72 url=$(echo "$line" | sed 's/.*[\t ]//' | fixurl)
64 [ -n "$url" ] && echo $url 73 [ -n "$url" ] && echo "$url"
65 done | xargs $urlopener 74 done | xargs $urlopener
66} 75}
67 76
diff --git a/share b/share
index ccd717b..760e049 100755
--- a/share
+++ b/share
@@ -3,11 +3,11 @@
3# One-liner to upload stuff to my webserver 3# One-liner to upload stuff to my webserver
4 4
5srv=tronto.net 5srv=tronto.net
6dir=$(cat /dev/random | tr -cd 'a-z0-9' | fold -w 8 | head -n 1) 6dir=$(tr -cd 'a-z0-9' < /dev/random | fold -w 8 | head -n 1)
7htp=https://share.tronto.net/$dir 7htp=https://share.tronto.net/$dir
8pth=/var/www/htdocs/share.tronto.net/$dir 8pth=/var/www/htdocs/share.tronto.net/$dir
9url=$srv:$pth 9url=$srv:$pth
10 10
11ssh tronto.net mkdir $pth 11ssh tronto.net mkdir "$pth"
12scp $@ $url/ 12scp "$@" "$url"/
13for i in $@; do echo "$htp/$i"; done 13for i in "$@"; do echo "$htp/$i"; done
diff --git a/status b/status
index abd9bad..c4fffa1 100755
--- a/status
+++ b/status
@@ -35,7 +35,7 @@ network="Network: $nwclean"
35 35
36noticount=$(notify show | wc -l) 36noticount=$(notify show | wc -l)
37 37
38printf "$network$sep$volume$sep$battery$sep$date$sep$time" 38printf '%s' "$network$sep$volume$sep$battery$sep$date$sep$time"
39[ "$noticount" = "1" ] && printf "$sep$(notify show)" 39[ "$noticount" = "1" ] && printf '%s' "$sep$(notify show)"
40[ "$noticount" -gt "1" ] && printf "${sep}Unread notifications: $noticount" 40[ "$noticount" -gt "1" ] && printf '%s' "${sep}Unread items: $noticount"
41printf "\n" 41printf '\n'
diff --git a/terminal b/terminal
index d751592..b98a67e 100755
--- a/terminal
+++ b/terminal
@@ -2,4 +2,4 @@
2 2
3# My default terminal 3# My default terminal
4 4
5st -e tmux new-session $@ 5st -e tmux new-session "$@"
diff --git a/translate b/translate
index 9894e83..9442844 100755
--- a/translate
+++ b/translate
@@ -7,5 +7,5 @@ from=$1
7to=$2 7to=$2
8 8
9shift 2 9shift 2
10text=$(echo $@ | sed 's/ /\%20/g') 10text=$(echo "$@" | sed 's/ /\%20/g')
11open-url "${translator}?sl=${from}&tl=${to}&text=${text}&op=translate" 11open-url "${translator}?sl=${from}&tl=${to}&text=${text}&op=translate"
diff --git a/trash b/trash
index 032d9fe..5ff5a27 100755
--- a/trash
+++ b/trash
@@ -4,25 +4,30 @@
4# current date. 4# current date.
5 5
6# Usage: trash [rm FILE(s)|ls|empty] 6# Usage: trash [rm FILE(s)|ls|empty]
7# Pretty self-explanatory
8 7
9# ksh completion 8# ksh completion
10# set -A complete_trash_1 rm ls empty 9# set -A complete_trash_1 rm ls empty
11 10
12trashfolder=$XDG_DATA_HOME/mytrash 11trashfolder=$XDG_DATA_HOME/mytrash
13 12
13usage() {
14 echo "Usage: trash [rm FILES... | ls | empty]"
15}
16
14if [ -z "$1" ]; then 17if [ -z "$1" ]; then
15 echo "usage: trash [rm FILE(s)|ls|empty]" 18 usage
16else 19 exit 1
20fi
21
17case "$1" in 22case "$1" in
18 empty) 23 empty)
19 # little check 24 # little check
20 if [ -n "$trashfolder" ]; then 25 if [ -n "$trashfolder" ]; then
21 rm -rf $trashfolder/* 26 rm -rf "${trashfolder:?}"/*
22 fi 27 fi
23 ;; 28 ;;
24 ls) 29 ls)
25 ls $trashfolder 30 ls "$trashfolder"
26 ;; 31 ;;
27 rm) 32 rm)
28 curdir=$(pwd | sed 's|.*/||') 33 curdir=$(pwd | sed 's|.*/||')
@@ -33,7 +38,7 @@ case "$1" in
33 ;; 38 ;;
34 39
35 *) 40 *)
36 echo "$1: not a valid command" 41 usage
42 exit 1
37 ;; 43 ;;
38esac 44esac
39fi
diff --git a/virename b/virename
index 137091d..8c30ccf 100755
--- a/virename
+++ b/virename
@@ -10,11 +10,11 @@ editor=${EDITOR:-vi}
10ls | tee "$file" > "$file2" 10ls | tee "$file" > "$file2"
11$editor "$file2" 11$editor "$file2"
12 12
13if [ "$(wc -l $file | awk '{print $1}')" != \ 13if [ "$(wc -l "$file" | awk '{print $1}')" != \
14 "$(wc -l $file2 | awk '{print $1}')" ]; then 14 "$(wc -l "$file2" | awk '{print $1}')" ]; then
15 echo "Error reading new file names" 15 echo "Error reading new file names"
16else 16else
17 paste "$file" "$file2" | while read f; do 17 paste "$file" "$file2" | while read -r f; do
18 fold=$(echo "$f" | sed 's/ .*//') 18 fold=$(echo "$f" | sed 's/ .*//')
19 fnew=$(echo "$f" | sed 's/.* //') 19 fnew=$(echo "$f" | sed 's/.* //')
20 if [ "$fold" != "$fnew" ]; then 20 if [ "$fold" != "$fnew" ]; then
diff --git a/xedit b/xedit
index 5d62b8e..9438aa8 100755
--- a/xedit
+++ b/xedit
@@ -5,4 +5,4 @@
5 5
6editor=${EDITOR:-${VISUAL:-vi}} 6editor=${EDITOR:-${VISUAL:-vi}}
7 7
8terminal $editor $@ 8terminal "$editor" "$@"
diff --git a/xedit-filter b/xedit-filter
index c377473..7caf12c 100755
--- a/xedit-filter
+++ b/xedit-filter
@@ -1,4 +1,4 @@
1#/!bin/sh 1#!/bin/sh
2 2
3# Open stdin in a text editor and sends modified selection to stdout 3# Open stdin in a text editor and sends modified selection to stdout
4# Requires: xedit 4# Requires: xedit
diff --git a/xplumb b/xplumb
index 8fec4ac..1d89796 100755
--- a/xplumb
+++ b/xplumb
@@ -18,7 +18,7 @@ menu=${MENU:-dmenu}
18menuopts="-l 10" 18menuopts="-l 10"
19 19
20text=$(xsel | sed 's/\n/ /g') 20text=$(xsel | sed 's/\n/ /g')
21if [ $(echo "$text" | wc -c) -ge 11 ]; then 21if [ "${#text}" -ge 11 ]; then
22 shorttext=$(echo "$text" | cut -b 1-10)... 22 shorttext=$(echo "$text" | cut -b 1-10)...
23else 23else
24 shorttext="$text" 24 shorttext="$text"
@@ -29,7 +29,7 @@ choice() {
29 $menu $menuopts -p "What to do with \"$shorttext\"?") 29 $menu $menuopts -p "What to do with \"$shorttext\"?")
30 30
31 if [ "$chosen" = "websearch" ]; then 31 if [ "$chosen" = "websearch" ]; then
32 websearch $text 32 websearch "$text"
33 elif [ "$chosen" = "edit" ]; then 33 elif [ "$chosen" = "edit" ]; then
34 f=$(mktemp) 34 f=$(mktemp)
35 xsel > "$f" 35 xsel > "$f"
@@ -39,13 +39,13 @@ choice() {
39 39
40trymail() { 40trymail() {
41 addr=$(echo "$1" | addressgrep) 41 addr=$(echo "$1" | addressgrep)
42 ( [ -n "$addr" ] && mail-compose $addr ) || return 1 42 ( [ -n "$addr" ] && mail-compose "$addr" ) || return 1
43} 43}
44 44
45tryman() { 45tryman() {
46 number=$(echo "$1" | sed 's/[^1-8]//g') 46 number=$(echo "$1" | sed 's/[^1-8]//g')
47 name=$(echo "$1" | sed 's/([1-8])//g' | sed 's/ //g') 47 name=$(echo "$1" | sed 's/([1-8])//g' | sed 's/ //g')
48 if [ $(man -w "$number" "$name" | wc -l) = 1 ]; then 48 if [ "$(man -w "$number" "$name" | wc -l)" = 1 ]; then
49 terminal -e man "$number" "$name" 49 terminal -e man "$number" "$name"
50 return 0 50 return 0
51 else 51 else
@@ -55,7 +55,7 @@ tryman() {
55 55
56tryurl() { 56tryurl() {
57 url=$(echo "$1" | urlgrep) 57 url=$(echo "$1" | urlgrep)
58 ( [ -n "$url" ] && $browser $url ) || return 1 58 ( [ -n "$url" ] && "$browser" "$url" ) || return 1
59} 59}
60 60
61#open-file -s spawn "$text" || \ 61#open-file -s spawn "$text" || \
diff --git a/xwallpaper-random-notify b/xwallpaper-random-notify
index 6ab3d56..1d9e2bf 100755
--- a/xwallpaper-random-notify
+++ b/xwallpaper-random-notify
@@ -10,8 +10,8 @@ folder=~/pictures/wallpapers
10pic=$(ls $folder | sort -R | head -1) 10pic=$(ls $folder | sort -R | head -1)
11 11
12# Alternative: use feh 12# Alternative: use feh
13#feh --bg-fill --no-fehbg $folder/$pic 13#feh --bg-fill --no-fehbg "$folder"/"$pic"
14xwallpaper --zoom $folder/$pic 14xwallpaper --zoom "$folder"/"$pic"
15 15
16# Uncomment to notify 16# Uncomment to notify
17#$notify "Background of the day" $pic 17#$notify "Background of the day" "$pic"

Generated with cgit - Back to sebastiano.tronto.net