scripts

Various scripts for UNIX-like systems
git clone https://git.tronto.net/scripts
Download | Log | Files | Refs | README

commit 115ff9a06870d51702918cd926199e2271bf4f92
parent 5ca3ebbf7c3cef6db6b8270af4fcf0be087c29c1
Author: Sebastiano Tronto <sebastiano.tronto@gmail.com>
Date:   Sun, 15 May 2022 12:02:59 +0200

Added option to specify alternative menu. Some general cleanup.

Diffstat:
MMakefile | 1-
MTODO | 11+++--------
Mclip | 18+++++++++++++-----
Mdmenu-bookmarks | 7+++++--
Mdmenu-dwm-sessionmanager | 18+++++++++++++-----
Mdmenu-filepicker | 16++++++++++++----
Mdmenu-mail-aliases | 13+++++++++++--
Mdmenu-screenshot | 17+++++++++++++----
Mdmenu-unmount | 18++++++++++++++++--
Mdmenu-urlselect | 15++++++++++++---
Rxkboptions -> old/xkboptions | 0
Mopen-file | 15+++++++--------
12 files changed, 105 insertions(+), 44 deletions(-)

diff --git a/Makefile b/Makefile @@ -41,7 +41,6 @@ SCRIPTS = addressgrep \ websearch \ xedit \ xedit-filter \ - xkboptions \ xplumb \ xprop-active-window-id \ xwallpaper-random-notify diff --git a/TODO b/TODO @@ -1,11 +1,6 @@ -* Modify all dmenu-* scripts to optionally use another menu, like vis-menu (slmenu) - Do this by taking an optional $1 which is the name of the program to use - (optional $dir argument is removed: fix dmenu-bookmarks simply using cd) -* Big problem: slmenu does not allow multiple selections; this is a problem - for my workflow for sel and for sfeed-menu (and sometimes for open-file) -* Solution: leave dmenu default option, use slmenu for a selected few aliases in .profile - -* mblaze-extras: remove mmv, just use complete_mrefile=mail/... +* dmenu-bookmarks: add option for different directory + +* mblaze-extras: maybe remove script and just use aliases? * sfeed-browser: optionally just write link to stdout (or to xsel -i) diff --git a/clip b/clip @@ -7,12 +7,20 @@ # Bugs (wontfix): the program fails if it can't create the temporary # directory with the designated name. -# Requires: xsel, dmenu +# Usage: clip [-m menu] -# TODO: improve formatting in dmenu +# Requires: xsel, dmenu (or similar) -menu="dmenu" -menuopts="-l 25" +menu="dmenu -i -l 25" + +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` dir="/tmp/clipdir" mkdir -p "$dir" @@ -38,7 +46,7 @@ for f in $dir/*; do printf "$fclean ($nlines) | $(head -n 1 $f)\n" >> "$lines" done -selected=$(sort -r $lines | $menu $menuopts | awk '{print $1}') +selected=$(sort -r $lines | $menu | awk '{print $1}') if [ -n "$selected" ]; then xsel -ib < "$dir/$selected" fi diff --git a/dmenu-bookmarks b/dmenu-bookmarks @@ -2,10 +2,13 @@ # A bookmark browser based on dmenu -# Requires: dmenu-filepicker, open-url +# Usage: dmenu-bookmarks [picker options...] + +# Requires: dmenu-filepicker (or similar), open-url dir=$HOME/box/bookmarks +picker="dmenu-filepicker" -echo "$(dmenu-filepicker $dir)" | while read line; do +echo "$($picker "$@" $dir)" | while read line; do cat "$line" done | xargs open-url diff --git a/dmenu-dwm-sessionmanager b/dmenu-dwm-sessionmanager @@ -1,18 +1,26 @@ #!/bin/sh # Prompts menu to shutdown/reboot/close dwm +# Usage: dmenu-dwm-sessionmanager [-m menu] # Requires: dmenu (or equivalent), dwm (optional) -menu=${MENU:-dmenu} -menuopts="-i -p" -menuprompt="Do you want to quit?" -wmname="dwm" +menu="dmenu -i" +prompt="Do you want to quit?" +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` +wmname="dwm" shutdown_cmd="sudo shutdown -h now" reboot_cmd="sudo reboot" closewm_cmd="pkill $wmname" -value=$(echo "Shutdown\nReboot\nQuit dwm" | $menu $menuopts "$menuprompt") +value=$(echo "Shutdown\nReboot\nQuit dwm" | $menu -p "$prompt") if [ "$value" = "Shutdown" ]; then $shutdown_cmd diff --git a/dmenu-filepicker b/dmenu-filepicker @@ -2,10 +2,18 @@ # A dmenu-based file picker (prints selected file to stdout) # Requires: dmenu (or similar) -# Usage: dmenu-filepicker [path] +# Usage: dmenu-filepicker [-m menu] [path] -menu=dmenu -menuopts="-i -l 15" +menu="dmenu -i -l 15" + +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` fullpath=$(realpath ${@:-"$(pwd)"}) @@ -15,7 +23,7 @@ while true; do break elif [ -d "$fullpath" ] || [ -z "$fullpath" ]; then if [ -z "$fullpath" ]; then fp="/"; else fp="$fullpath"; fi - sel=$(ls -a "$fp" | sed 's|.*/||' | $menu $menuopts) + sel=$(ls -a "$fp" | sed 's|.*/||' | $menu) if [ "$sel" = ".." ]; then fullpath=$(echo "$fullpath" | sed "s|/[^/]*$||") else diff --git a/dmenu-mail-aliases b/dmenu-mail-aliases @@ -2,10 +2,19 @@ # Select mail alias via dmenu # The email address must be the second word in a line of $aliasfile +# Usage: dmenu-mail-aliases [-m menu] # Requires: dmenu (or similar) -menu=${MENU:-dmenu} -menuopts="-l 20" +menu="dmenu -l 20" aliasfile="$HOME/.mblaze/aliases" +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` + $menu $menuopts <"$aliasfile" | awk '{print $NF}' diff --git a/dmenu-screenshot b/dmenu-screenshot @@ -1,17 +1,26 @@ #!/bin/sh # Screenshot utility +# Usage: dmenu-screenshot [-m menu] # Requires: dmenu (or similar), imagemagick -menu=${MENU:-dmenu} -menuopts="-i -p" -menuprompt="Select type of screenshot:" +menu="dmenu -i" +prompt="Select type of screenshot:" + +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` folder="$HOME/Pictures/screenshots" filename="screenshot_$(date +%Y-%m-%d-%H%M%S).png" filepath="${folder}/${filename}" -t=$(echo "Full\nSelection" | $menu $menuopts "$menuprompt") +t=$(echo "Full\nSelection" | $menu -p "$prompt") #op="" TODO: remove if not needed if [ "$t" = "Full" ]; then op="-window root" diff --git a/dmenu-unmount b/dmenu-unmount @@ -1,10 +1,24 @@ #!/bin/sh # Prompts selection for mounted devices and unmounts the selected one +# Usage: dmenu-unmount [-m menu] [-w writer] +# Example: dmenu-unmount -m slmenu -w echo # Requires: udevil, dmenu (or similar), notify-send or similar (optional) -menu=${MENU:-dmenu} -writeout=herbe # Change this to whatever you want, e.g. echo or notify-send +menu=dmenu +writeout=herbe + +while getopts "m:w:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + w) + writeout="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` listdev=$(grep "media" /proc/mounts | sed 's/\/media.*\///g' | \ awk '{print $1" ("$2")"}') diff --git a/dmenu-urlselect b/dmenu-urlselect @@ -2,9 +2,18 @@ # Finds all URLs in stdin and prompts a dmenu choice, then writes the selected # url to stdout. +# Usage: dmenu-urlselect [-m menu] # Requires: dmenu (or similar), urlgrep -menu=${MENU:-dmenu} -menuopts="-l 20" +menu="dmenu -i -l 20" -urlgrep | $menu $menuopts +while getopts "m:" opt; do + case "$opt" in + m) + menu="$OPTARG" + ;; + esac +done +shift `expr $OPTIND - 1` + +urlgrep | $menu diff --git a/xkboptions b/old/xkboptions diff --git a/open-file b/open-file @@ -2,9 +2,10 @@ # Inspired by https://github.com/salman-abedin/launch.sh # Launches files based on their mimetypes +# Usage: open-file [-m menu] [-s launcher] [-t mimetype] [files...] # Requires: dmenu_path or similar (fallback), dmenu-filepicker -menu=${MENU:-dmenu} +menu="dmenu -i -l 15" # Change default apps here video="mpv" @@ -78,8 +79,11 @@ openfile() { fi } -while getopts "s:t:" opt; do +while getopts "m:s:t:" opt; do case "$opt" in + m) + menu="$OPTARG" + ;; s) launcher="$OPTARG" ;; @@ -89,11 +93,6 @@ while getopts "s:t:" opt; do esac done -# If launcher = "", assume running in terminal, so some programs change -#if [ -z "$launcher" ]; then -# xedit=${EDITOR:-vi} -#fi - shift `expr $OPTIND - 1` toopen=$@ @@ -103,7 +102,7 @@ if [ -n "$1" ]; then shift done else - dmenu-filepicker | while read line; do + dmenu-filepicker -m "$menu" | while read line; do openfile "$line" & done fi