#!/usr/bin/env bash # # kvmx-clipboard manage clipboard sharing between host and guests # # Copyright (C) 2018 Silvio Rhatto - rhatto at riseup.net # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published # by the Free Software Foundation, either version 3 of the License, # or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Parameters SPOOL="$TMP/.kvmx-spice-copy" BASENAME="`basename $0`" WINDOWID="`xdotool getwindowfocus`" DEST="`xprop -id $WINDOWID | grep "^WM_NAME" | cut -d '=' -f 2 | cut -d '"' -f 2`" CLASS="`xprop -id $WINDOWID | grep "^WM_CLASS"`" # Logic if [ "$BASENAME" == "kvmx-spice-copy" ]; then # Check if DEST is a spice-client or other window if ! echo $CLASS | grep -q 'spicy'; then DEST="host" fi mkdir -p "$TMP" echo "$DEST" > $SPOOL # UX if which awesome-client &> /dev/null; then echo "naughty.notify({title = \"KVMX Clipboard:\", text =\"Set orig to active window's system\", timeout = 2})" | awesome-client fi # Optional logging to ~/.xsession-errors #echo "[kvmx-copy] [`date '+%Y%m%d %H:%M:%S'`] set ORIG to $DEST" else if [ -f "$SPOOL" ]; then ORIG="`cat $SPOOL`" else ORIG="host" fi # Check if DEST is a spice-client or other window if ! echo $CLASS | grep -q 'spicy'; then DEST="host" fi if [ "$ORIG" != "host" ] && ! kvmx running $ORIG &> /dev/null; then ORIG="host" fi if [ "$DEST" != "host" ] && ! kvmx running $DEST &> /dev/null; then DEST="host" fi if [ "$ORIG" == "$DEST" ]; then exit fi #if [ "$ORIG" == "host" ] && [ "$DEST" == "host" ]; then # exit #fi # Optional logging to ~/.xsession-erros #echo "[kvmx-paste] [`date '+%Y%m%d %H:%M:%S'`] from $ORIG to $DEST" # UX #if which awesome-client &> /dev/null; then # echo "naughty.notify({title = \"KVMX Clipboard:\", text =\"Pasting from $ORIG to $DEST\", timeout = 2})" | awesome-client #fi # Dispatch kvmx-clipboard $ORIG $DEST # UX if which awesome-client &> /dev/null; then echo "naughty.notify({title = \"KVMX Clipboard:\", text =\"Done pasting from $ORIG to $DEST\", timeout = 2})" | awesome-client fi fi