{"id":13414677,"url":"https://github.com/Slackadays/Clipboard","last_synced_at":"2025-03-14T22:32:04.702Z","repository":{"id":64590237,"uuid":"568268698","full_name":"Slackadays/Clipboard","owner":"Slackadays","description":"😎🏖️🐬 Your new, 𝙧𝙞𝙙𝙤𝙣𝙠𝙪𝙡𝙞𝙘𝙞𝙤𝙪𝙨𝙡𝙮 smart clipboard manager","archived":false,"fork":false,"pushed_at":"2024-10-23T19:47:46.000Z","size":71540,"stargazers_count":4768,"open_issues_count":7,"forks_count":139,"subscribers_count":27,"default_branch":"main","last_synced_at":"2024-10-29T14:57:07.304Z","etag":null,"topics":["bash","cli","clipboard","clipboard-manager","cmd","collaborate","command-line","console","cpp","cross-platform","hacktoberfest","learn","library","linux","macos","productivity","shell","terminal","windows"],"latest_commit_sha":null,"homepage":"https://getclipboard.app/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Slackadays.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["Slackadays"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-11-20T01:06:54.000Z","updated_at":"2024-10-29T12:06:06.000Z","dependencies_parsed_at":"2023-09-30T04:09:31.993Z","dependency_job_id":"d974ce92-f07e-4624-a706-1ae972243f0f","html_url":"https://github.com/Slackadays/Clipboard","commit_stats":{"total_commits":1817,"total_committers":32,"mean_commits":56.78125,"dds":0.4320308200330215,"last_synced_commit":"9974069af6cac2fecf89cf79dd1f419ef58a3641"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slackadays%2FClipboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slackadays%2FClipboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slackadays%2FClipboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Slackadays%2FClipboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Slackadays","download_url":"https://codeload.github.com/Slackadays/Clipboard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243658055,"owners_count":20326459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli","clipboard","clipboard-manager","cmd","collaborate","command-line","console","cpp","cross-platform","hacktoberfest","learn","library","linux","macos","productivity","shell","terminal","windows"],"created_at":"2024-07-30T21:00:32.685Z","updated_at":"2025-03-14T22:32:04.695Z","avatar_url":"https://github.com/Slackadays.png","language":"C++","readme":"\u003cbr\u003e\n\n### ![The Clipboard Project](documentation/readme-assets/CBBanner.png)\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cimg src=\"documentation/readme-assets/ProductivityTools.png\" alt=\"The fully-featured yet oh-so-easy-to-use clipboard manager for everyone.\" /\u003e\n\n\u003cbr\u003e\n\nThe Clipboard Project is a fast and lightweight, feature packed, and user friendly tool that lets you do more on the computer in _style_. Seriously.\n\nSay hello to one of the most cutting-edge clipboard managers ever. Save time and effort easier and more powerfully than ever before.\n\nDon't just take my word for it!\n\n\u003cbr\u003e\n\n\u003cimg src=\"documentation/readme-assets/Features.png\" alt=\"Just let the features speak for themselves.\" height=35px\u003e\n\n- Copy and paste text, files, directories, binary data, your goat, _anything_\n- Infinite numbers of clipboards with unlimited capacity **and** history each,\n- Seriously kickASS performance 🥾🤯 because I'm sick of slow software,\n- Seamless integration with your [existing clipboard systems](https://github.com/Slackadays/Clipboard/wiki/GUI-Clipboard-Compat),\n- Support for your favorite languages like español, português, Türkçe, and Français,\n- A superbly scriptable API to automate your workflows in a cinch, \n- Gorgeous \u003cimg src=\"documentation/readme-assets/eyecandy.svg\" height=\"16px\" alt=\"eye candy\"/\u003e and ear candy for your viewing and listening pleasure,\n- Documentation you'll actually want to read \u003csub\u003e(all in this readme)\u003c/sub\u003e\n- And oodles more!\n\n\u003cbr\u003e\n\n\u003ci\u003eI believe Clipboard is \u003cb\u003ethe best tool for clipboard interaction\u003c/b\u003e. As a matter of fact, as of today you have 2713 stars on github, kudos! Keep up the good work.\u003c/i\u003e\n\n\\- pidario on GitHub.com\n\n\u003cbr\u003e\n\n\u003ci\u003eThanks for your work! This is by-far \u003cb\u003eone of my favourite projects\u003c/b\u003e on GitHub!\u003c/i\u003e\n\n\\- MaddyGuthridge on GitHub.com\n\n\u003cbr\u003e\n\n\u003ci\u003e...I've just discovered CB \u0026 \u003cb\u003eit's suiting my needs very well!\u003c/b\u003e\u003c/i\u003e\n\n\\- all64bits on Discord.com\n\n\u003cbr\u003e\n\n\u003ci\u003eI started using this because \u003cb\u003eI just wanted an easy \"cb copy \u0026\u0026 cb paste\"\u003c/b\u003e VS trying to remember the correct input AND output flags when Im using xclip with different file types. I write a lot of shell scripts that copy certain stuff like images and text and \u003cb\u003ethis makes it a lot easier.\u003c/b\u003e\u003c/i\u003e\n\n\\- SweetBabyAlaska on Reddit.com\n\n\u003cbr\u003e\n\n\u003ci\u003eAs a sysadmin and hourly terminal user, \u003cb\u003eI found it so useful.\u003c/b\u003e Making stuffs some easier.\u003c/i\u003e\n\n\\- Simpleboy_ir on Reddit.com\n\n\u003cbr\u003e\n\n\u003ci\u003eThank you for this app, \u003cb\u003eso simple yet effective!\u003c/b\u003e Hats off 🎩 👌\u003c/i\u003e\n\n\\- GlassGruber on GitHub.com\n\n\u003cbr\u003e\n\n\u003ci\u003eBTW, really LOVE this project. Its [sic] \u003cb\u003eso unbelievable it isn't already in Linux.\u003c/b\u003e\u003c/i\u003e\n\n\\- AtomicRobotMan0101 on GitHub.com\n\n\u003cbr\u003e\n\n\u003ci\u003e...Thank you again for \u003cb\u003ethis great application!\u003c/b\u003e\u003c/i\u003e\n\n\\- kohane27 on GitHub.com\n\n\u003cbr\u003e\n\n![CB Demo Video](documentation/readme-assets/ClipboardDemo.gif)\n\n\u003cp align=\"center\" id=\"dummy\"\u003e\n    \u003ca href=\"https://github.com/Slackadays/Clipboard/actions\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Slackadays/Clipboard/build-clipboard.yml?branch=main\u0026label=BUILDS\u0026style=for-the-badge\u0026logo=githubactions\u0026labelColor=rgb(55,55,55)\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/slackadays/Clipboard/lint-clipboard.yml?branch=main\u0026label=CHECKS\u0026style=for-the-badge\u0026logo=githubactions\u0026labelColor=rgb(55,55,55)\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://app.codecov.io/gh/Slackadays/Clipboard\"\u003e\n        \u003cimg src=\"https://img.shields.io/codecov/c/github/slackadays/Clipboard/main?style=for-the-badge\u0026label=COVERAGE\u0026token=RO7KDOZ6Q2\u0026logo=codecov\u0026labelColor=rgb(55,55,55)\"\u003e\n    \u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/github/downloads/Slackadays/Clipboard/total?style=for-the-badge\u0026labelColor=rgb(55,55,55)\u0026logo=github\"\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/Slackadays/Clipboard/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/release/slackadays/clipboard?label=latest%20release\u0026style=for-the-badge\u0026logo=github\u0026labelColor=rgb(55,55,55)\u0026color=brightgreen\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://discord.gg/J6asnc3pEG\"\u003e\u003cimg src=\"documentation/readme-assets/join-our-discord.svg\" alt=\"Discord Chat\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/slackadays/clipboard?label=FREE%20%26%20OPEN%20SOURCE\u0026logo=gnu\u0026style=for-the-badge\u0026labelColor=rgb(55,55,55)\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"https://img.shields.io/maintenance/yes/2025?style=for-the-badge\u0026labelColor=rgb(55%2C55%2C55)\"\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"documentation/readme-assets/GetStartedBelow.png\" alt=\"Ready to turbocharge your productivity? Then let's get started with CB.\" height=\"100px\" /\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### ![Quick Installation](documentation/readme-assets/CBQuickInstallation.png)\n\n### \u003ca href=\"https://github.com/Slackadays/Clipboard/blob/main/install.sh\"\u003e\u003cimg src=\"documentation/readme-assets/AllExceptWindows.png\" alt=\"All Except Windows\" height=25px /\u003e\u003c/a\u003e\n```bash\ncurl -sSL https://github.com/Slackadays/Clipboard/raw/main/install.sh | sh\n```\n### \u003ca href=\"https://github.com/Slackadays/Clipboard/blob/main/install.ps1\"\u003e\u003cimg src=\"documentation/readme-assets/WindowsRunAsAdmin.png\" alt=\"Windows (run as Administrator)\" height=30px /\u003e\u003c/a\u003e\n```powershell\n(Invoke-WebRequest -UseBasicParsing https://github.com/Slackadays/Clipboard/raw/main/install.ps1).Content | powershell\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/PremadeBuilds.png\" alt=\"Premade Builds\" height=25px /\u003e\n\n\u003ca href=\"https://repology.org/project/clipboard/versions\"\u003e\u003cimg src=\"https://repology.org/badge/vertical-allrepos/clipboard.svg\" alt=\"Packaging status\" align=\"right\"\u003e\u003c/a\u003e\n\n**Alpine Linux** (you'll need to enable the Community packages first)\n```sh\napk add clipboard\n```\n\n\u003cbr\u003e\n\n**AUR** (Use your favorite AUR helper such as `yay`. You can also get `clipboard-bin` and `clipboard-git`)\n```sh\nyay -S clipboard\n\nyay -S clipboard-bin\n\nyay -S clipboard-git\n```\n\n\u003cbr\u003e\n\n**Conda-forge** (Use any Conda package manager such as conda, mamba, or pixi)\n```sh\nconda install -c conda-forge cb-clipboard\n\nmamba install -c conda-forge cb-clipboard\n\nmicromamba install -c conda-forge cb-clipboard\n\npixi global install cb-clipboard\n```\n\n\u003cbr\u003e\n\n**Flatpak Flathub** (You can also get our nightly Flatpak builds under **GitHub Downloads**)\n```sh\nflatpak install app.getclipboard.Clipboard\n# After installing, do \"alias cb='flatpak run app.getclipboard.Clipboard'\" to use CB easily.\n# Then, add that command to your terminal profile (like .bashrc) to make it work every time.\n```\n\n\u003ca href=\"https://flathub.org/apps/app.getclipboard.Clipboard\"\u003e\u003cimg width='240' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.svg' align=\"right\"/\u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n**Gentoo GURU and LiGurOS** (For Gentoo, enable the GURU repo first)\n```sh\nemerge -av app-misc/clipboard\n```\n\n\u003cbr\u003e\n\n**Homebrew**\n```sh\nbrew install clipboard\n```\n\n\u003cbr\u003e\n\n**Nix**\n```sh\nnix-env -iA nixpkgs.clipboard-jh\n```\n\n\u003cbr\u003e\n\n**Pacstall**\n```sh\npacstall -I clipboard-bin\n```\n\n\u003cbr\u003e\n\n**Scoop**\n```powershell\nscoop install clipboard\n```\n\n\u003cbr\u003e\n\n**Snap** (You can also get our nightly Snap builds under **GitHub Downloads**)\n```sh\nsudo snap install clipboard\n# After installing, do \"alias cb='snap run clipboard'\" to use CB easily.\n# Then, add that command to your terminal profile (like .bashrc) to make it work every time.\n```\n\n\u003ca href=\"https://snapcraft.io/clipboard\"\u003e\n  \u003cimg alt=\"Get it from the Snap Store\" src=\"https://snapcraft.io/static/images/badges/en/snap-store-black.svg\" align=\"right\"/\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\n\n**Void Linux**\n```sh\nsudo xbps-install -S Clipboard\n```\n\n\u003cbr\u003e\n\n**Winget**\n```powershell\nwinget install -e --id Slackadays.Clipboard\n```\n\n\u003cbr\u003e\n\n**GitHub Downloads**\n\nFirst, get the latest revision of the Clipboard Project [from GitHub Actions](https://nightly.link/Slackadays/Clipboard/workflows/build-clipboard/main) or the latest release [from GitHub Releases.](https://github.com/Slackadays/Clipboard/releases/latest)\n\nThen, unpack what you just downloaded to a nice place anywhere on your system.\n\nIf you downloaded the Flatpak, now do `flatpak install what-you-downloaded.flatpak`. Or if you downloaded the Snap, now do `sudo snap install --dangerous what_you_downloaded.snap`.\n\nFinally, add CB to your PATH (so that you can run it anywhere) by doing one of the following:\n\n```sh\n# For all platforms except Windows, Flatpak, and Snap\n$ export PATH=$PATH:/where/you/unpacked/cb\n# Add this to your terminal startup file like .bashrc or the equivalent so that it works every time.\n# To get the current path (in case you don't know it), do the \"pwd\" command.\n\n# For Flatpak\n$ alias cb='flatpak run app.getclipboard.Clipboard'\n# Add this to your terminal startup file like .bashrc or the equivalent so that it works every time.\n\n# For Snap\n$ alias cb='snap run clipboard'\n# Add this to your terminal startup file like .bashrc or the equivalent so that it works every time.\n\n# For Windows PowerShell\n\u003e $Env:PATH += \";C:\\where\\you\\unpacked\\cb\"\n# Add this to your PowerShell profile (which is located in $profile) so that this works every time.\n# To get the current path (in case you don't know it), do the \"Get-Location\" command.\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/InstallManually.png\" alt=\"Install Manually\" height=25px /\u003e\nYou'll need CMake, C++20 support, and OpenSSL, and if you want X11 or Wayland support, you'll also need libx11 or libwayland plus Wayland Protocols respectively. If you're on Linux, you'll need ALSA.\n\nGet the latest release instead of the latest commit by adding `--branch 0.9.1` right after `git clone...`.\n\nChange the system installation prefix by adding `-DCMAKE_INSTALL_PREFIX=/custom/prefix` to `cmake ..`, or the library install location by adding `-DCMAKE_INSTALL_LIBDIR=/custom/dir`.\n```bash\n# First, let's download the code and go a nice place to build everything.\n$ git clone https://github.com/Slackadays/Clipboard \n$ cd Clipboard/build\n\n# Now let's set up CMake and build CB.\n$ cmake -DCMAKE_BUILD_TYPE=Release ..\n$ cmake --build . -j 12\n\n# Finally, let's install it onto our system.\n$ cmake --install .\n```\n\n### \u003cimg src=\"documentation/readme-assets/Uninstall.png\" alt=\"Uninstall\" height=25px /\u003e\n\nRemove everything listed in `install_manifest.txt`. If you're not using Windows, you can also do `xargs rm \u003c install_manifest.txt`.\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"documentation/readme-assets/HowToUsePrompt.png\" alt=\"Now let's start saving time and effort.\" height=\"40px\" /\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### ![How To Use](documentation/readme-assets/CBHowToUse.png)\n\n### \u003cimg src=\"documentation/readme-assets/Examples.png\" alt=\"Examples\" height=25px /\u003e\n\n```sh\n# Let's start by copying a file.\n$ cb copy NuclearLaunchCodes.pdf\n\n# Now, let's paste this file.\n$ cb paste\n\n# Not bad, right?\n\n# Let's make a note for this clipboard.\n$ cb note \"Keep this a secret\"\n\n# What if you wanted to pipe the note in?\n$ echo \"Keep this a secret OR ELSE\" | cb note\n\n# Now let's cut a directory to a different clipboard.\n$ cb cut69 MyDirectory\n\n# We put the 69 right after \"cut\" to tell CB to put MyDirectory in clipboard 69.\n\n# Let's add a file to this same clipboard.\n$ cb add69 SomeFile\n\n# To remove a file, enter its name to remove just that file.\n$ cb remove69 SomeFile\n\n# Alternatively, you can put in a regex pattern instead to generalize the removal.\n$ cb remove69 \"So.*le\"\n\n# Finally, let's paste what we have in clipboard 69.\n$ cb paste69\n\n# You can copy multiple files at the same time. \n# Let's try the \"_420\" persistent clipboard for this one.\n$ cb copy_420 foo.bar NotAVirus.bar.mp3.exe\n\n# Like before, we can remove anything with a regex patttern.\n$ cb remove_420 \"*.mp3\\.exe\"\n\n# Notes work exactly the same way for every clipboard.\n$ cb note_420 \"Some kosher content here\"\n\n# Let's look at everything we've stored in clipboard _420.\n$ cb show_420\n\n# Now let's see our original note and then clear that clipboard. \n$ cb note\n$ cb clear\n\n# This is the same as \"cb note\" but for clipboard \"_420\" again.\n$ cb note_420\n\n# Let's shake things up. Say you have some kind of content you want to ignore.\n# This content could be anything from a password to raw binary data.\n# To ignore certain kinds of content, use a regex pattern of your choice.\n\n# Let's try this with a classic example.\n$ cb ignore \"H.*2\"\n\n# This pattern will ignore anything starting with \"H\" and ending with \"2.\"\n\n# Now, this next command will fail because CB will ignore the content in it through the pattern.\n$ cb copy \"Hunter2\"\n\n# Let's get some more detailed information about our clipboards.\n$ cb info\n$ cb info69\n$ cb info_420\n\n# To wrap things up, let's get a bird's eye view of everything so far.\n$ cb\n# Doing \"cb\" is the exact same as \"cb status.\"\n$ cb status\n\n# These are just a handful of examples. \n# Check the documentation below for tons more examples of all the commands!\n```\n\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/TheBasics.png\" alt=\"The Basics\" height=25px /\u003e\n\nAdd a number to the end of your action to choose which temporary clipboard you want to use (the default is 0). Or, add `_` to use a persistent clipboard instead.\n\n\u003ch3\u003e\u003cb\u003eCopy\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](copy|cp)[(num)|_(id)] (file) [files]\u003c/code\u003e or \u003ccode\u003e(something) | cb [[--](copy|cp)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nCopy a file.\n```sh\n$ cb copy FooFile\n$ cb --copy FooFile\n$ cb cp FooFile \n$ cb --cp FooFile\n# These are the same!\n```\n\nCopy a file and a directory.\n```sh\n$ cb copy FooFile BarDir\n# These are also the same!\n```\n\nCopy piped in data.\n```sh\n$ echo \"Foobar\" | cb\n$ echo \"Foobar\" | cb copy \n# The \"copy\" action is optional here since the only possible action here in the first place is \"copy\"\n```\n\nCopy text directly.\n```sh\n$ cb copy \"Aventura was the best bachata band\"\n```\nNote: This happens instead of copying a file/directory if there is only one item present and that item doesn't exist as a file/directory.\n\nCopy a file to the clipboard named \"4\"\n```sh\n$ cb copy4 FooFile\n```\n\nCopy piped in data to the persistent clipboard named \"hello\"\n```sh\n$ echo \"Foobar\" | cb copy_hello\n```\n\nCopy text to the clipboard named \"hey\"\n```sh\n$ cb --clipboard hey copy \"Aventura was the best bachata band\"\n$ cb -c hey copy \"Aventura was the best bachata band\" \n# These are the same!\n```\n\nCopy a file with spaces and many directories to clipboard \"50\" using the abbreviated action name.\n```sh\n$ cb cp50 \"Aventura/God's Project/04 Un Chi Chi.flac\" BarDir BazDir\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eCut\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](cut|ct)[(num)|_(id)] (file) [files]\u003c/code\u003e or \u003ccode\u003e(something) | cb [[--](cut|ct)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nCut a file.\n```sh\n$ cb cut FooFile\n$ cb --cut FooFile\n$ cb ct FooFile \n$ cb --ct FooFile\n# These are the same!\n```\n\nCut a file and a directory.\n```sh\n$ cb cut FooFile BarDir\n# These are also the same!\n```\n\nCut piped in data.\n```sh\n$ echo \"Foobar\" | cb cut\n```\nNote: Cutting piped in data is the same as copying, except that CB will delete all content after you paste it somewhere.\n\nCut text directly.\n```sh\n$ cb cut \"Hunter2\"\n```\nNote: This happens instead of cutting a file/directory if there is only one item present and that item doesn't exist as a file/directory.\n\nCut a file to the clipboard named \"4\"\n```sh\n$ cb cut4 FooFile\n```\n\nCut piped in data to the persistent clipboard named \"hello\"\n```sh\n$ echo \"Foobar\" | cb cut_hello\n```\n\nCut text to the clipboard named \"hey\"\n```sh\n$ cb --clipboard hey cut \"Aventura was the best bachata band\"\n$ cb -c hey cut \"Aventura was the best bachata band\"\n# These are the same!\n```\n\nCut a file with spaces and many directories to clipboard \"50\" using the abbreviated action name.\n```sh\n$ cb ct50 \"Aventura/God's Project/04 Un Chi Chi.flac\" BarDir BazDir\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003ePaste\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](paste|p)[(num)|_(id)] [regex] [regexes]\u003c/code\u003e or \u003ccode\u003ecb [[--](paste|p][(num)|_(id)] | (something)\u003c/code\u003e or \u003ccode\u003ecb [[--](paste|p)][(num)|_(id)] \u003e (some file)\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying or cutting something.\n```sh\n$ cb copy FooFile WhyAventuraIsTheBest.pdf\n```\n\nPaste in the current working directory.\n```sh\n$ cb paste\n$ cb --paste\n$ cb p\n$ cb --p\n# These are the same!\n```\nNote: If you paste after cutting, then CB will delete the original files that you cut.\n\nPaste anything containing \"Aventura.\"\n\n```sh\n$ cb p \".*Aventura.*\"\n```\n\nNow, let's copy some raw data.\n```sh\n$ echo \"Bananas!\" | cb\n```\n\nPaste the raw data file in the current working directory.\n```sh\n$ cb paste\n# Also the same\n```\n\nPipe everything out to some file.\n```sh\n$ cb paste \u003e SomeFile\n```\n\nPipe everything from clipboard \"42\" out to some file.\n```sh\n$ cb paste42 \u003e SomeFile\n$ cb p42 \u003e SomeFile\n$ cb -c 42 \u003e SomeFile \n# These three versions all work great!\n```\n\nPipe everything out to some program.\n```sh\n$ cb | cat\n# These three versions also all work great.\n$ cb | Write-Output \n# The version for PowerShell\n```\n\nPipe everything from persistent clipboard \"2\" out to some program.\n```sh\n$ cb paste_2 | cat\n$ cb p_2 | cat\n$ cb -c _2 | cat \n# These three versions also all work great.\n$ cb -c _2 | Write-Output \n# The version for PowerShell\n```\n\nNote: If you paste after cutting, then CB will delete the raw data afterwards, effectively only letting you paste once.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eAdd Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](add|ad)[(num)|_(id)] (file|text) [files]\u003c/code\u003e or \u003ccode\u003e(something) | cb [[--](add|ad)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy FooFile\n```\n\nAdd a file.\n```sh\n$ cb add SomeOtherFile\n$ cb --add SomeOtherFile\n$ cb ad SomeOtherFile \n$ cb --ad SomeOtherFile\n# CB now holds FooFile and SomeOtherFile\n```\n\nAdd a directory.\n```sh\n$ cb add \"We Broke The Rules\"\n```\n\nNow let's copy some raw data.\n```sh\n$ cb copy \"'Let me find that'\"\n```\n\nAdd raw data to the end of what's stored.\n```sh\n$ cb add \" is one of Romeo Santos' catchphrases.\"\n# The content is now: 'Let me find that' is one of Romeo Santos' catchphrases.\n```\n\nAdd raw data by piping it in.\n```sh\n$ echo \" What's yours?\" | cb add \n# The content is now: 'Let me find that' is one of Romeo Santos' catchphrases. What's yours?\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eRemove Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](remove|rm)[(num)|_(id)] (regex) [regexes]\u003c/code\u003e or \u003ccode\u003e(some regex) | cb [[--](remove|rm)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy FooFile BarDir BazDir\n```\n\nRemove everything starting with \"B\"\n```sh\n$ cb remove \"B.*\"\n$ cb --remove \"B.*\"\n$ cb rm \"B.*\"\n$ cb --rm \"B.*\"\n# CB will match this against \"BarDir\" and \"BazDir\" and remove them\n```\n\nRemove everything matching a specific name\n```sh\n$ cb remove \"BarDir\"\n# CB will match this against \"BarDir\" only and remove it\n```\n\nNow let's copy some raw data.\n```sh\n$ cb copy \"A bachatero is someone who makes bachata music.\"\n```\n\nRemove anything with a space beforehand and that ends with \"-ero\"\n```sh\n$ cb remove \"(?\u003c= ).*ero\"\n# The content is now: A  is someone who makes bachata music.\n```\n\nRemove anything matching \"music\" by piping the pattern in.\n```sh\n$ echo \"music\" | cb remove\n# The content is now: A  is someone who makes bachata .\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eShow Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](show|sh)[(num)|_(id)] [regex] [regexes]\u003c/code\u003e or \u003ccode\u003ecb [--](show|sh)[(num)|_(id)] [regex] [regexes] | (something)\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy FooFile BarDir BazDir\n```\n\nList all the items in the clipboard.\n```sh\n$ cb show\n$ cb --show\n$ cb sh \n$ cb --sh\n# These all work great!\n```\n\nNow let's copy some raw data.\n```sh\n$ cb copy \"Those who are tired of bachata are tired of life\"\n```\n\nShow the contents of the clipboard.\n```sh\n$ cb show\n```\n\nShow the raw filepaths of everything in the clipboard.\n```sh\n$ cb sh | cat\n```\n\nShow raw filepaths to a program.\n```sh\n$ cb copy \"02 I Believe.flac\"\n$ eval vlc $(cb sh)\n# Use the eval command here to process the raw filepath (which in this case looks like \"/tmp/Clipboard/0/02 I Believe.flac\") as if it were entered in a shell\n# Otherwise, you'll likely get errors complaining about being unable to process quote characters.\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eClear Clipboard\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](clear|clr)[(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy FooFile BarDir BazDir\n```\n\nClear the clipboard of all data.\n```sh\n$ cb clear\n$ cb --clear\n$ cb clr \n$ cb --clr\n# These all work great!\n```\n\nClear a certain range of history entries.\n```sh\n$ cb clear 69-420\n# Clears entries 69 through 420 inclusive\n$ cb clr 0-100\n# Clears entries 0 through 100 inclusive\n# Note: Entry 0 is always the most recent one\n```\n\nJust clear everything.\n```sh\n$ cb clear -a\n# Note: This will really clear everything in all clipboards!\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eEdit Clipboard Content\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](edit|ed)[(num)|_(id)] [editor]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying some text.\n```sh\n$ cb copy \"Hello Clipboard! This is just some example content.\"\n```\n\nEdit the clipboard content.\n```sh\n$ cb edit\n$ cb --edit\n$ cb ed\n$ cb --ed\n# These all work great!\n```\n\nUse a custom editor to edit with.\n```sh\ncb edit nano\ncb ed vim\ncb ed code\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eAdd Script to Clipboard\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](script|sc)[(num)|_(id)] [script path|content]\u003c/code\u003e\u003c/h3\u003e\n\nStart simple.\n```sh\n$ cb script pwd # Note: The exact output of \"pwd\" will vary depending on your system.\n$ cb\n/run/user/1000/Clipboard/0/data/0\n# The output of CB will be here\n/run/user/1000/Clipboard/0/data/0\n```\n\nUse a script file instead.\n```sh\n$ cat myscript.sh\necho \"Hello Clipboard!\"\necho \"Here's what's in the directory:\"\nls\n$ cb script myscript.sh\n$ cb\nHello Clipboard!\nHere's what's in the directory:\nrawdata.clipboard\n# The output of CB will be here\nHello Clipboard!\nHere's what's in the directory:\nrawdata.clipboard\n```\n\nCustomize during what action the script runs.\n```sh\n$ cb script ls --actions search,history\n$ cb\n$ cb history\nrawdata.clipboard\n# The output of CB will be here\nrawdata.clipboard\n$ cb search\nrawdata.clipboard\n# The output of CB will be here\nrawdata.clipboard\n$ cb copy\n$\n```\n\nCustomize if the script runs before, after, or both.\n```sh\n$ cb script ls --timings before\n$ cb\nrawdata.clipboard\n# The output of CB will be here\n$ cb script ls --timings after\n$ cb\n# The output of CB will be here\nrawdata.clipboard\n$ cb script ls --timings before,after\nrawdata.clipboard\n# The output of CB will be here\nrawdata.clipboard\n```\n\nCustomize both during what action the script runs and if the script runs before, after, or both.\n```sh\n$ cb script ls --actions copy --timings before\n$ cb\n$ cb copy\nrawdata.clipboard\n# The output of CB will be here\n```\n\nView the current script.\n```sh\n$ cb script\n# Script content shows here\n```\n\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/MoveThingsAround.png\" alt=\"Move Things Around\" height=25px /\u003e\n\n\u003ch3\u003e\u003cb\u003eLoad Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](load|ld)[(num)|_(id)] [clipboard] [clipboards]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy \"Yo dawg! I heard you liked bachata music.\"\n```\n\nLoad the contents of the clipboard into other clipboards.\n\n```sh\n$ cb load 1 2 3 _foo\n$ cb --load 1 2 3 _foo\n$ cb ld 1 2 3 _foo\n$ cb --ld 1 2 3 _foo\n# All work great!\n```\n\nNote: If you don't provide a destination clipboard, then the Load action will load the contents into the default clipboard.\n\nLoad the contents of some clipboard into the default.\n\n```sh\n$ cb load_foo\n```\n\nNote: This is useful if you want to load content into GUI clipboard systems, as they only connect to the default clipboard.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eSwap Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](swap|sw)[(num)|_(id)] [clipboard]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something to two clipboards.\n```sh\n$ cb copy \"After breaking up from Aventura, Romeo Santos' music just wasn't up to snuff.\"\n$ cb copy2 \"I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux.\"\n```\n\nSwap the contents of two clipboards.\n\n```sh\n$ cb swap 2\n$ cb --swap 2\n$ cb sw 2\n$ cb --sw 2\n# All work great!\n\n$ cb swap2\n$ cb --swap2\n$ cb sw2\n$ cb --sw2\n# Since swapping is commutative, the target can be freely swapped with the destination.\n```\n\nNote: If you don't provide a destination clipboard, then the Swap action will swap the contents into the default clipboard.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eImport Clipboards\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](import|imp) [source folder]\u003c/code\u003e\u003c/h3\u003e\n\nStart by exporting a clipboard.\n```sh\n$ cb copy \"The reason Aventura was so popular was because the music was so well-written as well as the luscious guitar chorus effect.\"\n$ cb export\n```\n\nImport all clipboards from a folder.\n```sh\n$ cb import\n$ cb --import\n$ cb imp\n$ cb --imp\n# These all work great!\n```\n\nNote: Currently, CB imports from a folder called `Exported_Clipboards`.\n\nChoose what folder to import from.\n```sh\n$ cb import MySavedClipboards\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eExport Clipboards\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](export|ex) [clipboard] [clipboards]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying something.\n```sh\n$ cb copy \"Aventura's music is some of the most erotic you'll find anywhere.\"\n```\n\nExport all clipboards to a folder.\n```sh\n$ cb export\n$ cb --export\n$ cb ex\n$ cb --ex\n# These all work great!\n```\n\nNote: Currently, CB exports to a folder called `Exported_Clipboards`.\n\nChoose what clipboards to export.\n```sh\n$ cb export 1 2 3\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eQueue Clipboard History\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](history|hs)[(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying several things.\n```sh\n$ cb copy \"There are at least two \\\"Anthony Santos\\\" who are known for bachata music: the \\\"regular\\\" Anthony Santos and Anthony \\\"Romeo\\\" Santos.\"\n$ cb copy \"blah blah blah\"\n$ cb copy \"Clipboard Project is the best clipboard manager around\"\n```\n\nShow the history.\n```sh\n$ cb history\n$ cb --history\n$ cb hs\n$ cb --hs\n# These all work great!\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eGet Older Clipboard Entries\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](history|hs)[(num)|_(id)] (clipboard) [clipboards]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying several things.\n```sh\n$ cb copy \"There are at least two \\\"Anthony Santos\\\" who are known for bachata music: the \\\"regular\\\" Anthony Santos and Anthony \\\"Romeo\\\" Santos.\"\n$ cb copy \"blah blah blah\"\n$ cb copy \"Clipboard Project is the best clipboard manager around\"\n```\n\nBring an older entry (or entries) to the front.\n```sh\n$ cb history 1\n$ cb --history 2\n$ cb hs 1\n$ cb --hs 1 2\n# These all work great!\n```\n\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/SeeEverything.png\" alt=\"See Everything\" height=25px /\u003e\n\n\u003ch3\u003e\u003cb\u003eSet Note\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](note|nt)[(num)|_(id)] (text)\u003c/code\u003e or \u003ccode\u003e(something) | cb [[--](note|nt)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nAdd a personal note to a clipboard.\n```sh\n$ cb note \"For my Aventura music collection\"\n$ cb --note \"For my Aventura music collection\"\n$ cb nt \"For my Aventura music collection\"\n$ cb --nt \"For my Aventura music collection\"\n# All work great!\n```\n\nAdd a personal note to a clipboard by piping it in.\n```sh\n$ echo \"For my Aventura music collection\" | cb note\n```\n\nRemove a note from a clipboard.\n```sh\n$ cb note \"\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eShow Note\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](note|nt)[(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by adding a note to a clipboard.\n```sh\n$ cb note \"For my Aventura music collection\"\n```\n\nShow the note you added.\n```sh\n$ cb note\n$ cb --note\n$ cb nt\n$ cb --nt\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eSet Ignore Rules\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](ignore|ig)[(num)|_(id)] (regex) [regexes]\u003c/code\u003e or \u003ccode\u003e(regex) | cb [[--](ignore|ig)][(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nSet some kinds of content to always ignore.\n```sh\n$ cb ignore \"(?\u003c![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\"\n$ cb --ignore \"(?\u003c![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\"\n$ cb ig \"(?\u003c![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\"\n$ cb --ig \"(?\u003c![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\"\n# All work great!\n# \"(?\u003c![A-Za-z0-9/+=])[A-Za-z0-9/+=]{40}(?![A-Za-z0-9/+=])\" is the regex for an AWS SK secret.\n```\n\nSet an ignore regex rule by piping it in.\n```sh\n$ echo \"[abc]{10}\" | cb ignore\n```\n\nRemove all ignore regex rules from a clipboard.\n```sh\n$ cb ignore \"\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eShow Ignore Rules\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](ignore|ig)[(num)|_(id)]\u003c/code\u003e\u003c/h3\u003e\n\nStart by adding some ignore regex rules to a clipboard.\n```sh\n$ cb ignore \"Foo\" \"Bar\" \"Baz\"\n```\n\nShow the rules you just added.\n```sh\n$ cb ignore\n$ cb --ignore\n$ cb ig\n$ cb --ig\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eShow Detailed Info\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](info|in)[(num)|_(id)]\u003c/code\u003e or \u003ccode\u003ecb [--](info|in)[(num)|_(id)] | (something)\u003c/code\u003e\u003c/h3\u003e\n\nShow helpful details for a clipboard.\n```sh\n$ cb info\n$ cb --info\n$ cb in\n$ cb --in\n# All are the same!\n```\n\nOutput these helpful details in JSON format.\n```sh\n$ cb info | cat\n$ cb info | jq\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eSearch Clipboard Contents\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [--](search|sr)[(num)|_(id)] (query) [queries]\u003c/code\u003e\u003c/h3\u003e\n\nStart by copying several things.\n```sh\n$ cb copy Foo Bar Baz\n$ cb copy \"Some example content\"\n$ cb copy2 \"Blah bleh bluh bloh\"\n```\n\nSearch a clipboard's contents.\n```sh\n$ cb search Foo\n$ cb --search Blah\n$ cb sr Bar\n$ cb --sr Baz\n# All are the same!\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eShow Help Message\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb (-h|[--]help)\u003c/code\u003e\u003c/h3\u003e\n\nShow the help message.\n```sh\n$ cb help\n$ cb --help\n$ cb -h \n# These three versions all work great!\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eCheck All Clipboards' Status\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [[--]status|st]\u003c/code\u003e or \u003ccode\u003ecb [--](status|st) | (something)\u003c/code\u003e\u003c/h3\u003e\n\nCheck the status of all clipboards that have content.\n```sh\n$ cb status\n$ cb --status\n$ cb st\n$ cb --st\n$ cb \n# These all work great!\n```\n\nGet the status of all clipboards in JSON format.\n```sh\n$ cb status | cat\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003eCheck Your Configuration\u003c/b\u003e \u0026emsp; \u003ccode\u003ecb [[--]config|cfg]\u003c/code\u003e\u003c/h3\u003e\n\nCheck your configuration of CB.\n```sh\n$ cb config\n$ cb --config\n$ cb cfg\n$ cb --cfg\n# These all work great!\n```\n\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/TipsAndTricks.png\" alt=\"Tips And Tricks\" height=25px /\u003e\n\nNeed to paste a funky symbol somewhere a lot? Copy it to a persistent clipboard.\n```sh\n$ cb cp_theta θ\n$ cb -c amog cp ඞ\n```\n\nPaste whatever's in the clipboard straight into your favorite text editor.\n```sh\n# Vim\n:r !cb\n# Nano\n[Ctrl-T] cb\n# VSCode\ncb | code -\n```\n\nCopy a password securely by deleting it once you've pasted it.\n```sh\n$ cb cut \"AVeryStrongPassword!\"\n$ cb | some-program\n# Now gone\n```\n\nOn a slow system? Cache certain things so you don't have to do them again.\n```sh\n$ neofetch | cb cp_neo\n$ cb | cat\n```\n    \nYank anything sitting in your terminal without ever touching the mouse.\n```sh\n$ env | yank -d = -- cb\n```\n    \nInstantly copy to the main clipboard using your favorite dmenu tool.\n```sh\n$ cb cp \"$(cb st | jq -r '.[] | if type==\"array\" then .[].path else if type==\"object\" then .path else . end end' | dmenu)\"\n# For copying the latest entry from any of your clipboards\n$ cb cp \"$(cb hs | jq -r '.[].content | if type==\"array\" then .[].path else if type==\"object\" then .path else . end end' | dmenu)\"\n# For copying any entry from a specific clipboard\n```\n\nNeed to share or pore over log files? Copy them in one step!\n```sh\n$ journalctl | cb\n# For systemd\n$ sudo dmesg | cb\n# For Linux; note that you're not running \"sudo cb\" here\n$ cb copy logs/latest.log\n# For Minecraft servers\n```\n\nWant CB to look different? Change up the color scheme.\n```sh\n# This one looks like The Matrix\n$ export CLIPBOARD_THEME=green\n$ cb\n# This one is for light backgrounds\n$ export CLIPBOARD_THEME=light\n$ cb\n# Check out the other themes too!\n```\n\nHere's what some of these themes might look like.\n\n\u003cimg src=\"documentation/readme-assets/CBThemes.png\" width=600px /\u003e\n\nMake your own scripts that can fully automate your workflows.\n```sh\n#!/bin/sh\n# This script does nothing except serve as an example of automating CB.\nlink=\"https://SomeWebsiteWithLotsOfContent\"\nwget link\ncb copy *.jpg *.png\ncb remove \"AZ.*\\.png\"\ncb | tar -cf foobar.tar\ncb -c footar \u003c foobar.tar\ncb note \"Latest files from website ABCXYZ\"\n```\n\n\u003cbr\u003e\n    \n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"documentation/readme-assets/CustomizeClipboard.png\" alt=\"Let's make CB our own.\" height=\"40px\" /\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n    \n\u003cbr\u003e\n\n### ![Simple Configuration](documentation/readme-assets/CBSimpleConfiguration.png)\n\n### \u003cimg src=\"documentation/readme-assets/Flags.png\" alt=\"Flags\" height=25px /\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--all\u003c/code\u003e, \u003ccode\u003e-a\u003c/code\u003e \u0026emsp; Add this when clearing to clear all clipboards at once, or when searching to search all clipboards.\u003c/b\u003e\u003c/h3\u003e\n\nStart from a blank slate.\n```sh\n$ cb --all clear\n```\nWARNING! This will get rid of everything you've stored with CB, so be very careful when clearing with this option.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--clipboard (clipboard)\u003c/code\u003e, \u003ccode\u003e-c (clipboard)\u003c/code\u003e \u0026emsp; Add this to choose which clipboard you want to use. \u003c/b\u003e\u003c/h3\u003e\n\nChoose a non-default clipboard.\n```sh\n$ cb -c 5 copy Foobar\n$ cb --clipboard 10 copy BarBaz\n```\n\nCopy to a temporary clipboard that doesn't start with a number.\n```sh\n$ cb -c SomeCB copy \"A really really long sentence, and I mean really realy super DUPER long!\"\n```\n\nNote: Although copying to a temporary clipboard that doesn't start with a number is impossible using the conventional method of adding it to the end of the action, this alternative method is completely supported and works great.\n\nChoose a persistent clipboard.\n```sh\n$ cb -c _ copy \"Generation Next\"/*\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--entry (entry)\u003c/code\u003e, \u003ccode\u003e-e (entry)\u003c/code\u003e \u0026emsp; Add this to choose which history entry you want to use. \u003c/b\u003e\u003c/h3\u003e\n\nChoose a non-default history entry.\n```sh\n$ cb -e 5 copy Foobar\n$ cb --entry 10 copy BarBaz\n```\n\nNote: To copy to a non-default entry, that entry must exist already.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--fast-copy\u003c/code\u003e, \u003ccode\u003e-fc\u003c/code\u003e \u0026emsp; Add this to use links when copying, cutting, pasting, or loading. If you modify the items that you used with this flag, then the items you paste will have the same changes.\u003c/b\u003e\u003c/h3\u003e\n\nCopy a lot of files in much less time than before.\n```sh\n$ cb --fast-copy copy /usr/bin/*\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--mime\u003c/code\u003e, \u003ccode\u003e-m\u003c/code\u003e \u0026emsp; Add this to request a specific content MIME type from GUI clipboard systems.\u003c/b\u003e\u003c/h3\u003e\n\nSave GUI clipboard content of a specific MIME type to the main clipboard.\n```sh\n$ cb --mime text/html | cb\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--no-confirmation\u003c/code\u003e, \u003ccode\u003e-nc\u003c/code\u003e \u0026emsp; Add this to disable confirmation messages from CB. \u003c/b\u003e\u003c/h3\u003e\n\nReduce distractions after showing some text content.\n```sh\n$ cb -nc sh | cat\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--no-progress\u003c/code\u003e, \u003ccode\u003e-np\u003c/code\u003e \u0026emsp; Add this to disable progress messages from CB. \u003c/b\u003e\u003c/h3\u003e\n\nReduce distractions while doing a search that takes a while.\n```sh\n$ fzf | cb -np\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--secret\u003c/code\u003e \u0026emsp; Add this when ignoring content to ignore a secret (or secrets) instead. \u003c/b\u003e\u003c/h3\u003e\n\nIgnore a password.\n```sh\n$ cb ignore --secret MyVerySecurePassword\n$ cb ignore --secret # This will show the SHA512 hash of MyVerySecurePassword\n$ cb ignore --secret MyVerySecurePassword2 \"someOTHER secret1 banana\"\n$ cb ignore --secret # Now it will show the SHA512 hashes of MyVerySecurePassword2 and someOTHER secret1 banana\n```\n\nClear all your passwords.\n```sh\n$ cb ignore --secret \"\"\n# WARNING: Once you clear all secrets, there is no going back.\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003e--bachata\u003c/code\u003e \u0026emsp; Add this for something special! \u003c/b\u003e\u003c/h3\u003e\n\nMake your life less boring.\n```sh\n$ cb --bachata\n```\n\n\n    \n\u003cbr\u003e\n\u003cbr\u003e\n\n### \u003cimg src=\"documentation/readme-assets/EnvironmentVariables.png\" alt=\"Environment Variables\" height=25px /\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCI\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to make CB overwrite existing items without a user prompt when pasting. This variable is intended for Continuous Integration scripts where a live human is not present to make decisions.\u003c/b\u003e\u003c/h3\u003e\n\nUse CB in a CI script.\n```sh\n...\ncb cp Temp/*\n...\ncb p\n...\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_ACTION\u003c/code\u003e \u0026emsp; CB will set this to the current action when running a script. \u003c/b\u003e\u003c/h3\u003e\n\nStart with a script.\n```sh\n$ cb script ls\n$ cb history\n# Now, whatever script CB runs will have access to the CLIPBOARD_ACTION environment variable, here with value \"history\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_EDITOR\u003c/code\u003e \u0026emsp; Set this to the editor you want to use for the Edit action. \u003c/b\u003e\u003c/h3\u003e\n\nSet a custom editor to use.\n```sh\n$ export CLIPBOARD_EDITOR=nano\n```\n\nNote: The environment variables `EDITOR` and `VISUAL` by default take precedence if `CLIPBOARD_EDITOR` isn't set.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_HISTORY\u003c/code\u003e \u0026emsp; Set this to the maximum history size you want to keep, like \u003ccode\u003e10000\u003c/code\u003e or \u003ccode\u003e50gb\u003c/code\u003e. \u003c/b\u003e\u003c/h3\u003e\n\n`CLIPBOARD_HISTORY` supports up to 2^32 - 1 as a value. So, go ahead. Crank that b*tch up to a billion.\n```sh\n$ export CLIPBOARD_HISTORY=1000000000\n$ cb copy \"Oh yeah!\"\n```\n\nOnly keep a certain amount of data.\n```sh\n$ export CLIPBOARD_HISTORY=100tb\n$ cb copy Yo_Mama.tar.gz\n```\n\nNote: You can choose between `tb`, `gb`, `mb`, `kb`, and `b` to specify amounts for terabytes, gigabytes, megabytes, kilobytes, and bytes respectively.\n\nOnly keep a certain time length.\n```sh\n$ export CLIPBOARD_HISTORY=52w\n```\n\nNote: You can choose between `y`, `m`, `w`, `d`, and `h` to specify amounts for years, months, weeks, days, and hours respectively.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_LOCALE\u003c/code\u003e \u0026emsp; Set this to the locale that only CB will use for its commands and output, like \u003ccode\u003een_US.UTF-8\u003c/code\u003e or \u003ccode\u003ees_DO.UTF-8\u003c/code\u003e. \u003c/b\u003e\u003c/h3\u003e\n\nChange the locale to match what you're more comfortable with.\n```sh\n$ export CLIPBOARD_LOCALE=es_DO.UTF-8\n$ cb cp \"Amo a Aventura\"\n\n\u003e $Env:CLIPBOARD_LOCALE=es_DO.UTF-8\n# Powershell version\n```\n\nOverride the locale case-by-case.\n```sh\n$ export CLIPBOARD_LOCALE=fr_CA.UTF-8\n...\n$ CLIPBOARD_LOCALE=\"\" cb cp Foobar\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_SCRIPT_TIMING\u003c/code\u003e \u0026emsp; CB will set this to the timing of the script that it runs.\u003c/b\u003e\u003c/h3\u003e\n\nStart with a script.\n```sh\n$ cb script ls\n$ cb history\n# Now, whatever script CB runs will have access to the CLIPBOARD_SCRIPT_TIMING environment variable, here with value \"before\"\n# (output of \"cb history\")\n# Now, CLIPBOARD_SCRIPT_TIMING will have value \"after\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_TMPDIR\u003c/code\u003e \u0026emsp; Set this to the directory that only CB will use to hold the items you cut or copy into a temporary directory.\u003c/b\u003e\u003c/h3\u003e\n\nChoose a special place to put your temporary clipboards this one time.\n```sh\n$ CLIPBOARD_TMPDIR=/home/jackson/SomeDirectory cb copy *\n```\n\nChoose a special place to put your temporary clipboards every time.\n\n```sh\n$ export CLIPBOARD_TMPDIR=/home/jackson/SomeDirectory\n$ cb copy *\n\u003e $Env:CLIPBOARD_TMPDIR = /home/jackson/SomeDirectory\n# Powershell\n```\n\nNote: By default, CB uses the C++ filesystem library function `fs::temp_directory_path()` to generate the temporary directory, prioritizing `CLIPBOARD_TMPDIR` and then `XDG_RUNTIME_DIR` respectively first if CB can get a value from them.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_PERSISTDIR\u003c/code\u003e \u0026emsp; Set this to the directory that only CB will use to hold the items you cut or copy into a persistent directory.\u003c/b\u003e\u003c/h3\u003e\n\nChoose a special place to put your persistent clipboards this one time.\n```sh\n$ CLIPBOARD_PERSISTDIR=/home/jackson/SomeDirectory cb copy *\n```\n\nChoose a special place to put your persistent clipboards every time.\n\n```sh\n$ export CLIPBOARD_PERSISTDIR=/home/jackson/SomeDirectory\n$ cb copy *\n\u003e $Env:CLIPBOARD_PERSISTDIR = /home/jackson/SomeDirectory\n# Powershell\n```\n\nNote: By default, CB uses the user's home directory to generate the persistent directory, prioritizing `CLIPBOARD_PERSISTDIR` and then `XDG_STATE_HOME` first respectively if CB can get a value from them.\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_CUSTOMPERSIST\u003c/code\u003e \u0026emsp; Set this to the clipboards you want to make persistent, using regex.\u003c/b\u003e\u003c/h3\u003e\n\nMake everything you copy persistent.\n\n```sh\n$ export CLIPBOARD_CUSTOMPERSIST=\".*\"\n$ cb copy Foo Bar Baz\n# This puts everything in the persistent directory but still with the clipboard name \"0\"\n```\n\nMake some clipboards persistent.\n\n```sh\n$ export CLIPBOARD_CUSTOMPERSIST=5\n$ cb copy5 Foo Bar Baz\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_NOAUDIO\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to disable audio coming from CB.\u003c/b\u003e\u003c/h3\u003e\n\nTurn off those sound effects.\n```sh\n$ export CLIPBOARD_NOAUDIO=1\n$ cb ffksdjfdj \n# No more error sounds after doing a nonexistent command\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_NOGUI\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to disable integration with GUI clipboards.\u003c/b\u003e\u003c/h3\u003e\n\nDebug a flaky GUI system by disabling its integration with CB.\n\n```sh\n$ CLIPBOARD_NOGUI=1 cb show\n$ export CLIPBOARD_NOGUI=1\n$ cb show\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_NOPROGRESS\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to disable only progress messages from CB.\u003c/b\u003e\u003c/h3\u003e\n\nReduce distractions while doing a search that takes a while.\n```sh\n$ fzf | CLIPBOARD_NOPROGRESS=1 cb\n```\n\nDisable progress messages from CB entirely.\n```sh\n$ export CLIPBOARD_NOPROGRESS=1\n$ fzf | cb\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_NOREMOTE\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to disable remote clipboard sharing.\u003c/b\u003e\u003c/h3\u003e\n\nDisable all clipboard content transfers through the terminal.\n```sh\n$ export CLIPBOARD_NOREMOTE=1\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_SILENT\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to disable progress and confirmation messages from CB.\u003c/b\u003e\u003c/h3\u003e\n\nRest in peace by seeing nothing that isn't an error.\n```sh\n$ export CLIPBOARD_SILENT=1\n$ cb cp \"I'm running out of Aventura references\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eCLIPBOARD_THEME\u003c/code\u003e \u0026emsp; Set this to the color theme that CB will use. Choose between \u003ccode\u003elight\u003c/code\u003e, \u003ccode\u003edarkhighcontrast\u003c/code\u003e, \u003ccode\u003elighthighcontrast\u003c/code\u003e, \u003ccode\u003eamber\u003c/code\u003e, \u003ccode\u003egreen\u003c/code\u003e, and \u003ccode\u003eansi\u003c/code\u003e (the default is \u003ccode\u003edark\u003c/code\u003e).\u003c/b\u003e\u003c/h3\u003e\n\nRemind yourself of the terminals of the past.\n```sh\n$ export CLIPBOARD_THEME=green\n$ cb cp \"I'm in the Matrix now\"\n$ export CLIPBOARD_THEME=amber\n$ cb cp \"Yellow terminals feel just like sitting in front of a nice campfire\"\n```\n\nMake CB more accessible.\n```sh\n$ export CLIPBOARD_THEME=darkhighcontrast\n$ cb show\n```\n\nFully customize your style.\n```sh\n$ export CLIPBOARD_THEME=help=r;g;b,info=r;g;b,error=r;g;b,success=r;g;b,progress=r;g;b\n# Note: You must put in a number within range 0-255 for each r, g, and b\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eFORCE_COLOR\u003c/code\u003e \u0026emsp; Set this to \"true\" or \"1\" to make CB always show color regardless of what you set \u003ccode\u003eNO_COLOR\u003c/code\u003e to.\u003c/b\u003e\u003c/h3\u003e\n\nOverride somebody else's choice to disable colors.\n```sh\n$ export NO_COLOR=1\n...\n$ FORCE_COLOR=1 cb copy \"There are almost no bachateros where I live right now\"\n```\n\nNote: CB also supports `CLICOLOR_FORCE`.\n\nOverride somebody else's choice to disable colors, but in a different way.\n```sh\n$ export CLICOLOR=0\n...\n$ CLICOLOR_FORCE=1 cb copy \"There are almost no bachateros where I live right now\"\n```\n\n\u003cbr\u003e\n\n\u003ch3\u003e\u003cb\u003e\u003ccode\u003eNO_COLOR\u003c/code\u003e \u0026emsp; Set this to anything to make CB not show any colors.\u003c/b\u003e\u003c/h3\u003e\n\nMake CB look boring.\n```sh\n$ export NO_COLOR=1\n$ cb cp \"From the 1960s until the 1990s, bachata was perceived as boring music for poor Dominicans.\"\n```\n\nNote: CB also supports `CLICOLOR`.\n\nMake CB look boring, but in a different way.\n```sh\n$ export CLICOLOR=0\n$ cb cp \"In the 1990s, though, several innovative musicians reinvigorated bachata by using electric guitars with fancy effects.\"\n```\n\n\n \n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n### ![Need Help?](documentation/readme-assets/NeedHelp.png)\n\nWe're here for you! Check out [the Clipboard Project Wiki](https://github.com/Slackadays/Clipboard/wiki) for even more information, ask all your burning questions in [GitHub Discussions](https://github.com/Slackadays/Clipboard/discussions), or join [the awesome Discord group](https://discord.gg/J6asnc3pEG)!\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Slackadays/Clipboard/wiki\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docs-Wiki-green?style=for-the-badge\u0026labelColor=rgb(55,55,55)\" alt=\"CB Wiki\"\u003e\n    \u003ca href=\"https://github.com/Slackadays/Clipboard/discussions\"\u003e\u003cimg src=\"https://img.shields.io/badge/Questions%3F-Ask%20Away-red?style=for-the-badge\u0026labelColor=rgb(55,55,55)\" alt=\"Questions? Ask Away!\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://twitter.com/GetClipboard\"\u003e\u003cimg src=\"https://img.shields.io/badge/FOLLOW-%40GETCLIPBOARD-blue?logo=twitter\u0026style=for-the-badge\u0026labelColor=rgb(55,55,55)\" alt=\"Follow us on Twitter\"\u003e\u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://discord.gg/J6asnc3pEG\"\u003e\u003cimg src=\"documentation/readme-assets/join-our-discord.svg\" alt=\"Discord Chat\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n### ![Thank You!](documentation/readme-assets/ThankYou.png)\n\n\nSay thank you to all our beautiful contributors who have helped make the Clipboard Project incredible[.](https://www.youtube.com/watch?v=yjdHGmRKz08)\n Want to join the club? We're always accepting [new contributions](https://github.com/Slackadays/Clipboard/blob/main/CONTRIBUTING.md) too.\n\nSpecial thanks to [MacStadium](https://www.macstadium.com/) for sponsoring the Clipboard Project by providing a Mac Mini for macOS development!\n\nAnd if you're feeling generous, feel free to give us a :star:! We appreciate every single one - including yours.\n    \n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e \n    \u003cimg src=\"documentation/readme-assets/ClipboardMakesYourLifeEasy.png\" alt=\"CB makes your life easy.\" /\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"right\"\u003e\u003csub\u003e\u003ccode\u003ecb copy haters \u0026\u0026 cb \u003e /dev/null\u003c/code\u003e\u003c/sub\u003e\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/Slackadays"],"categories":["Utilities","Uncategorized","C++","Examples","Command Line Utilities","剪贴板","Weapons","File Manipulation","cli","\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++","Software","Command Line Tools","cpp","Shell","File Management","Productivity","Table of Contents"],"sub_categories":["System Interaction Utilities","Uncategorized","Tools","Follow me","Clipboard Tools","Command Line Tools","Other","PCAP","Clipboard Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSlackadays%2FClipboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSlackadays%2FClipboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSlackadays%2FClipboard/lists"}