35 lines
999 B
Bash
Executable File
35 lines
999 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# File picker dialog -> clipboard.
|
|
# path (default): copy the selected file's absolute path
|
|
# content : copy the selected file's contents
|
|
# Bound to Super+F (path) and Super+Shift+F (content) in usr/binds.lua.
|
|
|
|
set -euo pipefail
|
|
|
|
mode="${1:-path}"
|
|
|
|
# zenity exits non-zero on cancel/close -> treat as a no-op.
|
|
# Float/size/cursor-centering are handled by the +filepicker window rule.
|
|
file="$(zenity --file-selection --title="Copy file ${mode} to clipboard")" || exit 0
|
|
[ -n "$file" ] || exit 0
|
|
|
|
case "$mode" in
|
|
content)
|
|
if [ ! -r "$file" ]; then
|
|
notify-send -u critical "File picker" "Cannot read: $file"
|
|
exit 1
|
|
fi
|
|
wl-copy < "$file"
|
|
notify-send "Copied file contents" "$(basename "$file")"
|
|
;;
|
|
path | *)
|
|
# Collapse the home dir to ~
|
|
case "$file" in
|
|
"$HOME"/*) file="~${file#"$HOME"}" ;;
|
|
"$HOME") file="~" ;;
|
|
esac
|
|
printf '%s' "$file" | wl-copy
|
|
notify-send "Copied file path" "$file"
|
|
;;
|
|
esac
|