Slackadays Clipboard Versions Save

๐Ÿ˜Ž๐Ÿ–๏ธ๐Ÿฌ Your new, ๐™ง๐™ž๐™™๐™ค๐™ฃ๐™ ๐™ช๐™ก๐™ž๐™˜๐™ž๐™ค๐™ช๐™จ๐™ก๐™ฎ smart clipboard manager

0.9.0.1

4 months ago

CBBannerRelease9 0

The Clipboard Project is an advanced clipboard manager for the terminal. No other one exists with features like an unlimited history, unlimited clipboards, and user friendliness all while being in the command line!

Summary

Fixed a nasty bug on Linux, improved UX, and added a way to see your CB configuration!

New

  • Faster building on systems with large core counts
  • Added es_DO (Dominican Spanish) locale. This is currently identical to es_CO (Colombian Spanish)
  • Added Config action
  • Added SPDX license identifiers to clearly state what license CB uses

Fixed

  • Fixed string length check in color formatting
  • Fixed background process detection on Linux
  • Fix a potential case where the output doesn't resize correctly

Changed

  • :rotating_light: Breaking: :rotating_light: Adhere to XDG specifications for persistent clipboards

This changes the default location of all persistent clipboards from $HOME/.clipboard to $HOME/.local/state/clipboard. To move your existing persistent clipboards to this new location, all you need to do is copy everything from the .clipboard directory to the .local/state/clipboard one. For example, on Linux or macOS, do cp -R ~/.clipboard ~/.local/state/clipboard. For Windows, the PowerShell command should be similar.

This does not affect you if you've set a custom persistent clipboard location using CLIPBOARD_PERSISTDIR, or if you don't use persistent clipboards.

  • Changed the C++ version to 23 in CMake

New Contributors

0.8.3

7 months ago

Summary

Just a hotfix for macOS Sonoma and a couple UX improvements.

New

  • Control characters such as newlines and feed returns now show up as their string representations in a dark font

Fixed

  • Fixed macOS Sonoma not finding the <algorithm> header
  • Fixed async clipboard not updating to match new entries (todo: make this faster because this will be super slow for large clipboards)

0.8.2

7 months ago

CBBannerRelease8 2

About

The Clipboard Project is an advanced clipboard manager for the terminal. No other clipboard manager exists with features like an unlimited history, unlimited clipboards, and user friendliness all while being in the terminal!

Summary

These are some nice optimizations and fixes to keep CB high quality. :)

