Windows — Clipboard History

def load_history(self): if os.path.exists(HISTORY_FILE): try: with open(HISTORY_FILE, "r", encoding="utf-8") as f: data = json.load(f) self.history = data.get("history", []) self.pinned = set(tuple(x) for x in data.get("pinned", [])) except: self.history = [] self.pinned = set()

class ClipboardHistory: def (self, root): self.root = root self.root.title("Clipboard History Manager") self.root.geometry("600x400") self.root.attributes('-topmost', False) windows clipboard history

self.history = [] self.pinned = set() self.load_history() self.last_text = pyperclip.paste() self.running = True # GUI self.create_widgets() self.update_history_display() # Start background monitor self.monitor_thread = threading.Thread(target=self.monitor_clipboard, daemon=True) self.monitor_thread.start() self.root.protocol("WM_DELETE_WINDOW", self.on_close) def load_history(self): if os

def clear_history(self): if messagebox.askyesno("Clear History", "Delete all clipboard history?"): self.history = [] self.pinned.clear() self.save_history() self.update_history_display() self.status_var.set("History cleared") = 0: self.listbox.selection_clear(0

def show_context_menu(self, event): try: index = self.listbox.nearest(event.y) if index >= 0: self.listbox.selection_clear(0, tk.END) self.listbox.selection_set(index) menu = tk.Menu(self.root, tearoff=0) menu.add_command(label="Copy to clipboard", command=self.paste_selected) menu.add_command(label="Pin / Unpin", command=lambda: self.toggle_pin(index)) menu.add_command(label="Delete", command=lambda: self.delete_selected(index)) menu.post(event.x_root, event.y_root) except: pass