#!/bin/bash

param="$@" # -p (primary) oder -s (secondary)
user=$(whoami)
if [ -z "$param" ]; then param="-p"; fi
if [ "$param" = "-p" ]; then
    prim_file=$HOME/.local/share/clipboard/primary
    cont="$(cat $prim_file)"
    prim="${cont%%‖*}"
    cont="‖$cont‖"
    sleep 0.1
    prm="$(xsel -op; echo -n '#')"     # "$(xclip -o -selection primary)"  
    sleep 0.1
    prm="${prm::-1}"
    prm="${prm//‖/\&#x2016;}"
    [ "$prm" = "$prim" ] && prm="" || prim="$prm"
    prm="${prm//\\/\\\\}"
    [ -n "$prm" ] && prm="$prm‖" && cont="${cont//‖$prm/‖}" && cont="${cont:1:-1}" && echo -n "${prm//\\\\/\\}$cont" > $prim_file
    prim="${prim//&#x2016;/‖}"
    mem="$prim"
fi

clip="$(xsel -ob; echo -n '#')"; clip="${clip::-1}"
if [ "$param" = "-s" ]; then
    sec="$(cat $HOME/.local/share/clipboard/secondary)"
    sec="${sec%%‖*}"
    sec="${sec//&#x2016;/‖}"
    mem="$sec"
fi

sleep 0.1

echo -n "$mem" | xsel -ib

sleep 0.1

act_id=$(xdotool getactivewindow)
xterm_id=$(wmctrl -l | grep "$user@$HOSTNAME")
if [ -n "$xterm_id" ]; then
    xterm_id=${xterm_id%% *}
    xterm_id=${xterm_id:2}
    xterm_id=$((16#$xterm_id))
else
    xterm_id=0
fi
if [ $act_id = $xterm_id ]; then
    xdotool sleep 0.1 key Control+Super+v
else
    xdotool sleep 0.1 key Control+v
fi

sleep 0.1

echo -n "$clip" | xsel -ib
sleep 0.1	
[ "$param" = "-p" ] && echo -n "$prim" | xsel -ip

