diff options
Diffstat (limited to 'files/.config/nnn/plugins/kdeconnect')
| -rwxr-xr-x | files/.config/nnn/plugins/kdeconnect | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/kdeconnect b/files/.config/nnn/plugins/kdeconnect new file mode 100755 index 0000000..dea3c2d --- /dev/null +++ b/files/.config/nnn/plugins/kdeconnect @@ -0,0 +1,66 @@ +#!/usr/bin/env sh + +# Description: Send files or folders to your Android device using kdeconnect-cli. +# kdeconnect must be configured on the Android device and the PC. +# +# Usage: +# - Hover over a file or a folder and call the plugin. +# - Alternatively, select the files and folders you would like to send, and activate the plugin. +# +# Shell: POSIX compliant +# Author: juacq97, raffaem, N-R-K + +# If you want system notification, put this equal to 1 +notify=0 + +note() { + if [ $notify = 1 ]; then + notify-send -a "Kdeconnect" "$1" + else + echo "[Kdeconnect] $1" + fi +} + +# kdeconnect doesn't cope with non-files +filter_files() { + xargs -0 -I{} sh -c ' + if [ -f "{}" ]; then + printf "%s\0" "{}"; + else + printf "Error: not a regular file: %s\n" "{}" >&2; + fi;' +} + +send() { + filter_files | xargs -0 -I{} kdeconnect-cli --name "$devname" --share {} + note "Files sent" +} + +# Select paired device +names=$(kdeconnect-cli --list-available --name-only 2>/dev/null) +if [ -z "$names" ]; then + note "No devices paired and available" + exit +fi + +ndevs=$(printf "%s" "$names" | awk 'END{print NR}') +if [ "$ndevs" -eq 1 ]; then + devname="$names" +else + printf "%s" "$names" | awk '{ print NR ". " $0 }' + printf "Pick a device: " + read -r pick + if [ -n "$pick" ] && [ "$pick" -eq "$pick" ]; then + devname=$(printf '%s' "$names" | awk "NR==$pick") + fi +fi + +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} +if [ -s "$selection" ]; then + send < "$selection" + [ -p "$NNN_PIPE" ] && printf "-" > "$NNN_PIPE" # clear selection +elif [ -n "$1" ]; then + printf "%s" "$1" | send +else + note "No selection and no hovered file" +fi |
