import sys import os import subprocess import time import pyperclip import pyautogui as pg from PyHotKey import Key, keyboard import pickle import tkinter as tk #pg.prompt(text="deez nuts?", title="deez nutz!", default="deez nars") def dumpClipboardBufferToFile(): global clipboardBuffer with open("clipboardBufferData.pk", 'wb') as fi: pickle.dump(clipboardBuffer, fi) def getClipboardBufferFromFile(): global clipboardBuffer with open("clipboardBufferData.pk", 'rb') as fi: clipboardBuffer = pickle.load(fi) #scriptFolder = (os.path.dirname(__file__)) clipboardBuffer = [] clipboardBuffer = ["No value in this clipboard buffer" for i in range(10)] #check if pickle file exists, if not, then create one if os.path.isfile("clipboardBufferData.pk"): getClipboardBufferFromFile() else: dumpClipboardBufferToFile() def inputbox(inputBuffer): inputText = "No Input Given Yet" window = tk.Tk() window.title(f'Clipboard Buffer {inputBuffer}') textbox = tk.Entry(window, width=70) textbox.pack() textbox.insert(0, clipboardBuffer[inputBuffer]) textbox.focus_set() def entry_select_all(event): event.widget.select_range(0, 'end') event.widget.icursor('end') return 'break' def entry_ctrl_backspace(event): end_idx = textbox.index(tk.INSERT) start_idx = textbox.get().rfind(" ", None, end_idx) textbox.selection_range(start_idx, end_idx) def onclick(pos): nonlocal inputText inputText = textbox.get() global clipboardBuffer clipboardBuffer[inputBuffer] = inputText print(f"Clipboard buffer {inputBuffer} was set to: {inputText}") window.destroy() b = tk.Button(window, text="OK", width=10, command=onclick) b.pack() textbox.bind('', onclick) textbox.bind('', onclick) textbox.bind('', entry_ctrl_backspace) textbox.bind('', entry_select_all) window.mainloop() print(clipboardBuffer) dumpClipboardBufferToFile() return (inputText) def sendMessage(message): subprocess.Popen(['notify-send', message]) return def typeBuffer(inputBuffer): global clipboardBuffer # pyautogui.write(clipboardBuffer[inputBuffer]) keyboard.type(clipboardBuffer[inputBuffer]) def copyToBuffer(inputBuffer): global clipboardBuffer # clip = pyperclip.paste() clip = os.popen('xsel -op').read() sendMessage(f"Copied to buffer {inputBuffer}:\n===================\n{clip}") clipboardBuffer[inputBuffer] = clip print(clipboardBuffer[inputBuffer]) dumpClipboardBufferToFile() if sys.argv[1] == "paste": typeBuffer(int(sys.argv[2])) if sys.argv[1] == "copy": copyToBuffer(int(sys.argv[2])) if sys.argv[1] == "edit": inputbox(int(sys.argv[2]))