Security-first clipboard history for text and images. This extension reads and writes the clipboard to keep a history of copied items. Text is memory-only; images use a session-only 0600 disk cache wiped on logout. Honors password-manager secret hints, masks sensitive entries, with search, regex/app exclusion rules, auto-expire and a keyboard shortcut.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
Changes in this version: - All clipboard access now goes through Meta.Selection: reads use Meta.Selection.transfer_async() into a Gio.MemoryOutputStream, writes use Meta.SelectionSourceMemory with set_owner(). St.Clipboard is no longer used. On GNOME 50, St.Clipboard.get_content() drops one GBytes reference too many for in-shell sources (GNOME screenshots, our own paste-back), which crashed the shell with a double free. - Fixed: copies flagged with x-kde-passwordManagerHint were not skipped, because the hint was matched case-sensitively. Matching is now case-insensitive. - Text and image reads are capped at the configured maximum size before they are read into memory. - Image cache file IO is fully asynchronous. - The menu open-state-changed signal is disconnected in destroy(). Notes for review: - Clipboard access: this is a clipboard history manager, as stated in the description. It reads the clipboard when the Meta.Selection owner-changed signal fires, and writes it back when the user picks an entry. Copies flagged with x-kde-passwordManagerHint (password managers) are skipped before any content is read. - unlock-dialog: used only so the history survives a screen lock instead of being wiped by disable(). While locked, the indicator is hidden, the menu is closed and nothing is captured. The history is wiped on lock if the user enables "Clear history on screen lock". The reason is also documented in a comment above disable(). - Storage: text is kept in memory only. Images are cached in ~/.cache/clipsafe/ with 0600 permissions, and the cache is wiped in enable() and disable(). - No network access. - Checked with shexli 0.2.1: clean (0 findings).