Dotfiles/desktopenvs/hyprlua/scripts/filepicker-clipboard.sh

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