commit 3fca4f50b5fb25b8dfebd34d46a6a607b49eab0d
parent 115ff9a06870d51702918cd926199e2271bf4f92
Author: Sebastiano Tronto <sebastiano.tronto@gmail.com>
Date: Sun, 15 May 2022 13:22:04 +0200
Some fixes
Diffstat:
M | TODO | | | 2 | +- |
M | sel | | | 65 | ++++++++++++++++++++++++++++++++++------------------------------- |
M | sfeed-browser | | | 18 | +++++++++++++----- |
3 files changed, 48 insertions(+), 37 deletions(-)
diff --git a/TODO b/TODO
@@ -1,4 +1,4 @@
-* dmenu-bookmarks: add option for different directory
+* sel: fix globbing filenames with spaces; once done, remove "addall"
* mblaze-extras: maybe remove script and just use aliases?
diff --git a/sel b/sel
@@ -1,10 +1,11 @@
#!/bin/sh
# Allow bulk operations on a list of selected files.
-# Usage: sel [command]
+# Usage: sel [-m menu] [command]
# If no command is specified, shows the list of selected files
# Commands:
-# add [files|dirs|all]: add files to selection
+# add [files...]: add files to selection
+# addall: add all files in the current folder to selection
# clear: clear selection
# cp: copy to current dir, possbily after editing filenames
# edit: open selection in editor
@@ -12,44 +13,44 @@
# open: open files using open-file
# rm: remove selected files and clear selection
-# Requires: dmenu (or similar), trashrm (optional), open-file (for open only)
+# Requires: dmenu (or similar), trash (optional), open-file (for open only)
-# TODO: add possibility of specifying file.
-# TODO 2: The usage of paste(1) is a bit of a hack, and for example it does
+# TODO: The usage of paste(1) is a bit of a hack, and for example it does
# not work if filenames contain tab characters. Fix this.
-# Bug (probably not fixing this, use virename): moving moving a file to
+
+# Another TODO: add by filename does not work when globbing filenames with
+# space. E.g. sel add "a file.txt" works, but sel add *.txt does not.
+# Why does this happen?
+
+# Bug (probably not fixing this, use virename): moving a file to
# itself gives an error and rm is not run.
file="$XDG_DATA_HOME/selectedfiles"
-menu=${MENU:-dmenu}
+menu="" # default uses dmenu-filepicker default
editor=${EDITOR:-vi}
-rm=trashrm # replace with rm -r if you don't use trashrm
+rm="trash rm" # replace with rm -r if you don't use trash
-add() {
- if [ -z "$2" ]; then
- dmenu-filepicker >> "$file"
- else
- case "$2" in
- files)
- ls | while read f; do
- [ -f "$f" ] && echo "$PWD/$f" >> "$file"
- done
- ;;
- dirs)
- ls | while read f; do
- [ -d "$f" ] && echo "$PWD/$f" >> "$file"
- done
- ;;
- all)
- ls | while read f; do
- echo "$PWD/$f" >> "$file"
- done
- ;;
- *)
- echo "$2: not a valid option"
+while getopts "m:" opt; do
+ case "$opt" in
+ m)
+ menu="$OPTARG"
;;
esac
+done
+shift `expr $OPTIND - 1`
+
+add() {
+ shift 1
+ if [ -z "$1" ]; then
+ if [ -n "$menu" ]; then
+ dmenu-filepicker -m "$menu" >> "$file"
+ else
+ dmenu-filepicker >> "$file"
+ fi
+ else
+ for i in "$@"; do realpath "$i" >> "$file"; done
fi
+ sort -u -o "$file" "$file"
}
clear() {
@@ -91,7 +92,9 @@ else
case "$1" in
add)
add $@
- sort -u -o "$file" "$file"
+ ;;
+ addall)
+ add *
;;
clear)
clear
diff --git a/sfeed-browser b/sfeed-browser
@@ -11,15 +11,23 @@
# them before displaying the choice of feeds. Contact me if you are interested
# in using it.
+# Usage: sfeed-browser [-m menu]
# Requires: sfeed, dmenu-file-picker (or similar), open-url (or similar)
filepicker="dmenu-filepicker" # Try "nnn -p -"
-menu=${MENU:-dmenu}
-menuopts="-l 35 -i"
+menu="dmenu -l 35 -i"
urlopener=open-url
-sfd="box/sfeed"
+sfd="$HOME/box/sfeed"
showlast=10
+while getopts "m:" opt; do
+ case "$opt" in
+ m)
+ menu="$OPTARG"
+ ;;
+ esac
+done
+
# Might add more stuff later
fixurl() {
sed 's/old\.reddit\.com/reddit\.com/'
@@ -47,7 +55,7 @@ feedmenu() {
while read line; do
feedname=$(echo "$line" | sed 's/.*\///')
sfeed_plain "$sfd/files/$feedname" | head -$showlast
- done | $menu $menuopts
+ done | $menu
}
openfeeds() {
@@ -57,6 +65,6 @@ openfeeds() {
done | xargs $urlopener
}
-$filepicker "$sfd/urls" | dirtofeedpaths > "$sfd/last"
+$filepicker "$@" "$sfd/urls" | dirtofeedpaths > "$sfd/last"
pathstosfeedrc < "$sfd/last" > "$sfd/sfeedrc"
sfeed_update "$sfd/sfeedrc" && feedmenu < "$sfd/last" | openfeeds