New

  • Added async X11/Wayland clipboard compat! This allows you to copy multiple items without running CB each time. This feature works by creating a CB daemon that checks the X11/Wayland clipboard every two seconds and updates the internal clipboard if it detects a change.
  • Optimized file reading
  • Optimized color replacement to be 3x faster!
  • Complain about a missing action if the chosen combination isn't available
  • Added NO_ALSA compile option for CMake
  • Optimized History action by performing tasks while waiting for threads to complete
  • Optimized MIME and file extension inference
  • Optimized History action AGAIN by caching color formatting
  • Check that the clipboard name is compatible with the host filesystem
  • Added zsh completions
  • Added ansi theme that uses the ANSI 3-bit color system (#159)
  • Added Antony Santos to bachata feature

Fixed

  • Fixed typo in manpage
  • Fixed the Load action not working in piped situations
  • Fixed silent confirmations not working for many messages
  • Fixed memory issue on Clang ARM causing broken colors
  • Fixed typo in help message
  • Fixed displaying history on Windows
  • Fixed segmentation fault if giving an empty argument that expects a string
  • Fixed JSON escaping for Info and History actions
  • Fixed JSON escaping not working for Unicode characters
  • Fixed "last changed" in Info reporting changes for unrelated files when pasting
  • Fixed not releasing a clipboard lock in the Status action

Changed

  • Changed "All of your clipboard with content" to "All your clipboards with content"
  • Changed Info JSON's "lastChanged" key to "contentLastChanged"
  • Only show progress messages if an action takes 500ms or longer
  • Updated CMake C++ version to C++23

0.8.1

10 months ago

CBBannerRelease8 1

The Clipboard Project is an advanced clipboard manager made for the terminal. It offers many useful features like unlimited history, a user friendly design, and a JSON API. That's why we like to say it's your new second brain!

In 3 Sentences

Added tons of little features and user experience improvements, as well as some huge optimizations! There's also a few bug fixes to help keep Clipboard as high quality as ever.

Like always, only the latest version is supported, so don't hesitate to upgrade to this one.

New

  • Improved Flatpak builds
  • Added full paths to Status and History JSON actions so that you can select them in dmenu scripts
  • Prioritized Wayland clipboard writing over X11
  • Optimized external clipboard syncing for Status
  • Added regex support for piping into Paste
  • Added automatic filesystem syncing on exit
  • Added fancy schmancy sound effects when completing after losing focus or upon an error (currently Linux only)

https://github.com/Slackadays/Clipboard/assets/69403549/b6906820-0c4c-4103-b055-6858bc6238b5

  • Added CLIPBOARD_NOAUDIO to disable all sound effects (including the existing terminal bell)
  • Show all actions available in help message
  • Added elapsed time to progress indicator
  • Added creation date and owner of clipboard to Info (currently only for non-Windows)
  • Added current progress to terminal title

https://github.com/Slackadays/Clipboard/assets/69403549/7338cbde-1a62-4c5f-87e7-cf113ba84793

  • Added smart data pasting where the clipboard number and entry plus data type will be stored in the new file's name
  • Added ability to use as a desktop app by running a custom script in the desktop entry
  • Added autocorrect for bad actions in case of misspells
  • Use automatically generated data from https://www.garykessler.net/library/file_sigs.html to make MIME and file extension inference a lot more complete
  • Added empty clipboard editing by making a new empty file
  • Added support for specifying multiple history retention limits at once
  • Added support for decimal numbers in history retention limits (like 100.42069gb or 800.85w)
  • Added support for history retention limits in seconds
  • Removed CLIPBOARD_NOEMOJI because CB now uses no emoji anymore :smirk:
  • Optimized History action with multithreading! If you have hundreds of thousands of history entries, you'll notice that you're now getting kickASS performance here. This isn't python or webshit we're talking about here.
  • Optimized History with POSIX AIO! You'll need Linux, macOS, FreeBSD, or NetBSD to use this.
  • Optimized History by removing useless code! There was a little bit of fat to trim.

https://github.com/Slackadays/Clipboard/assets/69403549/0351c467-6e8b-4032-a604-437887542a7d

  • Optimized bar drawing in Status, Info, History, and Search

  • Added basic Bash and Fish completions

  • Added support for using default (English) action names even when another language is selected

  • Added Search JSON action

  • Added Snap support! Now you can use this Flatpak competitor if you want

  • Added $ORIGIN support to installs so that Snap works easier

  • Made the manpage not completely suck Screenshot from 2023-06-29 08-25-34

  • Added smart environment variables which can tell between true and false values

  • Added compatibility with -- to mark the end of an option list

  • Optimized color formatting to be 30% faster!

  • :rotating_light: BREAKING CHANGE :rotating_light: Replaced CLIPBOARD_ALWAYS_PERSIST with CLIPBOARD_CUSTOMPERSIST so that you can choose which clipboards should be persistent using regex. So, if you had CLIPBOARD_ALWAYS_PERSIST set to 1 before, set CLIPBOARD_CUSTOMPERSIST to .*.

  • Added ability to copy text without quotes (") if none of the arguments are files

Here's how this works. Before, you'd need to do the following to copy text directly:

$ cb copy "Hello world!"

Now, as long as each "word" is not a valid filename, you can do the following:

$ cb copy Hello world!
  • Improved the whitespacing of inverse text
  • Improved Spanish, Portuguese, and Turkish translations (thanks, GH Copilot for pt/tr!)
  • Added French and German locale support
  • Added fuzzy file searching in case you mispellll a filename
  • Optimized MIME inference
  • Optimized file reading for small files Technical Stuff: On Linux and FreeBSD, the pipe size is 65K bytes and on macOS, OpenBSD, NetBSD, and DragonFlyBSD, the pipe size is 16K bytes. Reading content with a size less than these sizes will now only take 3 syscalls instead of 4.

Fixed

  • Fixed focus reporting characters showing up
  • Fixed some box drawing characters showing up as thicker ones on certain terminals (LOOKING AT YOU, KDE KONSOLE!)
  • Fixed size_t warning on macOS
  • Fixed exporting clipboards which have bad symlinks
  • Made Flatpak nightly instead of pinned to 0.8.0
  • Improved accuracy of calculating displayed message lengths
  • Fixed "last changed" date showing creation time on non-Windows in Info
  • Fixed terminal colors sometimes sticking around when doing Ctrl+C
  • Fixed indicator sticking around when doing Ignore with zero patterns set
  • Fixed history retention limit for size not being able to go above 4GB (the size of an unsigned 32 bit integer)
  • Fixed a deque access error in Search
  • Fixed Search results sometimes going off screen
  • Fixed Clear All showing a "Cleared XYZ clipboards" message even if canceling
  • Fixed color formatting for Note action
  • Improved error handling in Copy action

Changed

  • :rotating_light: BREAKING CHANGE :rotating_light: Renamed Status and History JSON's "name" key to "filename"
  • Changed behavior of a couple actions to prioritize argument data over piped data
  • Switched builds from MinSizeRel to Release optimization
  • Changed an emoji to box-drawing characters
  • Made progress indicator a large and long bar with a background
  • Made default color scheme a little darker
  • Made top bars of output inversely colored, and they look so good now!

image

  • Changed success/error emojis to specially formatted unicode equivalents

image

  • Changed "(Unknown)" as default content type in Info to "text/plain"

:memo: Notes

If you're a package maintainer for CB on Linux, then you'll need to add ALSA as a dependency.

The new History multithreading optimization only works if your system has multiple CPU cores available. The more cores you have, the faster History will be.

0.8.0

11 months ago

238156514-579de53e-c96a-4742-914d-17d1b6ce19f9

New

  • Basically UNLIMITED clipboard history! :rocket:๐Ÿคฉ You can't say that about CopyQ, Maccy, Flycut, Clipboard Indicator, GPaste, Alfred, clipster, Raycast non-Pro, Clipboard Manager Electron, Clipped, Parcellite, Budgie Clipboard, Clipboard Master, Clippy, or Pano. Screenshot from 2023-05-21 17-07-11
  • Customizable clipboard entry history range from 1 to 2^32 - 1 with the CLIPBOARD_HISTORY environment variable. So, go ahead. Crank that b*tch up to a billion. It's all up 2 you! ๐Ÿ˜Ž
  • You can also choose a date range by putting y, m, w, d, or h after the number instead to specify years, months, weeks, days, or hours respectively to only keep that old content, like 6m or 2w.
  • Alternatively, you can also add tb, gb, mb, kb, or b instead to specify a maximum data size to keep, like 100gb or 5mb.
  • Remote clipboard sharing! You can now seamlessly share copied text across SSH sessions, and you only need CB installed on the remote system. To my knowledge, NO other clipboard manager has this feature. :1st_place_medal:

https://github.com/Slackadays/Clipboard/assets/69403549/4533b48c-efcc-4cda-98b1-97c595d1bfec

  • Added CLIPBOARD_NOREMOTE to disable remote clipboard reading/writing
  • Added the Edit action which lets you edit your clipboard text content right from the command line in one step!

https://github.com/Slackadays/Clipboard/assets/69403549/9597aa91-6d6f-4a6a-9eb8-908bfb6a0335

  • Added the CLIPBOARD_EDITOR environment variable to choose which editor to use. Note: CB will automatically search for a couple fallbacks if it can't get an editor from the CLIPBOARD_EDITOR, EDITOR, or VISUAL environment variables
  • Added clipboard searching! Now you can search either one clipboard or all of them with one or many queries of your choosing. CB will automagically sort the top results for you with what clipboard they're in and what entry each result is so you can quickly get to them.

https://github.com/Slackadays/Clipboard/assets/69403549/c071e4bd-01a8-4935-922d-f85da2738456

  • A new option for Linux users: Flatpak! There are now zero (0) excuses to not get Clipboard even if your system is older than otherwise required. Go grab that Flatpak from the Assets list below, unzip it, and install it with flatpak install clipboard-flatpak-amd64.flatpak.
  • Added focus notifications that will play a sound for you if you're looking at a different window while CB is running a long task
  • Added History action to show entire history, or queue up certain entries by adding those entries after the action, like cb history 10 42
  • Added history entry capabilities to the clipboard name selector, so now you can specify clipboard 5, entry 10 by doing an action like paste5-10
  • Added --entry flag to specify the entry by itself like --entry 10. This means you can now effortlessly rewrite history by copying content into an existing entry!
  • Added total item size in Info action for regular files and directories
  • Added total clipboard size to Info
  • Show binary content type and size in Status and History actions
  • Added locking to Status action
  • Added the eye candy :lollipop: treatment to the Show action
  • Added documentation to the website at getclipboard.app/docs
  • Separated all the actions out into their own compilable .cpp files to increase build speed
  • Added more MIME types to the inference system

Fixed

  • Fixed improper JSON escaping
  • Show the real size of directories when calculating total sizes on non-Windows platforms
  • Fixed a crash that could happen due to assuming there are clipboard contents when there aren't
  • Simplified and made directory size calculations slightly more correct
  • Fixed X11 sometimes not working (AGAIN!)
  • Added terminal size sanity check for CI and broken terminal situations
  • Fixed total size calculations failing due to bad symlinks

Changed

  • Changed Easter Egg from undocumented --ee flag to --bachata flag in readme
  • Don't show raw binary content in JSON outputs
  • Switch from TMPDIR to XDG_RUNTIME_DIR in temporary filepath logic
  • The Juice website template is now bundled to prevent future availability issues
  • Renamed a couple JSON parameters for clarity
  • Replaced an emoji with a Unicode version

:rotating_light: WARNING!

The new history feature makes CB incompatible with how older versions stored clipboard contents. If you have existing content when you upgrade, then it might not appear in CB, although it won't be deleted. To fix this, take everything stored in the data folder of your existing clipboards and move them to a "0" subfolder within data. So, if you have the file Foobar stored under data, the new setup will look like the folder 0 under data, and 0 stores the file Foobar. To find where CB keeps your clipboards, use the cb info command and check the line that says Stored in....

If you don't already have content stored with CB, then this warning doesn't apply to you.

๐Ÿ“ Note

Because the new History action is highly optimized, if you store a lot of entries in your clipboard history, then it may overload your terminal with too much content to handle at once. To fix this, please use a GPU accelerated terminal like Kitty or Alacritty.

The remote clipboard feature depends on OSC 52 which is a feature only a few terminals support, some being Kitty and Alacritty again. You'll also need to enable clipboard reading in the terminal for this feature to read the content remotely. If your favorite terminal doesn't support OSC 52, then go complain to them for not being standards-compliant.

0.7.1

1 year ago

CBBannerRelease71

One more thing about xclip

X11 is now actually deprecated by RedHat, so now xclip is deprecated for real. :)

New

  • Added Import and Ignore actions
  • Improved the Export action
  • Added a new and improved eye candy border to Status action Screenshot from 2023-05-05 13-06-08
  • Improved Status UX by not limiting it to terminal height
  • Added JSON output to Status
  • Added a C++20 implementation of last write time for Info for Windows
  • Cut down write() syscalls down majorly in the Status action
  • Added package managers to install scripts
  • Made tests in the test suite easier to discern
  • Added Wayland tests

Fixed

  • Fixed the eye candy box headers creating an almost infinite loop if provided a clipboard name longer than the width of the screen
  • Escape quotes in the user-generated Note section of Info JSON
  • Fixed progress indicator not showing up for some actions
  • Fixed indicator sticking around after doing certain actions
  • Fixed filesystem errors not showing up sometimes
  • Spent 10 hours changing one line to make large Wayland copies work :weary:

Changed

  • Moved eye candy header text to left from center
  • Replace light bulb emojis :bulb: with dots instead of spaces
  • Don't show "(p)" in Status for persistent clipboards
  • Sped up progress indicator

Important

I'm working on how the unlimited clipboard history feature is going to work, so it should appear soon in a future release.

0.7.0

1 year ago

CBBannerRelease7

see ya later, xclip!

CB 0.7.0 now matches the features that you'll find in xclip and wl-clipboard. So, if you've been using them until now, feel free to say adiรณs to those legacy tools!

New

  • Strip all emojis from output with CLIPBOARD_NOEMOJI
  • Add --no-confirmation flag to disable confirmation messages
  • Show raw filepaths of all copied files by piping cb show
  • See Last Changed date of clipboards with Info (currently not available for Windows yet)
  • Add file locking exception if CB is in a pipe with itself
  • Works with more available GUI MIME types
  • Tons of new GitHub Actions to more thoroughly test CB
  • Swap clipboard contents with the Swap action
  • Export clipboards with the Export action (currently in Beta state)
  • Only use Wayland if X11 fails
  • Specify a custom MIME type to request from GUIs by adding --mime (mime)
  • See available MIME types in Info
  • Info now has a pretty border around it
  • Replace a Unicode box-drawing character that is unsupported many places with a similar one that is supported everywhere
  • Get info from Info in JSON format by piping it out

Fixed

  • "[blank]" would sometimes show up in messages with color disabled
  • CB would send text content to GUIs even if it's empty
  • The progress indicator bar would sometimes stick around
  • CB would offer all MIME types by default to GUIs
  • CB would write to GUIs after doing Info

Changed

  • All Clipboard Project invocations are now cb. For package maintainers, note that there is now only a cb binary instead of a clipboard binary and a cb symlink. Additionally, libclipboardx11.so and libclipboardwayland.so are now libcbx11.so and libcbwayland.so respectively.
  • Clarify some parameters in Info
  • Change decimal precision from 3 to 2 for better UX
  • Prepend a light bulb emoji :bulb: to the beginning of help messages

0.6.0

1 year ago

This is Clipboard 0.6.0, the Ridonkulous Update!

New

  • A readme chock-full of documentation and poetic writing!
  • :rotating_light: clipboard is deprecated: :rotating_light: Please use cb instead! The old style will be removed in 0.7.0 and you'll get a warning message in the meantime.
  • CLIPBOARD_NOPROGRESS environment variable and -np and --no-progress flags disable progress messages
  • CLICOLOR can disable color and CLICOLOR_FORCE can enable it again
  • Byte counts are now formatted in a more user-friendly way that's also localized
  • The Paste and Show actions now support regex to choose what gets pasted or shown
  • The Info action shows detailed information for a specific clipboard
  • The Load action copies entire clipboard contents from one to another, enabling many potential workflows that were previously clumsy to do.
  • Display the used invocation in help messages

Fixed

  • X11 compat is now more reliable thanks to complete synchronization
  • Fix adding text content not working at all
  • Fix specifying clipboards as flags not working for persistent clipboards, for example now you can do -c _blah to specify the persistent clipboard _blah
  • Fix the Status action getting treated as a writing action
  • Fix various actions not exiting with a failure exit code upon failure

Changed

  • Before, CMake would make the clipboard binary and a cb symlink. Now, it makes a cb binary and a clipboard symlink. This means Clipboard will now work without changes on Haiku.
  • Show entire clipboard file contents with the Show action

0.5.0

1 year ago

New

  • Remove content with the power of regex with the remove action
  • Make note of your clipboards with the note action
  • Pick a color scheme to go with your personal style with CLIPBOARD_THEME
  • Set the language manually with CLIPBOARD_LOCALE
  • Added locking to clipboards to prevent data races
  • See more types of data from desktops with tons of new supported MIME types

Fixed

  • Fix Clipboard sticking around after exiting
  • Fix Clipboard not processing KDE Dolphin filepaths which have \r at the end
  • Fix Windows piping not being bit-correct
  • Work around X11 INCR not working properly on some platforms (looking at you, Pop!_OS and Manjaro)

Changed

  • Changed readme marketing copy to be interesting :)
  • GHA tests now report code coverage to Codecov to help check how much of Clipboard is actually getting tested

0.4.0

1 year ago

New

  • Add contents to an existing clipboard with the add action
  • Copy and paste secure data like passwords just once with the cut action with text
  • Silence Clipboard's progress and confirmation messages with CLIPBOARD_SILENT
  • Optimize piping in to be 100x faster!
  • Emoji icons instead of plain text ones for prettier output
  • A smoother and faster progress indicator
  • Haiku clipboard integration
  • A revamped test system to reveal more bugs
  • Hide cursor when doing an action
  • Display action in terminal window title
  • Display commit in help message

Fixed

  • Piped in content wouldn't be 100% correct
  • Piped in content would have the wrong number of bytes reported
  • Too big of a copy would overflow the progress indicator
  • The storage calculation would fail to account for a filesystem on a different device
  • Division by zero would sometimes happen
  • macOS Objective-C code would have an object leak
  • Fix platforms not supporting the cut action deleting Clipboard's contents when pasting
  • Clipboard version in help version would not show on several package managers

Changed

  • Only display the prompt for action if there is nothing in the clipboard